Destinaxe Posted September 27, 2013 Share Posted September 27, 2013 (edited) Hello All! I have been working on an Arduino based cart dumping tool for my old 2600 carts and I have everything working aside from one very small, strange issue that I won't delve into in this post. However, I have been reading various documents and scouring various forums for an explanation of the timing that the carts used for reading addresses and writing to the data bus. As of right now I am under the impression that information is not sent out on the data bus until CE (Chip Enable) is pulled LOW on the EEPROM. So in my code for dumping the carts, I pull CE HIGH, write to the address bus, pull CE low and read from the data bus. My current tool dumps the cart perfectly aside from a few bytes (always in different locations with values that seem to have no real consistency so error checking has become very difficult leading me to believe that it is a timing issue) I also am able to fetch and one memory location and receive the correct value, but when I try to read multiple locations in a row I get a few errors, again leading me to believe that it is a timing issue. Does anyone know where I might be able to find a timing diagram for the EEPROMs used in the carts? Am I approaching this correctly? I apologize if this is in the wrong subforum and if more information is needed please just let me know! Edited September 27, 2013 by Destinaxe Quote Link to comment Share on other sites More sharing options...
+batari Posted September 28, 2013 Share Posted September 28, 2013 Some carts may take upwards of 500ns between a valid address and valid data on the bus. Make sure you use an appropriate software delay or you could get invalid data like you are seeing. That is my guess. It could be something else. Quote Link to comment Share on other sites More sharing options...
Destinaxe Posted September 28, 2013 Author Share Posted September 28, 2013 Ah ok, and am I ting the use of the control signal properly? Pull it low whe you've written to the address bus and are ready to receive data? So a rough outline of program flow would be: 1.) Pul CE High 2.) Slight delay 3.) Write to address bus 4.) Delay 5.) Pull CE Low 6.) Delay 7.) Read From data bus Quote Link to comment Share on other sites More sharing options...
+batari Posted September 28, 2013 Share Posted September 28, 2013 Most isn't needed. Just pull A12 high (these carts are active high, not low) and you can leave it high. Then write the address, wait 500ns, read the data bus. Repeat until the cart is dumped. No need to cycle A12 high/low. Quote Link to comment Share on other sites More sharing options...
rolandg Posted September 28, 2013 Share Posted September 28, 2013 Hi, I've had this working with a Arduino Mega2560 (well a Sainsmart clone of one anyway basically using the code and wiring from: http://z80dave.blogspot.co.uk/2011/09/20-building-eeprom-programmer.html I thought I'd added delays - but I've checked and that was on the writes (I was programming an EEPROM so I could run my code on a real 2600). The pages discusses the need to do this - but its not relevant for reading. I've been able to read a bunch of carts quite successfully. I guess it works because the Arduino script turns the bytes into human readable text complete with addresses and this takes time to get sent up the serial link. I've got mine set to 9600. Roland. Quote Link to comment Share on other sites More sharing options...
Destinaxe Posted September 29, 2013 Author Share Posted September 29, 2013 Thanks for the link Roland! I do not know how I have not found that link yet! Batari, thanks again for the info! I'm so glad that I joined this forum, I've been wanting to get into homebrew console dev for a long time! Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.