[zxspectrum] Re: Mie routine per i microdrive

  • From: "BODRATO Stefano" <Stefano.Bodrato@xxxxxxxxxxxxxxxx>
  • To: <zxspectrum@xxxxxxxxxxxxx>
  • Date: Fri, 1 Oct 2004 13:00:18 +0200

>Mi complimento con te ma... francamente mi sfugge il punto. Che cosa
>volevi ottenere esattamente? La lettura/scrittura del singolo settore
>utilizzando non gli hook codes ma comunque solo chiamate a routine della
>ROM ombra (cioè niente accesso diretto alle porte)? Se è così, dato che
>comunque non sono programmi portabili, perché non accedere direttamente
>alle porte, cosa che ti avrebbe permesso il pieno controllo?

Hmm.. sarebbe stato per me troppo complicato (tu ci eri riuscito ?) e 
sicuramente molto più dispendioso in termini di memoria occupata.  Già così se 
ne vanno 2K più 595 bytes per il buffer su cui lavorare; posso segmentare in 
sottomoduli la libreria, e risparmiare ancora qualcosa, ma non molto.


>Pasticciata in che senso? A me non risulta che la IF1 pasticci alcunché.
>Come potrebbe funzionare altrimenti?

Non so che dire.. per attivare la ROM uso l'apposita hook code; per rimettere a 
posto la ROM faccio una call all'indirizzo 1 della shadow, ma mi sono accorto 
che mi restano 2 word di troppo nello stack.  Un paio di POP rimettono tutto in 
quadro.


>> - Due differenti meccanismi di ricerca caricano un settore in base al
>> numero di settore o all'abbinata nome file/numero record.  Una
>> struttura in C permette di referenziarne le parti con la sintassi
>> "myrecord->item".
>
>Ottimo! Questo comunque è già un livello abbastanza più alto.

Sto preparando anche un paio di funzioncine un po' più potenti per calcolare le 
checksum e per convertire le stringhe.


>> L'effetto risultante è che caricando lo stesso programma 2 volte posso
>> trovarmi 2 programmi diversi tra loro.
>
>Uhm... non credo di aver capito bene cosa ti succede. Non legge i dati
>dal settore sempre allo stesso modo (cioè hai degli errori in lettura)
>oppure legge dati corretti ma da settori sempre diversi?

E' un'esperimento che mi ha dato il risultato voluto:
- carico un piccolo programma BASIC (che sta in un settore)
- lo modifico e lo salvo con lo stesso nome ma su un'altro settore

Il risultato è che il Microdrive carica il primo che trova, ovvero quello che 
arriverà per primo alla testina.  Non so se il trucco sia di qualche utilità, 
ma mi ha divertito.


>> Ogni settore contiene il nome del cartridge, quindi sarebbe
>> ipotizzabile la gestione di "partizioni" identificate con quel campo.
>
>Oppure subdirectory.

Si, ma a un solo livello di profondità.


>Potrebbe continuare a funzionare esattamente come prima. Non penso che
>tenga conto del nome della cartuccia. Non ricordo se lo visualizza
>insieme alla directory. Se sì, non credo comunque che lo vada a
>controllare per ogni settore.

Credo anch'io.
Non so se qualche programma ha mai gestito il microdrive a questo livello in 
programmi commerciali.
L'unica cosa "strana" di cui sono al corrente è questo linguaggio Forth:
http://icemark.net/zx/SSD-III/servlet/ssd/title/exact/White%20Lightning/Microdrive%20Manual
Che faceva inizializzare il cartridge creando un file grosso come tutta la 
cartuccia.


Other related posts: