Re: ROM Dump of Amiga Keyboard controller

From: Rainer Buchty <rainer_at_buchty.net>
Date: Wed, 11 Jun 2014 00:49:40 +0200 (CEST)
Message-ID: <alpine.DEB.2.02.1406102324270.14285@localhost>
On Tue, 10 Jun 2014, Gerrit Heitsch wrote:

> The problem is, as long as RESET is +10V, the datasheet claims ALL 
> fetches are done via Port PC. So you cannot run a program from RAM 
> until you return RESET to +5V. Catch-22...

Actually, it claims that all *memory* fetches are made from Port PC.

Whatever "memory" means here. Could be the entire memory range, given 
that it's memory-mapped I/O, or just ROM (F)800-(F)FFF.

With respect to Page 3, I wouldn't be surprised if it is only the 
latter. Chip-wise, it would even be easier in hardware as only the 
following changes would need to take place (in pseudo VHDL):

-- this is the actual overhead
TEST  <= '1'	when rst=10V	else '0';
nTEST <= not(TEST);

-- let TEST disable the ROM buffer/driver
-- difference: just a wire, i.e. TEST instead of '0'
ROM_CS <= TEST	when a(11)='1'	else '1';

-- let TEST disable the pin driver
-- again, difference is only a wire
for i in 0 to 7 generate
 	PC_pin(i) <= nTEST when PC_reg(i)='1' else '0';
end generate;

That's it. An biased transistor for getting nTEST='0' upon rst=10V, '1' 
else, an extra transistor for inverting it, and a little bit of wiring.


Anything else would add complexity: if *any* access to $000-$fff were to 
be routed through PCx, then also muting of RAM, PAx, PBx, PCx, PDx etc. 
would apply, which not only means routing TEST/nTEST all over the chip 
but also more terms, such as:

RAM_CS <= '0'  when a(11 downto 7)="00000" and rw='0'	-- RAM write always
      else TEST when a(11 downto 7)="00000" and rw='1'	-- RAM read only if not TEST
      else '1';

instead of just

RAM_CS <= '0' when a(11 downto 7)="00000" else '1';

Likewise, PA/PB/PC/PD port reads would need to be muted in order 
to avoid collision with the PCx input.


Since the overall efforts in hardware are significantly lower for the 
first case, i.e. only ROM (read) access is appearing at PCx, and given 
that this simpler solution even makes debugging easier (as jumping to 
0000 would now fetch data from RAM, giving easy software control over 
the ports), I wouldn't see the benefits of the "any access will come 
from PCx", but maybe I'm missing something.

Rainer


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

Archive generated by hypermail 2.2.0.