Data 6000 Repair and Toubleshooting - Page 1
Forum section: electronics / repair

author: Rerouter
author_rank: Super Contributor
timestamp: August 10, 2013, 12:32:07 pm
content: Over the past few months i have picked back up my spectrum analyser projectand now i have reached a point where i feel goes a tad over my current level of understanding,History:This item came to me pretty much as a bag of modules, someone had stripped this thing back to bare bones likely in a previous attempt to repair it and must have given up, leaving me with pots of screws and parts, and searching for a very hard to find manualA few months later i purchased the manual from manuals-plus and started making some headway, however was still left with no schematics of either power supply sections, or how the CRT was meant to be hooked upAfter a week of trying every combination i found what i though was right, powered it on and got only the analog plugin showing signs of life, no CRT no keyboard lights etc,I successfully reverse engineered the Rear power supply and found 3 dead electrolytic and 1 shorted tantalum, which meant the supply was only giving out a very wobbly 5V rail and the +-15V rails where sitting grounded, following repairing and tweaking the correct voltage output i tried my luck again, to receive the same result, which i later found out is due to the rest of the device using an internal switch mode supply for its +5V rail,I then proceeded to again reverse engineer the internal power supply, replaced close to 8 tantalum's, and 1 electro, and 4 power resistors (tantalum across current limiting resistor disabling it) and successfully got all the output voltages reading correctly, then tweaked to read dead on 5V,Upon testing back in the system, a good 3-4 tantalum's popped on the CRT coil driver at the sudden restoration of a supply rail, and equally had to be replaced, tried one more time and finally had the power section in working order,At this point i was made better aware that the CRT driver board and a diagnostic plug underneath the CRT shared the exact same shape plug, and that i had plugged the coils directly between some supply rails, leaving me uncertain of its condition, (may need to replace but seems fairly common NEC model) Luckily it had an external output for X, Y and Z on the display drive board, but with nothing coming out of either of the 3, left me with either the CPU or RAM/ROM Board at fault.Current Situation:Following a basic troubleshooting flowchart in the manual I confirmed the fault lies within either the CPU board or RAM/ROM (Memory) Board, as the CPU is resetting every 64ms from a timeout, (hardware on CPU page 3 of 5) and would like some help narrowing down possible culpritsFirst Though, Each page contains signatures, relating to the state of the machine between a start and stop pulse (CPU Page 4, both signals happen at 6.1Hz) and i would greatly appreciate it if anyone had any clue on how to decode what they refer to, with the more interesting point to me being so far that when inverted the last 2 characters remain the same...which would allow me to test the entire CPU board, but sadly not the Memory as that requires the use of a diagnostics board that was a sold separately add-on at the time..Next Up, On Memory Page 1, There is a PROM that decodes the chip enable pins of all the EPROMs housing the operating system, and however i approach it, it seems to me that it may be corrupted,Code:000000000 -> 1001000000001 -> 1001000000010 -> 1001000000011 -> 1001000000100 -> 1001000000101 -> 1001000000110 -> 1001000000111 -> 1001000001000 -> 0000000001001 -> 0000000001010 -> 0000000001011 -> 0000000001100 -> 1001000001101 -> 1001000001110 -> 1001000001111 -> 1001000010000 -> 0000000010001 -> 0000000010010 -> 0000000010011 -> 0000000010100 -> 1001000010101 -> 1001000010110 -> 1001000010111 -> 1001000011000 -> 0000000011001 -> 0000000011010 -> 0000000011011 -> 0000000011100 -> 1001000011101 -> 1001000011110 -> 1001000011111 -> 1001000100000 -> 0000000100001 -> 0000000100010 -> 0000000100011 -> 0000000100100 -> 1001000100101 -> 1001000100110 -> 1001000100111 -> 1001000101000 -> 0000000101001 -> 0000000101010 -> 0000000101011 -> 0000000101100 -> 1001000101101 -> 1001000101110 -> 1001000101111 -> 1001000110000 -> 0000000110001 -> 0000000110010 -> 0000000110011 -> 0000000110100 -> 1001000110101 -> 1001000110110 -> 1001000110111 -> 1001000111000 -> 0000000111001 -> 0000000111010 -> 0000000111011 -> 0000000111100 -> 1001000111101 -> 1001000111110 -> 1001000111111 -> 1001001000000 -> 0000001000001 -> 0000001000010 -> 0000001000011 -> 0000001000100 -> 1001001000101 -> 1001001000110 -> 1001001000111 -> 1001001001000 -> 0000001001001 -> 0000001001010 -> 0000001001011 -> 0000001001100 -> 1001001001101 -> 1001001001110 -> 1001001001111 -> 1001001010000 -> 0000001010001 -> 0000001010010 -> 0000001010011 -> 0000001010100 -> 1001001010101 -> 1001001010110 -> 1001001010111 -> 1001001011000 -> 0000001011001 -> 0000001011010 -> 0000001011011 -> 0000001011100 -> 1001001011101 -> 1001001011110 -> 1001001011111 -> 1001001100000 -> 0000001100001 -> 0000001100010 -> 0000001100011 -> 0000001100100 -> 1001001100101 -> 1001001100110 -> 1001001100111 -> 1001001101000 -> 0000001101001 -> 0000001101010 -> 0000001101011 -> 0000001101100 -> 1001001101101 -> 1001001101110 -> 1001001101111 -> 1001001110000 -> 0000001110001 -> 0000001110010 -> 0000001110011 -> 0000001110100 -> 1001001110101 -> 1001001110110 -> 1001001110111 -> 1001001111000 -> 0000001111001 -> 0000001111010 -> 0000001111011 -> 0000001111100 -> 1001001111101 -> 1001001111110 -> 1001001111111 -> 1001010000000 -> 0001010000001 -> 0001010000010 -> 0001010000011 -> 0001010000100 -> 1010010000101 -> 1111010000110 -> 1111010000111 -> 1111010001000 -> 1111010001001 -> 1111010001010 -> 1111010001011 -> 1111010001100 -> 1111010001101 -> 1111010001110 -> 1111010001111 -> 1111010010000 -> 1111010010001 -> 1111010010010 -> 1111010010011 -> 1111010010100 -> 1111010010101 -> 1111010010110 -> 1111010010111 -> 1111010011000 -> 1111010011001 -> 1111010011010 -> 1111010011011 -> 1111010011100 -> 1111010011101 -> 1111010011110 -> 1111010011111 -> 1111010100000 -> 1111010100001 -> 1111010100010 -> 1111010100011 -> 1111010100100 -> 1111010100101 -> 1111010100110 -> 1111010100111 -> 1111010101000 -> 1111010101001 -> 1111010101010 -> 1111010101011 -> 1111010101100 -> 1111010101101 -> 1111010101110 -> 1111010101111 -> 1111010110000 -> 1111010110001 -> 1111010110010 -> 1111010110011 -> 1111010110100 -> 1111010110101 -> 1111010110110 -> 1111010110111 -> 1111010111000 -> 1111010111001 -> 1111010111010 -> 1111010111011 -> 1111010111100 -> 1111010111101 -> 1111010111110 -> 1111010111111 -> 1111011000000 -> 1111011000001 -> 1111011000010 -> 1111011000011 -> 1111011000100 -> 1111011000101 -> 1111011000110 -> 1111011000111 -> 1111011001000 -> 1111011001001 -> 1111011001010 -> 1111011001011 -> 1111011001100 -> 1111011001101 -> 1111011001110 -> 1111011001111 -> 1111011010000 -> 1111011010001 -> 1111011010010 -> 1111011010011 -> 1111011010100 -> 1111011010101 -> 1111011010110 -> 1111011010111 -> 1111011011000 -> 1111011011001 -> 1111011011010 -> 1111011011011 -> 1111011011100 -> 1111011011101 -> 1111011011110 -> 1111011011111 -> 1111011100000 -> 1111011100001 -> 1111011100010 -> 1111011100011 -> 1111011100100 -> 1111011100101 -> 1111011100110 -> 1111011100111 -> 1111011101000 -> 1111011101001 -> 1111011101010 -> 1111011101011 -> 1111011101100 -> 1111011101101 -> 1111011101110 -> 1111011101111 -> 1111011110000 -> 1111011110001 -> 1111011110010 -> 1111011110011 -> 1111011110100 -> 1111011110101 -> 1111011110110 -> 1111011110111 -> 1111011111000 -> 1111011111001 -> 1111011111010 -> 1111011111011 -> 1111011111100 -> 1111011111101 -> 1111011111110 -> 1111011111111 -> 1111100000000 -> 1111100000001 -> 1111100000010 -> 1111100000011 -> 1111100000100 -> 1111100000101 -> 1111100000110 -> 1111100000111 -> 1111100001000 -> 1111100001001 -> 1111100001010 -> 1111100001011 -> 1111100001100 -> 1111100001101 -> 1111100001110 -> 1111100001111 -> 1111100010000 -> 1111100010001 -> 1111100010010 -> 1111100010011 -> 1111100010100 -> 1111100010101 -> 1111100010110 -> 1111100010111 -> 1111100011000 -> 1111100011001 -> 1111100011010 -> 1111100011011 -> 1111100011100 -> 1111100011101 -> 1111100011110 -> 1111100011111 -> 1111100100000 -> 1111100100001 -> 1111100100010 -> 1111100100011 -> 1111100100100 -> 1111100100101 -> 1111100100110 -> 1111100100111 -> 1111100101000 -> 1111100101001 -> 1111100101010 -> 1111100101011 -> 1111100101100 -> 1111100101101 -> 1111100101110 -> 1111100101111 -> 1111100110000 -> 1111100110001 -> 1111100110010 -> 1111100110011 -> 1111100110100 -> 1111100110101 -> 1111100110110 -> 1111100110111 -> 1111100111000 -> 1111100111001 -> 1111100111010 -> 1111100111011 -> 1111100111100 -> 1111100111101 -> 1111100111110 -> 1111100111111 -> 1111101000000 -> 1111101000001 -> 1111101000010 -> 1111101000011 -> 1111101000100 -> 1111101000101 -> 1111101000110 -> 1111101000111 -> 1111101001000 -> 1111101001001 -> 1111101001010 -> 1111101001011 -> 1111101001100 -> 1111101001101 -> 1111101001110 -> 1111101001111 -> 1111101010000 -> 1111101010001 -> 1111101010010 -> 1111101010011 -> 1111101010100 -> 1111101010101 -> 1111101010110 -> 1111101010111 -> 1111101011000 -> 1111101011001 -> 1111101011010 -> 1111101011011 -> 1111101011100 -> 1111101011101 -> 1111101011110 -> 1111101011111 -> 1111101100000 -> 1111101100001 -> 1111101100010 -> 1111101100011 -> 1111101100100 -> 1111101100101 -> 1111101100110 -> 1111101100111 -> 1111101101000 -> 1111101101001 -> 1111101101010 -> 1111101101011 -> 1111101101100 -> 1111101101101 -> 1111101101110 -> 1111101101111 -> 1111101110000 -> 1111101110001 -> 1111101110010 -> 1111101110011 -> 1111101110100 -> 1111101110101 -> 1111101110110 -> 1111101110111 -> 1111101111000 -> 1111101111001 -> 1111101111010 -> 1111101111011 -> 1111101111100 -> 1111101111101 -> 1111101111110 -> 1111101111111 -> 1111110000000 -> 1111110000001 -> 1111110000010 -> 1111110000011 -> 1111110000100 -> 1111110000101 -> 1111110000110 -> 1111110000111 -> 1111110001000 -> 1111110001001 -> 1111110001010 -> 1111110001011 -> 1111110001100 -> 1111110001101 -> 1111110001110 -> 1111110001111 -> 1111110010000 -> 1111110010001 -> 1111110010010 -> 1111110010011 -> 1111110010100 -> 1111110010101 -> 1111110010110 -> 1111110010111 -> 1111110011000 -> 1111110011001 -> 1111110011010 -> 1111110011011 -> 1111110011100 -> 1111110011101 -> 1111110011110 -> 1111110011111 -> 1111110100000 -> 1111110100001 -> 1111110100010 -> 1111110100011 -> 1111110100100 -> 1111110100101 -> 1111110100110 -> 1111110100111 -> 1111110101000 -> 1111110101001 -> 1111110101010 -> 1111110101011 -> 1111110101100 -> 1111110101101 -> 1111110101110 -> 1111110101111 -> 1111110110000 -> 1111110110001 -> 1111110110010 -> 1111110110011 -> 1111110110100 -> 1111110110101 -> 1111110110110 -> 1111110110111 -> 1111110111000 -> 1111110111001 -> 1111110111010 -> 1111110111011 -> 1111110111100 -> 1111110111101 -> 1111110111110 -> 1111110111111 -> 1111111000000 -> 1111111000001 -> 1111111000010 -> 1111111000011 -> 1111111000100 -> 1111111000101 -> 1111111000110 -> 1111111000111 -> 1111111001000 -> 1111111001001 -> 1111111001010 -> 1111111001011 -> 1111111001100 -> 1111111001101 -> 1111111001110 -> 1111111001111 -> 1111111010000 -> 1111111010001 -> 1111111010010 -> 1111111010011 -> 1111111010100 -> 1111111010101 -> 1111111010110 -> 1111111010111 -> 1111111011000 -> 1111111011001 -> 1111111011010 -> 1111111011011 -> 1111111011100 -> 1111111011101 -> 1111111011110 -> 1111111011111 -> 1111111100000 -> 1111111100001 -> 1111111100010 -> 1111111100011 -> 1111111100100 -> 1111111100101 -> 1111111100110 -> 1111111100111 -> 1111111101000 -> 1111111101001 -> 1111111101010 -> 1111111101011 -> 1111111101100 -> 1111111101101 -> 1111111101110 -> 1111111101111 -> 1111111110000 -> 1111111110001 -> 1111111110010 -> 1111111110011 -> 1111111110100 -> 1111111110101 -> 1111111110110 -> 1111111110111 -> 1111111111000 -> 1111111111001 -> 1111111111010 -> 1111111111011 -> 1111111111100 -> 1111111111101 -> 1111111111110 -> 1111111111111 -> 1111The Truth Table i Nutted out is: (D0,D1,D2,D3)XXX1 = Select ROMxxx0 = select RAM000X = BERR Low100X = Staten 01 Low010X = Staten 02 Low110X = Staten 03 Low001X = Staten 04 Lowhowever looking through the contents of that prom, i can only find a way to trigger a BERR (Bus Error) or enable the first EPROM pair, and there is definitely a decent whack of control software on the other 3, like for the first 128 addressed something overwrote the center 2 bits with 0's...., In which case would there be any way i could get some help in determining which addresses referred to those other roms even if just nudging me on the right direction on disassembling the roms, so that i could possible reconstruct it,And Third And Final thought, possibly a RAM Chip has died, if such was the case, would there be anything special to testing it? Or would it just be a case of writing all 1's Read it back and then all 0's? and flagging if any bit did not read out correctly?,Thanks Immensely In Advance, this thing is more of a pet project than a necessity, but i really want to get this thing going,In the interest of getting some help, i have scanned and cleaned all the schematics so that they are easily readable, compared to the faded copies i have now..I Have Also Attached the copy of the first rom pair and the supposed addressing map in the hope someone may be able to help me out with option 2....Edit1: Shrunk schematics,

