Programmable ROM using only read accesses

From: Jim Brain <brain_at_jbrain.com>
Date: Thu, 4 Sep 2025 20:35:10 -0500
Message-ID: <2a49c477-d0b7-44fb-a337-0b2c7d11a578_at_jbrain.com>
I can't find the list message for this, but I seem to recall a long time 
ago someone inquired about figuring out how to make a ROM programmable 
when there is no write signal, going on to suggest using read accesses 
to perform the write activity.

Maybe I am dreaming the conversation, but it came from somewhere, and I 
decided a long time ago to create such a device.

My first attempt in 2018 did not work, and I'd built it using SMT parts 
so it was hard to debug.  I figured I needed an external clock to sync 
things, so I finally designed a non SMT version with an external clock.

I won't rule out the need for a clock signal, but it turns out the issue 
was my (incorrect) assumption about FLASH ICs and their /OE line. If 
someone else decides to use the SST 39SFXXX FLASH ROMs, note that the 
/OE line must be high for a write to succeed.

Anyway, probably no one asked for this, but I wanted to see if it would 
work, and it does:

https://github.com/go4retro/WriteROM

The device has a CPLD and a 512kB FLASH ROM. The unit starts in normal 
ROM mode, but you can switch on programming by reading from specific 
addresses.

In programming mode, address lines 11:8 form the command, and 7:0 are 
the data. Commands include:

* set low, mid, high bytes of stored address

* read at stored address

* write to stored address

The unit has 2 size jumpers, allowing it to function as a 8/16/32/64kB 
ROM. Any address line not connected to the bus can be set by the 
commands above. Currently, the prototype is a 28 pin footprint 
(23128/256), but I will probably create a 2364 footprint variant or make 
one PCB that can be configured either way.

If anyone sees improvements or other ideas, let me know.

Jim

-- 
Jim Brain
brain_at_jbrain.com
www.jbrain.com
Received on 2025-09-05 03:00:01

Archive generated by hypermail 2.4.0.