[zxspectrum] Re: HD Project 115200!
- From: Luca Alimandi <luca.alimandi@xxxxxxxxxx>
- To: zxspectrum@xxxxxxxxxxxxx
- Date: Sat, 25 Jul 2015 10:51:57 +0200
Il 23/07/2015 15:46, Enrico Maria Giordano ha scritto:
Il 23/07/2015 10:58, Enrico Maria Giordano ha scritto:
Mi sono riletto tutto il lungo thread e vorrei capire una cosa. Tu
hai detto che ricaricando solo il basic HDFN il problema si risolve.
Puoi confermare questa cosa? E' importante.
No, perché se è vero che si risolve in questo modo (cioè caricando
*solo* la parte HDFN) allora la cosa è inspiegabile. A meno che per
rimettere le cose a posto non basti un "0 Ok".
Fammi sapere.
EMG
Purtroppo devo smentire clamorosamente quello che dissi all'epoca:
ricaricare SOLO HDFN non è sufficiente a riportare la situazione di
corretto funzionamento dopo un errore BASIC! :-(
Non so come mai ero convinto che avesse funzionato (forse avevo fatto
qualcosa che ora non ricordo, tipo CLEAR con indirizzo basso o cose del
genere), ma non sono riuscito più a replicare quel risultato... Per cui
direi che possiamo scartare quell'affermazione.
Però ho analizzato un po' il disassemblato delle tue routine LM ed ho
notato che in certi casi utilizzi l'istruzione EXX.
Leggendo il capitolo 8 (pag. 86) del libro "Guida allo ZX Microdrive e
all'Interface 1" di A. Pennell, ho notato questo, a proposito dell'uso
degli Hook Code:
"I codici da FFH a 1AH producono i normali messaggi di errore, mentre i
codici superiori a 32H (34H con la nuova ROM) producono HOOK CODE ERROR,
non documentato nel manuale. Alcuni di questi codici sono molto utili,
altri meno, ma il programmatore deve tener conto dello stato degli
interrupt mascherabili, all'ingresso e all'uscita di alcune routine. Se
si deve tornare al BASIC (dopo una funzione USR), occorrerà sempre
preservare il valore contenuto nella coppia H'L'. Il mancato rispetto di
questa precauzione può mandare in tilt il calcolatore in virgola mobile
e quindi tutto il sistema."
Magari non c'entra nulla, ma non potrebbe essere che il rientro al BASIC
abbia dei problemi a causa della mancata preservazione del valore
presente in H'L' prima di usare l'istruzione EXX? E' solo un'ipotesi,
non ho approfondito, ma magari per te che conosci il meccanismo delle
tue routine e sai perché l'hai utilizzato, potrebbe essere un indizio
utile...
Per quanto riguarda i due wav che ti ho inviato, sono la registrazione
del BASIC presente al momento sullo Spectrum reale, uno registrato
"prima" di provocare l'errore BASIC, l'altro "dopo". In pratica un
semplice: SAVE "prima", e SAVE "dopo" (senza linea di autostart).
Se non ricordo male, l'istruzione "SAVE" oltre al programma dovrebbe
salvare anche le variabili, ma forse non è così, ed allora i due file
non servono a niente, o quasi... In caso, c'è un modo per salvare le
variabili insieme al programma? Io non mi ricordo... :-[
Comunque penso che tu non dovresti avere problemi a caricarli (su
emulatore o Spectrum reale). Se ha bisogno dei TAP posso provare a
generarli, ma per me è un po' laborioso... Credo che tu fai molto prima!
E poi forse dovrei salvare altre parti della memoria...
Intanto continuo ad analizzare le informazioni sui canali e la ROM ombra
dell'Interface 1, alla ricerca di altri indizi utili. Ti farò sapere. :-)
--
|_ /-\
Other related posts: