[zxspectrum] R: Sempre per il programma di trasferimento di EMG

  • From: "Simone Voltolini" <simone.voltolini@xxxxxx>
  • To: <zxspectrum@xxxxxxxxxxxxx>
  • Date: Fri, 5 Feb 2016 10:03:46 +0100

 

“Simone, mi hai detto di sapere perfettamente come funziona il microdrive.
Voglio solo essere sicuro che ci capiamo sul fatto che non è solo un
problema di 
spazio libero in memoria, ma anche di conflitti in particolari locazioni di
memoria,
o se preferisci un termine più generico, di compatibilità.

In pratica, possiamo arrivare a creare un blocco CODE con l'header 
giusto, che punti alla locazione prevista originariamente dall'header su
cassetta, ma appena farai  LOAD * "m";1;"styx" CODE   ...andrà tutto
in crash perchè la ROM tenterà di caricare il programma dove in quel 
momento c'è il buffer temporaneo del microdrive.

Voglio proporti una cosa: dai il comando

CLEAR 24500
seguito da:

CAT 1

Vedrai che ti arriverà un "Out of Memory".

Mettiamo che molti programmi "al limite" non si spingano così in basso,
magari partiranno da 245700 (24576 è molto frequente, per come si esprime in
esadecimale).
Questo però significherebbe solo che al programma in questione resteranno
meno di 200 byte per loader e stack.”

Non ti preoccupare: ho già le routine che utilizzavo negli anni 80 per
spostare in L/M il codice dall’alto al basso, a sono casi rari che troviamo
poco frequentemente sui nuovi titoli che sono fatti in maniera + standard.
In più su PC abbiamo altri strumenti che ci permettono di rielaborare il
codice comprimendolo e creando un TAP compatibile con le zone sporche della
IF1.

“Possiamo però vedere qualche caso pratico:

Manic Miner funzionerà tranquillamente ed è trasferibile anche con tool
automatici perchè
il suo blocco dati è ben distanziato dal BASIC (parte circa alla locazione
32768), ma anche programmi altrettanto antichi ti daranno 
seri grattacapi, ad esempio quelli per il 16K non hanno molto spazio a
disposizione e allocano il codice pericolosamente in basso.

"Land of Mire-Mare" è composto da un blocco di 41K che inizia dalla
variabili di sistema (alla 23552) e ricopre il BASIC.
In questa situazione il CLEAR non serve, il programma si aspetta di avere la
RAMTOP nella posizione di default di un 48K.
Purtroppo tra il basic e la ramtop, durante il processo di caricamento, ci
sono le variabili di sistema e il buffer usati
dalle ROM dei drive.   Mettiamo (cosa fattibile) di riuscire a creare un
blocco identico nel cartridge: la ROM non potra caricarlo, 
e andrà in crash perchè a metà del caricamento distruggera le aree che sta
utilizzando per il LOAD.
Le tecniche per renderlo funzionante ci sono, ma prevedono un minimo di
rimaneggiamento dei blocchi prima e dopo il trasferimento, 
il che comporta delle modifiche al loader e ai CODE blocks.”
Usiamo SNAP TO TAP o lo packo e poi in L/M lo sposto alla sua posizione
d’origine, ripeto nessun problema.


“Pesco a caso tra i file ed elenco qualche TAP a campione.
Questi sono incompatibili: Land of Mire Mare, Pole Position, Draughts, Robin
Of Sherwood, Backgammon, Micro Prolog, Fig Forth, Zombie Zombie ecc ecc..
In alcuni casi puoi constatarlo da te, basta dare un CAT prima di caricare
normalmente il programma da cassetta.. in altri casi (ad es. MireMare
probabilmente il programma sarà comunque caricabile da cassetta perchè le
variabili di sistema dell'interface 1 saranno "piallate" durante il
caricamento, ma questo non significa che tu possa caricarlo nello stesso
modo da cartridge!)”

Ripeto…non farti questi problemi…non è questo il punto ;)


““Questi possono essere compatibili (una volta sistemata la sintassi del
"LOAD"):  demo Horizons, Manic Miner, VU 3d, , oltre naturalmente ai vari
Tasword, SuperCode e programmi vari pensati x la compatibilità con il
Microdrive.


E' comunque importante distinguere i due discorsi, per come la vedo io non
devono essere considerati nello stesso progetto.””

A noi interessano le routine di salvataggio come ti ha chiesto Enrico, i
limiti del Microdrive ok ci sono, intanto serve come apripista per poi fare
eventualmente un’immagine.

Non a caso anche Lasorella usa Snap to TAP su PC per bypassare questo
problema, che comunque si presenta in alcuni casi specifici ed è bypassabile
con altre utility.
 
In sostanza l’utility è pensata per aiutare il trasferimento di un TAP,
qualunque esso sia, da PC ad MD.
Poi o si rielabora prima per adattarlo alla IF1 o dopo.
 
Facci sapere se puoi aiutarci, grazie.
 
 
 

Other related posts: