Jump to content
IGNORED

Shoestring's Atari 8bit RAM tester


shoestring

Recommended Posts

Hi all.

 

I've been fairly busy working on a DRAM & Basic ROM tester for 64kb Atari systems. This is really my first attempt at writing any 6502 for the Atari but I wanted to start off with something simple before I started porting some c64 games to the Atari. It gives me a chance to learn more about the hardware. I've finished testing in MAME and Altirra and I am currently testing this on real hardware to catch any last minute bugs or make improvements before I release it... for free of course.

 

This program installs in the OS ROM socket and is used as a means for testing the DRAM and Basic ROM. If you have some spare 27c128s lying around then this can easily be installed.

 

I've currently purchased a few different systems to test my program in. But I might need some help from someone to test in an A800XLF system if I can't get my hands on one.

 

What it does.

 

Performs data line integrity checks ( checkerboard and inverse, walking 1s and walking 0s, 1s and 0s and exhaustive )

Exhaustive takes the longest and is probably overkill.

 

Tests 0x0-0x7ff first to test integrity of the stack and lower mem before using it.

Tests 0x800-0xbfff

Copies the program rom into DRAM once the above memory verified good.

Turns the OS ROM off then tests the DRAM 0xc000 - 0xFFFF.

Displays bit pattern / test being performed written to DRAM ( also useful for verifying video hardware / PMG ).

Plays sound to indicate CPU is functioning ( for systems playing blind ).

 

To do.

1. Code for address line integrity ( walking 1s/0s ) checks are in but are currently not being used, this will be added in a later version of its feasible and necessary.

2. Write a version for stock 600xls or adapt the current image to handle those systems.

3. Look at writing a version for the Atari 800 for stock 48k systems.

4. Add another indicator / arrow to point out which memory region is bad.

5. Any other suggestions ?

 

Here is a video of an example of bad ram and bad basic rom.

ram test.mp4

Edited by shoestring
  • Like 1
Link to comment
Share on other sites

Sound very interesting. Would this work in a computer with expanded memory, even if it only checks base memory? I like the idea of it going in the OS socket, since I recently purchased one of Dropcheck's reproduction eprom burners. Of course I have a few currently 64K Atari's that I'll be fixing and refurbishing, before any upgrades are installed, and this will help, especially since I don't own a SALT cart, just a Syscheck 2.2 for PBI and a couple of the computers are 1200XL's .

 

I'm looking forward to trying it out. :thumbsup:

Link to comment
Share on other sites

I haven't tried it with my Antonia board but in theory it should only see the first 64kb. I assume the additional memory is addressed via

banking switching, don't quote me on that as I've not looked into how that's achieved too much. It should also work in a 130xe but only see the first 64kb. A 130xe would need its own version as I only have 4 PMGs and probably wouldn't be able to squeeze in another column on the screen anyway.

 

Another problem is my display list is in ROM, initially. So I can't make changes to any content on the fly. So I use PMGs to identify the bad data bits on the screen. Though I can do a lot more on the screen once I move to the program and display list to the lower part of the memory once it checks out fine.

 

The top 2kb ( 0x0 - 0x7ff ) is the most critical. So I'll be trying a few things to see what works best. My other diagnostic roms I wrote for some other systems will boot with no work or stack ram whatsoever. Though, this is really difficult to achieve on the Atari.

Edited by shoestring
Link to comment
Share on other sites

I did some quick testing today with my ROM in the 65XE so I've already uploaded a binary I'm pretty happy with.

 

It should still run without any ram installed. You'll hear a ghastly sound coming out of all four channels if bad DRAM is detected between 0x0 and 0x7ff [ or with no ram installed at all ] and the machine will sit there with a black screen waiting for you to hit space. This is put in place to let you know that the CPU is at least working to some extent, executing instructions & talking to the POKEY.

 

It then "attempts" to run the rest of the program after you hit space and put something up on the screen, this will depend on to the extent of the failure of the memory. I have some bad 4146 ram chips lying around somewhere but can't seem to find them today! I'll be testing them in the 800xl once I do to make sure I identify the correct bad data bits in association with the 8 DRAM chips, schematics have helped so far.

 

In a working system you'll hear the data being written to the first 2kb of ram, sounds a little like playing a program through cassette recorder. I did this for systems that might be playing blind.

 

You'll hear a series of high beeps as the system runs through the different data line integrity checks.

 

High beep - Completed verifying DRAM via one of the algorithms [ checkerboard, inverse checkerboard, walking 1s and 0s, 1s, 0s, Exhaustive ]

Low beep - Exhaustive. As this test takes the longest, each low beep represents a successful verification of 100 memory address elements. Exhaustive writes every possible 8 bit value to each memory address and reads it back.

 

Pre calculated Basic ROM checksums 16 bit [ sum of bytes ]

REV A - 0x12c9

REV B - 0x4469

REV C - 0x42ab

a8diag.rom

Edited by shoestring
Link to comment
Share on other sites

Very nice sounding! I guess as an alternative to a 27128 EPROM which can be difficult to 'quickly' install to diagnose XE computers with no sockets, would be to flash it to one of the 4 switchable OS settings on tf_hh's SysCheck board. Then it can instantly be used on any PBI/ECI machine just by plugging in the board. Then you have two system checker options on 1 piece of hardware.

 

Is there a prominent version number visible when running your posted code so far? If I start burning EPROMs to try your incremental updates, it would be nice to be able to easily tell which version I have on each chip later.

Link to comment
Share on other sites

