Arduino In-Circuit Tester: Build Project

Dave2084

Active member
vacBacker
Feedback
7 (100%)
Credits
453CR
Sorry I've been silent of late, life is keeping me busy, but the project isn't forgotten!

I will get the william's code tidied up and committed soon (ish) ...
 

guddler

Busting vectors like it's 1982!
vacBacker
Feedback
10 (100%)
Credits
4,048CR
I'm hoping that it won't be too many more weeks before I can take another look at this. Real life has very much been getting in the way of late and will continue to do so for a bit longer...
 

nauseous

Newbie
Credits
3CR
Have been following this for the past few months. Have a nutcase 6802 project I am working on but can't justify the price of a fluke pod so thought I would give this a go.

PCB's should be arriving this week for the tester. Once I have something assembled was planning to start writing code for the 6802. It would be awesome to see that williams code up.

And hello all. First post!
 

Battlezone

Active member
Feedback
1 (100%)
Credits
410CR
Nes4Life kindly loaned his ICT board while we wait for the latest batch of boards to arrive (thanks matey) so I've started to have a play with the ICT.

Paul,

Adding a new set of ROMs to the code isn't hard, but to save a little effort I've pre-generated ROM templates for a few of the older games. I'll put the script and list on dropbox. Just copy the required

section of code from the listing file and fill in the ROM starting address by hand.

I limited the templates to games with ROMs between 2K and 8K in size (i.e the older games).

I also skipped any small PROMs (I'm not sure how best to code ROMS 1K in size or smaller).

So far there are almost two and a half thousand templates, so hopefully some of the games

we tackle will be in the list.

The templates are here: https://dl.dropboxusercontent.com/u/39934793/arcade/roms_list.txt

The script is here: https://dl.dropboxusercontent.com/u/39934793/arcade/gen_rom_info.py

Here's an example of a generated template:

Code:
// ROMS: scrambles
	static const UINT8 s_romData2n_2d[]  = {0x32,0x01,0xc3,0x77,0x77,0x85,0x7e,0x4e,0x82,0x70,0x2b}; // scrambles/2d(__scrambles)
	static const UINT8 s_romData2n_2e[]  = {0x78,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0x1f}; // scrambles/2e(__scrambles)
	static const UINT8 s_romData2n_2f[]  = {0x06,0xff,0x0c,0x40,0x0f,0x11,0x40,0xc9,0x14,0x1d,0x39}; // scrambles/2f(__scrambles)
	static const UINT8 s_romData2n_2h[]  = {0x40,0x35,0x36,0x3e,0x22,0x07,0x23,0x19,0x06,0x05,0x40}; // scrambles/2h(__scrambles)
	static const UINT8 s_romData2n_2j[]  = {0x2d,0x05,0xf7,0x10,0x3d,0x10,0xcd,0x07,0x05,0xdd,0x0f}; // scrambles/2j(__scrambles)
	static const UINT8 s_romData2n_2l[]  = {0x03,0xc6,0xfe,0x7e,0x09,0x00,0x3e,0x03,0xdd,0xfd,0x00}; // scrambles/2l(__scrambles)
	static const UINT8 s_romData2n_2m[]  = {0xc9,0x3a,0x42,0x1b,0x41,0x11,0x01,0x5e,0xc3,0x30,0x00}; // scrambles/2m(__scrambles)
	static const UINT8 s_romData2n_2p[]  = {0xd8,0xd1,0xd1,0xd1,0xc7,0xc7,0xd8,0xd1,0xd1,0xd1,0xff}; // scrambles/2p(__scrambles)
	static const UINT8 s_romData2n_5f[]  = {0x7c,0xc2,0x86,0x02,0x62,0x08,0x0c,0x00,0x70,0x1c,0x00}; // scrambles/5f
	static const UINT8 s_romData2n_5h[]  = {0x7c,0xc2,0x86,0x02,0x62,0x08,0x0c,0x00,0x70,0x00,0xff}; // scrambles/5h
	
	static const ROM_REGION s_romRegion_scrambles[] PROGMEM = {
	    {NO_BANK_SWITCH, 0x0000, 0x0800, s_romData2n_2d,  0xb89207a1, " 2d"}, // scrambles/2d(__scrambles)
	    {NO_BANK_SWITCH, 0x0000, 0x0800, s_romData2n_2e,  0xe9b4b9eb, " 2e"}, // scrambles/2e(__scrambles)
	    {NO_BANK_SWITCH, 0x0000, 0x0800, s_romData2n_2f,  0xa1f14f4c, " 2f"}, // scrambles/2f(__scrambles)
	    {NO_BANK_SWITCH, 0x0000, 0x0800, s_romData2n_2h,  0x591bc0d9, " 2h"}, // scrambles/2h(__scrambles)
	    {NO_BANK_SWITCH, 0x0000, 0x0800, s_romData2n_2j,  0x22f11b6b, " 2j"}, // scrambles/2j(__scrambles)
	    {NO_BANK_SWITCH, 0x0000, 0x0800, s_romData2n_2l,  0x705ffe49, " 2l"}, // scrambles/2l(__scrambles)
	    {NO_BANK_SWITCH, 0x0000, 0x0800, s_romData2n_2m,  0xea26c35c, " 2m"}, // scrambles/2m(__scrambles)
	    {NO_BANK_SWITCH, 0x0000, 0x0800, s_romData2n_2p,  0x94d8f5e3, " 2p"}, // scrambles/2p(__scrambles)
	    {NO_BANK_SWITCH, 0x0000, 0x0800, s_romData2n_5f,  0x5f30311a, " 5f"}, // scrambles/5f
	    {NO_BANK_SWITCH, 0x0000, 0x0800, s_romData2n_5h,  0x516e029e, " 5h"}, // scrambles/5h
	    {0}
	};
Code:
[/QUOTE]
 

david_orton_2000

Green Mario
vacBacker
Feedback
8 (100%)
Credits
341CR
Excellent!
This is still a cool project.

I still need to finish building mine, just been a bad year for arcades+electronics till around now, where things are calming down...now to get stuck in!!! :)
 

