Cosa sono le EPROM ?

Le Eprom (Erasable Programmable Read Only Memory) sono memorie programmabili elettricamente molto usate per mantenere dati anche senza alimentazione. Nei computer 8bit queste memorie sono usate per il set di caratteri, Kernel, Basic, programmi  ecc..

Si possono trovare con o senza finestra OTP (one time programmable) e la differenza oltre che il costo è il fatto di poterle cancellare e riscrivere. Quelle dotate di finestra si possono cancellare utilizzando una luce UV, mentre le altre una volta scritte non si possono più cancellare.
L’evoluzione di queste memorie porta alla nascita di un nuovo tipo di ROM, le Eeprom (Electrically Erasable and Programmable Read Only Memory) che a differenza delle precedenti non hanno più la finestra per la cancellazione perché queste possono essere cancellate tramite un segnale elettrico. Questa tipologia ora viene usata anche nei micro controllori per poter scrivere e cancellare facilmente il programma.
Il funzionamento delle Eprom nei nostri amati computer 8bit (parliamo di Eprom parallele) è abbastanza semplice, abbiamo un bus dati di uscita (chiamato D0..7 o O0..7) e un bus di indirizzi con un numero di pin variabile a seconda della capacità della memoria, più altri pin per l’alimentazione, programmazione, abilitazione ecc. Quindi selezionando l’indirizzo di memoria da leggere e abilitando la lettura della Eprom, avremo il valore richiesto sul bus di uscita.

Queste che abbiamo citato sono Eprom parallele, il che vuol dire che per ogni locazione selezionata ci sono più uscite abilitate contemporaneamente. Ora in commercio si trovano anche le Eeprom seriali che hanno un funzionamento simile ma per richiedere e leggere il dato si utilizza un protocollo seriale. Il vantaggio di queste ultime è che sono molto più compatte non avendo più tutti i pin di ingresso/uscita come nelle rom parallele, lo svantaggio è che per selezionare l’indirizzo da leggere o scrivere occorre una serie di dati trasmessi per via seriale come una comunicazione i2c,spi, ecc..

 

Pinout per tutti!

Iniziamo con la serie 23xxx
obsolete ma spesso presente nei 8bit

16kb = 2 Chilobyte

32kb = 4 Chilobyte

64kb = 8 Chilobyte

128kb = 16 Chilobyte

256kb = 32 Chilobyte

Di seguito le più recenti ROM 27xxx

16kb = 2 Chilobyte

32kb = 4 Chilobyte

64kb = 8 Chilobyte

128kb = 16 Chilobyte

256kb = 32 Chilobyte

512kb = 64 Chilobyte

Questi sono solo alcuni pinout delle Eprom ma per i computer 8bit vanno più che bene per poter sostituire una ROM danneggiata o per creare un adattatore

Per esempio le ROM usate nel C64 sono le 2364 e 2332 non più in produzione. Per il C64C viene usata una 23128 per il Basic e Kernal ma queste hanno un pinout differente dalle recenti memorie e per sostituirle è necessario rimappare i pin per renderle compatibili oppure trovare delle memorie con piedinature compatibili (ma non sempre possibile).

Adattarori ROM

27256 to 2364

Per poter inserire una 27256 su una scheda predisposta per una 2364

2764/128 to 2364

Per poter inserire una 2764 o128 su una scheda predisposta per una 2364

Utilizzando memorie più grandi è possibile utilizzare i nuovi pin di indirizzamento per poter selezionare il programma da leggere nella ROM, questo è utile se si vogliono avere diverse versioni in una unica memoria e poterle selezionarle tramite uno switch. Se si usano memorie più grandi per mettere solo la versione originale del codice, è sempre consigliato riscriverlo fino a riempire tutta la memoria, in modo che se i nuovi pin di indirizzo non hanno un segnale fisso o non se ne è sicuri almeno il programma sarà sempre quello anche se l’indirizzo va su un banco di locazione diverso.

Ora con tutti questi pinout sarete in grado da soli di realizzare adattatori per le più svariate tipologie.

Adattarori MULTI-ROM

Un'immagine non è abbastanza!

Come descritto prima, utilizzando delle EPROM più grandi possiamo usare lo spazio che avanza per inserire altre “immagini” e quindi poter scegliere quale eseguire. Per esempio se sostituiamo il kernal del C64, possiamo mettere una rom contenente il suo kernal originale e altre versioni come il Jiffy Dos oppure altre versioni.
Ma poi come seleziono l’immagine corretta?

Guardate questo video per capire come viene gestita la memoria di una Eprom.

Considerate una Eprom come un contenitore, su una da 64k facciamo finta che ci siano 64 cassetti, se la sostituiamo con una da 128K abbiamo altri 64 cassetti vuoti dove metterci dati!.

 Essendo una memoria più grande, avrà anche degli indirizzi in più per poter selezionare tutti i “cassetti” in più. ES: una da 128k rispetto ad una da 64k ha una linea di indirizzi in più, che in binario significherà avere il doppio delle combinazioni precedenti.

Quindi usando il nuovo pin di indirizzamento potremmo selezionare il “cassetto” dal quale partire, se messo a GND (quindi = 0), avremmo gli indirizzi standard (sempre parlando di una 64k) da $0 a $FFF (per facilità esprimo il valore in esadecimale). Ora se invece mettiamo il nuovo pin a +5V (quindi =1), avremo che l’indirizzo di partenza non è più $0 ma inizierà da $1000 e arriverà fino a $1FFF. Questo ci permetterà di avere un nuovo programma sulla Eprom che sarà letto senza accorgersi che noi stiamo gestendo una o più linee di indirizzamento in più, queste linee saranno gestite manualmente con degli interruttori oppure possono essere gestite da un microcontrollore in maniera automatica, magari tenendo premuto un particolare tasto possiamo far selezionare una nuova locazione.

Uno schema per chiarire quanto detto

Questo è un esempio di come adattare una ROM 27C512 o 256 o anche 128 su una 23128.
Il pinout della 23128 (spesso usata nei computer 8 bit come il C16,C128 ecc.) è molto simile a quello delle nuove ROM (anche se ora le 128 sono più difficili da trovare) e se la sostituiamo con una 27128 la utilizzeremo come l’originale, con un programma al suo interno. Se però la sostituiamo con una 256 a questo punto avendo il doppio della memoria possiamo caricarci 2 immagini diverse e selezionarle tramite il nuovo indirizzo che non sarà utilizzato dalla macchina. Stessa cosa vale se mettiamo una 512 al posto di una 128, in questo caso possiamo inserire 4 programmi e selezionarli tramite 2 nuovi pin di ingresso (logica binaria 00,01,10,11).