sdisla wrote: 15 Aug 2024 03:44
It
should be:
Code: Select all
A19-A1
0000 0000 0000 000
0000 0000 0000 001
0000 0000 0000 010
0000 0000 0000 011
BW,
I did the measurements from A0 to A18 on the PROM socket.
These are the reading as per my interpretation.
A1 0101
A0 0000
Now that is interesting. You should have *two* lines toggling, not just one.
BTW, In case you hadn't realised, the A numbers are out by one on the ROM from the CPU. A0 on the ROM == A1 on the CPU bus.
So according to this the actual addresses your ROM is being asked for are:-
Code: Select all
0x00000
0x00004 (because ROM A1 = CPU A2)
0x00000
0x00004
Whereas it should be 0,2,4,6.
Let's try to translate the data lines, then (you've missed D0, so I'm going to assume it's 0 for now). Unfortunately I don't agree with your readings, but you've attached the scope images, so I can read them myself (I think you're reading at the beginning of the AS assertion -- it's the value at the end that's important -- remember the ROM is responding to the request so it takes a few dozen nanoseconds).
I've assumed you've gone top left, top right, bottom left, bottom right in your picture order. Correct?
Code: Select all
D15-D1 (D0 missing)
1110 0000 0010 111- = 0xE02E (should be 602E!)
0000 0000 1110 000- = 0x00E0 (should be 0404, but with this address it should be 00E0!)
1110 0000 0010 111- = 0xE02E (should be 00E0, but with this address should be 602E)
0000 0000 1110 000- = 0x00E0 (should be 0030, but with this address should be 00E0)
So! Very interesting! It's not counting up properly, but we've *ALMOST* got the data we expect from those addresses -- D15 is wrong on the first and third read, but correct on the second and fourth, so we can't assume it's stuck, but perhaps it's shorted to D14?
Worth double checking.
Now why wouldn't it count? There are two aspects. Firstly it's counting up in fours not twos. This would happen if DSACK0 and DSACK1 on the CPU were asserting together. DSACK0 should not assert on the Falcon
except during DSP access.
So I'd scope that line on the CPU if you can. Should always be high.
Basically the two DSACK lines tell the CPU how wide the bus is -- 32, 16 or 8 bits. On the Falcon (apart from the DSP) the bus is 16 bits so during the first read, DSACK1 goes low and DSACK0 stays high. This says 'you've got 16 bits', so the CPU knows to ask for address 0x2 after 0x0. If both were low, then the CPU would think it had 32 bits and ask for 0x4 next. This is close to what we're seeing.
Secondly why is it going back to 0 for the third read. That could mean the next address line up isn't working properly. A3 on the CPU (A2 on the ROM) is always low, but it should switch to high after the second read if it were following a 32 bit read.
So I think you should concentrate on the address lines. Are there any shorts (or low resistance paths) between A1, A2, A3 and
any other address lines?
I would also consider ordering a replacement TOS 4.04 ROM. It's not very expensive and it would rule that out quickly.
BW