Ho fatto alcuni esperimenti con la ZXMMC+ in modalità diagnostica, sperando di riuscire a individuare i chip di memoria guasti di alcuni Spectrum. Purtroppo ho scoperto che non tutte le bestioline nere difettose sono "comunicative" nei confronti di ZX-COM, nemmeno in modalità diagnostica :-( Ho provato come prima cosa con uno Spectrum funzionante. Sono entrato in modalità diagnostica inserendo un ponticello tra il FIRE dell'interfaccia Kempston e la massa. All'accensione vedo gli effetti sul bordo e la schermata iniziale mi conferma che sono in modalità diagnostica. Con lo Spectrum funzionante non ci sono problemi né a leggere né a scrivere blocchi di RAM tramite ZX-COM. Su tre Spectrum difettosi, invece, uno ha probabilmente la CPU andata, dato che resta bloccato con la tipica schermata a quadretti colorati anche con la ZXMMC+ collegata. Gli altri due invece mi permettono di entrare in modalità diagnostica, ma appena tento di effettuare il login da seriale si bloccano. Se l'NMI da seriale arriva durante un tentativo di lettura di un blocco di RAM, ZX-COM segnala un errore durante la ricezione dei registri. Ipotesi: non è che l'NMI handler chiamato da seriale può in alcuni casi eseguire uno switch errato nella RAM dello Spectrum? Io ho dato un'occhiata al codice della bootrom, e non mi sembra che possa succedere un caso simile. -- Eugenio Il 07 novembre 2011 22:15, Alessandro <alessandro.poppi@xxxxxxxxx> ha scritto: > On Mon, 2011-11-07 at 09:48 +0100, Eugenio Ciceri wrote: > >> Temo che dovrò aspettare il prossimo weekend per metterci mano, ma ora >> incornicio il tuo post e lo metto in laboratorio ;-) > > Onorato :-) > >> Non sarebbe nemmeno male l'idea del programmino diagnostico da mettere in >> ROM. >> Ci penso su. > > In effetti la zxmmc+ si presta particolarmente bene, perche' grazie alla > ram onboard puo' far girare un programma diagnostico senza utilizzare > nemmeno un byte della ram di sistema, cosa abbastanza significativa se > il programma in questione e' un memory-test :-) > > Siccome tutto cio' mi ricordava qualcosa, sono andato a controllare ed > in effetti nel sorgente c'e' gia' una sorta di procedura orientata a > questo argomento. > > Infatti, devi sapere che al fine di avere la propria area variabili, la > bootrom per prima cosa si copia nell'ultimo banco di ram che viene poi > attivato ed un'area e' quella delle variabili. > > Dato che il n. di banco rom (0) e ram (15) non coincidono, viene usata > la ram dello spectrum come buffer intermedio. Cio' presuppone che la ram > funzioni, altrimenti ovviamente la copia non va a buon fine. > > Se pero' tieni chiuso l'ingresso FIRE del joystick mentre accendi, > attivi una modalita' 'diagnostica' in cui viene perso il banco zero (la > copia da rom (0) a ram (0) non richiede buffer intermedi, perche' e' > possibile attivare contemporaneamente la ROM in sola lettura e la RAM in > sola scrittura, per cui la copia avviene con un semplice LDIR su se > stesso) con conseguente distruzione di eventuale residos, ma poco male. > > Il risultato e' che la bootrom riesce a partire anche senza ram di > sistema: solo in questo modo potrai poi avvalerti della comunicazione > seriale per visionare la ram. > > Se per caso decidi di fare qualche routine di test, sappi quindi che hai > gia' una sorta di scheletro e, nel caso, mi raccomando modifica l'ultima > versione del sorgente: > http://www.zxbada.bbk.org/zxmmcp/software/bootrom_v2.21e.zip > > Tieni anche presente che questo sorgente e' un po' un casino, ma sai > com'e'... e' una importazione di quello del badaloc. > > Ciao! > > > >