Last time I worked on Jops, I left myself a lot of work to do. This weekend I picked it up again to work on. So, here is the update!
The first thing I did was solder a socket for Alice, popped Alice in, powered it up and was getting absolute junk out of DiagROM still. I decided to do a couple of things:
I usually leave the ultrasonic clean until the end, but there was so much corrosion everywhere, that I figured it would help with the diagnosis. This is the end result:
It is certainly easier to see things now, and it looks like I might need to replace fewer things than I originally thought.
From here, I popped in Alice DiagROM, the CPU and some Chip RAM. The bootup seems a little more human, at least something I can work with.
There are words that appear to have special characters after each letter. Very odd. Let’s take a look at the hex mode of Moserial.
So, there are lots of 0x00s pumped out and 0xFE as the gap between the characters. This gave me an idea as to what is up, but to explain it, I have to dig into the DiagROM source code. This is a snippet from the serial printing code, don’t worry if you can’t read 68000 assembly, I’ll walk through the important parts.
.timeoutloop:
move.b $bfe001,d1 ; just read crapdata, we do not care but reading from CIA is slow... for timeout stuff only
sub.l #1,d2 ; count down timeout value
cmp.l #0,d2 ; if 0, timeout.
beq .endloop
move.w $dff018,d1
btst #13,d1 ; Check TBE bit
beq.s .timeoutloop
When a byte has been sent to the serial port, this loop checks the SERDATR
register, which is Paula register 018
(full address is 0xDFF018
). It checks for bit 13, which is the TBE
bit, the TBE
bit indicates that the write is complete.
If the TBE
bit cannot be read properly, that would certainly cause the serial port buffer to be constantly overwritten and do weird things.
So, data bit line 13 on Paula is DRD bus line 29. The DRD bus is connected to the main data bus via Bridgette. Sure enough, when I checked the DRD29 pin on Bridgette, I found it wasn’t soldered properly. This makes sense, there was corrosion there to begin with.
I resoldered this pin and tested again.
Great news! The DiagROM output is now correct. But there is also some bad news.
Whilst the serial output is completely correct, the display just has a black screen. I tried with a VGA output instead of my usually SCART, this uses H+VSync instead of CSync. But still no joy, that monitor didn’t even see a signal. The H and V sync is definitely being generated.
To my untrained eye, they look about what I would expect them to be. I have an idea about how to diagnose this further, but I ran out of time this weekend to work on it further.
Getting this machine to boot correctly is huge progress. But there are still quite a few things left to do:
Once I have the display issue fixed, the rest I should be able to do pretty quickly. This is turning out to be a long project, but it is definitely worth it!
All the motherboard issues were resolved in my previous post in this series, now it…
With this Amiga 2000, I previously got it into a state where it would boot…
I recently acquired an Amiga 2000 for £350 which was in an unknown state, but…
I recently acquired an Amiga 1200 motherboard in a spares/repairs condition for about £100 recently.…
Whilst I do like working with STM32 development boards, some basic information I need can…
When I last left this blog series, the first of Stoo Cambridge's A4000s had gone…