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
@codewiz La Varta ti ha mangiato tutte le piste. Hai visto pure sotto gli zoccoli? Ma devi avere una buona stazione dissaldante ad aria altrimenti sfasci tutto specialmente se provi a dissaldare il chip Agnus(sono sicuro che questo lo sai gia')
@Ermanno Ermanno?! Wow, come stai?
Domani vado all'Artisan's Asylum per usare i tools professionali e farmi dare una mano dagli esperti. Vedrai che ce la farò a salvare questo Amiga 3000.
@codewiz cool project!
@codewiz can you socket the RTC on an Amiga 3000 to turn it into a clock port? On my Amiga 1200, the clockport it can be used as a port to do some incredibly cool things, almost like a mini zorro bus. I have a music/mp3 playback card attached to my clockport to let my Amiga basically have a soundcard.
@GabeMoralesVR The A3000 RTC circuitry has a 4-bit data bus and 16 addressable registers. The CPU can directly read/write any of them, but there are no interrupts and no DMA.
The official PCB schematics are here:
https://www.amigawiki.org/doku.php?id=en:service:schematics
I've been using KiCad to view the gerbers, but the schematic diagrams seem to have some mistakes so I don't trust them.
@codewiz Sounds similar to a PiStorm
@codewiz you may be able to get a cheap 25 to 40 MHz CRT scope on Craigslist or other such site. It's good to have. Basic household thing like a screwdriver, you know.
@Kazinator But I wanted a USB oscilloscope with open-source software for Linux, and they're either too expensive or useless low-bandwidth toys!
@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 ...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...
@codewiz If you're going to throw the component anyway, you can trim it off on both sides before trying to remove the leg, that normally makes it easier to desolder.
Have you got a pointer to the cheap pump iron? The ones I've seen are silly money.
@penguin42 This is the one I bought, but it's not great: https://www.amazon.com/dp/B08V8PGJVJ
The temperature is fixed, and the vacuum button is single-shot: when you release that button, it barfs molten solder back onto the board
The Amiga restoration videos I watched seem to use this better gun:
https://www.amazon.com/gp/product/B07542D82F
@penguin42 Acill Classics has a page with recommended tools for vintage Amiga repairs:
https://acillclassics.wordpress.com/preferred-tools/
@codewiz Yeh that suggests the Hakko FX-301 which is like $300++
I'm used to having a manual solder sucker in one hand, and the iron in the other...and the device held in....
@codewiz I had problems in these places. Even further away, where you wouldn't have expected it.
Every dark pattern is a suspect. And it hides well under the components.
If I get a battery damage to my desk - usually I do not even bother to power it on. But good to see your amiga half to life in this state allready!
...and if you invest in lab equipment: A microscope has changed a lot for me
@trebroNdotnet Two traces on the bottom left are indeed open, but they're just the raw audio L/R signals going to the video slot. I won't bother reconstructing them for now.
The ICs above the battery belong to the Amber subsystem, which works for me. I don't believe they're causing the vertical lines every 16 pixels. Those must be a short of some kind on the Denise data bus.
The Denise socket has some corrosion and should be replaced, but I'm waiting to get a better desoldering gun for that.
@trebroNdotnet The potX / potY lines to Paula also seem corroded, but I don't need paddles.
Surprisingly, both audio channels work, even before recapping.
Chip RAM test passing 100% tells me that the address and data lines to the CPU are still healthy.
Right now I'm looking for damage on the local signals between Agnus, Denise and Paula.
I also suspect the bridge logic between the CPU and Fast RAM and ROMs, but it's far away from the battery.
@codewiz are you going to try to restore that with a bit of copper foil tape? Or just leave as is.
@Kazinator I'm going to leave the real-time clock area unpopulated, at least for now.
I will have to repair any corroded traces and vias connected to Paula, Denise and anything else that matters.
Luckily, the top copper layer (shown in red by KiCad) doesn't have a lot going on around the battery.
The only corroded traces I found so far are RAWLEFT and RAWRIGHT, which connect unfiltered Paula audio outputs to the video slot.
@codewiz if "Adrian's Digital Basement" (on youtube) is to be believed, C64 boards don't have any water-sensitive parts and can be washed with tap water and dish soap.