I'll definitely look at including a version number in future which will just be the checksum of the EPROM displayed somewhere on the screen, though I think I can only make this visible once I move the display list to dram ( unless I hard code it ). I haven't tried flashing it yet to my Antonia, what would be the point since it doesn't use the internal ram anyway? Maybe to rule the ram used on the board.

 

In theory it should work I just don't have a Syscheck board to test it myself. This is more for people who don't have one of those pieces of hardware but have the know how and tools to burn EPROMs themselves.

Edited by shoestring
Link to comment
Share on other sites

Some sort of refresh verifier.

Just accessing Ram performs a refresh of that row so an entire Rom based solution including screen/DList, with some test pattern written to a part of Ram then a mostly inactive period with no interrupts and only ROM being accessed by the CPU.

Supposedly the later DRams can retain contents for 20+ seconds or even longer so maybe have it as a user selectable test with various delay periods available.

  • Like 1
Link to comment
Share on other sites

That's something I could add later once the checks are complete or I could add an option to boot into a diagnostic mode & and include some menu options with other things too. The DLI routine seems to slow the tests down a little in the first half of the tests, you can definitely notice a difference in speed once the ROM contents are copied to RAM and DLI routine isn't used anymore. Probably the biggest annoyance is having to go through and patch the addresses ( after routines are copied to the bottom portion of DRAM ) when making changes to the ROM, I'm looking for a workaround to make changes easier.

Link to comment
Share on other sites

Some sort of refresh verifier.

Just accessing Ram performs a refresh of that row so an entire Rom based solution including screen/DList, with some test pattern written to a part of Ram then a mostly inactive period with no interrupts and only ROM being accessed by the CPU.

Supposedly the later DRams can retain contents for 20+ seconds or even longer so maybe have it as a user selectable test with various delay periods available.

 

This could help diagnose the old vs new ANTIC mismatch that can happen with some memory upgrades.

 

Nice :)

  • Like 2
Link to comment
Share on other sites

would be to flash it to one of the 4 switchable OS settings on tf_hh's SysCheck board. Then it can instantly be used on any PBI/ECI machine just by plugging in the board. Then you have two system checker options on 1 piece of hardware.

 

Just got around to flashing the image to my Antonia board ( which is installed in my 600xl ) out of curiosity and the only configuration that seems to work in is the 130XE config .My program crashes after successfully testing the first 2kb in the other configurations. I'd be interested to know if you're able to get it to work in the SysCheck board also?

 

So far I've successfully tested the EPROM in my 800xl, 600xl + Antonia [ 130XE config only ] & 65XE. These are all PAL machines.

Link to comment
Share on other sites

MAME's primary focus is preservation but I believe the older arcade games have much better accuracy than they had previously. Nowadays the team is focusing more on the MESS side of things which is what is driving the project forward.

 

It's all a matter of getting used to the Altirra debugger which I need to spend more time with.

 

I must have thrown the bad mT drams out. I still have some of them left over from the last transplant patient but all of those are all working in my 800xl.

Link to comment
Share on other sites

Very nice sounding! I guess as an alternative to a 27128 EPROM which can be difficult to 'quickly' install to diagnose XE computers with no sockets, would be to flash it to one of the 4 switchable OS settings on tf_hh's SysCheck board. Then it can instantly be used on any PBI/ECI machine just by plugging in the board. Then you have two system checker options on 1 piece of hardware.

This is such a great idea! Why didn't I think about it myself? If I have time tonight, I am going to flash it to my own SYS-CHECK board so I can get a good look at the upgraded RAM in my 600XL. It passes SYS-CHECK's test but it doesn't always clear itself out after a cold boot.

Link to comment
Share on other sites

because I am doing something wrong in the flashing process.

 

I've not been programming on the Atari for very long so I'm leaning towards me who is the one doing something wrong |:)

 

When I run this directly from the Antonia board in my 600xl, I could only get this working in the XE 128kb configuration, the others wouldn't work including the 800 XL config.

 

EPROMs run fine on bare metal in my stock 800xl, 65XE and 600XL ( with the 64kb memory hack ).

Link to comment
Share on other sites

I didn't have any luck flashing this onto my SYS-CHECK but it's probably because I am doing something wrong in the flashing process.

 

Nezgar, did you have any success?

Hopefully this gets worked out, as I intend to do the same thing too, now!

Link to comment
Share on other sites

Nezgar, did you have any success?

 

I've never actually seriously looked into flashing the OS's in my Sys-Check before, but now that I'm back at my Atari, looking at mine its a SST39SF010A flash chip (1Mbit / 128KB) in a 40pin DIP. Even better, my TL866 supports that, so I was able to dump it to a 128KB file, and should be able to reprogram it at ease. Since there are 4 selectable 'OS'es in the SysCheck, 4x16KB = only 64KB, but it appears to be more than 64KB of data in the dump (ie it's not just 1/2 blank), so its not immediately apparent to me where to replace say, the QMEG OS with Shoestring's tester. I've PM'd tf_hh asking him in case he's not watching this thread.

  • Like 2
Link to comment
Share on other sites

Thanks, yeah I forgot about the flash tool. :) But tf_hh did reply to me and explained the flash layout, if I do it manually:

 

$00000-$03FFF - Blank (or repeat of Firmware 1)
$04000-$07FFF - Firmware 1
$08000-$0BFFF - Blank (or repeat of Firmware 2)
$0C000-$0FFFF - Firmware 2
$10000-$13FFF - Blank (or repeat of Firmware 3)
$14000-$17FFF - Firmware 3
$18000-$1BFFF - Blank (or repeat of Firmware 4)
$1C000-$1FFFF - Firmware 4

 

I will try to give this a go tonight.

  • Like 2
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...