Re: Commodore 8296GD

From: Michał Pleban <lists_at_michau.name>
Date: Thu, 01 Nov 2012 11:37:22 +0100
Message-ID: <509250E2.6060400@michau.name>
Hello!

I am sorry for the delay - the board was already disassembled and packed
for sending to Steve, so I needed to dig it out. We have a long weekend
over here so I can play with my machines now :-)

Rhialto wrote:

> - Is the register at E888 write-only, or can you read it as well?

No, it's write-only. All reads always return $E8.

> - Does it seem to appear on multiple addresses, not only E888?

>From E888 to E88F, then from E898 to E89F, and so on until the end of
CRTC register space.

> - If the memory configuration goes to the setting with even the I/O
>   mapped out, is the E888 register still writable? It should be, to make
>   it possible to get ROMs and I/O back.

Apparently it might be possible to map the $E888 register out with some
values (see below).

>   Testing this is somewhat involved but should be possible, if you first
>   find out how the bits in E888 map to the jumpers (and in particular
>   /RAM ON, /RAM SEL 9 and /RAM SEL A). Then it needs a small ML program
>   to map in all RAM and then try to go back to normal.

I wrote a simple machine language program that pokes various values to
$E888 and tries to read from $9000, $A000, $B000 and $E800. It turns out
that some values hang the computer even when interrupts are switched
off, and the computer will not reset after that (it even doesn't beep),
so most probably they map out the $E888 register from writing so it
cannot be restored.

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):

0, 2, 8, 10:
$9000 - RAM, $A000 - RAM, $B000 - RAM, $E800 - RAM

1, 3, 9, 11:
$9000 - RAM, $A000 - RAM, $B000 - RAM, $E800 - I/O

4, 6, 12, 14:
$9000 - ROM, $A000 - ROM, $B000 - ROM, $E800 - RAM

5, 7, 13, 15:
$9000 - ROM, $A000 - ROM, $B000 - ROM, $E800 - I/O

128, 129, 136, 137:
hang

130, 138:
$9000 - RAM, $A000 - RAM, $B000 - RAM, $E800 - I/O

131, 139:
$9000 - RAM, $A000 - RAM, $B000 - RAM, $E800 - RAM

132, 140:
$9000 - RAM, $A000 - RAM, $B000 - ROM, $E800 - I/O

133, 141:
$9000 - ROM, $A000 - RAM, $B000 - ROM, $E800 - RAM

134, 142:
$9000 - RAM, $A000 - ROM, $B000 - ROM, $E800 - I/O

135, 143:
$9000 - ROM, $A000 - ROM, $B000 - ROM, $E800 - RAM

Apparently the bit #3 must have some meaning because it is different in
the values written to this register by the ROM, but I cannot figure out
what it does.

The writes must behave somewhat differently, because the ROM writes 131
to the register which maps I/O reads to RAM, yet the I/O register is
writable. Perhaps the bit #3 together with bit #7 controls write access
- this is yet to be determined.

One more thing - the register is not cleared by a reset. So if you map
out the BASIC ROM, then press the reset switch, the computer will not
restart because the BASIC ROM is still mapped out. Only switching it off
and on will work. Quite sloppy design, because resetting the computer
while performing some graphics operation may render it unusable unless
physically turned off (losing all RAM contents).

Regards,
Michau.

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

Archive generated by hypermail 2.2.0.