====== Riparazioni ====== ===== Intro ===== Di seguito una serie di indicazioni per il troubleshooting di base e un elenco di **riparazioni** di hardware, computer e periferiche, **Commodore**. ===== Test/attività di base ===== ==== Tensioni ==== La prima cosa da testare in un computer, funzionante o no, sono le **tensioni**. === Alimentatore === Si può pensare di utilizzare gli alimentatori originali Commodore, al patto prima di testarne le tensioni. Di seguito un pinout delle tensioni presenti sullo **spinotto dell'alimentatore**: {{:content:retrocomputing:riparazioni:c64-power-supply--connector-pinout.jpg?400|}} Le tensioni da considerare **valide** sono: * **DC: 4,9-5,1 V** * **AC: max 10,5V :?:** Se così non è, è meglio considerare il PSU **non** funzionante, pena danni irreversibili al computer. === Scheda === Sulla scheda del C64 (e Vic20 :?:) sono presenti le seguenti tensioni: * **5V out del pulsante di accensione** vanno alla **parte logica (sinistra) della scheda**, dove sono presenti i chip. Vcc dei chip sono alimentati da questa tensione * i regolatori di tensione **VR7805 e 7812** prendono tensione da un ponte raddrizzatore che regola la tensione **9V AC** e forniscono tensione al **VIC-II** e al **SID**. Qui di seguito viene spiegato meglio: ^Tensione^Da ^In uso a ^ |12V |7812|VIC-II e SID| |5V |7805|VIC-II | |5V |switch|chip logici| === Misurazione === Si possono misurare i **9V AC e i 5V DC, provenienti dall'alimentatore, sulla //user port//**, usando i puntali del tester a cavallo delle due fessure: {{:content:retrocomputing:riparazioni:user-port.png?400|}} Lo stato di on/off del **pulsante di accensione** del Commodore è configurato così: {{:content:retrocomputing:riparazioni:pulsante-c64.png|}} In particolare, con **vista dal retro della scheda**, si possono testare i pin e misurare le tensioni prendendo questi riferimenti: {{:content:retrocomputing:riparazioni:alimentazione-pin.png|}} Per **misurare le tensioni sui pin**: * **5V DC:** misurare tra **un pin a 5V e uno GND** * **9V AC:** misurare tra **i due pin 9V AC** ==== Test temperatura componenti ==== Semplicemente con una mano oppure con l'ausilio di una termocamera, **misurare la temperatura dei componenti**. Di seguito alcune foto di un C64 biscottone, prese con una **termocamera FLIR one**: {{:content:retrocomputing:riparazioni:flirone_c64_1.jpg|}} {{:content:retrocomputing:riparazioni:flirone_c64_2.jpg|}} Da quanto sopra si può stilare una 'classifica' dei chip più caldi: * VIC (hotter) * SID * MPU * ROMs * CIA e PLA * RAM e TTL (cooler) ==== Dead test cartridge ==== In presenza di uno **schermo nero**, conviene utilizzare la **//Dead Test// cartridge** (anche su Kung Fu Flash :?:) **togliendo tutti i componenti non strettamente necessari, se sono zoccolati**, come spiegato in **[[https://youtu.be/mVVkv_-4cjU?t=633|questo video]]**. La **Dead test cartridge si usa in presenza di una schermata nera**; tipicamente viene usata la **781220** che testa un insieme limitato di chip e **non** si usa il kit di harness per testare le porte. La **//[[#diag_test|Diag Test]]// cartridge 586220** va invece usata //dopo//, a fine riparazione, per testare tutti i componenti. I **chip che si possono togliere** per avere comunque un sistema C64 minimale ma **funzionante con la dead test** sono: * **SID** * 2x **CIA** (6526) * 3x **ROM** (901225, 901226, 901227) Dopo qualche secondo di schermo nero, anche con i componenti sopra rimossi, al termine dei test si ottiene questa schermata: {{:content:retrocomputing:riparazioni:deat_test.jpg|}} Se invece i componenti **non sono zoccolati**, conviene **[[#test_preliminari|testare i segnali]] con il tester/oscilloscopio**. ==== Jupiter Lander ==== Con la **cartuccia di Jupiter Lander** si puo far partire un **sistema minimale**, simile alla Dead Test, nel quale si riesce anche a **provare la tastiera, anche in condizioni di un suo non perfetto funzionamento di tutti i tasti**. E quindi possibile rimuovere i seguenti componenti: * **SID** * **CIA2** (6526) - lasciare CIA1 per la tastiera * 3x **ROM** (901225, 901226, 901227) {{:content:retrocomputing:riparazioni:20230917_105525.jpg|}} ==== Pulizia ==== A volte la semplice azione di rimozione/inserimento chip, previa pulizia, può fare partire i computer. === Alcol === Togliere/rimettere i chip, dopo aver pulito con **alcol isopropilico (IPA)** chip e contatti zoccoli. Pulire anche i contatti dei **pettini porta datassette** e **user port** con IPA e cotton fiocc. Un **video con indicazioni di pulizia approfondite** si trova **[[https://youtu.be/0lYhzBuB7hI|qui]]**. ==== Test preliminari ==== Nel **{{:content:retrocomputing:riparazioni:c64-c64c_service_manual_1992-03_commodore.pdf|C64 Service Manual}}** vengono anche indicati una serie di test preliminari, utili al troubleshooting. Iniziano alla **//Section 2// pag. 12**: {{:content:retrocomputing:riparazioni:diag-troubleshooting01.png|}} dove: * **U5**: ROM Basic (va bene testare anche le altre ROM); qui arriva la **tensione non regolata** direttamente dall'alimentatore, tramite il pulsante di accensione * **U19**: VIC-II chip; qui arriva la **tensione regolata dai 7805 e 7812** * **U7**: 6510 Per il VIC-II si ottengono **valori diversi** rispetto alla guida: * **pin 21 (//Clock Color//)**: 17.73 MHz (PAL clock) * **pin 22 (//Clock In//)**: 7.47 MHz Continuano a **pag. 13**: {{:content:retrocomputing:diag-pag13.png|}} dove **CN5** e il **connettore video**; conviene misurare dai pin sulla scheda, dall'interno del connettore. Qui invece un'immagine dei **pin esterni** del CN5: {{:content:retrocomputing:riparazioni:c64_audio_video.png|}} I valori che ho ottenuto sono i seguenti: * **pin 4 (//Composite//)**: 1.07 V * **pin 1 (//Luminance//)**: 1.07 V * **pin 6 (//Color/Chrominance//)**: 1.86 V Si tratta di **valori diversi** rispetto a quelli indicati nella troubleshooting guide. Forse dovuti al sistema video PAL? :?: A **pag. 15** si testa il **//system reset//**, che prevede un controllo anche del **556 (U20)**, che si trova di fianco alle RAM: {{:content:retrocomputing:riparazioni:diag-pag15.png|}} Poi vengano testati i **//system clock//**: {{:content:retrocomputing:riparazioni:diag-pag15-02.png|}} dove **U31** e' l'**8701** a fianco il VIC-II e ha un valore di 17.73 MHz (PAL clock) A **pag. 20** ci sono alcuni test di comunicazione della **PLA (U17)** verso vari chip: {{:content:retrocomputing:riparazioni:diag-20.png|}} I test della PLA continuano anche nella pagina successiva. In conclusione, tutti questi test sono utili e dovrebbero essere condotti al fine di individuare il guasto ==== Sintomi 'classici' ==== Di seguito alcuni **sintomi 'classici'** dove il componente colpevole può essere facilmente individuato. === C64 === * compare un garbage screen -> **Character ROM (901226)** {{:content:retrocomputing:riparazioni:901225.png|}} * lo schermo centrale si presenta vuoto -> **Basic ROM (901226)** {{:content:retrocomputing:riparazioni:901226.png|}} * schermo nero: * Kernal ROM (901227) * PLA * ... un sacco di altri componenti * per **questi ed altri sintomi** guardare **[[https://www.pictorial64.com/|qui]]** ==== Diag Test ==== La **//Diag test// cartridge va usata //dopo// aver effettuato la riparazione**, per **testare il funzionamento di tutte le porte**. E` quindi **necessario l'uso di un harness kit, con terminatori per ogni porta**. Tipicamente viene usata la **586220**; può essere caricata anche da Kung Fu Flash: {{:content:retrocomputing:riparazioni:harness-kit00.jpg?800|}} Nell'immagine sopra ho collegato una tastiera; se uso quella invece del terminatore del kit, ottengo la segnalazione di 'OPEN': {{:content:retrocomputing:riparazioni:harness-kit02.jpg?800|}} Questa invece la **schermata corretta per tutti i chip e porte** collegando tutti i terminatori (quello della tastiera compresa): {{:content:retrocomputing:riparazioni:harness-kit01.jpg?800|}} ==== Tastiera non risponde bene ==== Una tastiera sporca può comportare che alcuni tasti non funzionino bene oppure è richiesto premerli con forza. In questo caso è necessario **smontare e pulire i tasti** così: * svitare viti tastiera * togliere i tasti ad uno ad uno sollevandoli con il manico di uno spazzolino da denti * svitare le vitine del PCB, dissaldare il caps-lock e pulire il PCB con WD-40 * togliere i perni neri dei tasti * pulire tasti e perni con acqua e sapone e spazzolino * asciugare e rimontare tasti * prima di rimontare il PCB pulire il **retro in gomma conduttiva** dei perni come di seguito: * prendere una matita grossa e farle la punta con temperino * strofinare la punta con una limetta unghie monouso e raccogliere la **grafite** in un contenitore * intingere la punta di un cottonfioc prima in alcol isopropilico, poi nella polvere di grafite * spennellare tutti i gommini conduttivi ==== Retrobright (o Retr0bright) ==== === Case === Per i **case** dei VIC 20, C64C, C128... uso **//perossido di idrogeno//, detto 'acqua ossigenata' (H2O2)**, nella versione **in crema a 40 volumi, corrispondenti al 12% di concentrazione** (vedi [[https://it.wikipedia.org/wiki/Perossido_di_idrogeno#Concentrazione_in_volumi|qui]]), spalmata direttamente sul case con un pennello, proteggendo sempre le mani con guanti in gomma e lasciando **al sole** qualche ora, max una giornata. Riapplico ogni ora circa e oriento con la stessa frequenza il case per esporne altre parti e seguire il sole. === Tasti === Per i **tasti** del C64C, Plus/4, C128 ... FIXME ===== C64 ===== ==== Sintomo ==== **Sintomo: schermo nero** ==== Analisi ==== * sostituito vari chip zoccolati con altri di altra scheda * in particolare verificato che sostituendo la **PLA** ho ottenuto a video **colori vari o righe colorate, alternate a schermi neri**. Ciò è sintomo di una PLA difettosa (due, in questo caso...) ==== Riparazione ==== **Soluzione: sostituito PLA con chip di nuovo tipo** ===== C64 #2 ===== ==== Sintomo ==== **Sintomo: bordo di colore ok, ma sfondo con blocchi strani o linee (garbage screen)** ==== Analisi ==== * toccando la **ROM caratteri 901225-01** compaiono a video schermo blu o caratteri strani che scrollano verso il basso; rimosso e pulito contatti e piedini senza successo * **Dead Test 781220** viene portato a termine * **cartridge Jupiter Lander** funziona (bypassa le ROM) * sostituito **2xmultiplexor RAM 74LS257**, senza successo ==== Riparazione ==== * **rimosso zoccolo della ROM caratteri e messo strisce prese da Amazon**: il garbage screen è sparito e si vede bordi ok e sfondo vuoto :!: * presa **ROM Basic** da altro C64: funziona! **Soluzione: sostituito zoccolo della ROM caratteri; sostituito ROM Basic, che è risultata comunque poi funzionante**. Probabilmente l'inserimento di quest'ultimo non era adeguato. ===== C64 #3 ===== ==== Sintomo ==== **Sintomo: schermo nero con assenza di segnale video** ==== Analisi ==== * l'alimentazione 5V DC agli integrati logici della parte sx della scheda arriva correttamente * non c'è ingresso né uscita delle tensioni verso/da i **regolatori di tensione 7805 e 7812** * testato **fusibile**: ok === Schema === Controllato lo **[[http://www.zimmers.net/anonftp/pub/cbm/schematics/computers/c64/251469-2of2.gif|schema]]** della board assy 250425 (apparentemente è quello corretto anche se viene segnalato come 251469). Di seguito uno zoom dell'alimentazione: {{:content:retrocomputing:riparazioni:250425-alimentazione.png?600|}} * testato alimentazioni come spiegato **[[#tensioni|sopra]]**. In realtà dopo una serie di accensioni/spegnimenti ha buttato fuori le tensioni corrette e, da misurazioni precedenti, apparentemente il pulsante non attivava il ramo di tensione a 9V AC. Deciso quindi di **sostituire il pulsante di accensione**. ==== Riparazione ==== * **dissaldato pulsante di accensione e riparato come da [[https://www.youtube.com/watch?v=iIILJiJdIJA|video di EMD69]]** **Soluzione: riparato pulsante di accensione**. In altri casi simili, con **assenza totale video**, conviene testare o sostituire il **generatore di clock 8701 del VIC II** ===== VIC20 ===== ==== Sintomo ==== Si accende con **regolari sfondo bianco e bordo celeste, ma nessun carattere a video** ==== Analisi ==== Di seguito i test effettuati. === Cartucce gioco === Inserito un paio di **cartucce gioco**, ma i giochi non si avviano. Questo a differenza di quello che succederebbe sul C64, dove le cartucce bypassano eventuali problemi ad alcuni chip (non tutti) che impediscono l'avvio normale. === ROM Basic === Guardando un **[[https://www.youtube.com/watch?v=jY_ne61TiPc|video su YouTube]]** viene segnalato che il sintomo lamentato è causato dalla **ROM Basic**. Si rende quindi necessario: - dissaldare ROM - usare zoccolo ad hoc 2364 (tipo vecchio) per EPROM 2764 - programmare EPROM ==== Riparazione ==== === Dissaldatura === Per **dissaldare chip** conviene: * settare la **temperatura della stazione dissaldante a 350 C** * appoggiare la punta sulla piazzola * attendere 2 secondi che lo stagno si sciolga (roteando la punta, si dovrebbe sentire il piedino che si muove) * premere il pulsante per succhiare lo stagno * l'aria dovrebbe fluire dentro la piazzola ormai libera di stagno e si sente anche come rumore, di aria libera, non 'soffocata' * in caso di mancata dissaldatura (potrebbe essere una piazzola di massa, con molto metallo) aggiungere **stagno nuovo** al vecchio, prima di dissaldare nuovamente * ispezionare visivamente la dissaldatura: dovrebbe notarsi il foro libero di stagno intorno al piedino del chip * in casi difficili usare **stazione saldante ad aria (per SMD)** dall'altro lato e tirare gentilmente con una pinzetta === Zoccoli 2364-2764 === Bisogna prevedere degli **adattatori 2364-2764** come indicato **[[http://blog.worldofjani.com/?p=757|qui]]**. === Programmazione EPROM === * scaricare la ROM da **[[http://www.zimmers.net/anonftp/pub/cbm/firmware/computers/vic20/index.html|qua]]** {{:content:retrocomputing:riparazioni:basic-rom.png?800|}} * inserire una **EPROM** di valore adeguato nel programmatore TL866II-Plus. Le **2764 sono da 64 bit**, quindi contengono esattamente 8 KB: FIXME immagine programmatore * eseguire il programma **Xgpro**: {{:content:retrocomputing:xgpro01.png?800|}} {{:content:retrocomputing:xgpro02.png?800|}} FIXME **Soluzione: sostituzione ROM Basic con EPROM programmata** ===== VIC20 #2 ===== ==== Sintomo ==== Si accende con **video assente e righe diagonali che scorrono** {{:content:retrocomputing:riparazioni:vic20-difetto.jpg?400|}} ==== Analisi ==== Testato tensioni e segnali dei vari integrati; non sono stati rilevate anomalie. ==== Riparazione ==== Recuperato **VIC chip 6561 zoccolato** da altro VIC 20 funzionante. * installato 6561 sul VIC 20 che presentava il difetto: ha funzionato * installato il presunto VIC chip 6561 sul VIC 20 che prima funzionava: non ha funzionato * alcuni tasti non rispondevano bene; pulito contatti in gomma dei tasti, come spiegato **[[#tastiera_non_risponde_bene|sopra]]** **Soluzione: sostituito VIC chip 6561 e pulito contatti in gomma tasti** ===== VC1541 bianco ===== ==== Funzionamento normale ==== Di seguito viene descritto il **funzionamento normale**, al fine di verificare scostamenti da questa //baseline//. **Avvio corretto:** * LED verde acceso * LED rosso acceso e motore che gira, entrambi per 1-2 secondi * accendendo il computer si ha ancora per un attimo LED rosso e motore * dare il seguente comando: LOAD "*",8 * compare "SEARCHING FOR *" e subito dopo "LOADING". Il motore lavora. * una volta terminato il caricamento comparirà "READY.". Il motore si arresta. * si potrà quindi dare i comandi //LIST// e //RUN// * il motore del floppy lavorerà ancora e infine il programma si avvierà ==== Sintomo ==== **Sintomo: il drive resta su "SEARCHING FOR"** Il problema, come sopra, è che non legge nessun floppy. Di seguito i test effettuati, ==== Analisi ==== === Misurato tensioni 5V e 12V === Le tensioni 5V e 12V si possono misurare su CR1 e CR2. La prima serve ai chip, la seconda per far funzionare i motori (quello che fa girare i floppy e il servo :?: che muove la testina in avanti e indietro). Tensioni ok === Cavo seriale === Per verificare che il **cavo seriale** funzioni, si può: * testare i **pin per continuità** ai due capi * col drive **spento**, dando il comando //LOAD"*",8// compare l'errore "?DEVICE NOT PRESENT", che avvisa che non trova il drive. Invece col drive **acceso** riconosce il device, ma presenta l'errore "SEARCHING FOR *". Ciò significa che il cavo seriale è funzionante. === Oscilloscopio === Si può collegare la **clip nera (negativo)** della sonda dell'oscilloscopio alla vite del VR2 oppure al negativo dei condensatori elettrolitici * 6502: OK. Linee dati ed indirizzi mostrano **attività (bit 1 e 0 in movimento)** * 2x6522: OK. Linee dati ed indirizzi mostrano attività * ROM 901229-05: OK. I pin mostrano attività * ROM 325302-01: OK. I pin mostrano attività * **74LS14 (inverter)**: dal datasheet alcuni **pin (11 e 13)** non presentano il segnale invertito rispetto ai corrispondenti pin (10 e 12). In particolare presentano un **segnale a 3V** :!: invece che a 5V. * **7406 (altro inverter)**: **pin 6 a 3V** :!: === Cambio chip === * provato a sostituire le VIA 6522 con altre di altro drive, ma i pin del 74LS14 e 7406 (vedi sopra) restano a 3V. D'altro canto le 6522, dai test eseguiti in precedenza con l'oscilloscopio, risultavano a posto. ==== Riparazione ==== Da indicazioni di **[[https://cbm8bit.com/articles/ray-charlsen/article21|Ray Charlsen]]** e dai test effettuati sopra, i **possibili colpevoli sono il 74LS14 e 7406**. Dopo aver ordinato i chip e atteso la consegna: * **sostituito il solo 74LS14**: i pin che prima segnavano 3V anche sul 7406 **adesso presentano valori normali a 5V o 0V** :!: * inserito un floppy: adesso, dopo LOAD"*",8, compare LOADING e quindi READY. LIST e RUN funzionano correttamente, **Soluzione: Il problema era quindi il 74LS14**, che è stato sostituito, ===== 1541 marrone ===== ==== Sintomo ==== **Sintomo:** LED verde OK, ma **LED rosso e il motore restano accesi continuamente** ==== Analisi ==== * tensioni 5V e 12V OK * oscilloscopio: * **6502: linee indirizzi (A) e dati (D) ferme su 0V o 5V, non hanno attività** :!: ==== Riparazione ==== * Preso a prestito CPU **6502** da VC1541. * adesso il LED rosso e il motore non sono continuamente accesi :!: * c'è attività sui pin A e D del 6502 * caricamento programmi da floppy ok **Soluzione**: **sostituito il 6502**. Confermato anche dal fatto che, messa questa CPU al posto di quella del VC1541, il drive presenta gli stessi sintomi. ===== 1541 ?FILE NOT FOUND ERROR ===== ==== Sintomo ==== Se, **caricando un disco compare '?//FILE NOT FOUND ERROR//'** è probabile che si sia depositata polvere sulla testina. ==== Riparazione ==== === Pulizia testina === **Pulire la testina con cotton fiocc e alcol isopropilico; pulire allo stesso modo anche la plastica sopra, che, in assenza di disco, va a contatto con la testina e la può sporcare**. I caricamenti dovrebbero procedere correttamente (sistemato così tre drive che presentavano lo stesso sintomo). ===== 1541-II ===== A differenza di un normale 1541, in un **1541-II l'avvio corretto è:** * LED **rosso** ('Power') acceso * LED **verde** ('Drive') acceso e motore che gira, entrambi per 1-2 secondi ==== Sintomo ==== **Sintomo:** LED rosso OK, ma **LED verde e il motore restano accesi continuamente.** ==== Analisi ==== * tensioni 5V e 12V //sembrano// OK * rimosso il blocco meccanico con il motore e la testina: il LED verde si spegne * testato l'"error channel"; il seguente test consente di testare il corretto funzionamento dell'elettronica: 10 OPEN 15,8,15 20 INPUT#15,E,E$,T,S 30 PRINT E;E$;T;S 40 CLOSE 15 Il comando **//OPEN//** presenta i seguenti parametri: OPEN,file#,device#,channel# Nell'esempio sopra: * '15': può essere un qualsiasi numero fino a 127; corrisponde al //file#// e ad esso si farà riferimento nel resto dei comandi * '8': è il //device#// floppy drive (solitamente 8) * '15': è il //command channel#//; i canali 2 e 14 possono essere invece usati per i //data channel// Il comando **//INPUT#//** legge dati da una periferica; è necessario che prima sia aperto un canale con //OPEN//. I comandi disco devono essere dati all'**interno di un programma, non //standalone//**, pena comparsa dell'errore //'?ILLEGAL DIRECT ERROR'// Se si ottiene quanto segue l'**elettronica è a posto**: RUN 73 CBM DOS V2.6 1541 0 0 In pratica, il comando interroga il drive e ottiene dei valori, con i seguenti significati: ^E^E$^T^S^ |Errore numerico ("73")|Errore testo ("CBM DOS V2.6 1541")|Track ("0")|Sector/Block ("0")| * un **errore "0"** significa **'nessun errore'** * un **READ ERROR su Track 18 Block 0** significa che il floppy non è mai stato formattato Il **manuale del drive 1541** è reperibile **{{ :content:retrocomputing:riparazioni:commodore_vic_1541_floppy_drive_users_manual.pdf |qui}}**. ==== Riparazione ==== * arrivato **altro 1541-II funzionante** * il vecchio 1541-II con il nuovo alimentatore funziona correttamente * **ritestato vecchio alimentatore: ottenuto valori 5V e 16V, invece di 12V**, quindi i 16V non consentivano di far funzionare correttamente motore e parte meccanica * caricamento programmi da floppy ok **Soluzione**: **problema con l'alimentatore che buttava fuori 16V, invece di 12V**. ===== 1541 ?FILE NOT FOUND ERROR #2 (FAIL) ===== ==== Sintomo ==== **Sintomo: avvio drive corretto, ma '?//FILE NOT FOUND ERROR//' caricando un disco**, anche dopo aver pulito la testina con IPA ==== Analisi ==== === Error Channel === Per prima cosa conviene [[#analisi7|testare l'error channel]] === 1541 Diagnostic Cartridge === Poi si può eseguire, anche da Kung Fu Flash, la [[http://blog.worldofjani.com/?p=2180|1541 Diagnostic Cartridge]]. Per una **spiegazione dei vari test** si può fare riferimento [[https://www.valoroso.it/en/check-the-commodore-1541-drive-with-the-1541-diagnostic-cartridge-by-jani/|qui]]. === Resistenza testina === Poi si può testare i valori di **resistenza tra i pin del connettore testina**: {{:content:retrocomputing:riparazioni:1541-connettore-testina01.jpg?600|}} Un esempio di valori corretti letti da un drive funzionante: ^Pin-to-pin^Ohm^ |1-2|12.6| |1-3|13.0| |1-5|24.4| |2-3|14.6| |3-5|26.1| |2-5|13.0| I **valori corretti sono tra i 10 e i 30 Ohm**; nel caso in cui si leggano **valori di KOhm la testina è danneggiata e non è riparabile** === Riferimenti === Si può sempre fare riferimento alla **[[http://www.bitsavers.org/pdf/commodore/1541_Maintenance_Guide_1984.pdf|1541 Maintenance Guide]]**, dove a pag- 3-8, vengono elencati i range di resistenza possibili per il connettore testina: {{:content:retrocomputing:riparazioni:1541-connettore-testina02.png|}} **Soluzione (FAIL): purtroppo in questo caso la testina è danneggiata; la parte elettronica si può riutilizzare** ===== Plus/4 ===== ==== Sintomo ==== **Sintomo: schermo nero, ma segnale video presente** ==== Architettura ==== Visto che è la prima volta che mi capita questo computer da riparare, ho raccolto alcune informazioni circa l'architettura dello stesso. ^Chip^Descrizione^Note^ |8501R1|CPU|Clock variabile a 1,776 Mhz e 0,89 Mhz, uguale al C16| |8360R2|TED|Chip grafico e sonoro, uguale al C16| |318006-01|BASIC ROM|Uguale al C16| |318004-04|KERNAL, character set ROM|Uguale al C16| |251641-02|PLA|Uguale al C16| |317053-01 e 317054-01|3-Plus-1 ROM|| |4264-15|RAM| |74LS257|Multiplexer RAM| ==== Analisi ==== === 8501R1 === Mi sono concentrato sulla CPU 8501R1. * **Misurato tensioni sui PIN del 8501:** ^Pin^Descrizione^Valore misurato^Note^ |1|Clock|1,773 Mhz e 0,89 Mhz|ok| |14-19 e 21-22|A8-A13 e A14,A15|:!: Segnale 'sporco' intorno i 5 V| |23-30|P0-P6|alcuni segnali 'sporchi' intorno i 5 V| |31-38|D7-D0|Attività regolare| Il test evidenziato mostra **valori errati su vari PIN del bus indirizzi**. Misurazioni su di un **8501 correttamente funzionante:** ^Pin^Descrizione^Segnale normale^ |6-19|A0-A13|Attività normale| |21-22|A14-A15|Attività normale| |31-38|D7-D0|Attività normale| |24-25|P6-P5|5 V| |26-30|P4-P0|0, 3, 0, 0, 0 V| * **sostituito 8501R1** con equivalente preso da C16 funzionante: **lo sfondo nero è scomparso, ma è comparso il bordo viola e sfondo bianco corretto, ma con caratteri vari (//garbage screen//)**: {{:content:retrocomputing:riparazioni:plus4-001.png?800|}} * a seguito della sostituzione CPU, tutti i PIN A0-A15 hanno mostrato un'attività regolare * testato CPU, apparentemente non funzionante, del Plus/4 su C16: è comparso schermo nero, a riprova che l'**8501 del Plus/4 era difettoso** === Garbage screen === Ho cercato quindi di risolvere il problema del **//garbage screen//**. == 8360R2 == * sostituito TED con equivalente da C16: sempre //garbage screen// == 318006-01 == * sostituito BASIC ROM con equivalente da C16: sempre //garbage screen// == 318004-04 == * sostituito KERNAL,Char set ROM con equivalente da C16: sempre //garbage screen// == 3251641-02 == * sostituito PLA con equivalente da C16: sempre //garbage screen// **Riassunto: testato TED, 2xROM e PLA su C16 - funzionano** == 317053-01 e 317054-01 == * rimosso 3-Plus-1 ROM: stesso sintomo == 4264-15 == * controllato attività su chip **RAM** agli indirizzi A*: sembra ok == 74LS257 == * controllato attività su chip **multiplexer** per RAM: sembra ok, ma da verificare meglio :?: == Cartridge == * testato **cartuccia Jack-Attack**: stesso sintomo === Diag264 === **Ordinato cartuccia Diag264**. Una volta arrivata settata così: {{:content:retrocomputing:riparazioni:diag-settings.png?800|}} == Low RAM test == * all'accensione vedo **6 lampeggi** e compare il seguente **pattern**: {{:content:retrocomputing:riparazioni:1banco-difettoso2.png?800|}} * e subito dopo questo altro: {{:content:retrocomputing:riparazioni:1banco-difettoso.png?800|}} La **[[http://www.inchocks.co.uk/commodore/Diag264/|documentazione]]** rivela particolari interessanti. In particolare, durante il //low RAM test//, in **presenza di un problema**: - il bordo flasha da 1 a 8 volte, indicando la //data line// guasta :?: - i pattern devono essere uniformi; se compaiono altre lettere al posto di **'@'** il problema risiede nel banco RAM secondo questa tabella (estratto della doc): {{:content:retrocomputing:riparazioni:estratto-doc-diag264-2.png?800|}} Compaiono una serie di **'D'**, quindi il problema risiede nel **banco RAM U13**. * **dissaldato RAM U13**. Al posto delle **RAM 4264** usato **chip equivalenti 8264**. Al **boot** la situazione è migliorata, ma ci sono ancora dei **caratteri spuri**: {{:content:retrocomputing:riparazioni:1banco.png?800|}} * testato con la **Diag264**: questa volta non compaiono caratteri diversi da **'@'**, però flasha 7 volte **Se compaiono solo i pattern e i flash, ciclicamente, allora c'è un problema. Un //diag// normale prevede anche i check mostrati più avanti** * provato a fare **//piggybacking//** sui rimanenti banchi di memoria RAM, fino a che, provando il **chip U16** la situazione è migliorata, anche se c'è un lampeggio in corrispondenza del '.' di 'READY.': {{:content:retrocomputing:riparazioni:plus4-2banchi.jpg?800|}} * effettuato **altro //piggybacking//** sul **chip U17**: il **boot adesso è regolare** :!: == Altri test == * inserito **Diag264: adesso i check non presentano più lampeggi nè caratteri strani e proseguono:** {{:content:retrocomputing:riparazioni:diagtest002.jpg?800|}} ==== Riparazione ==== Il **flat della tastiera** può essere rimosso tirando. I pin di metallo sono semplicemente incollati, per cui, se si sollevano, prima di reinserire il flat bisogna eventualmente incollarli con super attack: {{:content:retrocomputing:riparazioni:plus4-flat-keyb.png|}} Di seguito un //recap// della riparazione. * sostituito CPU 8501R1 con equivalente da C16 funzionante * lo schermo nero non è comparso, ma al suo posto è arrivato un **garbage screen** * dalla **Diag264** sono emersi problemi di RAM nel chip U13 * altri banchi non funzionanti (U16 e U17) sono stati trovati col //piggibacking// * dissaldato banchi RAM non funzionanti; saldato zoccoli e inserito chip RAM 8264: {{:content:retrocomputing:riparazioni:plus4-ram.png?600|}} **Soluzione**: **sostituito CPU 8501R1 e 3 chip RAM** {{:content:retrocomputing:riparazioni:plus4-working.png?800|}} ===== Datassette ===== ==== Sintomo ==== **Sintomo: il datassette non legge le cassette** ==== Analisi ==== Oltre a non leggere le cassette, in una che usa il **Turbo tape** le **righe colorate orizzontali non sono consecutive, ma separate da ampie porzioni di blu**. ==== Allineamento testina ==== Ho: * scaricato un **programma per allineamento testina del Datassette da [[https://csdb.dk/release/?id=143459|qua]]** * caricato il **programma sulla Kung Fu Flash** * una volta **avviato** basta seguire le istruzioni a video: {{:content:retrocomputing:riparazioni:azimuth01.jpg?600|}} In sostanza, si tratta di: * inserire una cassetta funzionante e premere **Play** * premere F1 o F3 a seconda che la cassetta sia originale o meno (Turbo tape) * dovrebbero **comparire 2 o 3 colonne** che devono essere rese le più **compatte** possibili, **girando con un cacciavitino la vite dell'azimuth** * si può quindi uscire con Return Provato a rileggere la stessa cassetta di prima e adesso le righe compaiono in maniera consecutiva e senza ampi spazi blu in mezzo. Inoltre il caricamento viene portato correttamente a termine e il gioco si avvia. **Soluzione: allineato azimuth testina** ===== C64C ===== ==== Sintomo ==== Il computer si avvia, ma è **tutto in minuscolo. La tastiera non risponde, solo premendo alcuni tasti si vede qualcosa, ma l'output è sbagliato** ==== Analisi ==== La **CIA 6526A (U1)** è il principale sospettato in questi casi; la ver. A si tratta di un equivalente del 6526, solo che può funzionare anche a 2 Mhz. In ogni caso, il C64C accetta entrambe le versioni. * Inserito **6526 da altro C64** con tastiera funzionante: stesso sintomo * Testato il 6526A su altro C64: funziona * **diagnostico 586220** senza //harness kit// su keyboard dà "OPEN" (forse per la mancanza del kit?) * la coppia di valori orari in basso a destra sono uguali tra AM e PM, segno che la CIA 6526A dovrebbe essere ok :!: Dopo verifiche, il chip **CIA1** che governa la tastiera sul C64C è quello di fianco al pettine della stessa, sulla destra della mainboard. Ho agito sul CIA sbagliato! * rimosso CIA1 corretto: aveva un **piedino rotto** e saldato alla meno peggio! * messo CIA2 su zoccolo del CIA1: **garbage screen** (due volte) * poi **schermo nero: saltato fusibile!** * inserito 6526 da U1 a U2, per testare il chip: si vede schermo normale, senza cursore, come ovvio che sia visto che U1 adesso è vuoto * ... dopo varie prove con schermo nero, ho **rimosso lo zoccolo di U1: adesso il computer si avvia**, ma come da sintomo iniziale non funziona la tastiera * installato **nuovo zoccolo** (in realtà due file di zoccoli): inserito 6525 su U1: la tastiera non va (cursore lampeggiante, of course) * eseguito **test continuità pin CN1 (tastiera) e U1 (6526)**: si tratta di 20 pin; avevo saldato male il pin 5 dello zoccolo; * risaldato pin 5: test continuità adesso ok, ma la tastiera ancora non va * provato **altra CIA**: tastiera ko * invertito CIA: idem * :!: inserito **cartridge Jupiter Lander e i tasti 'A', 'D' ed 'F1' funzionano**! Invece la cartuccia Omega Race no... * ipotesi di problema su **ROM Kernal+Basic**: * ordinato **EPROM 27128** perchè l'immagine ROM è da 16 KB. In più i PIN vanno bene, non serve adattatore per zoccolo * programmato EPROM, testata: stesso effetto * testato PIN **4066** (U18) tra U1 e CN1; comportamento simile a 4066 su C64 con tastiera funzionante * inserito **cartuccia Lemans: il paddle funziona e anche 'A' e 'F1'** * :!: provato poi a premere alcune **combinazioni di tasti: '1' e '2' esce '2', '7' e '8' esce '8', '3' e '5' esce '5'; premendo '7' + altri tasti questi escono: 'Y','U','G','H','V','B'** * **cambiato zoccolo CIA1 con più standard 40 pin**: stesso problema tastiera * :!: inserito **Kung Fu Flash: il joystick sulla porta 2 consente di muoversi nei menu e selezionare le voci** * :!: provato **gioco Choplifter** (gli altri richiedono di premere RUN/STOP per essere avviati): **usa joystick su porta 1, però l'elicottero va sempre 'su', come se ci fosse qualcuno che spinge la leva joystick verso l'alto** Questo aspetto legato alla **leva del joystick 1 apparentemente 'bloccata' verso l'alto** si rivelerà decisivo per il troubleshooting * testato **segnali su CN1 con oscilloscopio:** * i pin da 3 a 11 sono a 5V * i pin da 13 a 19 sono a 5 V con dei //drop// con frequenza a 60 Hz, come da norma * :!: il **pin 12, che corrisponde alla Row 0 nella matrice tastiera, segna 0.6 V invece dei 5 V di un connettore funzionante**; lo schema del **collegamento completo** è il seguente: {{:content:retrocomputing:riparazioni:cia1-pin12.png|}} In pratica: **pin 1 Control Port 1 <-> filtro EM6 <-> linea JOY A0 <-> pin 12 CN1 tastiera <-> ROW 0 <-> porta in ingresso PB0 su CIA1** **Il pin 1 della porta joystick 1 controlla effettivamente l''UP' del joystick!** Quindi, il fatto che **la linea PB0 sia bassa (0.6 V corrisponde a //low//) spiega il comportamento del joystick** E' come se un'intera linea di tasti (Row 0) sia bloccata; di seguito la **//keyboard matrix//** per il C64: {{:content:retrocomputing:riparazioni:keyboard-matrix01.png|}} === Funzionamento matrice tastiera === Il C64 dice al 6526 di mandare impulsi per ogni porta output COLx (PAx) e, nello stesso momento, legge le porte input ROWx (PBx); quando un tasto sulla tastiera viene premuto... FIXME **La domanda allora è: cosa tiene la linea PB0 bassa?** ==== Riparazione ==== * rieffettuate **saldature pin 12 su CN1 e pin 10 su zoccolo CIA1 (PB0)**: stesso problema * :!: **rimosso filtro EM6: PB0 è tornata a 5 V e la tastiera funziona!** 8-) * il filtro EM6 l'avevo precedentemente testato (continuità tra i pin esterni, nessuna continuità dagli esterni verso l'interno) e non aveva problemi; l'ho quindi **risaldato**. La linea PB0 è rimasta a 5 V e la tastiera continua a funzionare * **test effettuati**: Choplifter su porta 1 joy ok, joy 2 ok, tastiera ok, datassette ok * effettuato pulizia standard, case e tastiera Ecco come appare il C64C riparato e con una tastiera nera, al posto della standard, così che ogni volta che lo userò mi ricorderà del tempo che ci ho perso sopra! {{:content:retrocomputing:riparazioni:c64c-black-keyboard.jpg|}} **Risaldato filtro EM6 che teneva la linea PB0 tastiera giù** In casi simili, bisogna verificare sul CN1 se le tensioni arrivano a 5 V su (quasi) tutti i pin, come indicato sopra. ===== C64 #4 ===== ==== Sintomo ==== Il computer si avvia con bordo e sfondo corretti, ma con un **garbage screen** {{:content:retrocomputing:garbage01.png|}} ==== Analisi ==== Concentro la mia analisi sui chip che possono essere coinvolti nella generazione di questo //garbage screen//. * **901225-01 Char ROM**: dissaldato, zoccolato e messo sostituto -> garbage screen uguale * **CIA U2** (dopo aver verificato la **[[https://www.pictorial64.com/|Pictorial Guide]]**: dissaldato chip e fatto partire il computer senza CIA2 -> **funziona** :!: * installato quindi zoccolo e messo altra CIA 6526 -> **OK** Dopo qualche tempo ha ripreso a dare **nuovamente garbage screen**. E' necessaria una nuova analisi. * il computer **parte correttamente con la Dead Test 781220** * il **gioco Jupiter Lander funziona** (anche tasti) * il **gioco Lemans funziona** (anche tasti) * :!: **toccato col dito la Char ROM 901225-01 e lo sfondo corretto inizia a comparire, per poi scomparire una volta tolto il dito**: {{:content:retrocomputing:funziona_quasi_2.png|}} {{:content:retrocomputing:funziona_quasi1.png|}} * anche **rimuovendo del tutto la Char ROM si ottiene lo stesso garbage screen**, sintomo che il problema è proprio quel chip: {{:content:retrocomputing:garbage_senza_char_rom.png|}} ==== Riparazione ==== * testato i **pin dello zoccolo ROM char**; hanno tutti continuità (ad es. verso i pin delle altre ROM), **a parte un pin molto importante, che è il suo CS (chip select) che va al pin della PLA della linea ROM char**, che non è attivo: {{:content:retrocomputing:char-rom-pla.png|}} Se questa pista non è attiva, è impossibile per la PLA selezionare la ROM char e quindi è come se quest'ultimo chip non funzionasse Ho provato a risaldare i contatti, da una parte e da un'altra, ma senza successo. Ho preferito quindi più velocemente fare un **ponte con un cavo di rame**, che metta in contatto il pin 20 CS della ROM char col pin 15 della PLA: {{:content:retrocomputing:ponticello.png|}} Il trucco ha funzionato e adesso il computer si avvia regolarmente! {{:content:retrocomputing:c64_ok.png|}} Il corretto funzionamento di tutti i suoi componenti è confermato dal **dead test con il kit di harness collegato**: {{:content:retrocomputing:c64_ok2.png|}} **Sostituito CIA2; ricreato pista tra ROM Char e PLA**. Purtroppo il SID si è rivelato parzialmente difettoso, quindi l'ho sostituito con un altro 6581 ===== C128 ===== ==== Sintomo ==== Il computer si avvia correttamente, ma dopo pochi secondi a volte si freeza, semplicissimi programmi Basic partono ma poi danno Syntax Error, in modalità C64 ha dato un Out of Memory e in entrambe le modalità ogni tanto cambiava caratteri e/o colori {{:content:retrocomputing:riparazioni:c128-garbage.jpg|}} {{:content:retrocomputing:riparazioni:c128-basic-error.jpg|}} ==== Analisi ==== Visto i sintomi 'strani', in più con un indicazione di //'Out of memory'// sospetto subito **problemi alla RAM**, che vengono confermati con l'inserimento della **Dead Test cartridge 781220**, che segnala **7 flash** all'avvio. Come da **{{:content:retrocomputing:riparazioni:781220_manual.pdf|manuale della Dead Test}}**, sette flash corrispondono ai banchi U39/U47: {{:content:retrocomputing:riparazioni:c128-7-flashes.jpg|}} ==== Riparazione ==== Procedo quindi a: * dissaldatura RAM segnalate come difettose * inserimento zoccolo * inserimento 'nuove' **RAM 4164** Bisogna fare **attenzione al verso di inserimento dei chip!** Sul C128, a differenza del C64, molti chip vanno inseriti con la tacca verso il basso della scheda. Dopo aver inserito le memorie col verso corretto, il computer funziona, così come il **dead test viene portato a termine**: {{:content:retrocomputing:riparazioni:c128-deadtest-ok.jpg|}} **Sostituito banchi RAM segnalati come difettosi dalla Dead Test** ===== VIC 20 #3 ===== ==== Descrizione ==== Si tratta di un VIC 20 prima serie, con tastiera **//Eurostile//**: {{:content:retrocomputing:riparazioni:vic20-eurostile.png|}} Anche la scheda è particolare, con generosi dissipatori: Infine l'alimentatore è diverso dai successivi, ha un **connettore a due poli** ed eroga **solo 9 VAC** (e non 5 VDC): {{:content:retrocomputing:riparazioni:vic20-psu.jpg|}} ==== Sintomo ==== Il computer si avvia correttamente, ma i caratteri sono sfuocati e i colori non nitidi {{:content:retrocomputing:riparazioni:vic20_2.jpg|}} ==== Analisi ==== Su di un **[[https://forums.atariage.com/topic/266431-vic-20-pro-tip-adjust-your-pots/|sito]]**, per questo tipo di VIC 20 con gli stessi sintomi, escludono problemi di VIC chip e dicono di verificare i condensatori, uno arancione in particolare: {{:content:retrocomputing:riparazioni:vic20_1.jpg?500|}} ==== Riparazione ==== In realtà, prima di effettuare un test dei condensatori, ho provato semplicemente a **inserire un VIC chip sicuramente funzionante**, cosa che si è rivelata corretta! {{:content:retrocomputing:riparazioni:vic20-vicchipok.jpeg|}} **Sostituito VIC chip** ===== Plus/4 #2 ===== ==== Descrizione ==== Si tratta di un Plus/4 con la tastiera molto ingiallita: {{:content:retrocomputing:riparazioni:plus4_2_nokeyb.jpg|}} ==== Sintomo ==== La tastiera non funziona, ma i tasti funzione sì e anche quelli cursore {{:content:retrocomputing:riparazioni:plus4_nokeyb.jpg|}} ==== Analisi ==== I sintomi sono identici alla situazione descritta **[[https://www.lemon64.com/forum/viewtopic.php?t=78411|qui]]**; ma in quel caso si sono limitati a cambiare tastiera. === Diag 264 === Provata una **cartridge Diag 264, senza harness kit** (per istruzioni vedi **[[https://www.inchocks.co.uk/commodore/Diag264/|qui]]**): {{:content:retrocomputing:riparazioni:plus4-diag264.png|}} **Testato la Diag 264 su di un Plus/4 con la tastiera funzionante**; il //'BAD'// sulla tastiera (e sulle altre porte) compare ugualmente, segno che sarebbe necessario il terminatore dell'harness kit === Scheda === La **scheda** si presenta relativamente pulita e in ordine: {{:content:retrocomputing:riparazioni:plus4-board.png|}} Le **tensioni sulla User Port** (stessi pin del C64) sono ok: {{:content:retrocomputing:riparazioni:plus4-user-port.png|}} === Jack Attack === Il gioco **Jack Attack**, sia su cartuccia stand alone, sia sulla Diag 264 risponde ai comandi **joystick**, anche se non sembra seguire i comandi di direzione esattamente. === Service manual === Scaricato il **{{:content:retrocomputing:riparazioni:service_manual_model_plus_4_computer.pdf|Plus/4 Service Manual}}**; dall'analisi della **keyboard matrix** i tasti cursore sono inseriti al suo interno, cosi` come tutti gli altri: {{:content:retrocomputing:riparazioni:plus4-keyb-matrix.png|}} E' possibile testare la **tastiera scollegata** premendo un tasto (ad es. rovesciandola e inserendo sotto ad essa un 'perno' che, con il peso della tastiera, produce la pressione del tasto) e **testando con un multimetro le 2 connessioni del tasto**; ad es. i pin del connettore tastiera 17 e 5, come da matrice sopra, se viene premuto il tasto '1', danno **continuità**. Ci sono **18 pin sul cavo flat della tastiera**, configurati così: {{:content:retrocomputing:riparazioni:plus4-keyb-flat.png|}} === Smontaggio tastiera === Ci sono le solite vitine da svitare, simili a quelle del C64, così come bisogna dissaldare i reofori che si collegano al tasto Caps Lock; di diverso c'è il LED, che tiene ferma la tastiera tramite un piccolo **perno di plastica**, che bisogna sollevare delicatamente con un cacciavite sottile: {{:content:retrocomputing:riparazioni:plus4-keyb-led.png|}} :!: Fare attenzione ai **4 tondini di gomma dei tasti cursore e ai 4 dei tasti funzione**, che sono appoggiati e rischiano di cadere: {{:content:retrocomputing:riparazioni:plus4-keyb-pcb.png|}} :!: C'è anche una **piccola molla** solo appoggiata, vicino al LED: {{:content:retrocomputing:riparazioni:plus4-keyb-molla.png|}} === Pulizia tastiera === Dopo una **pulizia del PCB con WD40 detergente contatti** e **dei gommini dei tasti con cotton fiocc imbevuto di IPA** qualche tasto comincia a funzionare. Altri tasti sono 'duri', per cui sembra necessario il trattamento con soluzione a base di grafite. Dopo aver **spennellato i contatti di gomma con soluzione a base di grafite**... === Linee keyboard === **Verificato i nuclei di ferrite** a valle del connettore flat della tastiera **FB49-56**: misurano tutti circa 4.90 V (si possono misurare indifferentemente sul pin destro o sinistro, danno lo stesso valore). Dovrebbero corrispondere alle **//ROWS//=Inputs**; se nessun tasto è premuto stanno a 5 V, tramite le resistenze di pull-up del **chip TED**: {{:content:retrocomputing:riparazioni:plus4-keyb-rows-colums.png|}} Le **Colonne** sono da intendere colonne di tasti presenti sulla tastiera del Plus/4; nella matrice sopra in realtà sono messe come righe :!: : {{:content:retrocomputing:riparazioni:plus4-keyb-rows-cols.png|}} Mentre i nuclei **FB41-48** misurano tutti 0 V e dovrebbero corrispondere a COLUMNS=Outputs {{:content:retrocomputing:riparazioni:plus4-fbxx.png|}} **[[https://www.keymmodore.com/wiring-c-16/|Qui]]** viene spiegato il **funzionamento di una keyboard matrix C16/Plus4**; qui invece c'è un **[[https://youtu.be/25xlligwsL8|video]]** FIXME Nel **Service Manual**, relativamente alla tastiera, si suggerisce: {{:content:retrocomputing:riparazioni:plus4-keyb-service-manual.png?700|}} ==== Riparazione ==== ... **bla bla bla** ===== Riferimenti ===== https://www.pictorial64.com/ https://portcommodore.com/rcarlsen/cbm/ https://retro64.altervista.org/blog/commodore-64-repair-a-quick-guide-on-the-steps-required-to-fix-it/ https://retrocomputerverzamelaar.nl/commodore-64-problems/ https://cbm8bit.com/articles/ray-charlsen/article21 http://www.cbmhardware.de/314002/index.php