Sostituire una PLA 906114-01 con una EPROM 27C512

I Commodore 64, nelle revisioni più vecchie, utilizzano un integrato detto PLA (Programmable Logic Array) con la funzione di sostituire una quantità di integrati TTL. Il chip in questione è la Signetics 82S100: tuttavia, sembra che la Commodore, per risparmiare ulteriormente, ad un certo punto abbia iniziato a costruire da sè queste logiche, con risultati abbastanza disastrosi, visto che è l'integrato che si guasta più facilmente in un C64. Tale integrato è machiato con il codice 906114-01. Quando si guasta, è facile trovarsi di fronte ad uno schermo nero all'accensione, o altre stranezze.
Vista la difficoltà nel reperire PLA 906114-01 al giorno d'oggi, si sono cercate altre strade per la sostituzione: in vostro aiuto viene la EPROM 27C512 che, nonostante sia una memoria invece di una logica programmabile, ha una struttura molto simile a quella della PLA, tale da renderla una candidata per la sostituzione, se opportunamente programmata e cablata allo zoccolo della PLA...


Realizzato l'adattatore, veramente molto semplice visto che i collegamenti sono in larga parte "pin to pin", si deve programmare la EPROM 27C512 col contenuto del file PLA.BIN, che potete scaricare cliccando qui (è un archivio compresso Zip).

Si suggerisce l'uso di una EPROM da almeno 100ns o ancora più veloce, se possibile. Infatti il mio "betatester" (il grande Daniele 'nuzzler' Lena, che si è gentilmente prestato agli esperimenti) ha riscontrato dei problemi in alcuni giochi utilizzando una più lenta memoria da 150ns, svaniti con l'uso di quella da 100ns. In sostanza, più veloce è la EPROM, meglio è!

Ricevetti notizia del buon funzionamento dello schema il 29/07/2002 dopo un paio di mesi di prove, tra dump errati, ricerca di schemi, spedizioni...

COLLEGAMENTI DA EFFETTUARE (* -> non pin to pin)
--------------------------------------------------------
EPROM 27C512 | ZOCCOLO PLA || EPROM 27C512 | ZOCCOLO PLA
--------------------------------------------------------
    1        |    22*      ||    15        |    15
    2        |    2        ||    16        |    16
    3        |    3        ||    17        |    17
    4        |    4        ||    18        |    18
    5        |    5        ||    19        |    10*
    6        |    6        ||    20        |    14*
    7        |    7        ||    21        |    21
    8        |    8        ||    22        |    19*
    9        |    9        ||    23        |    23
    10       |    20*      ||    24        |    24
    11       |    11       ||    25        |    25
    12       |    12       ||    26        |    26
    13       |    13       ||    27        |    27
    14       |    14       ||    28        |    28