author: GeoffS
author_rank: Unknown
timestamp: August 10, 2013, 12:38:29 pm
content: Any chance of resizing the images to something manageable?

author: Rerouter
author_rank: Super Contributor
timestamp: August 10, 2013, 12:53:16 pm
content: There You Go

author: megajocke
author_rank: Regular Contributor
timestamp: August 11, 2013, 07:43:15 am
content: Hey, I have one of these beasts actually.I don't have the manual so I'm not sure what it can do. Maybe I should buy one too. I have played with the controls a little but haven't been able to get it to do anything interesting, although the menus seem to work.The plugin seems to be a 2 channel analog thing and is making a whining noise so I think there might be a problem with the isolated power supply in the plugin. (or maybe it is being shorted by bad tantalums)

author: Rerouter
author_rank: Super Contributor
timestamp: August 11, 2013, 07:52:23 am
content: megajocke the plugin is powered by the rear power supply, mine had some dud caps and i bet yours will have the same, (warning that the thing is voltage dependent)(the rear supply can be tested while disconnected from the main system just give it in the ball park 50mA of load on the -15, +15 and +5V Rails, )is there any remote chance of getting a copy of your memory cards prom?i have a small arduino script i made up for unloading the thing if you have one...

author: megajocke
author_rank: Regular Contributor
timestamp: August 13, 2013, 07:57:14 am
content: Thanks for the info. But what can this thing do? I don't really know anything about it and got it as non-working. It was going to be trashed but I rescued it because I thought I could make use of the vector display, but maybe trying to get it working would be more useful.I'm currently away from home so can't do anything, but I could probably have a look when I get back.

