Questo articolo, relativo alla riparazione della memoria di un Commodore 64 è parte di un restauro ben più ampio. Ho infatti trovato un vecchio retrocomputer Commodore 64 su Facebook Marketplace per pochi euro, ma presentava parecchi difetti. Innanzitutto mancavano tutti gli accessori (anche l’alimentatore). La tastiera aveva due tasti mancanti, il monitor mostrava caratteri strani e, infine, l’audio del computer non funzionava! Un bel casino!
Inizialmente avevo pensato di utilizzare questo computer per prelevare i pezzi di ricambio per un altro Commodore 64 che volevo aggiustare, ma… la riparazione di un danno così esteso sarebbe stata una bella sfida!
Diagnosi del difetto della memoria del Commodore 64
Il difetto della memoria del Commodore 64 si presentava subito all’accensione:
- era presente l’errore “OUT OF MEMORY ERROR IN 0”;
- il monitor mostrava caratteri strani in posizioni casuali.
Senza memoria a disposizione, perché difettosa, non era possibile nemmeno caricare un programma di diagnostica per la memoria stessa, per capire quale fosse il chip RAM difettoso. Ho consultato quindi il Commodore 64 service manual (allegato in fondo alla presente pagina) per recuperare lo schema elettrico della memoria.
Si può notare come la memoria RAM del Commodore 64 sia composta da 8 chip. Ogni chip contiene 64K x 1 bit di memoria: non contiene byte interi, ma ciascun chip si occupa di un singolo bit. Ed ecco quindi la corrispondenza tra i chip di memoria RAM e i bit corrispondenti:
- D0 = U21
- D1 = U9
- D2 = U22
- D3 = U10
- D4 = U23
- D5 = U11
- D6 = U24
- D7 = U12
A questo punto, dovevo solo capire quale bit fosse difettoso, che trasformava, sul monitor, il carattere “spazio” nel dollaro “$”. Per questa analisi, si rende utile la tabella dei caratteri del Commodore 64, altrimenti chiamata CBM ASCII:
Il carattere “spazio” corrisponde al numero &H20 (in esadecimale), che è il 32 (espresso in numeri decimali). Invece, il carattere dollaro “$” corrisponde al numero &H24 (in esadecimale), che è il 36 (in decimale). Il numero del carattere si è quindi spostato da 32 a 36, con un incremento di 4. Esprimendo il numero 4 in potenze di 2, si ottiene 2^2. Da questo ragionamento, si evince che il bit difettoso della memoria RAM era il D2, corrispondente al chip U22.
Riparazione memoria Commodore 64
A colpo sicuro, ho sostituito il chip U22 del C64 con uno identico, un MT4264-15 acquistato online. Ovviamente ho acquistato qualche chip RAM in più di scorta, cosa che, come vedremo tra poco, mi è stata utile.
Per effettuare la riparazione della memoria del Commodore 64, e quindi sostituire il chip RAM, ho dapprima rimosso il vecchio chip difettoso, per poi saldare uno zoccolo, dove ho alloggiato il nuovo chip MT4264-15. Ho installato il nuovo chip di memoria del Commodore 64 su zoccolo, per fare degli esperimenti di compatibilità delle varie memorie RAM, che descriverò a breve.
La sostituzione del chip di memoria ha avuto degli effetti positivi, infatti il Commodore 64 partiva con la consueta schermata di avvio.
Altro chip di memoria rotto
Nonostante la sostituzione del chip, il Commodore 64 non aveva la quantità di RAM libera prevista: 38911 bytes. A volte erano disponibili solo 3K, a volte 12K. Insomma: c’era un altro chip di memoria difettoso. Ecco perché mi ha fatto comodo acquistare qualche chip RAM in più!
Sul monitor non vedevo caratteri strani, per cui i bit difettosi dovevano trovarsi in un’altra area di memoria, esterna alla memoria video. Ho quindi scritto un programma, in BASIC, molto compatto, per la scansione di tutti i byte della RAM ed individuare quelli difettosi. L’idea è semplice e si basa sul principio di funzionamento della memoria RAM:
- si scansionano i byte di RAM ad uno ad uno (esterni all’area del programma stesso!)
- si scrive il numero 0
- si legge la stessa casella, che deve restituire il numero appena scritto: 0
- si scrive il numero 255
- si legge la stessa casella, che deve restituire il numero appena scritto: 255
Ed ecco il mio programma per testare la memoria RAM del Commodore 64 in funzione.
La scansione della RAM ha rilevato alcuni byte difettosi. Il numero 0 si trasformava in 1, mentre il numero 255 si trasformava in 254. Dal ragionamento già descritto nei paragrafi precedenti, si evince che la differenza tra il numero corretto e quello errato è 1, corrispondente a 2^0 espresso in potenze di 2. Quindi il secondo chip RAM MT4264-15 difettoso era U21, corrispondente alla linea del bit D0. Ho quindi sostituito anche questo secondo chip, montando quello nuovo su zoccolo.
Finalmente la memoria del Commodore 64 era a posto!
Esperimenti sulla memoria del Commodore 64
Durante la ricerca online dei chip di memoria RAM del Commodore 64, mi sono imbattuto in diverse alternative. Il mio computer montava il chip di memoria MT4264-15. Online trovavo anche altre sigle, che, da datasheet, sembravano avere le medesime caratteristiche, se non per la velocità differente (RAS access time).
Inizialmente ho sostituito i chip con altri identici, ma, avendo montato degli zoccoli per sostituire i chip molto velocemente e senza danneggiarli, ho provato anche a montare chip con altre sigle, per poi testare il funzionamento del C64.
Al termine di tutti i test, posso concludere che è possibile montare indifferentemente qualsiasi chip di memoria RAM sul Commodore 64, anche mischiando le varie sigle sulla stessa mainboard, come si vede dalla foto sopra allegata.
E’ possibile quindi sostituire i chip di memoria RAM con qualsiasi presente in questa lista: 4164-2, MT4264-15, MT4264-20, HM4864P-2, M3764-15RS.
Relativamente alla velocità del chip, è bene sceglierne uno con RAS access time uguale o inferiore a 200ns. Le sigle sopra riportate già tengono conto di questa considerazione.
Documentazione
A corredo del presente articolo, allego:
- il Commodore 64 Service Manual: è un manuale tecnico utile per capire il funzionamento dei circuiti del Commodore C64 e del C64C;
- il datasheet del chip RAM MT4264-15.
Interessante! Grazie per aver condiviso.
Amedeo, mi piacerebbe vedere dei video su come riparare gli alimentatori del commodore 64 e C64C, nonchè sugli alimentatori dei floppy drive 1541-II e la riparazione sui datassette. Puoi prepararli ??
E sè ti è possibile come meglio acquistare questi prodotti, ovvero gli alimentatori appena menzionati. Saluti
Sicuramente è un argomento interessante. La riparazione non è mai una cosa banale: i difetti possono essere tanti ed in diverse sezioni dell’alimentatore. Avevo realizzato 2 articoli/video in cui ho riparato due diversi alimentatori Atari e, come vedi, i difetti e le tipologie erano diverse:
https://www.valoroso.it/floppy-disk-drive-atari-1050-riparazione-alimentatore-prova/
https://www.valoroso.it/atari-800xl-atari-1050-con-alimentatore-in-corto-circuito/
Ciao Amedeo
ti scrivo solo per dirti che questa pagina sulla riparazione memoria ram c64 mi è stata
molto utile per cui volevo ringraziarti, molto interessante anche il ragionamento che hai
seguito per trovare le ram guaste in base ai caratteri visualizzati.
Ti seguo già su Youtube e Facebook.
Ciao Andrea, grazie mille! Mi fa molto piacere!