Page 1 of 2
Ideas on non-working Mega 4?
Posted: 14 Oct 2018 17:03
by troed
Acquired a (known) non-working Mega 4 today. Won't have time to open it up and look at for two weeks, but I thought I should post what it looks like when booting for some ideas on the most likely cause :) It's somewhat interesting.
non_working_mega4.JPG
So, GLUE produces a stable image and the Shifter at least believes it's doing something of value. Not really sure what data it's getting fed with though (but I have a nagging feeling I've seen exactly this issue in a post somewhere, at some time).
The same pattern is repeated, each line, four times. The pattern is 40 bytes in size.
edit: Oh, it's not just a visual problem - it hangs like this. However, it does so at 50Hz so TOS has gotten a few things done first.
Re: Ideas on non-working Mega 4?
Posted: 14 Oct 2018 17:44
by PhilC
One of mine did something like this with a bad blitter.
Re: Ideas on non-working Mega 4?
Posted: 14 Oct 2018 17:50
by frank.lukas
test cartridge + null modem cable (9600Baud8N1)
Re: Ideas on non-working Mega 4?
Posted: 14 Oct 2018 18:23
by exxos
Isn't that the pattern used by TOS when trying to size RAM ?
Re: Ideas on non-working Mega 4?
Posted: 14 Oct 2018 18:52
by troed
exxos wrote: 14 Oct 2018 18:23
Isn't that the pattern used by TOS when trying to size RAM ?
I was actually reading through the TOS code before to see if it was :) The below code could possibly do it, although it's not an exact 40 byte pattern. However, at this point screen memory is at $10000 and there's no way I can see for this code to overwrite that address.
Code: Select all
/*
* We now need to size the actual memory present. We test memory,
* starting at 128K and increasing by 128K each time. For each area of
* memory, we start at the current address, and work downwards, storing
* a series of values; we then verify that the values have been stored
* correctly. An invalid value (or a bus error when we try to access a
* memory location) causes us to stop and size the memory accordingly.
*/
lea.l $00008000,a7
movea.l (_buserror).w,a4
lea.l st_ramsize_done(pc),a0 /* bus error means end of ram */
move.l a0,(_buserror).w
move.w #$FB55,d3 /* d3.w = difference between adjacent stored values */
move.l #$00020000,d7 /* d7 = address of first memory test zone & gap between memory test zones */
movea.l d7,a0 /* a0 = address of current test zone */
next_zone:
movea.l a0,a1 /* a1 -> memory being tested */
move.w d0,d2 /* d2.w = test value */
moveq.l #42,d1 /* d1.w = loop count-1 */
store_mem:
move.w d2,-(a1) /* store a value */
add.w d3,d2 /* update the value for next time */
dbf d1,store_mem /* rinse & repeat */
/* now check the values we stored */
movea.l a0,a1 /* a1 -> test area */
moveq.l #42,d1 /* loop count */
check_mem:
cmp.w -(a1),d0
bne.s st_ramsize_done /* miscompare, ram invalid, exit */
clr.w (a1) /* else zero it out */
add.w d3,d0 /* update for next compare */
dbf d1,check_mem /* until we're done */
adda.l d7,a0 /* point to next test area */
bra.s next_zone
st_ramsize_done: /* bus error or bad ram */
suba.l d7,a0 /* (a0 -> first zone that failed) */
move.l a0,d5 /* d5 = st ram size */
move.l a4,(_buserror).w
frank.lukas wrote: 14 Oct 2018 17:50
test cartridge + null modem cable (9600Baud8N1)
Yeah I must confess I don't think I have a serial cable ... :/
Re: Ideas on non-working Mega 4?
Posted: 14 Oct 2018 20:39
by troed
Since TOS does manage to set 50Hz I quickly checked whether there was any difference booting a test cart instead, but no. This ... confuses me a bit.
Re: Ideas on non-working Mega 4?
Posted: 14 Oct 2018 21:47
by exxos
This is where diagrom comes in useful, as it can test out RAM without TOS needed...
Re: Ideas on non-working Mega 4?
Posted: 02 Nov 2018 17:02
by troed
Solved: Needs a new GLUE.
Re: Ideas on non-working Mega 4?
Posted: 02 Nov 2018 17:11
by troed
trivia: Hadn't seen this hack before.
megast_psu.JPG
Re: Ideas on non-working Mega 4?
Posted: 02 Nov 2018 17:26
by PhilC
Bridge rectifier the old fashioned way