author: Rerouter
author_rank: Super Contributor
timestamp: August 13, 2013, 08:25:46 am
content: its a universal waveform analyser, it is essentially a digital storage scope except it then can go and convert the output from the time domain to the frequency domain, so you see peaks at given frequencies, while seeing what a normal oscilloscope would also spit out, (my plug-in is 100 millions samples per second, so i very much want to see it revived)also apparently it is meant to have a logic analyser plugin, but i have yet to find any info on it,as far as the display goes, the display card has a crazy fast dac on it, but if you wanted to drive the display yourself, the plug that runs off to the display driver presents an X,Y and Z input, i think in the range of +7 to -14V,I'll pm through to you the manual, it is a very powerful tool once working,

author: Rerouter
author_rank: Super Contributor
timestamp: August 13, 2013, 11:43:35 am
content: Some progress,I went over my code and quite literally had forgotten to carry the 2,So if a lurker ever needs it, here is the "S64 3.00" Prom ImageA0 is the right most, D3 is the Right MostCode:000000000 -> 1001000000001 -> 1001000000010 -> 0000000000011 -> 1001000000100 -> 0000000000101 -> 1001000000110 -> 0000000000111 -> 1001000001000 -> 0000000001001 -> 1001000001010 -> 0000000001011 -> 1001000001100 -> 0000000001101 -> 1001000001110 -> 0000000001111 -> 1001000010000 -> 0000000010001 -> 1001000010010 -> 0000000010011 -> 1001000010100 -> 0000000010101 -> 1001000010110 -> 0000000010111 -> 1001000011000 -> 0000000011001 -> 1001000011010 -> 0000000011011 -> 1001000011100 -> 0000000011101 -> 1001000011110 -> 0000000011111 -> 1001000100000 -> 1000000100001 -> 0101000100010 -> 1000000100011 -> 0101000100100 -> 1000000100101 -> 0101000100110 -> 1000000100111 -> 0101000101000 -> 1000000101001 -> 0101000101010 -> 1000000101011 -> 0101000101100 -> 1000000101101 -> 0101000101110 -> 1000000101111 -> 0101000110000 -> 1000000110001 -> 0101000110010 -> 1000000110011 -> 0101000110100 -> 1000000110101 -> 0101000110110 -> 1000000110111 -> 0101000111000 -> 1000000111001 -> 0101000111010 -> 1000000111011 -> 0101000111100 -> 1000000111101 -> 0101000111110 -> 1000000111111 -> 0101001000000 -> 0100001000001 -> 1101001000010 -> 0100001000011 -> 1101001000100 -> 0100001000101 -> 1101001000110 -> 0100001000111 -> 1101001001000 -> 0100001001001 -> 1101001001010 -> 0100001001011 -> 1101001001100 -> 0100001001101 -> 1101001001110 -> 0100001001111 -> 1101001010000 -> 0100001010001 -> 1101001010010 -> 0100001010011 -> 1101001010100 -> 0100001010101 -> 1101001010110 -> 0100001010111 -> 1101001011000 -> 0100001011001 -> 1101001011010 -> 0100001011011 -> 1101001011100 -> 0100001011101 -> 1101001011110 -> 0100001011111 -> 1101001100000 -> 1100001100001 -> 1101001100010 -> 1100001100011 -> 1101001100100 -> 1100001100101 -> 1101001100110 -> 1100001100111 -> 1101001101000 -> 1100001101001 -> 1101001101010 -> 1100001101011 -> 1101001101100 -> 1100001101101 -> 1101001101110 -> 1100001101111 -> 1101001110000 -> 1100001110001 -> 1101001110010 -> 1100001110011 -> 1101001110100 -> 1100001110101 -> 1101001110110 -> 1100001110111 -> 1101001111000 -> 1100001111001 -> 1101001111010 -> 1100001111011 -> 1101001111100 -> 1100001111101 -> 1101001111110 -> 1100001111111 -> 1101010000000 -> 0010010000001 -> 0011010000010 -> 0010010000011 -> 0011010000100 -> 0010010000101 -> 0011010000110 -> 0010010000111 -> 0011010001000 -> 0010010001001 -> 0011010001010 -> 0010010001011 -> 0011010001100 -> 0010010001101 -> 0011010001110 -> 0010010001111 -> 0011010010000 -> 0010010010001 -> 0011010010010 -> 0010010010011 -> 0011010010100 -> 0010010010101 -> 0011010010110 -> 0010010010111 -> 0011010011000 -> 0010010011001 -> 0011010011010 -> 0010010011011 -> 0011010011100 -> 0010010011101 -> 0011010011110 -> 0010010011111 -> 0011010100000 -> 1010010100001 -> 0011010100010 -> 1010010100011 -> 0011010100100 -> 1010010100101 -> 0011010100110 -> 1010010100111 -> 0011010101000 -> 1010010101001 -> 0011010101010 -> 1010010101011 -> 0011010101100 -> 1010010101101 -> 0011010101110 -> 1010010101111 -> 0011010110000 -> 1010010110001 -> 0011010110010 -> 1010010110011 -> 0011010110100 -> 1010010110101 -> 0011010110110 -> 1010010110111 -> 0011010111000 -> 1010010111001 -> 0011010111010 -> 1010010111011 -> 0011010111100 -> 1010010111101 -> 0011010111110 -> 1010010111111 -> 0011011000000 -> 0110011000001 -> 1111011000010 -> 0110011000011 -> 1111011000100 -> 0110011000101 -> 1111011000110 -> 0110011000111 -> 1111011001000 -> 0110011001001 -> 1111011001010 -> 0110011001011 -> 1111011001100 -> 0110011001101 -> 1111011001110 -> 0110011001111 -> 1111011010000 -> 0110011010001 -> 1111011010010 -> 0110011010011 -> 1111011010100 -> 0110011010101 -> 1111011010110 -> 0110011010111 -> 1111011011000 -> 0110011011001 -> 1111011011010 -> 0110011011011 -> 1111011011100 -> 0110011011101 -> 1111011011110 -> 0110011011111 -> 1111011100000 -> 1110011100001 -> 1111011100010 -> 1110011100011 -> 1111011100100 -> 1110011100101 -> 1111011100110 -> 1110011100111 -> 1111011101000 -> 1110011101001 -> 1111011101010 -> 1110011101011 -> 1111011101100 -> 1110011101101 -> 1111011101110 -> 1110011101111 -> 1111011110000 -> 1110011110001 -> 1111011110010 -> 1110011110011 -> 1111011110100 -> 1110011110101 -> 1111011110110 -> 1110011110111 -> 1111011111000 -> 1110011111001 -> 1111011111010 -> 1110011111011 -> 1111011111100 -> 1111011111101 -> 1111011111110 -> 1110011111111 -> 1111100000000 -> 1111100000001 -> 1111100000010 -> 1111100000011 -> 1111100000100 -> 1111100000101 -> 1111100000110 -> 1111100000111 -> 1111100001000 -> 1111100001001 -> 1111100001010 -> 1111100001011 -> 1111100001100 -> 1111100001101 -> 1111100001110 -> 1111100001111 -> 1111100010000 -> 1111100010001 -> 1111100010010 -> 1111100010011 -> 1111100010100 -> 1111100010101 -> 1111100010110 -> 1111100010111 -> 1111100011000 -> 1111100011001 -> 1111100011010 -> 1111100011011 -> 1111100011100 -> 1111100011101 -> 1111100011110 -> 1111100011111 -> 1111100100000 -> 1111100100001 -> 1111100100010 -> 1111100100011 -> 1111100100100 -> 1111100100101 -> 1111100100110 -> 1111100100111 -> 1111100101000 -> 1111100101001 -> 1111100101010 -> 1111100101011 -> 1111100101100 -> 1111100101101 -> 1111100101110 -> 1111100101111 -> 1111100110000 -> 1111100110001 -> 1111100110010 -> 1111100110011 -> 1111100110100 -> 1111100110101 -> 1111100110110 -> 1111100110111 -> 1111100111000 -> 1111100111001 -> 1111100111010 -> 1111100111011 -> 1111100111100 -> 1111100111101 -> 1111100111110 -> 1111100111111 -> 1111101000000 -> 1111101000001 -> 1111101000010 -> 1111101000011 -> 1111101000100 -> 1111101000101 -> 1111101000110 -> 1111101000111 -> 1111101001000 -> 1111101001001 -> 1111101001010 -> 1111101001011 -> 1111101001100 -> 1111101001101 -> 1111101001110 -> 1111101001111 -> 1111101010000 -> 1111101010001 -> 1111101010010 -> 1111101010011 -> 1111101010100 -> 1111101010101 -> 1111101010110 -> 1111101010111 -> 1111101011000 -> 1111101011001 -> 1111101011010 -> 1111101011011 -> 1111101011100 -> 1111101011101 -> 1111101011110 -> 1111101011111 -> 1111101100000 -> 1111101100001 -> 1111101100010 -> 1111101100011 -> 1111101100100 -> 1111101100101 -> 1111101100110 -> 1111101100111 -> 1111101101000 -> 1111101101001 -> 1111101101010 -> 1111101101011 -> 1111101101100 -> 1111101101101 -> 1111101101110 -> 1111101101111 -> 1111101110000 -> 1111101110001 -> 1111101110010 -> 1111101110011 -> 1111101110100 -> 1111101110101 -> 1111101110110 -> 1111101110111 -> 1111101111000 -> 1111101111001 -> 1111101111010 -> 1111101111011 -> 1111101111100 -> 1111101111101 -> 1111101111110 -> 1111101111111 -> 1111110000000 -> 1111110000001 -> 1111110000010 -> 1111110000011 -> 1111110000100 -> 1111110000101 -> 1111110000110 -> 1111110000111 -> 1111110001000 -> 1111110001001 -> 1111110001010 -> 1111110001011 -> 1111110001100 -> 1111110001101 -> 1111110001110 -> 1111110001111 -> 1111110010000 -> 1111110010001 -> 1111110010010 -> 1111110010011 -> 1111110010100 -> 1111110010101 -> 1111110010110 -> 1111110010111 -> 1111110011000 -> 1111110011001 -> 1111110011010 -> 1111110011011 -> 1111110011100 -> 1111110011101 -> 1111110011110 -> 1111110011111 -> 1111110100000 -> 1111110100001 -> 1111110100010 -> 1111110100011 -> 1111110100100 -> 1111110100101 -> 1111110100110 -> 1111110100111 -> 1111110101000 -> 1111110101001 -> 1111110101010 -> 1111110101011 -> 1111110101100 -> 1111110101101 -> 1111110101110 -> 1111110101111 -> 1111110110000 -> 1111110110001 -> 1111110110010 -> 1111110110011 -> 1111110110100 -> 1111110110101 -> 1111110110110 -> 1111110110111 -> 1111110111000 -> 1111110111001 -> 1111110111010 -> 1111110111011 -> 1111110111100 -> 1111110111101 -> 1111110111110 -> 1111110111111 -> 1111111000000 -> 1111111000001 -> 1111111000010 -> 1111111000011 -> 1111111000100 -> 1111111000101 -> 1111111000110 -> 1111111000111 -> 1111111001000 -> 1111111001001 -> 1111111001010 -> 1111111001011 -> 1111111001100 -> 1111111001101 -> 1111111001110 -> 1111111001111 -> 1111111010000 -> 1111111010001 -> 1111111010010 -> 1111111010011 -> 1111111010100 -> 1111111010101 -> 1111111010110 -> 1111111010111 -> 1111111011000 -> 1111111011001 -> 1111111011010 -> 1111111011011 -> 1111111011100 -> 1111111011101 -> 1111111011110 -> 1111111011111 -> 1111111100000 -> 1111111100001 -> 1111111100010 -> 1111111100011 -> 1111111100100 -> 1111111100101 -> 1111111100110 -> 1111111100111 -> 1111111101000 -> 1111111101001 -> 1111111101010 -> 1111111101011 -> 1111111101100 -> 1111111101101 -> 1111111101110 -> 1111111101111 -> 1111111110000 -> 1111111110001 -> 1111111110010 -> 1111111110011 -> 1111111110100 -> 1111111110101 -> 1111111110110 -> 1111111110111 -> 1111111111000 -> 1111111111001 -> 1111111111010 -> 1111111111011 -> 1111111111100 -> 1111111111101 -> 1110111111110 -> 1111111111111 -> 1111This means I'm back to either dead CPU, or dead ram,So any thoughts on decoding the signatures?and equally would dynamic ram need to be tested in any special ways considering it has a controller managing the refreshing

