View Single Post
Old 21st Feb 2021, 7:00 pm   #609
Join Date: May 2008
Location: Derby, UK.
Posts: 7,732
Default Re: Non-working Commodore PET 3016

For what it's worth, all the KIL instructions on the 6502 have the form xxxx0010. (Only 10100010 is a valid instruction, LDX #n.) All instructions of the form xxxx0000 except 10000000 are valid instructions, and 10000000 at least terminates properly despite not doing anything useful.

If the buffer driving D1 of the 6502 can't pull its zeros low enough, then an innocuous xxxx0000 instruction will look like xxxx0010. Now looking at the instruction table, xxxx0000 includes all the conditional branch instructions, JSR, RTS, BRK, RTI, LDY #n, CPY #n and CPX #n; which are all reasonably common instructions, since any program is bound to use at least a few loops and subroutines, and the PET's operating system almost certainly will be making use of interrupts to deal with the hardware. So it's almost certain to encounter one of these instructions. And a fault causing D1 to read high would turn anything but LDY #n into a KIL instruction.

Now, if I'm reading the diagram correctly, the D1 signal is on 6502 (UC4) pin 32, UE9 pins 4 and 5; the buffered version is on pins 15 and 16. (There are pairs of pins tied together, because each line in the data bus can be an input or an output. Each 74LS244 has four buffers going "left to right" with a common output enable which can turn them all high-impedance, and four buffers going "right to left" with a separate common output enable.)

It might be a job proving much from the 'scope traces, though, if the processor dies straight away; if you disconnect pin 32 of the CPU then the buffer output will have no load on it, and suddenly find itself capable of driving its zeros nice and low again.

(Maybe a temporary pull-down resistor on CPU pin 32 would help UE9 drive its 0s a bit lower? Too small a value would leave it with the opposite problem: unable to drive its 1s high enough, though. Still, if it can be made to run even a bit longer before failing, that would tend to indicate a problem there.) It might also be worth noting that xxxx0011 instructions always complete, so you could leave pin 33 of the CPU unconnected while probing UE9 pin 5. If the 0s don't seem to be going all the way down to 0V, that's the problem.
If I have seen further than others, it is because I was standing on a pile of failed experiments.
julie_m is online now   Reply With Quote