Ready64 Forum
Commodore 64 => CBM Hardware => Topic aperto da: lodger - 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?
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:
-
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 è?
-
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?
-
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:
-
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:
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.
*=$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.
.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:
-
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 (http://www.cbmitapages.it/tecnico/pla.htm)
-
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! (http://www.faccine.eu/smiles/1145468143-Animali%20(237).gif)
per mces:
scusa,non ho capito,ma se questa PLA è danneggiata la schermata iniziale del basic si avvia lo stesso?
-
Quando il PLA è guasto, generalmente non visualizzi nulla a video (schermo nero).
-
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....