author: Rerouter
author_rank: Super Contributor
timestamp: August 16, 2013, 10:52:59 am
content: Finished decoding the addresses, apart from 2 oddballs,ADDR 19 controls access to the memory card as a whole, when its high neither the ROM or RAM is visible to the system,ADDR 18 controls whether its accessing ROM or RAM, with a high indicating ROM, and low for RAM,17,16,15,14 all seem to be used to define which ROM chip or what RAM segment to access,ADDR 17 = 0 | 16 = 0 | 15 = 0 | 14 = 0 // Access Rom 1ADDR 17 = 0 | 16 = 0 | 15 = 0 | 14 = 1 // Access Rom 2ADDR 17 = 0 | 16 = 0 | 15 = 1 | 14 = 0 // Access Rom 3ADDR 17 = 0 | 16 = 0 | 15 = 1 | 14 = 1ADDR 17 = 0 | 16 = 1 | 15 = 0 | 14 = 0 // Access Rom 4ADDR 17 = 0 | 16 = 1 | 15 = 0 | 14 = 1All Remaining Codes Are Bus Error,Now from this it seems that would cut the first 2 roms down to half there storage capacity, which puzzled me greatly until i noticed the first 2 pairs are only 8x8K EPROMS, allowing me to verify the contents of all the ROMs without removing them from the card,Now onto RAM, as long as 17 is low, PROM0 = ADDR14, PROM1 = ADDR 15, PROM2 = ADD16.ADDR 17 = 0 | 16 = 0 | 15 = 0 | 14 = 0 // 000ADDR 17 = 0 | 16 = 0 | 15 = 0 | 14 = 1 // 100ADDR 17 = 0 | 16 = 0 | 15 = 1 | 14 = 0 // 010ADDR 17 = 0 | 16 = 0 | 15 = 1 | 14 = 1 // 110ADDR 17 = 0 | 16 = 1 | 15 = 0 | 14 = 0 // 001ADDR 17 = 0 | 16 = 1 | 15 = 0 | 14 = 1 // 101ADDR 17 = 0 | 16 = 1 | 15 = 1 | 14 = 0 // 011ADDR 17 = 0 | 16 = 1 | 15 = 1 | 14 = 1 // 111The Remainder of the RAM address pins are exposed on the card, including a Write and Read Pin for the Dynamic RAM controller meaning i will be able to write and read back the RAM,So this weekend I'll be testing both and could use any recommendations for a RAM test pattern?Also i may as well note the 2 oddball addresses,000000000 Accesses Rom 1, which goes against the ADDR18 convention, but i would believe this would have something to do with the boot routine?111111101 Accesses RAM 111, which also goes against it, and cant really see any purpose for this

