==================================================================== DR 6502 AER 201S Engineering Design 6502 Execution Simulator ====================================================================
Supplementary Notes By: M.J.Malone
Trouble Shooting the 6502 Project Board ======================================= Quick Checks ============ There is only one important thing to keep in mind when faced with a non-functioning 6502 board. The board is just a series of traces. The errors in the trace pattern are well known and once fixed using the jumpers described in the project board notes, their is no reason for a board not to work except for reasons of software, power, bad chips and wiring mistakes. The quick diagnosis methods and quick are given below. A Software Error ----------------
Many times when a design group is trying something the test
fails, the software person is blamed. After a recheck of the program source code, the programmer says confidently, "Just look at this code, it is so simple how could there be an error? It must be 'the board' !". After several hours the software person discovers that they have typed:
lda DDRA_Port_Mask ; The mask for the I/O pattern of Port A
lda #DDRA_Port_Mask ; The mask for the I/O pattern of Port A
If the bit pattern 'DDRA_Port_Mask' were interpreted as an address
as in the first example, of course nothing works.
There are many such one character errors that are very
difficult to see late at night on the fourth check of the source code especially when the checker is convinced there is no error. The solution is to have a test EPROM around at all times that checks all components of the computer. Whenever a dispute of 'Is the error in hardware or software?' arises simply plug in the test EPROM and see if the board performs as expected or not. An example test EPROM program is given in BOARDTST.ASM. If your board has failed such a test as the one given in BOARDTST.ASM then continue.
Check the power supply, batteries and connections. Check WITH
A VOLTMETER the actual voltage being produced by the 7805 power regulator. The +5 volt trace is the one connected to the regulator pin next to the edge of the board. This trace runs the length of the board and has connections to several 10K resistors and at least one capacitor. The ground trace is connected to the middle pin on the power regulator. If the voltage is greater than 5 volts (like maybe 7-12 volts) see: 'Over Voltage' below. If the voltage is less than 5 volts (like maybe 0-4 volts) see 'Under Voltage' below. If the voltage is 5 +/- .1 volts then proceed.
It is possible that you have a bad chip. First check that your
check EPROM is good by checking it on someone else's computer board. If the EPROM is OK then put it back in the non-functioning board and proceed to swap chips with the working board ONE AT A TIME. If at some time the working board stops working or the non-functioning board checks out you can determine which of and how many bad chips you have.
Probably the fastest way to check if there is a wiring mistake
is to have someone else look at your computer board, preferably comparing it to a functioning board. Check the EPROM jumper is correct and in place and measures 5 volts. Check that there are two jumpers near the 74xx04. Check that one has a polarity of +5volts and the other GND. Check that there is a jumper near the 74xx74. Check that this jumper has a voltage of GND. Check that there is a jumper on the bottom of the 6502 and that it measures 5 volts. Check the polarity of the tantalum capacitors.
Trouble Shooting Procedure
Though all non-functioning computers will fail to function from
one of the above causes, a more detailed trouble-shooting procedure will be developed. After this several symptom-solution scenarios will be presented.
1) Connect the computer board to +12 and GND connections on the
power supply. Place you finger on the back of the 7805 power regulator and turn on the power supply. If the regulator becomes uncomfortable to touch then go to 'High Current Drain'. If the regulator does not become hot then continue.
2) First we will check the output of the 2 MHz clock circuit. Check
pin #6 on the 74xx04 chip with an oscilloscope set to 1 microsecond per division and 1 volt per division with the GND level at the bottom of the screen. If the pin shows an AC signal that is a rounded square wave of 2 MHz frequency (two complete cycles per division) then advance to step 5. If the signal is at either 0 volts or 5 volts (almost exactly) then go to step 3. If the signal is between .7 volts and 2.7 volts then go to 4).
3) You are at this step because the clock oscillator which is
supposed to be astable has latched into the high or low state. This is simply not possible if everything is connected and the 74xx04 is even close to working. Check the connection of the crystal, two resistors and the .1 microF capacitor. Try also replacing the 74xx04 chip.
4) You are at this step because your clock signal is not starting by
itself but instead is sitting in an equilibrium state. We will try disturbing its equilibrium a bit. Touch the leads of the crystal with your finger while continuing to probe the 74xx04 chip. If an AC signal develops then the solution to this problem is to turn off the power, connect a 100-1000pF capacitor from the square GND area to one of the leads of the crystal and then power up. If the AC signal develops immediately then continue to step 5 otherwise increase the capacitance and try again.
5) You now have a functioning 2 MHz clock unit. Probe pin #37 of
the 6502. The signal should be a square wave of frequency 1 MHz, one cycle per division. If this is the case advance to step 8). If the signal is a square wave but at a frequency of 2 MHz then go to step 7) otherwise continue to step 6).
6) You are here because your 74xx74 chip is probably not
functioning. Check it by swapping the chip and also check the jumper near the 74xx74 chip that it is 0 volts. Try removing the 6502 chip and see if the problem persists. If the clock signal becomes normal then perhaps the 6502 is blown or the 74xx74 is blown.
7) You are here because you have the 2 MHz clock problem as
described in the assembly notes. Try the solution as described in the printed notes you received with your computer board.
8) You have a proven CPU clock. Next test to see if the 6502
properly resets. Check the voltage on pin #40 of the 6502 using an oscilloscope. The voltage should be 5 volts. It is normal to see small spikes in the 5 volt level of approximately +/-.3 volts. Press the reset button and check that the voltage is 0 volts. If the voltage is the opposite to that expected then it is probably that you have a momentary open switch not a momentary closed switch as specified. If this is the case then you can still test your computer temporarily by holding the reset switch but you should replace the switch at the earliest opportunity.
9) You now have a proven Reset circuit. Next test to see if the
6502 is executing instructions by probing the SYNC signal of the CPU. The SYNC signal goes high every time the CPU fetches an opcode of program. The SYNC signal can be monitored by probing pin #7 of the 6502. Note: to get the pulse pattern to be stationary on the screen and not covered with ghosts and flickers, set the time base on 10 microseconds per division and then adjust the time base 'cal' knob slightly until the pattern locks in with the fewest ghosts. Set the times 10 sweep magnification on the time base. The time base should be effectively just a bit more than 1 microsecond per division. By adjusting the horizontal position knob, you will be able to scan through the series of pulses. The opcode fetch will last 1 microsecond. This pulse will be followed by at least 1 microsecond low. NOP, LDA #, TAY, BNE (not taken), SEC are all instructions that will take two machine cycles (microseconds) and will be seen on the oscilloscope as one cycle high followed by one cycle low. The longest instructions (cycles) are RTS (6), BRK (8) and Reset (6). On average, most instructions will show 3 or 4 cycles since all non-indexed memory fetches, jumps and arithmetic or logical statements are 3 or 4 cycles. It may seem for very long programs that it would be impossible to use this sort of count the cycles type analysis but it is usually not. Since most programs have one small segment of the code that is executed most of the time (like the innermost nest of a delay loop) it is possible to assume that most of what you see on the screen that small part of the program with the ghosts being the other parts of the program. By this method it is possible to determine whether the 6502 is executing the program intended or not.
If the above procedure does not lead to a cause of the problem
then the recommended procedure is to trim down the program to its minimum, and attempt chip swapping again paying particular attention to the VIA's, CPU, EPROM and RAM. It may also be possible that a poor soldering job may have left some connection not connected. If this is suspected then it is recommended that the board be inspected by someone, preferably someone else, and suspicious areas be touched up. Your computer board will work eventually. If there are no missing jumpers and no bad chips the test EPROM must check out.
Symptom: Over Voltage
First there are three possible causes for this. The power
regulator is designed to produce at least 5 volts. If there is another source of voltage on the board of greater than 5 volts, the
system voltage may rise above 5 volts. This is commonly caused by
some user circuit or input to a CMOS VIA. The obvious remedy is to turn off all external voltage sources and recheck the system voltage.
The second problem may be simply that the +12 volt power supply
has been mistakenly connected to the +5 volt connection on the bottom of the circuit board. The third possible problem may be that the 7805 is blown and not operating properly. The over voltage condition is very serious and can lead to destruction of ALL of the chips in the system (the $35 mistake).
Symptom: Under Voltage
If the voltage in the system is low and the 7805 power
regulator is not getting uncomfortably warm then this can only mean that the 7805 is defective or is not properly connected or the measurement of voltage is not being done properly. If the 7805 is getting uncomfortably hot to touch then go on to 'High Current Drain'.
Symptom: High Current Drain
This assumes that the VIA's are not connected to any circuitry
which may be causing large currents to be drawn from the board. If the VIA's are connected to external circuitry then disconnect them and begin again. If NMOS 6502 or 6522 chips have been used then it is quite possible that there is nothing wrong at all. An computer with an NMOS 6502 and two NMOS 6522s can easily draw 1 ampere as compared to 0.024 milliamperes (yes a factor of 40!) for an all CMOS computer. This extra current draw is enough to make any 7805 a bit hot. For testing, it is possible to bypass the regulator and feed the computer board from a high current supply for testing purposes but it is recommended that the NMOS components be replaced with CMOS at the earliest possible opportunity. It is entirely possible that the board may not work at all with too many NMOS components because of voltage drops over the lengths of the fine traces used to make the circuit. This can be caused by a bad chip, a short circuit in the wiring or a bad tantalum capacitor. To check to see if a bad chip is to blame, try removing the chips one by one and trying again each time. If the current drain disappears then the last chip removed may be the cause. Another troubleshooting method recommended is to bypass the 7805 and connect a high current 5 volt supply directly to the 5 volt rail of the board. Turn on the power and quickly check all chips with the back of a finger (because it is most sensitive to heat) to look for one that may be heating. NMOS and TTL chips may become warm but will never be hot under normal operation. Transistors and regulators may become hot but will never be uncomfortable to touch. If none of the chips seem to be heating then leave the power on and check the voltage and current being
output by the supply. If the supply voltage is very close to zero
then there is likely a short in the wiring (see next heading). Wait a short time and look for smoke (big white clouds of smoke) from one of the tantalum capacitors. If one of the capacitors is bad it will progress from smoke to flames quickly so stand by the off switch. As soon as heat is detected from a chip or smoke from a capacitor shut off the supply and replace the component. See if there is still a problem with a high current drain.
Symptom: Unlocatable Short Circuit
Sometimes there is an unlocatable short circuit somewhere on
the board, usually the result of a poor soldering job or a resistor or capacitor lead bent over and touching another area. If the board has been thoroughly inspected by several people and the error is not obvious then there is another suggested course of action. Remove all the chips from the board and bypass the regulator with a high current variable supply. Adjust the current limiting or the voltage until the current flowing through the board is something between .05 and .1 amperes. Using a voltmeter set to read millivolts, measure the voltage across the power supply. If the voltage is too great to be read in millivolts do not become alarmed, this is actually better. The idea here is than any trace that has a current flowing through it also has a small voltage drop along its length. If you start where you have connected the -ve lead of the power supply and test all paths leading from it there will be one with a significant voltage difference in millivolts along some test length. This path is the one that leads to the short circuit. Continue to leap frog along until you find your way back to the +ve lead of the power supply. Somewhere on the path you will discover a wrong connection and there is your short.