Replacing Z80  - Page 1
Forum section: electronics / repair

author: Jbliss
author_rank: Regular Contributor
timestamp: January 15, 2019, 01:15:56 pm
content: Hi All,Doing a restoration project of an old soundtracs Console with Midi Mutes,trying to repair the Computer section which consists ofTwo Z80s ;Z0840006PSC Z80 CPU 2DZ84C0010PEC Z80 CPU HUThey look both to be Z80s CPU's Would a new Z80 like this be ok to replace them with?https://au.element14.com/zilog/z84c0008peg/mcu-8bit-z80-8mhz-dip-40/dp/1081890CheersJBLISS

author: Daxxin
author_rank: Regular Contributor
timestamp: January 15, 2019, 06:55:59 pm
content: Hi , you mean overclock the board? i dont think that's easy

author: bsudbrink
author_rank: Frequent Contributor
timestamp: January 15, 2019, 07:48:03 pm
content: Are you sure the Z80 is bad? I've restored a number of Z80 based vintage computers and, regardless of the abuse they've seen, I've never come across a dead Z80.

author: Jbliss
author_rank: Regular Contributor
timestamp: January 15, 2019, 11:12:45 pm
content: Quote from: bsudbrink on January 15, 2019, 07:48:03 pmThe Z80 seems to have locked up, Do you have any tips on trouble shooting Them ?

author: jancumps
author_rank: Unknown
timestamp: January 15, 2019, 11:41:55 pm
content: They don't have persistent memory or fuses - don't lock up. They are working or defect.

author: bsudbrink
author_rank: Frequent Contributor
timestamp: January 16, 2019, 12:12:58 am
content: First thing I would check is to make sure it has a good clock.

author: Squiddaddy
author_rank: Regular Contributor
timestamp: January 16, 2019, 01:39:17 am
content: My first thoughts too. Make sure you have good power and a good clock. Check for bad electrolytics.

author: amyk
author_rank: Super Contributor
timestamp: January 16, 2019, 01:45:41 am
content: It's easy to breadboard a circuit that will just get the Z80 to execute NOPs, which can at least verify its basic operation.

author: Jbliss
author_rank: Regular Contributor
timestamp: January 16, 2019, 09:26:16 am
content: Thanks all so far, just double checking they are both Z80's Just different versions right?so they should have the same pinouts?CheersJBliss

