These signal plots were made by Gerrit Heitsch (gerrit (at) laosinh.s.bawue.de),
2011-11. Thanks Gerrit!
The first image is from a machine with 250466 board, 6510 CPU, 6569R5 VIC, and 82S100 PLA.
The second image is from a machine with 250469 board, 8500 CPU, 8565R2 VIC, and custom CMOS chip as "PLA".
Channel 1 (cyan) is the Phi0 clock in all these plots.
Let's first look at the Phi0 the VIC generates from the dot clock:
If everything in the circuits would happen instantaneously, the falling edge
of the dot clock would coincide with the falling edge of Phi0. From these
plots, you see that the delay on the old chip is almost twice what it is on
the new chip (half a pixel and a quarter pixel, respectively). The various
clock signals internal to the VIC should agree with Phi0 quite well (the
pin driver is rather fast and outputs the internal clock directly).
The CPU accesses the bus when AEC is high. A write to the VIC registers
will (in normal configuration, CPU port P2..P0 = 111 and the cartridge
detect pins high as well) be decoded to the VIC #CS pin by the core logic
(82S100 followed by a 74LS139, resp. a custom CMOS chip) from A15..A12 and
R/#W:
AEC |
|
|
R/#W |
|
|
A12 |
|
|
I/O #CS |
|
|
VIC #CS |
|
|
The AEC signal already is behind a bit on the old chip, especially if you
look at the rise/fall time. This causes R/#W and the address lines (both
generated by the CPU) to be later as well, but no further delay here.
The PLA is slower than the CMOS chip, and the 74LS139 adds more delay;
in the end, the VIC #CS signal is about 35ns earlier on the new system.
As a result, when writing to a VIC register the internal VIC logic starts
the write before the value is on the internal data bus, that data bus is
precharged instead; when writing to a colour register that is currently
being displayed, that shows colour 1111 (i.e. light grey) for a fraction
of a pixel before showing the written value (even if that is the same as
was in the register originally).