[Coco] 6x09 read and write strobes.
jdaggett at gate.net
jdaggett at gate.net
Sun Dec 18 21:05:55 EST 2011
John
The circuit that I described is off the SIMON6809 board. It is used to access external RAM
and EEPROM. The ram is a 32K and the EEProm is a 2865 8K part.
The MC6800, 6801,6802, 6805, 6809 and 6811 all use the faling edge of the E-Clock to start
the machine cycle. All hae internal clocks that are out of phase from the E-clock. It is a bit
confusing to state which clock leads whom. It is all a matter of where you call the starting
point for a machine cycle. For the 6809 the Q-Clock is used for internal along with, I believe,
an inverted E-clock if Iread the schematic of the 6800 correctly. The 6809 used the same
basic archetecture as the 6800. They reprogrammed the internal PLA for different
instructions and added some other circuits. One was an Intruction Set Modify Register for
which there is a patent for that. The opcodes $10 and $11 affectionately called pre-bytes
actually modify the opcode following by changing the output of the PLA in the intruction set
decode logic. The other main circuit added was the Fast Interupt Circuit. Again a patent was
awarded for that. That gave the 6809 the FIRQ, a second interrupt source.
The Motorola processors used the rising edge of the E-Clock to tell the peripherals that it was
using the bus. In the COCO that is why the video acceses ram while the E-clock is low.
Peripherals can then be interleaved with the CPU clock cycles. The positive E-clock acts as
an enable. This is opposite polarity of the Intel system.
james
On 16 Dec 2011 at 14:38, John Kent wrote:
> Falling edge of Q is it ?
> I posted a timing diagram, on 2011/12/05 but I must have had Q inverted.
>
> You can use a 7400 to generate read and write strobes, or half a 74139
> decoder.
> Phil was using a CPLD and verilog to program it.
> The equations he used were:
>
> assign RD = E & RW & Reset;
> assign WR = Q & ~RW & Reset;
> assign nRD = ~RD;
> assign nWR = ~WR | RamWP;
>
> what it should have been I think was:
>
> assign RD = E & RW & nReset;
> assign WR = E & ~RW & nReset;
> assign nRD = ~RD;
> assign nWR = ~WR | RamWP;
>
> I'm not sure if his reset was active high or active low.
> I have not used verilog much, so I'm not 100% sure of the syntax.
> Some peripherals such as the Z8530 assert both RD & WR to reset the
> peripheral, if my memory serves me correctly. I'm not sure if Phil was
> trying to do that or if he was trying to prevent random read/writes
> during reset.
>
> I didn't get a reply from Phil Harvey-Smith, so I'm not sure if he has
> sorted out his problem.
>
> John.
>
>
> On 16/12/2011 1:13 PM, jdaggett at gate.net wrote:
> > Phil
> >
> > Not sure if this is too late or not.
> >
> > The 6809 use the E clock to primarily sync with peripherals as well as internal uses. The Q
> > clock is an internal clock. The address bus as well as the RW line are all valid on the falling
> > edge of the Qclock after the falling edge of the Eclock. The falling edge of the Eclock starts a
> > new cycle. You can generate an Intel compatible Write enable output by inverting the RW line
> > and NANDing it with the Eclock. A comparable Output Enable read signal is just NANDing
> > the RW line with the E clock.
> >
> >
> > james
> >
>
> --
> http://www.johnkent.com.au
> http://members.optusnet.com.au/jekent
>
>
> --
> Coco mailing list
> Coco at maltedmedia.com
> http://five.pairlist.net/mailman/listinfo/coco
>
>
> -----
> No virus found in this message.
> Checked by AVG - www.avg.com
> Version: 2012.0.1890 / Virus Database: 2108/4689 - Release Date: 12/18/11
>
More information about the Coco
mailing list