Nes4life

Active member
vacBacker
Feedback
11 (100%)
Credits
1,113CR
Is Asteroids now supported? What's the latest on the project?
I have to apologise and say that although I was planning on making a Mac client I'm now smothered by work and have little free time for coding.

Any way this project could double up as an IC tester with a different head? Got myself a ZIF connector and have started my first proper steps in the world of board repairs. Being able to pull out an IC and validate it would be very handy. Seen a few arduino mega projects online and thought this one would lend itself well to that.Nes4life2016-07-29 08:40:32
 

guddler

Busting vectors like it's 1982!
vacBacker
Feedback
10 (100%)
Credits
4,048CR
Hi Phil,

Apologies but I don't think Asteroids is yet. I was looking at it and have code at my end and all sorts but then I changed jobs and have been swamped ever since. I know the 6502 code base went through a bunch of changes ages ago now so it would probably need looking at almost from scratch.

The good news (if you want to call it that) is that I have since sold ALL of my fluke kit. There is not a pod or anything anywhere. So next time I want to repair one of my machines I may have an incentive to look at this again.

I genuinely have no clue when that will be though. I'm currently working two jobs and spare time is virtually non existent.

Martin.
 

PaulSwan

ZZZ
Feedback
1 (100%)
Credits
1,117CR
I've implemented a first attempt at 8080 for Space Invaders based on the original universal probe head with 4 track cuts to isolate the 4 non-TTL lines. This works OK for ROM, inputs & outputs (e.g. sounds). What doesn't work is the video DRAM due to strict timing (same limitation as andrewsm's tester).

A bit of experimentation strongly suggests that with some code optimizations and a dedicated 8080 probe head the video DRAM can be made to work. A V1.00 of the dedicated 8080 probe head was sent of to OSHPark today. If this does in fact work it may also open up the possibility of dedicated probe heads for 6502 & 6809 that negate the need for clock master...

Paul.
 

Nes4life

Active member
vacBacker
Feedback
11 (100%)
Credits
1,113CR
I'd like to put in another request for Asteroids support
smiley1.gif

I'm all about 6502... got a line of asteroids boards all waiting for me to start my vec-repair journey.
 

PaulSwan

ZZZ
Feedback
1 (100%)
Credits
1,117CR
No, the pin to port mappings have also been aligned so that the address & data busses are port byte aligned so that the data bus can be manipulated in one instruction. The critical timing control signals have also been grouped into a single byte port so that one instruction can update them all. This was needed to be able to hit an accurate bus cycle time to allow the DRAM access to work.

I've just finished adding support for testing the shifter circuit and extended the RAM test to more thoroughly test the DRAM (that has some very obscure failure modes). I've been using the tester these last couple of weeks to fix a batch of Space Invaders boards.

Paul.
 

Nes4life

Active member
vacBacker
Feedback
11 (100%)
Credits
1,113CR
Hey Paul, I've finally finished my Asteroids vector test bench
smiley1.gif

If anyone has tests for Asteroids available then I'd love to have access to them.
I'm happy to test the tests, give feedback and even write some myself. I've quite a number of pcbs ready to test & diagnose.

Nes4life2017-02-05 20:46:09
 
Top