Autore Topic: Testare La Ram  (Letto 3147 volte)

lodger

  • Utente
  • **
  • Post: 91
  • Gioco Preferito: Ollie's Follies
Testare La Ram
« il: 20 Novembre 2009, 14:16:19 »
 Ciao,
sto per comprare un nuovo C64,purtroppo il venditore non ha nè il datasette nè il disk drive per poterci provare dei giochi,

la schermata iniziale si avvia,pero' ho letto che in molti hanno avuto lo stesso problemi con la RAM.

Visto che gli indirizzi della RAM vanno da 0 a 4096,
con questo programma si puo' verificare che la RAM sia OK?

Codice: [Seleziona]
10 poke 3000,1
20 poke 7000,1
30 poke 13000,1
40 poke 17000,1
50 poke 23000,1
60 poke 27000,1
70 poke 33000,1
80 poke 37000,1
90 print peek(3000);peek(7000);peek(13000);peek(17000);peek(23000);peek(27000);peek(33000);peek(37000)
(alla fine,se è tutto OK,dovrebbe apparire il numero 1 ripetuto 8volte.)

se non va bene,che altro test bisogna effettuare? :mellow:  
Verde,Giallo,Rosso e Blu, e il cervello non c'è piu'! @_@

- CHI VOTA UCCIDE ANCHE TE,DIGLI DI SMETTERE ! -

mces

  • Utente
  • **
  • Post: 339
  • Gioco Preferito: fort apocalypse
Testare La Ram
« Risposta #1 il: 20 Novembre 2009, 19:03:38 »
 la ram del C64 è formata fisicamente da chip che contengono bit di TUTTE le parole della ram, quindi un chip ram completamente bruciato non puoi averlo, un chip con alcuni bit rovinati..... mi pare che sia statisticamente più probabile che ti si rovini la PLA.

Intanto, quale versione del C64 è?
Non esistono problemi, solo soluzioni.

lodger

  • Utente
  • **
  • Post: 91
  • Gioco Preferito: Ollie's Follies
Testare La Ram
« Risposta #2 il: 20 Novembre 2009, 20:39:25 »
 
Citazione da: "mces"
Intanto, quale versione del C64 è?
bisteccone...ops! biscottone :-P

quello che vorrei è un test di poche righe che verifichi che la RAM sia OK al 100%,
è possibile?
Verde,Giallo,Rosso e Blu, e il cervello non c'è piu'! @_@

- CHI VOTA UCCIDE ANCHE TE,DIGLI DI SMETTERE ! -

santino03

  • Utente
  • **
  • Post: 106
  • Gioco Preferito: micropose soccer
Testare La Ram
« Risposta #3 il: 20 Novembre 2009, 23:03:20 »
 
Citazione da: "lodger"
purtroppo il venditore non ha nè il datasette nè il disk drive per poterci provare dei giochi

 
Scusa perchè un datassette non lo compri su ebay? :mavieni:  

iAN CooG

  • Utente
  • **
  • Post: 1774
    • http://iancoog.altervista.org
  • Gioco Preferito: Turbo Assembler, ActionReplay Monitor, DiskDemon
Testare La Ram
« Risposta #4 il: 20 Novembre 2009, 23:15:48 »
 Ho una sensazione di dejavu, ovvero argomento gia' trattato.
Il kernal durante il reset gia' fa' un minimo di controllo sulla RAM, da $033c a $a000 - cioe' finche' non incontra la ROM del BASIC, purtroppo: il resto della RAM non lo controlla - e questo lo si vede dal numero di "bytes free" nel messaggio di avvio. Se si vede un numero diverso da 38911, quella e' la locazione di ram "rovinata" (meno 2049)
Si puo' effettuare manualmente in ogni momento, e' una routine non distruttiva:
Codice: [Seleziona]
sys64863

ready.
?pE(643)+pE(644)*256
 40960
se non si ottiene 40960, il numero che viene stampato e' la locazione danneggiata, cioe' dove non riesce a scrivere e rileggere 2 valori di prova ($55 e $AB) (*)

Un tester per TUTTA la memoria $0800-FFFF invece si implementa facilmente, do' per scontato che almeno la memoria fino a $07ff sia funzionante, altrimenti il C64 non sarebbe nemmeno utilizzabile.
Asm naturalmente, non ci penso nemmeno ad implementarlo in basic, non avrebbe nemmeno senso visto che un prg basic occupa ram sia come programma che come variabili, oltre che impiegarci dei giorni a fare quest'operazione.
Se va tutto bene, stampa ALL OK!, altrimenti la locazione danneggiata e fa flashare il bordo in un ciclo infinito.
Codice: [Seleziona]
   *=$0334
    sei
    inc $01
    lda #$08
    sta $fc
    ldy #0
    sty $fb
loop
    lda ($fb),y
    pha
    lda #$55
    jsr test
    bne errore
    lda #$aa
    jsr test
    bne errore
    pla
    sta ($fb),y
    iny
    bne loop
    inc $fc
    bne loop
    dec $01
    cli
    lda #<allok
    ldy #>allok
    jmp $ab1e
test
    sta ($fb),y
    cmp ($fb),y
    rts
errore
    lda $fc
    jsr conv
    stx erroraddress
    sta erroraddress+1
    tya
    jsr conv
    stx erroraddress+2
    sta erroraddress+3
    pla
    jsr conv
    stx errorbyte
    sta errorbyte+1
    dec $01
    lda #<errorstr
    ldy #>errorstr
    jsr $ab1e