author: Rerouter
author_rank: Super Contributor
timestamp: August 17, 2013, 12:33:53 pm
content: Following up on those 2 odd addresses,000000000 was for the initial boot, it references 0x1FF worth of the first eprom, which contains all the interrupt vectors for the CPU, and the program and stack pointer locations to start from,and 111111101 is another 0x1FF long segment of RAM used for system registers,Equally, i am up to testing, and am in the process of writing up the code for it,what i have learned is that in order to read from the card in addition to the correct address, you need to hold MRDC (Inverted Memory Read) Low,for the ROM you also have to pulse CCLK (normally 8Mhz clock signal, but no minimum in this case) 3 times to set up the ROM delay shift register,for the RAM its only dependent on CAS and XACK being high on the Dynamic RAM Controller,Writing to the RAM is equally simple, you only need to hold MWTC (Inverted Memory Write) low, and have a valid RAM addressWhenever an invalid Address is entered BBERR (Inverted Bus ERROR) will be pulled low, normally it is Tri-stated

author: Rerouter
author_rank: Super Contributor
timestamp: August 18, 2013, 11:09:14 am
content: Got a valid output, so while its running i felt i would post an update,Now interfacing an arduino to a 20 bit address bus and 16 bit data bus is not something i felt i would ever be spending a Saturday afternoon on, but i present the fruit of my labors,Here is what i breadboard up to break out enough pins, 3x 74HC595's driving the address bus, and 2 more 595's and 2 165's to make a bidirectional data bus,Next up was a way to connect to the card, at 40 connections, it forced me to take a different approach, prepping solid core network cable while still in the outer sheath meant it was a lot easier to manage when connecting to the bread board,Now onto the result as it stands,ADDR00 serves no purpose towards the ROM segments, meaning its actual location gets shifted up a bit, making the interrupt vectors only 1FF long,as for how it interacts with the RAM, its OR'd with the Write command for the lower byte of RAM, with BHEN doing the same for the upper byte, not something i understand yet,The RAM i have yet to test, as I'm currently having it verify valid addresses, but it seems that every 64 RAM Addresses the default state alternates between FFFF or 0000, a quirk that i have yet to understand,While only reading, the card pulls an average of 620mA @ 5V, on my revision board it needs no other supply rails, (3.1W, a bit higher than i expected..)The actual address locations are0x0 - 0x1FF = Rom Interrupts (Bootloader)0x40000 - 47FFF = ROM (Starts with Rom 1 Image)0x50000 - 53FFF = ROM (All Rom Space Accounted for)0x200 - 0x7FFF = RAM0x10000 - 17FFF = RAM0x5CF00 - 5FDFF = RAM (All 16x64K Accounted for)Once i work out the RAM testing part of the code, I'll post it in-case anyone else gets stuck like me,Edit: See following post for address locations

