/arduino-28c256-programmer

A programmer for the 28c256 EEPROM using an arduino nano and capable of removing Software Data Protection

Primary LanguageC++

Arduino Nano based programmer for 28C256 EEPROM. Writen by Jason Figge, 2020

     /=== Data>    /============= Address ===========\
    //////        G////A      H////A      A0\\\\\\\\A14
 +----------+   +-------+   +-------+   +---------------+
 |  Nano    |   | sr-hi |   | sr-lo |   | 28C256 EEPROM |
 +----------+   +-------+   +-------+   +---------------+
   \   \   \\     //   \---<---/ //        /////   /   /
    WE> OE> \\---//--------->---//   <Data====/ <OE <WE


Wiring:  
 low word shift-register (sr-lo):
   sr-lo.SER => Nano.A3
   sr-lo.clockPin => Nano.A4
   sr-lo.latchPin =>Nano. A5
   sr-lo.Qa-Qh => EEPROM.A0-A7
 
 high word shift-register (sr-hi):
   sr-hi.SER => lo.QH' (overflow)
   sr-hi.clockPin => Nano.A4
   sr-hi.latchPin => Nano.A2
   sr-hi.Qa-Qg => EEPROM.A8-A14
   sr-hi.Qh => NC
  
 Nano.11 => EEPROM.OE
 Nano.12 => EEPROM.WE
 Nano.2-9  => EEPROM.I/O0-7

Warning: Changing pin assignments will require significant reworking of all port logic.

This code was constructed after watching Ben Eater's videos on how to build a 6502 computer, not wanting to pay $57 for a programmer, and because I received an SDP enabled chip from JameCo.com. Credit to Bread80 for the inspiration to switch to port manipulation.

After writing a program using standard arduino high level functions I was able to read from the EEPROM, but due to the SDP nothing I did would allow me to write any data. Even after trying the unlock sequence. After connecting my o-scope I found the time to write a single byte far exceeded the max time allowed to perform a page write. Summizing the lock sequence had to be completed within a page, I set about using registry manipulation to speed up the process. Now byte writes are in the micro-second range and I can unlock the SDP