Re: Commodore 8296GD

From: Rhialto <rhialto_at_falu.nl>
Date: Fri, 2 Nov 2012 12:41:49 +0100
Message-ID: <20121102114149.GA21121@falu.nl>
On Thu 01 Nov 2012 at 11:37:22 +0100, Micha? Pleban wrote:
> I did not see any significance of bits 3-6. Here are the results of the
> read test (please note that I also tried reading from $F000 but it
> always returns ROM):

I'm reformatting your results a bit. If I ignore some parts of them,
I can draw some tentative conclusions. However, there must be more going
on. I'm ignoring the behaviour of the I/O range here.

0000 0000       $9000 - RAM, $A000 - RAM, $B000 - RAM, $E800 - RAM
     0010
     1000
     1010
        ^
        |- From this you could think that bit 0 is CR6 (I/O Peek Through)...
        V
0000 0001       $9000 - RAM, $A000 - RAM, $B000 - RAM, $E800 - I/O
     0011
     1001
     1011

0000 0100       $9000 - rom, $A000 - rom, $B000 - rom, $E800 - RAM
     0110
     1100
     1110

0000 0101       $9000 - rom, $A000 - rom, $B000 - rom, $E800 - I/O
     0111
     1101
     1111       normal situation

1000 0000       hang
     0001
     1000
     1001

1000 0010       $9000 - RAM, $A000 - RAM, $B000 - RAM, $E800 - I/O
     1010

1000 0011       $9000 - RAM, $A000 - RAM, $B000 - RAM, $E800 - RAM
     1011
      ^
      |- Looks like /RAM_ON, because it switches RAM at $B000
      V
1000 0100       $9000 - RAM, $A000 - RAM, $B000 - rom, $E800 - I/O
     1100

1000 0101       $9000 - rom, $A000 - RAM, $B000 - rom, $E800 - RAM
     1101
       ^
       |- Looks like /RAMSEL_A, because it switches RAM at A000
       V                        as long as /RAM_ON=1
1000 0110       $9000 - RAM, $A000 - rom, $B000 - rom, $E800 - I/O
     1110
        ^
        |- Looks like /RAMSEL_9, likewise
        V
1000 0111       $9000 - rom, $A000 - rom, $B000 - rom, $E800 - RAM
     1111

For the cases where it hangs, maybe there is a way to get out of it.  I
realised that the register at $FFF0, which contains the I/O peek through
bit, aka CR6, is always accessible to write. By default, the I/O peek
through is 0, I think (the whole register is reset to 00).

So if you write #$40 to $FFF0 before trying to write $E888, it would map
the I/O back into view. That's my theory, at least.

> Michau.
-Olaf.
-- 
___ Olaf 'Rhialto' Seibert  -- There's no point being grown-up if you 
\X/ rhialto/at/xs4all.nl    -- can't be childish sometimes. -The 4th Doctor

       Message was sent through the cbm-hackers mailing list
Received on 2012-11-02 12:00:05

Archive generated by hypermail 2.2.0.