author: Rerouter
author_rank: Super Contributor
timestamp: August 23, 2013, 01:08:16 pm
content: Have made some more progress, for writing to RAM i need to source a bigger power supply, as after 40 seconds of what ever pulse loads it was pulling my supply was going into thermal shutdown (probably around 1A)I am currently diagnosing my transceiver circuit as it seems to not be driving into the data bus and fear i could be driving the cards outputs, but will crack it sometime tommorow,

author: Rerouter
author_rank: Super Contributor
timestamp: August 25, 2013, 12:26:33 pm
content: After rewiring some parts of my breadboard, I finally managed reliable read/writeBiggest addition was 10K lift-up resistors on the data bus, this made it far more clear where the segments began and endedequally further study revealed ADR00 has to be pulled high, and BHEN low for memory writes,The Address Map as it stands now is:0-1FF is still interrupt vectors,200-FBFF is RAM,FC00 - FDFF is a bus error(011111100 on PROM)FE00 - FFFF is the remainder of this chunk of RAM,40000-4BFFF is system ROM5FC00 - 5FDFF is RAM (System Registers)which adds up for all the ROM and makes more sense, but leaves a small 1FF Gap missing from the RAM,for the power supply, i ended up grabbing one of these from jaycar,http://www.jaycar.com.au/productView.asp?ID=XC4258works very well for bread-boarding , just approaching too hot to touch at 700mA for long periods of timeSo far the memory is looking ok write/read back and decay wise, and i am nutting out the code for testing for overwriting neighboring cells, here is the code as it stands, its a bit of a beast now, with common tasks broken into voids, and a few remaining variables for what i am working on, but it works.Code:unsigned long DAT = 0;unsigned long ERRDAT = 0;boolean flag = 0;unsigned int RangeStart = 0;unsigned int RangeStop = 0;boolean prevfault = 0;// 2x 74HC595byte DI_PL = 2; // Parrellel Loadbyte DI_CLK = 3; // Shift Clockbyte DI_SI = 4; // Serial Data Input to Arduino// 3x 74HC165byte AD_SO = 5; // Serial Address Output From Arduinobyte AD_SCLK = 6; // Shift Clockbyte AD_LCLK = 7; // Output Latch// 2x 74HC595byte DO_SO = 8; // Serial Data Output From Arduinobyte DO_SCLK = 9; // Shift Clockbyte DO_LCLK = 10; // Output Latchbyte DO_OE = 11; // Output Enable// Card I/Obyte MEMR = 15; // Read From Memory Signalbyte MEMW = 12; // Write To RAM Signalbyte CCLK = 14; // ROM Delay Clock, Needs to be pulsed 3 times for valid outputvoid setup(){// Parrellel to Serial Data (00:15)pinMode(DI_PL, OUTPUT); // Parrellel LoadpinMode(DI_CLK, OUTPUT); // ClockpinMode(DI_SI, INPUT); // Serial In// Serial To Parrellel Address (00:19)pinMode(AD_SO, OUTPUT); // Serial OutpinMode(AD_SCLK, OUTPUT); // Shift Register ClockpinMode(AD_LCLK,OUTPUT); // Latch Clock// Serial To Parrellel Data (00:15)pinMode(DO_SO, OUTPUT); // Serial OutpinMode(DO_SCLK, OUTPUT); // Shift Register CloclpinMode(DO_LCLK, OUTPUT); // Latch ClockpinMode(DO_OE, OUTPUT); // Output Enable// Card I/O SignalspinMode(MEMR, OUTPUT); // Memory Read (Inverted)pinMode(MEMW, OUTPUT); // Memory Write (Inverted)pinMode(CCLK, OUTPUT); // Clock for ROM Reading Delay (3+ Clocks for valid output)// Bus is normally high,digitalWrite(MEMR, HIGH); // Turns off Card ReaddigitalWrite(MEMW, HIGH); // Turns off Card WritedigitalWrite(DO_OE, HIGH); // Disable outputs of data write, to prevent outputs driving outputsSerial.begin(115200);}void loop() {// Testing for decaysSerial.print("Testing Short Decay 00200-0FBFF FFFF");Serial.println("");ShortDecay (0x200,0xFC00,0xFFFF);Serial.print("Testing Short Decay 0FE00-0FFFF FFFF");Serial.println("");ShortDecay (0xFE00,0x10000,0xFFFF);Serial.print("Testing Short Decay 5FC00-5FDFF FFFF");Serial.println("");ShortDecay (0x5FC00,0x5FE00,0xFFFF);Serial.print("Testing Long Decay 00200-0FBFF FFFF");Serial.println("");Verify (0x200,0xFC00,0xFFFF);Serial.print("Testing Long Decay 0FE00-0FFFF FFFF");Serial.println("");Verify (0xFE00,0x10000,0xFFFF);Serial.print("Testing Long Decay 5FC00-5FDFF FFFF");Serial.println("");Verify (0x5FC00,0x5FE00,0xFFFF);Serial.print("Testing Short Decay 00200-0FBFF AAAA");Serial.println("");ShortDecay (0x200,0xFC00,0xAAAA);Serial.print("Testing Short Decay 0FE00-0FFFF AAAA");Serial.println("");ShortDecay (0xFE00,0x10000,0xAAAA);Serial.print("Testing Short Decay 5FC00-5FDFF AAAA");Serial.println("");ShortDecay (0x5FC00,0x5FE00,0xAAAA);Serial.print("Testing Long Decay 00200-0FBFF AAAA");Serial.println("");Verify (0x200,0xFC00,0xAAAA);Serial.print("Testing Long Decay 0FE00-0FFFF AAAA");Serial.println("");Verify (0xFE00,0x10000,0xAAAA);Serial.print("Testing Long Decay 5FC00-5FDFF AAAA");Serial.println("");Verify (0x5FC00,0x5FE00,0xAAAA);Serial.print("Testing Short Decay 00200-0FBFF 5555");Serial.println("");ShortDecay (0x200,0xFC00,0x5555);Serial.print("Testing Short Decay 0FE00-0FFFF 5555");Serial.println("");ShortDecay (0xFE00,0x10000,0x5555);Serial.print("Testing Short Decay 5FC00-5FDFF 5555");Serial.println("");ShortDecay (0x5FC00,0x5FE00,0x5555);Serial.print("Testing Long Decay 00200-0FBFF 5555");Serial.println("");Verify (0x200,0xFC00,0x5555);Serial.print("Testing Long Decay 0FE00-0FFFF 5555");Serial.println("");Verify (0xFE00,0x10000,0x5555);Serial.print("Testing Long Decay 5FC00-5FDFF 5555");Serial.println("");Verify (0x5FC00,0x5FE00,0x5555);Serial.print("Testing Short Decay 00200-0FBFF 0000");Serial.println("");ShortDecay (0x200,0xFC00,0x0);Serial.print("Testing Short Decay 0FE00-0FFFF 0000");Serial.println("");ShortDecay (0xFE00,0x10000,0x0);Serial.print("Testing Short Decay 5FC00-5FDFF 0000");Serial.println("");ShortDecay (0x5FC00,0x5FE00,0x0);Serial.print("Testing Long Decay 00200-0FBFF 0000");Serial.println("");Verify (0x200,0xFC00,0x0);Serial.print("Testing Long Decay 0FE00-0FFFF 0000");Serial.println("");Verify (0xFE00,0x10000,0x0);Serial.print("Testing Long Decay 5FC00-5FDFF 00000");Serial.println("");Verify (0x5FC00,0x5FE00,0x0);}void ShortDecay (unsigned long Start, unsigned long Stop, unsigned int Data) { // Writes value, reads it back and comparesprevfault = 0;for(unsigned long ADDR=Start; ADDR < Stop; ADDR++) { // Write 1 to every locationflag = 0;Address(ADDR); // Write out the current addressDataOut(Data); // Write out a test value to RAMRAMIn(); // Read back in value from RAMif(DAT == !Data) { // Test to see that it matchesflag = 1;}if(prevfault == 0 && flag == 1) { // Determine Range of Fault to reduce serial comms usageprevfault = 1;RangeStart = ADDR;}else if (prevfault == 1 && flag == 0 || prevfault == 1 && ADDR == (Stop-1)) {RangeStop = ADDR;prevfault = 0;PrintRange(RangeStart,RangeStop,0);RangeStart = 0;RangeStop = 0;}}}void Verify (unsigned long Start, unsigned long Stop, unsigned int Data) { // Reads back value and comparesprevfault = 0;for(unsigned long ADDR=Start; ADDR < Stop; ADDR++) { // Write 1 to every locationflag = 0;Address(ADDR); // Write out the current addressRAMIn(); // Read back in value from RAMif(DAT == !Data) { // Test to see that it matchesflag = 1;}if(prevfault == 0 && flag == 1) { // Determines range of faultprevfault = 1;RangeStart = ADDR;}else if (prevfault == 1 && flag == 0 || prevfault == 1 && ADDR == (Stop-1)) {RangeStop = ADDR;prevfault = 0;PrintRange(RangeStart,RangeStop,1);RangeStart = 0;RangeStop = 0;}}}void Print (unsigned long ADDRP, int error) { // Prints the address and read data of an errorif ( ADDRP < 0x10 ) { Serial.print("0000");} // Adds leading 0'selse if ( ADDRP < 0x100 ) { Serial.print("000"); }else if ( ADDRP < 0x1000 ) { Serial.print("00"); }else if ( ADDRP < 0x10000) { Serial.print("0"); }Serial.print(ADDRP, HEX);Serial.print(" => ");if ( ERRDAT < 0x10 ) { Serial.print("000"); } // Adds leading 0'selse if ( ERRDAT < 0x100 ) { Serial.print("00"); }else if ( ERRDAT < 0x1000) { Serial.print("0"); }Serial.print(ERRDAT, HEX);if (error == 0) { Serial.print(" Quick Decay"); } // Prints Error Typeelse if (error == 1) { Serial.print(" Slow Decay"); }else if (error == 2) { Serial.print(" Overwrote Near Neighbour"); }else if (error == 3) { Serial.print(" Overwrote Far Neighbour"); }Serial.println("");}void PrintRange (unsigned long Start, unsigned long Stop, int error) { // Prints the range of an errorif ( Start < 0x10 ) { Serial.print("0000");} // Adds leading 0'selse if ( Start < 0x100 ) { Serial.print("000"); }else if ( Start < 0x1000 ) { Serial.print("00"); }else if ( Start < 0x10000) { Serial.print("0"); }Serial.print(Start, HEX);Serial.print(" to ");if ( Stop < 0x10 ) { Serial.print("0000");} // Adds leading 0'selse if ( Stop < 0x100 ) { Serial.print("000"); }else if ( Stop < 0x1000 ) { Serial.print("00"); }else if ( Stop < 0x10000) { Serial.print("0"); }Serial.print(Stop, HEX);if (error == 0) { Serial.print(" Quick Decay"); } // Prints Error Typeelse if (error == 1) { Serial.print(" Slow Decay"); }else if (error == 2) { Serial.print(" Overwrote Near Neighbour"); }else if (error == 3) { Serial.print(" Overwrote Far Neighbour"); }Serial.println("");}void Clock(int Pin) { // Rising Edge Clock FunctiondigitalWrite(Pin, LOW);digitalWrite(Pin, HIGH);}void Address(unsigned long ADR) { // Shift In Addressfor(unsigned int A=0; A<21; A++) { // ADDR0 is ignored so data is shifter up 1,if(bitRead(ADR,(19-A))== 0) { digitalWrite(AD_SO,HIGH); } // Address bus is invertedelse { digitalWrite(AD_SO,LOW); }Clock(AD_SCLK); // Clock Shift Register}Clock(AD_LCLK); // Latch Output of shift register}void ROMIn() {digitalWrite(MEMR, LOW); // Tells the card data will be readClock(CCLK); // Enables read output latch on cardClock(CCLK);Clock(CCLK);Clock(CCLK);Clock(DI_PL); // Load the contents of the busfor(int D=0; D<16; D++) { // Clock in the data on the busbitWrite(DAT, (15-D), !digitalRead(DI_SI));Clock(DI_CLK);}digitalWrite(MEMR, HIGH); // Tell the card its no longer being read from}void RAMIn() {digitalWrite(MEMR, LOW); // Tells the card data will be readClock(DI_PL); // Load the contents of the busfor(int D=0; D<16; D++) { // Clock in the data on the busbitWrite(DAT, (15-D), !digitalRead(DI_SI));Clock(DI_CLK);}digitalWrite(MEMR, HIGH); // Tell the card its no longer being read from}void DataOut(unsigned long DATA) { // Shift out datadigitalWrite(DO_OE, LOW); // Enable Shift Register Outputsfor(int D=0; D<16; D++) { // One by one clock out 16 bitsif(bitRead(DATA,(15-D)) == 0) { digitalWrite(DO_SO,HIGH); } // Bus is invertedelse { digitalWrite(DO_SO,LOW); }Clock(DO_SCLK); // Clock the shift Register}Clock(DO_LCLK); // Clock The latchdigitalWrite( MEMW, LOW); // Tell the card its being Written todigitalWrite(MEMW, HIGH); // Tell the card its no longer being written todigitalWrite(DO_OE, HIGH); // Tristate shift register outputs}if anyone can think of other tests i can perform on this board before i call it working, it would be appreciated