infinite
    inc $d020
    jmp infinite
conv
    pha
    lsr
    lsr
    lsr
    lsr
    jsr dhex
    tax
    pla
    and #$0f
dhex
    ora #$30
    cmp #$3a
    bcc noth
    adc #6
noth
    rts

allok
    byte "ALL OK!",0
errorstr
    byte "$"
erroraddress
    byte "0000"
    byte "=$"
errorbyte
    byte "00",0


(*) il secondo valore dovrebbe essere $AA per correttezza, ma un baco di implementazione nel kernal fa si' che venga scritto $AB quindi il bit 0 di ogni byte viene sempre verificato da acceso e mai da spento.
Codice: [Seleziona]
.C:fd5f   A2 3C      LDX #$3C
.C:fd61   A0 03      LDY #$03
.C:fd63   86 B2      STX $B2
.C:fd65   84 B3      STY $B3
.C:fd67   A8         TAY
.C:fd68   A9 03      LDA #$03
.C:fd6a   85 C2      STA $C2
.C:fd6c   E6 C2      INC $C2
.C:fd6e   B1 C1      LDA ($C1),Y
.C:fd70   AA         TAX
.C:fd71   A9 55      LDA #$55
.C:fd73   91 C1      STA ($C1),Y
.C:fd75   D1 C1      CMP ($C1),Y
.C:fd77   D0 0F      BNE $FD88
.C:fd79   2A         ROL A   <<<<< qua doveva essere ASL
.C:fd7a   91 C1      STA ($C1),Y
.C:fd7c   D1 C1      CMP ($C1),Y
.C:fd7e   D0 08      BNE $FD88
.C:fd80   8A         TXA
.C:fd81   91 C1      STA ($C1),Y
:rtfm:
-=[]=--- iAN CooG/HVSC^C64Intros ---=[]=-
- http://hvsc.c64.org - http://intros.c64.org -

mces

  • Utente
  • **
  • Post: 339
  • Gioco Preferito: fort apocalypse
Testare La Ram
« Risposta #5 il: 21 Novembre 2009, 08:24:29 »
 se non ci fosse iAN CooG bisognerebbe inventarlo....

comunque rimango dell'opinione che all'acquisto di un C64 più che fossilizzarsi su timori di chip RAM danneggiati (chip comodamente reperibili), forse si dovrebbe temere per la PLA che è un componente obsoleto e non comprabile se non come specifico pezzo di ricambio, visto che è un CHIP programmato in fabbrica, inoltre è spesso causa di rottura della macchina!
La statistica è così contro la PLA che se trovi su un mercatino un vecchio C64 MOLTO rotto da cannibalizzare allora probabilmente trovi funzionanti il SID, almeno un CIA, il 6510, forse il VIC, ma sicuramente la PLA è defunta o già reciclata!

Se vi ho gettato nel mare del panico vi lancio pure una scialuppa di salvataggio: esiste la possibilità (con cui ho salvato un mio C64) di rimpiazzare la PLA con una EPROM opportunamente programmata e adattata, esempio:
http://www.cbmitapages.it/tecnico/pla.htm
Non esistono problemi, solo soluzioni.

lodger

  • Utente
  • **
  • Post: 91
  • Gioco Preferito: Ollie's Follies
Testare La Ram
« Risposta #6 il: 21 Novembre 2009, 13:26:23 »
 mhh...grazie per la formula magica,

io,ingenuamente,pensavo che bastasse dividere 4096 per 8(il numero dei chip)e fare dei POKE qua e la',forse è meglio che mi do.......all'IPPICA!


per mces:
scusa,non ho capito,ma se questa PLA è danneggiata la schermata iniziale del basic si avvia lo stesso?
Verde,Giallo,Rosso e Blu, e il cervello non c'è piu'! @_@

- CHI VOTA UCCIDE ANCHE TE,DIGLI DI SMETTERE ! -

sys58255

  • Utente
  • **
  • Post: 183
Testare La Ram
« Risposta #7 il: 21 Novembre 2009, 17:15:11 »
 Quando il PLA è guasto, generalmente non visualizzi nulla a video (schermo nero).

mces

  • Utente
  • **
  • Post: 339
  • Gioco Preferito: fort apocalypse
Testare La Ram
« Risposta #8 il: 23 Novembre 2009, 08:44:39 »
 La PLA gestisce moltissime cose e quindi può riperquotersi su moltissimi punti del sistema, sul mio il difetto era curioso: tutto OK tranne il colore dei caratteri che era casuale e cambiava continuamente, infatti l'uscita della PLA che dava il /CS (chip select: attivazione del chip) alla memoria ram statica del colore non era ben funzionante rendendo pressochè impossibile la scrittura/lettura in detta ram.
La soluzione provvisoria fù il dissaldare le due ram statiche e mettere una serie di resistori di Pull-Up e Pull-Down che mi mettevano sul bus dati il codice del colore grigio quando il bus stesso non era pilotato da altri chip, in questa maniera l'unico colore carattere del mio C64 era il grigio "harware".

Poi vidi la tecnica della EPROM al posto della PLA e ripristinai le funzionalità del mio C64....
Non esistono problemi, solo soluzioni.