Hopefully you have the board back in the case? The regulator heatsink really needs to be fixed to the case to allow the heat to dissipate.
That said, even when running normally, things get pretty warm, particularly the VDP
With lack of use, the keys do get a bit “jittery”, they often get better just with exercise (don’t we all!)
Spend a bit of time just working the keys repeatedly, I bet you see an improvement
Resurrecting an MTX500.
-
- Posts: 341
- Joined: 27 Nov 2016 19:58
Re: Resurrecting an MTX500.
Hehe. Yes, I've been exercising them. Some have got a little better.Dave wrote: ↑12 May 2019 19:48 Hopefully you have the board back in the case? The regulator heatsink really needs to be fixed to the case to allow the heat to dissipate.
That said, even when running normally, things get pretty warm, particularly the VDP
With lack of use, the keys do get a bit “jittery”, they often get better just with exercise (don’t we all!)
Spend a bit of time just working the keys repeatedly, I bet you see an improvement
As for the circuit board, yes, it's in the case and all bolted down.
-
- Posts: 341
- Joined: 27 Nov 2016 19:58
Re: Resurrecting an MTX500.
Having replaced the two LS273s and used switch cleaner/lubricant plus a bit of key tapping I have a working keyboard. It's not perfect as I get double characters on some keys now and again but it's usable. I also replaced the three LS244 chips as I no-longer trust them as they've been through a lot during the fault-finding.
I think I may have a latent memory fault although it passes the diag ROM RAM test. I may have to look into learning enough Z80 assembler to write a "March" memory test. (Write zeros from base of memory to top, from top read each location comparing with zero and set to 1. From the bottom read each value and check it's 1 and set to zero. Read all locations and make sure they're zero. This detects transition errors and addressing errors.) I'm guessing the diag ROM merely writes and then reads, which will only detect one type of error.
Why do I think this? If I load "STAR.MTX" from the CFX the game runs but slowly corrupts the display (star field get stuff left behind and numbers get printed in the wrong place on the screen) and eventually crashes.
P.S. Thinking about it there is a complication for the march test, you have to test a whole chip at once, so you'd have to page the "high" memory in and out during the test.
P.P.S. CP/M is unreliable and crashes not long after it starts, within a minute at most.
I think I may have a latent memory fault although it passes the diag ROM RAM test. I may have to look into learning enough Z80 assembler to write a "March" memory test. (Write zeros from base of memory to top, from top read each location comparing with zero and set to 1. From the bottom read each value and check it's 1 and set to zero. Read all locations and make sure they're zero. This detects transition errors and addressing errors.) I'm guessing the diag ROM merely writes and then reads, which will only detect one type of error.
Why do I think this? If I load "STAR.MTX" from the CFX the game runs but slowly corrupts the display (star field get stuff left behind and numbers get printed in the wrong place on the screen) and eventually crashes.
P.S. Thinking about it there is a complication for the march test, you have to test a whole chip at once, so you'd have to page the "high" memory in and out during the test.
P.P.S. CP/M is unreliable and crashes not long after it starts, within a minute at most.
Re: Resurrecting an MTX500.
I wonder if there might be a problem with the DRAM timing circuit?
Assuming that all the chips in the circuit are working, it might be worth checking C5 and C6 for damage. With all the work on the machine, they might have taken a knock? I had a weird RAM fault that turned out to be a cracked capacitor
Assuming that all the chips in the circuit are working, it might be worth checking C5 and C6 for damage. With all the work on the machine, they might have taken a knock? I had a weird RAM fault that turned out to be a cracked capacitor
-
- Posts: 341
- Joined: 27 Nov 2016 19:58
Re: Resurrecting an MTX500.
They're both newly replaced, along with 5D and 6D.Dave wrote: ↑14 May 2019 23:19 I wonder if there might be a problem with the DRAM timing circuit?
Assuming that all the chips in the circuit are working, it might be worth checking C5 and C6 for damage. With all the work on the machine, they might have taken a knock? I had a weird RAM fault that turned out to be a cracked capacitor
Re: Resurrecting an MTX500.
The daig rom writes an XOR of the high and low bytes of the address to each location as it fills the memory, then reads back to check the correct value is present. The early version wrote a fixed pattern but that didn't detect address issues. Running with the socketed 157 on the test MTX removed still passed the memory test, when it should have failedstephen_usher wrote: ↑14 May 2019 22:38 I'm guessing the diag ROM merely writes and then reads, which will only detect one type of error.
The revised test will detect addressing errors and plain broken or missing memory. it's not guaranteed to detect stuck bits or bit rot, because the pattern written is the same each time. But it seemed a fair compromise given the restrictions of programming with no ram available. I'll try having a look at the code over the weekend to see if it's possible to invert the data on alternate passes to help with stuck bit detection.
However, you might be able to test if the memory is decaying using the monitor. Use the F option to fill a block with a test pattern, maybe FF AA 55 or 00. Then use D to dump the same block and see if there's any changes
Re: Resurrecting an MTX500.
What are their values ?stephen_usher wrote: ↑14 May 2019 23:25They're both newly replaced, along with 5D and 6D.Dave wrote: ↑14 May 2019 23:19 I wonder if there might be a problem with the DRAM timing circuit?
Assuming that all the chips in the circuit are working, it might be worth checking C5 and C6 for damage. With all the work on the machine, they might have taken a knock? I had a weird RAM fault that turned out to be a cracked capacitor
Re: Resurrecting an MTX500.
If you want to confirm if the DRAM is being refreshed, limit the CPU to a short loop for at least 20ms. Then check the contents of memory.Martin A wrote: ↑14 May 2019 23:35The daig rom writes an XOR of the high and low bytes of the address to each location as it fills the memory, then reads back to check the correct value is present. The early version wrote a fixed pattern but that didn't detect address issues. Running with the socketed 157 on the test MTX removed still passed the memory test, when it should have failedstephen_usher wrote: ↑14 May 2019 22:38 I'm guessing the diag ROM merely writes and then reads, which will only detect one type of error.
The revised test will detect addressing errors and plain broken or missing memory. it's not guaranteed to detect stuck bits or bit rot, because the pattern written is the same each time. But it seemed a fair compromise given the restrictions of programming with no ram available. I'll try having a look at the code over the weekend to see if it's possible to invert the data on alternate passes to help with stuck bit detection.
However, you might be able to test if the memory is decaying using the monitor. Use the F option to fill a block with a test pattern, maybe FF AA 55 or 00. Then use D to dump the same block and see if there's any changes
Mark


“There are four lights!”
Step up to red alert. Sir, are you absolutely sure? It does mean changing the bulb

Autumn is here. Bye bye summer 2024...
Not as many MTXs as Dave!

-
- Posts: 341
- Joined: 27 Nov 2016 19:58
-
- Posts: 341
- Joined: 27 Nov 2016 19:58
Re: Resurrecting an MTX500.
It looks like I'm going to have to learn how to use the MTX assembler doesn't it?

The first test may be swapping the CPU as I have at least one unused spare Z80B.
Last night I did write a rudimentary march memory tester in BASIC. Assign an array (8192 elements), fill it with zeros, read from the top and set each value to 32768. Read from the bottom and set each value to 0. Read all the values to see if they're zero. That worked fine. I could really work out what value sets all bits in a floating point number. Is the format the same as is used on the Spectrum?