author: bsudbrink
author_rank: Frequent Contributor
timestamp: January 16, 2019, 04:33:48 pm
content: Yes, those are both Z80 CPUs. The text "below" the "Z80 CPU" line is the production information. For example, the line "9541 2D" is interpreted as the two digit year "95" (for 1995), the two digit week "41" (the 41st week) and the production source code (I don't know the codes, but I would bet "2D" is a facility in Singapore). I'm guessing now, but I think the text "above" the "Z80 CPU" line is some kind of wafer identification number, that is, what wafer was this chip cut from.

author: Flenser
author_rank: Regular Contributor
timestamp: January 17, 2019, 03:11:34 am
content: You can test your existing chips using this technique posted by Julian Ilett to flash LEDs using just a bare Z80:

author: LapTop006
author_rank: Unknown
timestamp: January 18, 2019, 04:24:41 am
content: Quote from: Squiddaddy on January 16, 2019, 01:39:17 am... and then the program ROMs, especially if they're EEPROMs.

author: Jbliss
author_rank: Regular Contributor
timestamp: January 18, 2019, 11:22:59 am
content: Hey All,Thanks again so I am having no luck with trouble shooting this circuit, so my last hope is opening it up to the community.any Help would be appreciated!!!!The circuit that is a part of an old 1980s Soundtracs PC Midi Mixing Console. This is the computer section. It controls all the mutes of the console.All the clocks Lines and Voltages look to be present.Connector 11 (TEST POINT) ShowsRXCLK = 500khz Clock signalCLCK = 4 Mhz Clock SignalINT = HIGHHALT = LOWWA = 1Mhz ClockRD = HIGHCurrently have no response from the keypad and No data on the 7 segment displays.I have a Scope so can upload waveforms if need be.Could anyone point me to a source where I could Purchase the Z80 Parts if this need to be done further down the path.Z0840006PSC Z80 CPU 2DZ84C0010PEC Z80 CPU HUThanks !!!

author: glarsson
author_rank: Frequent Contributor
timestamp: January 18, 2019, 11:46:59 am
content: I found it weird to have two Z80 CPU so close to each other. The schematics you posted now explains that but adds another problem. In the schematics IC15 is the Z80 CPU but IC16 is a Z8470, more commonly known as a Z80 DART (dual asynchronous receiver transmitter). Why have the DART been replaced by a CPU and what damage has that caused?

author: Jbliss
author_rank: Regular Contributor
timestamp: January 18, 2019, 11:49:18 am
content: Quote from: glarsson on January 18, 2019, 11:46:59 amAhhhh! It was like that When I received the console second hand! However it did work in this configuration? is that possible?Thanks JBLISS

author: glarsson
author_rank: Frequent Contributor
timestamp: January 18, 2019, 11:52:22 am
content: The DART is connected to the MIDI port, so definitely no MIDI without a DART.

author: Jbliss
author_rank: Regular Contributor
timestamp: January 18, 2019, 11:54:20 am
content: Quote from: glarsson on January 18, 2019, 11:52:22 amHi Glarsson,Ok that makes sense the Mutes where working never used the MIDI. At the moment moment if I can get just Mutes going again it would be amazing! Thanks heaps for that !!

author: RoGeorge
author_rank: Super Contributor
timestamp: January 18, 2019, 12:08:09 pm
content: LOL, that was funny! Somebody inserted another chip there. I wonder if that was just a mistake, or straight trolling!It probable didn't do any damage, Z80, 8255 and TTLs are pretty resilient, but don't power the board any more.Find the proper chip first. I bet the board will simply start running after that. Usually, cross-reference part numbers are working just fine, so don't spend a fortune for the identical part. Equivalent parts are good enough:http://www.cpu-world.com/Support/Z80.htmlOf course, check the other components too, just to be sure they correspond to the schematic.

author: Jbliss
author_rank: Regular Contributor
timestamp: January 18, 2019, 12:18:29 pm
content: Quote from: RoGeorge on January 18, 2019, 12:08:09 pmIt Makes a lot of sense now! However it did Run with it before??? I have just ordered a new partHowever probing around I have discovered all the Data Buss Line on the (Actual lol) Z80 are at 3.6v ??Cheers Bliss

author: glarsson
author_rank: Frequent Contributor
timestamp: January 18, 2019, 12:24:25 pm
content: Now back to the test connector.The four signals INT*, HALT*, RD* and WR* are all active low (bar over, or * as I used). If the CPU is running then both RD and WR (not WA) should have high frequencies showing read and write activity. INT and HALT should be high with possible short low pulses depending on how they are used in this design. A constant low on HALT is not healthy. A constant high on RD is consistent with a halted CPU, but the 1MHz toggling of WR is not.

author: RoGeorge
author_rank: Super Contributor
timestamp: January 18, 2019, 12:38:36 pm
content: Quote from: Jbliss on January 18, 2019, 12:18:29 pmZ80 have a three-state data bus. According to the read and write pins, the data bus can be a HighZ, an input or an output at 0 or 1. Even with an oscilloscope, it can be tricky to properly visualize the level of 1s. The data bus can go up to about 4-5V, seen on an oscilloscope. Sometimes you may find pull-up resistors, or bus driver circuits, but I couldn't spot any in the schaematic you posted. (We will assume here nobody is trolling us with the schematic, too!)There are a lot of 8255 ports, and any extra chip is a capacitive load for the bus. This is probably close to the maximum fan-out, 3.6V could work just fine. Since it is working, as long as the power is in the range of +5V +/-0.25V, it's OK.

author: Jbliss
author_rank: Regular Contributor
timestamp: January 18, 2019, 12:48:40 pm
content: Quote from: glarsson on January 18, 2019, 12:24:25 pmThanks guys You have all been hugely helpful so far! would it be worth Getting a new Z80 Just to be safe ?https://www.ebay.com.au/itm/ZILOG-Z80A-CPU-Microcontroller-Central-processing-unit-40-Pin-Dip-Z8400APS/113524787684?hash=item1a6e9ac9e4:g:CUYAAOSwBPNXSRQD:rk:3:pf:1Thanks JBLISS

author: rhb
author_rank: Super Contributor
timestamp: January 18, 2019, 12:51:20 pm
content: Make a free run harness. Take a 40 pin socket and bend the data lines at 90 degrees outward. Hardwire a NOP instruction (00h) on the data lines.Then insert the free run harness into the socket and the CPU into the free run harness.When powered up the CPU will sit and cycle through all the addresses. You can then check for address line faults with a dual trace scope Start with A15 and A14. A14 should be twice the speed of A15, then proceed to A14 & A13A 16 bit logic analyzer would be easier. If you have one verify that all addresses between 0 and 65365 appear once and once only.Also look for solder flux residue anywhere on the board. If you see any clean it off with isopropyl alcohol and a soft brush. I've now made 7-8 repairs just by cleaning off flux residue. At one end of the spectrum an HP34401A DMM and at the other a motion activated LED night light and a TV remote.The 34401A arrived from eBay completely wonky. Just random digits on all settings. I opened it up and found a 1 cm brown spot of flux residue around an LF357 that had been replaced. I cleaned it off and it has worked flawlessly ever since. It reads within a few ppm of my other 34401A.

author: glarsson
author_rank: Frequent Contributor
timestamp: January 18, 2019, 01:09:24 pm
content: Don't buy a new Z80 CPU until you have tested the two you already have. Have you removed the "bonus" CPU and tested what happens with an empty IC16 socket? That might work depending on how the firmware reacts to a missing DART. It can't be worse than it is now. If you need to buy anything it's certainly a DART.

author: sorenkir
author_rank: Regular Contributor
timestamp: January 18, 2019, 01:51:25 pm
content: Hi,A few years ago I have successfully replaced a defective Z80 (one address pin had weak TTL levels), which in fact was a Mostek MK3880, with a NEC D780C.Michel.

author: Jbliss
author_rank: Regular Contributor
timestamp: January 18, 2019, 02:23:01 pm
content: Ok so same result with removed bonus CPU. Dart has been ordered !

author: Jbliss
author_rank: Regular Contributor
timestamp: January 19, 2019, 06:11:43 am
content: Quote from: rhb on January 18, 2019, 12:51:20 pmHey RHB,Ok so I tried this and this is the result I got. Bent all the Data and address outwards and tied all the Data lines to ground using 1k Resistors.Data Bus A15 to 11 All had 1 MhzData Bus A10 to A 6 had 1 MhzA7 switching between 520 and 1MhzA6 = 7.18A7 = 15.62Then doubling from then on to A0 @ 500khzThanks JBliss

author: rhb
author_rank: Super Contributor
timestamp: January 19, 2019, 12:54:06 pm
content: Quote from: Jbliss on January 19, 2019, 06:11:43 amI said to divert D0-D7 only.With a NOP on the data bus and the address bus disconnected from the board A0 should be the fastest and A15 the slowest. So it looks to me as if your Z80 is blown. However, with the address lines disconnected from the board also, the board may be sending signals to the CPU which alter the behavior. It might even put the Z80 into an undefined state.A0-A7 are used to select I/O devices, so something on the board may be asserting IOREQ.I've never played at HW level with a Z80 and I made a free run harness for a Vic20 (6502) one time 35 years ago. Strangely in the same week I find myself in 3 conversations about free running a 6800, 6502 and Z80.I've attached a few pages from "The Z80 User's Manual" by Joe Carr most of which is straight from the data sheet.*Only* the data lines should be disconnected from the CPU. All the address lines should remain connected to the board. So only D0-D7 should be bent and grounded.When the Z80 is reset, it jumps to 0000h and does an instruction fetch. So with a NOP on the CPU data bus it should then increment the PC to 0001h, 0002h etc until the PC rolls over. I suggest straightening A0-A15 and testing in the configuration I suggested. If you still see 1 MHz on the high order bits and the other control pins are set for an instruction fetch the CPU is definitely bad.

author: Jbliss
author_rank: Regular Contributor
timestamp: January 19, 2019, 01:09:31 pm
content: Quote from: rhb on January 19, 2019, 12:54:06 pmAhh Ok sorry misunderstood, all good, I shall redo the test with the address lines reconnectedThanks

author: Ian.M
author_rank: Super Contributor
timestamp: January 19, 2019, 01:51:46 pm
content: Build a reusable Z80 free run harness that wont damage the CPU or socket, based on a 40 pin turned pin socket. Crop and file smooth all the data bus pins. Take a 9 pin 8x 10K SIL resistor array and bend the pins enough to accommodate the remaining +5V pin (11) in the middle of the data pin stubs, bend its common pin up (away from the socket pins) and solder it to the sides of the stubs of the data pins with its body inside the socket footprint and not protruding below the plane of the pin bases, (some surgery to the plastic of the socket may be required). Jumper the common to the GND pin (29) on the opposite side of the socket using magnet or wirewrap wire. If necessary, protect the data pin stubs from shorting to the sides of a tall leaf spring socket by filing their outer corners for clearance and applying a strip of Kapton tape, notched to fit round pin 11.It can also be worth building an adapter that breaks out the Z80 /WAIT signal with enough control lines to let you attach a single step / slow run circuit. (hint: if you even suspect the original circuit uses /WAIT, stack two turned pin sockets so you can intercept it from the main board and AND it with the /WAIT from your single step/ free run circuit. The basic single step/ slow run circuit is fairly simple: a 74xx74, a CMOS 555, two switches, a pot with a switch and a few passives. You can trigger it off a variety of Z80 control signals including /RD, /WR, /M1, /MREQ and /IORQ depending on the bus cycle you want to debug. I presented a similar circuit for the NSC800 CPU here:Help! how to make a nsc800 computer? reply #263To make it Z80 compatible, delete the '138 decoder, taking /M1 direct from the Z80, and connect the circuit's /PS output to Z80 /WAIT.N.B. some multi-byte Z80 instructions have more than one M1 cycle, so stepping may need multiple button pushes, however the address will increment on every push.Its less useful on Z80 systems that use DRAM as holding the Z80 in a wait state disables DRAM refresh, but it can still be useful to check its actually executing from ROM, or if you trigger it off decoded /CS of particular memory or I/O chips, and add a status LED driven by U2B /Q, its useful to check the memory or I/O device is actually being accessed.

author: rhb
author_rank: Super Contributor
timestamp: January 19, 2019, 02:46:44 pm
content: That's a *much* fancier build than I did. But it has the virtue of being a durable tool. The one I built was anything but durable.

author: Ian.M
author_rank: Super Contributor
timestamp: January 19, 2019, 03:13:39 pm
content: Sorry guys!The NSC800 step / run circuit is *NOT* directly compatible with the Z80 as /WAIT is sampled during the memory or I/O access and extends that cycle, so applying /M1 directly to U2B /CLR prevents it clocking in a '1' to step or slow run. The fix is to OR the active low /M1 or other control signal from the Z80 with U2B /Q so the /CLR is removed as soon as its done its job.

author: Jbliss
author_rank: Regular Contributor
timestamp: January 29, 2019, 12:13:35 pm
content: Hi All,So here is the update I purchased a DART and while I was at it thought I Should grab a new Z80 as well as I am paying for shipping anyway and there cheap. They arrived today. Unfortunately no different, still no response. I have taken some pictures of the two new parts. Attached also are some screen shots of some waveforms. I have only noticed this now but the 4Mhz Clock signal is offset and also pretty far from a Square. Any thoughtsCheersJBLISS

author: Jbliss
author_rank: Regular Contributor
timestamp: January 29, 2019, 12:23:15 pm
content: Schematic for REF

author: Ian.M
author_rank: Super Contributor
timestamp: January 29, 2019, 02:17:00 pm
content: Quote from: Jbliss on January 15, 2019, 01:15:56 pmWhy would you think a 4MHz Z80 (Z8400APS in your photo) can be used to replace a 6MHz or 10MHz one?http://www.cpu-world.com/CPUs/Z80/Zilog-Z8400APS.htmlAlso the 8MHz one linked in your original post probably cant be used to replace the 10MHz one unless its seriously under-clocked.How are you probing the Z80 clock signal? What capacitive load is your probe adding?

author: glarsson
author_rank: Frequent Contributor
timestamp: January 29, 2019, 02:27:01 pm
content: Whe don't know the history of this broken unit, but the schematics clearly shows a 4MHz clock.We don't know why it had one 6Mhz NMOS Z80 and one 10MHz CMOS Z80, but no DART. It is also unknown if other parts are broken or replaced with something that shouldn't be there.

author: Jbliss
author_rank: Regular Contributor
timestamp: January 29, 2019, 02:42:45 pm
content: Quote from: Ian.M on January 29, 2019, 02:17:00 pmHi Ian Thanks for you reply. I used a 4mhz Z80 as that is what is referenced in the schematic. (4MHZ Clock)scope probes are specified at 85 pf / 18 pf.

author: Jbliss
author_rank: Regular Contributor
timestamp: January 29, 2019, 02:45:42 pm
content: I have thoroughly checked the rest of the board the rest of the IC's are as per the Schematic.Quote from: glarssonlink=topic=163681.msg2159725#msg2159725 date=1548772021

author: glarsson
author_rank: Frequent Contributor
timestamp: January 29, 2019, 02:48:50 pm
content: Where did you probe the 4MHz clock? On the crystal or the CLK signal, in the test connector for example?The original NMOS Z80 was quite picky about its clock and the triangle wave you showed does not look good if it shows the CLK signal.

author: Jbliss
author_rank: Regular Contributor
timestamp: January 29, 2019, 02:51:19 pm
content: Quote from: glarsson on January 29, 2019, 02:48:50 pmHi glarsson, Thanks for you help. I probed Both at the test point and Pin 6 of the Z80 both signals are the same as the screenshot I have uploaded.

author: glarsson
author_rank: Frequent Contributor
timestamp: January 29, 2019, 03:03:30 pm
content: What is used for IC18? What is actually there, not from the schematics.R15 should be 330 ohm. Its purpose is to pull up CLK to NMOS levels as the NMOS Z80 does not work with TTL levels. The clock needs to swing from close to 0V to close to 5V.The clock you show seems to be loaded down by something acting as a capacitor. I would remove everything socketed that is connected to CLK (except IC18) and see if the clock shape changes. Then, if that didn't make a change, follow CLK on the PCB and see what it is actually connected to.

author: Jbliss
author_rank: Regular Contributor
timestamp: January 29, 2019, 03:06:03 pm
content: Quote from: glarsson on January 29, 2019, 03:03:30 pmExcellent! great Idea! Shall do tomorrow! its 2AM in AusIC 18 is a 74ls04B1

author: glarsson
author_rank: Frequent Contributor
timestamp: January 29, 2019, 03:25:57 pm
content: The 74LS04 is a classic click driver for Z80. I used it for a 7,3728MHz Z80 board in the early eighties. A NMOS Z80B (6MHz) selected to run at higher frequencies. Static RAM, no waitstates, MMU for 1MB address space, fast.The output of a LS04 should not look like this.