RE: ROM Dump of Amiga Keyboard controller

From: Martin Hoffmann-Vetter <martinHV_at_arcor.de>
Date: Tue, 10 Jun 2014 18:51:23 +0200
Message-ID: <005701cf84cc$3720b940$6800a8c0@mhv.webmade.com>
Hello Gerrit,

> has anyone here ever done a ROM dump of the keyboard controller of the
> Amiga?

This is a good question. At this time, nobody has reported a successfully
dump of a 6500/1 (or 6570/6571) Microcontroller.

> The controller is, on most Amigas, a 6570-036. This one looks a lot
> like the 6500/1 Microcontroller MOS offered back then. It's, of
> course, based on the 6502 that's why I thought it appropriate to ask
> here.
>
> Datasheet here:
>
>
http://www.6502.org/documents/datasheets/mos/mos_6500-1_one-chip_microcomput
er_oct_1986.pdf
>
> This Microcontroller has a test feature where you supply +10V to the
> RESET pin and from then on all memory fetches happen not from the
> internal ROM but from Port PC. According to the datasheet this will
> allow you to load a small program into the internal RAM (64 Bytes)
> that can, once RESET returns to +5V, dump the ROM to another port.
>
> Anyone here ever built such a circuit? Writing the program would be
> interesting since you have no address lines but only have to make sure
> that the correct byte is present on Port PC in the next cycle
> (external clock is divided by 2).

There is a nice posting at the 6502 forum from BigEd
(http://forum.6502.org/viewtopic.php?t=1216):

> Sounds like pulling \RES to 10v overrides all memory reads directing
> them to port C. So you feed opcodes and operands into port C as if it
> was a 6502 data bus. (At minimum you'd need something like an EEPROM
> with a counter driving the address pins.) But those instructions
> can't read ROM because all reads are redirected. Why can't you just
> bring \RES down to 5v for the cycles where the ROM is read?
>
> Perhaps you can, but if you're aiming to test the chip, you'd learn
> more if the code running from port C writes a secondary program into
> the 64 bytes of page 0 RAM. To run that program, it must be possible
> to feed in a JMP #0000 to port C and then bring \RES back to 5v in
> time for the next access.

So you have two problems to resolve. First you must find out how to put the
correct program data to the port C when you are in test mode. What happens
with the write memory access? So if you can write a small program into the
internally ram, the next question is, how to start this program.

I think this is a nice project. So it's possible to use an AVR to sequence
the program to port C and store an other program into the internally ram.
After swaping the execution of the programs, the AVR can take the rom dump
and store it or send it via serial line.

Martin


       Message was sent through the cbm-hackers mailing list
Received on 2014-06-10 17:00:03

Archive generated by hypermail 2.2.0.