I've been working for a few days to restore an Amiga 3000 from 1990 which was owned by an art professor from Philadelphia.
Part 1: https://mstdn.io/@codewiz/113561527808236797
Part 2: https://mstdn.io/@codewiz/113562074864354876
TL;DR: The Varta battery leaked concentrated potassium hydroxide over the vital region between the three chips which define the Amiga architecture: Denise (video), Paula (audio) and Agnus (blitter, copper and DMA).
Extracting Denise and Paula reveals some corrosion on the pins.
Fat Agnus appears to have been spared, but I don't have a proper PLCC extractor tool and I'm not going to risk prying it out with kludgy methods.
Against best advice, I took the risk to power up the board in its present state.
The power LED flashing 6 times means that the Kickstart's diag routines failed somewhere, and a red screen signals a ROM checksum failure:
https://www.amigalove.com/viewtopic.php?t=324
This is actually great news: the 68030 was able to execute some ROM code and even write into some of Denise's registers.
The checksum error could also be caused by a fault on either the data bus or the address bus.
Today I received the first batch of components for my A3000 board. Just a few DIP sockets, common logic IC, diods and capacitors.
I couldn't find 48-pin DIP sockets for Denise and Paula, so instead I bought 24-pin sockets to be used in pairs.
I scrubbed most of the green goo with a combination of sand paper and fiberglass pen.
I frequently cleared the dust from the PCB with an ESD-safe brush, distilled water and isopropyl alcohol.
I should probably also wash the entire board with soap water, but I'm not sure which soap is safe for PCBs, and which components need protection.
And this is what was underneath all the corroded metal oxide.
Most of the copper directly under the battery has been completely corroded, exposing a dark fiberglass layer.
This was actually lucky: that big ground plane neutralized most of the leak, reducing the damage on the rest of the PCB.
It's time to clear the corroded components, starting from the RTC circuitry south of the battery.
I used a $30 electric vacuum pump iron on the back of the board to suck most of the solder from the pins.
Then I pulled gently from the front while heating the area with a heat gun.
Most solder would melt easily, but pins attached to GND or heavily corroded would need more heat.
Except for the Ricoh RTC, the components I pulled are cheap to replace and can be cut in place to minimize damage to the precious #Amiga 3000 board.
I went to Microcenter and bought full assortments of resistors and capacitors, each for $9.99:
https://www.microcenter.com/product/618896/inland-1-4-watt-1-resistors-610-pack
I had already ordered some DIP sockets and ICs at Mouser, but I forgot the common 14-pin sockets, which are on their way.
Luckily, I have with me a debug tool from the future: the Z3660 is an open hardware accelerator which can optionally emulate a full 68040 CPU with UAE's open-source JIT running on a modern ARM core:
https://github.com/shanshe/Z3660
I bought this baby at AmiWest for my A4000, but now it will come handy to probe the A3000 PCB from a working system.
The Z3660 can load Kickstart files from an SD-card and map them to the ROM region, allowing me to use the awesome DiagROM to test RAM, I/O ports, audio and more:
https://www.diagrom.com/
Those vertical bars flash on and off. They're probably caused by a faulty data line between Denise and Fat Agnus, or perhaps between Fat Agnus and the Chip memory bank.
The Chip RAM banks pass all memory tests, so we can exclude them.
The Z3660 can also boot off an emulated SCSI controller, loading hard-disk images from the SD card.
The OS image that came preloaded with my board throws a recoverable guru while booting, but then boots to Workbench.
There are a couple of hardware diagnostic tools, including SysInfo and WhichAmiga.
Overall, the system is really unstable, hanging every few minutes. Tapping on Denise is a reliable way to trigger a crash.
Also, rebooting with Ctrl+Amiga+Amiga results in a permanent black screen. I inspected the reset logic, and /CPURST remains low forever.
I can't tell whether there's a problem with the A3000, but other Z3600 owners confirmed it shouldn't happen.
Debugging all these quirks would be much easier with an oscilloscope. I should take this project to a shop with proper lab equipment...
Tonight I'm going to the Artisans Asylum, a huge #hackerspace and workshop co-op in Boston:
https://www.artisansasylum.com/
Their electronics shop has all the tools I need for my #Amiga 3000 restoration project and several experts who can advise.
One of the issues leading to instability seems to be the 4MB bank of on-board fast RAM.
You can see it fail a memory test in this screenshot, and often it gets misdetected by DiagROM.
The #Amiga 3000 fast RAM uses the infamous Zig-zag In-line Package (ZIP).
The pins were very easy to bend when installing the chips. Indeed, I found one with a bent pin! Was it like that from the factory? ...or did someone already try to fix this several years ago?
Anyway, re-seating all the ZIP chips didn't improve stability, so I ended up removing all of them.
The Z3660 uses the Z-Turn can map 128MB of its own RAM to the Amiga address space.
Using modern hardware to sidestep hardware issues on the A3000 board feels a bit like cheating, but ZIP RAM modules are rare, expensive, and... a stupid idea even back in 1990!
#commodore
#amiga
#vintagecomputing
#retrocomputing
#electronics
With on-board Fast RAM disabled, the system is stable enough to run Lotus Turbo Challenge... up to a certain point!
This crash is 100% reproducible. I don't know whether it's caused by a hardware problem with the ECS chipset or this game is simply incompatible with the 68040.
Last friday I started debugging the ZIP RAM bank.
Someone on the Acill Classics repair chat suggested running ziptest, an awesome tool probes each ZIP slot to debug issues like mine:
https://aminet.net/package/util/misc/ZIPTest-1.1
I populated the first 4MB of ZIP slots populated, and booted OS 3.2.2, which didn't recognize any Fast RAM in the expected range, $07000000-$07FFFFFF.
The output of ziptest makes me think that the entire bus is busted. Perhaps I have a broken Ramsey?
Meanwhile, I also checked the reset logic, which I suspect to be quirky.
The A3000 uses a PST518, a small 3-legged IC which looks like an ordinary transistor, but monitors the +5V power line to assert a _FAIL signal when it's too low.
This capture shows what happens when the power supply is switched off: _FAIL (above) drops sharply when +5V (below) falls below 4.4V. Looks good.
On power up, +5V (still below) raises quickly to its stable level, while /FAIL (above) looks like the typical capacitor charging curve.
Am I seeing the effect of R112 (3.3kohm) C112 (47uF)?
Ugh, I need to refresh my high-school electronics on RC circuits:
https://www.electronics-tutorials.ws/rc/rc_1.html
So the time constant (τ) is 3.3 * 10^3 * 47 * 10^-6 = 152 ms
The scope captured only 350 ms of the curve, which grows to ~4.2V. Looks about right.
But is this what a good reset signal looks like? I expected it to be driven sharply between 0 and 1 logical states.
I found the PST518 datasheet here:
https://www.alldatasheet.com/datasheet-pdf/view/87726/MITSUMI/PST518B.html
My understanding is that the PST518 output is meant to be fed into a Schmitt-trigger to get the sharp power up reset signal that I'm looking for.
But on the A3000 PCB, /FAIL rruns to Gary's and Ramsey's POWERUP pins.
Perhaps they have an internal comparator for this purpose.
The Kickstart 3.2.2 roms arrived today, and I swapped them on the board.
Oddly, these EPROMs are 1 pin too long for the A3000 sockets. The seller clipped pins 1 and 42 to suggest the correct alignment.
Now I can tell the Z3660 to use the on-board ROMs and... IT BOOTS!
This confirms that the original ROMs had indeed gone bad, while Gary and other bus logic still works... which is very lucky
With the new #AmigaOS 3.2.2 ROMs in place, I can even pull out the Z3660 and use the on-board 68030 and its companion 68882 FPU, both running at 25 MHz.
Since there's hard-drive, I'm welcomed by the #Amiga bootscreen, except the familiar Amiga "rainbow checkmark" logo has been replaced by the Escom-era "boing ball"
But I forgot to cover how I fixed the stability issues.
Testing the corroded traces around the battery, I found that DRD9 was open between pin 46 of Denise and pin 5 of Agnus.
That's one of the data bus lines; it's surprising anything worked at all! Restoring DRD9 (white alligators) fixed the vertical lines as well as the frequent crashes. Woot!
The yellow alligators reconnect Paula's INT6 to Even CIA.
The trace was badly corroded around U190, the Ricoh realtime clock, and my clumsy attempts to clear those pads finally killed INT6 for good, causing AmigaOS to hang at boot
Since I couldn't find a suitable pad beyond the Varta blast area, I'll re-route INT6 all the way across the motherboard to CIA.
As a side note, the test clips I got from Amazon for $6.89 a dozen won't attach firmly to DIP pins, and the tiny copper hooks keep bending and breaking.
I was told I should have bought these fancy Tektronix IC grabbers, but they cost a whopping $29 for a bag of 10:
https://www.ebay.com/itm/274793389279
I wonder which alloy they used for the hooks?
Anyway, this is my first attempt at repairing traces with thin rigid wire.
I used polyimide tape (aka Kapton tape) to hold it down while soldering, but I should probably glue it firmly to the PCB.
I'm not sure which glue is safe to use on a vintage board, but I can ask the experts on Acill Classics.
Yesterday I also started pulling out the corroded passive components right above the battery.
These are part of the Amber scan doubler, which works just fine now, but would eventually start malfunctioning as the corrosion progressed through the solder joints.
Clearing the pads from the hardened metal oxides was extremely difficult and fatally damaged a couple of traces which were half corroded anyway.
But you gotta do what you gotta do...
And here are the new components: the blue resistors, the two diodes and some the yellow ceramic capacitors are mine.
You might notice that solder joints look bad around some of the pads. That's mostly because there's no longer a pad for solder to firmly attach to.
Connections will have to be restored with fly wires on the bottom side...
I'm not too proud of my first ever attempt to repair a trace with magnet wire, but that thing is *tiny* and even with magnifying glasses I had a hard time seeing what I was doing.
The disaster are is a corroded ground pin. It looks bad, but it will hold just fine for now.
More worryingly, several vias look badly corroded, but I have no idea how to reconstruct them. I can't simply suck the dark goo from the hole, so perhaps I should drill through?
Last week I soldered back the Ricoh RP5C01 and the D flip-flops which latch the 4-bit address bus.
I decided to power up the board halfway through, before reconnecting the RTC to its 32768 Hz quartz oscillator and the power supply circuit.
Surprisingly, the CPU was still able to write the date/time registers and read them back. Of course, the seconds wouldn't increment without a clock source!
After populating the various resistors, capacitors and diodes, the RTC is finally ticking, and holds the time across soft reboots!
Considering that this was the most damaged subsystem on the motherboard, I wasn't hoping to see it work again.
To finish the job, I ordered this little kit which adapts a "coin battery" to fit onto the pads originally occupied by the nasty Varta:
https://www.ebay.com/itm/355497835640
The PCB uses a MOSFET to prevent current from flowing into the non-rechargeable lithium battery when the system is powered.
Older designs used a diode, but the ~0.6V drop across it would bring VCC too close to the lower limit for the Ricoh.
Perhaps it would just be simpler to disable the original charging circuitry by removing D190 and D191.
This way, the Ricoh would be powered by the battery through R192, even while the system is running. And perhaps, replacing R192 with a wire would source less current from the lithium battery, extending its life.
Since my knowledge of #electronics is limited, to play it safe I might end up using the CR2032 adapter as designed. Suggestions welcome.
@codewiz I remember getting rid of a 386 that used that memory.
@codewiz imo there is not such thing as cheating when it comes to usability.
Zip ram doesn’t work and is rare? Just use modern ram!
@abletheabove Yes, but I could keep going like this until the A3000 case contains only a Raspberry Pi running UAE.
The Z-Turn mounted on top of the Z3660 is a hybrid approach where you keep using the original Amiga hardware for I/O.
@codewiz Nah cause that destroys the spirit of retro computing.
Replacing dead ram or dead capacitors with modern ones doesn't violate the spirit IMO.
@abletheabove I totally agree.
Right now this A3000 can't even get to the Early Startup menu without the Z3660. Until last week, it used to flash the power LED 6 times, bring up a red screen and reboot. Now it won't even do that
Anyway, I bought a set of Kickstart 3.2.2 ROMs from a shop in Ireland and I'm waiting for them to arrive to see if the old ROMs were really bogus.
@codewiz
With WHDLoad, it must be compatible with the 68040. It was one of the purpose for developing WHDLoad
Hope you'll find the problem!
@batteman One of the Z3660 devs suggested uncommenting NoCache in the tool types, but it didn't help.
They also provided a newer Z-turn beta firmware, which I'll test tonight.
@codewiz My idea to debug this would be to swap parts with a known good A3000 - but that needs of course a box to donor/test with..
@globalc So far I haven't found any Amiga users here in Boston.
Even a broken A500+ would have a lot of chips in common with the A3000, and they're much more common.
@codewiz Have you tried compatibility with Games (especially those what will only work under Kickstart 1.3 and also those what require AGA or Kickstart 2/3 for example
@AmigaBoing I tried booting the original SCSI hard drive that came with the machine, and even that wouldn't load with Kickstart 3.2.2 because workbench.library and icon.library were moved from ROM to disk to make room for other features.
I will need to find the #AmigaOS 3.2.2 versions and copy them to LIBS: in order to fix Workbench... but even if it works, it won't be Workbench 2.0 any more.
I'll get a KickSmash32 when the next batch is ready:
https://github.com/cdhooper/kicksmash32
@codewiz @AmigaBoing ah man… I’d love to find one of these for the Amiga 600 or 1200
@codewiz @AmigaBoing where do you sign up for one?
@davec555 @AmigaBoing @davet @didier I'm begging them to sell me one on this Acill Classics' Discord channel:
https://discord.com/channels/733360636771434607/1312971483232079892
@codewiz @AmigaBoing @davet @didier i can't get on there, but if you have any luck, please tell em I'd be up for one too
@codewiz @AmigaBoing woah that thing is cool! Any idea when/where it might be available?
I’d also pay good money for an A1200 version.
@codewiz Nice! You found and fixed the problem(s)!
Drilling with sub 0.4mm drilling bits, or poking with medical cannulas (often easier to obtain locally...).
A free via should be filled with solder or just put a small wire through...
@codewiz FWIW, I was asking in our company retro lounge if someone around Boston owns an A3000. Not that, but I was hinted at this: there is a place called "Amiga of Rochester" that does repairs and troubleshooting.
@globalc Thank you for asking around. I think I'm pulling it off on my own! See my updates from yesterday and today.
@codewiz The Boing Ball came back with Amiga Inc. and the H&P AmigaOS releases, I’m pretty sure. Before that the Escom/Amiga Technologies logo was capitalized Amiga with a little red over the I and the checkmark remained in the shadows. I was not a fan of the change which is why I remember being mildly upset at Amiga Inc. for taking that direction. (The least of their poor decisions, honestly…)
@trezzer You're probably right.
My memory about the boing ball logo adoption wasn't clear, so I checked Wikipedia and found there reference to Escom here:
https://en.wikipedia.org/wiki/Amiga#Marketing
However, the article linked as citation doesn't even mention Escom! Someone should edit that paragraph, possibly citing a better source.
@codewiz ...measuring pin 3 on U112. Looks like the same. I doubt, that reset is your problem as the amiga basically runs...
What happens if your amiga is running and you "bend" the board slightly?
We can do a videocall if you wish. But that would be a lot of camera handling involved:-)
@trebroNdotnet I tried blowing hot air on the board, and I can get it to crash when I warm up Agnus and Denise. The rest seems stable.
I'd have some big updates on the A3000 repair, but no time to blog about them... hang on
@codewiz yep. rare and expensive. It took me forever to fully populate my A3000 with those guys...and that was 20 years ago
@kwramm Do you know if the A3000 ROM could boot with no Fast RAM at all, like an A2000 would?
I'm trying to understand why I don't see any activity when I power up the board without the Z3660. Before, it would red screen and reboot, which was at least a sign of CPU activity.
@codewiz it should work without fast ram, I think. But when you remove any accelerator, make sure to change all the motherboard jumpers that tell it to use everything onboard
@codewiz oh an make sure the Zorro riser card is installed - my A3000 never boots without it
@codewiz The forbidden monoliths ... the capacitor fence was a warning...