grazie della furia, ti spiego meglio il problema.... :)
dunque, sto cercando di far funzionare una interfaccina per leggere
le SD card sullo spectrum e le routines a basso livello funzionano
bene con un'unica limitazione dovuta alle schede stesse, posso
leggere un settore cioe' 512 byte alla volta... l'indirizzo del
settore e' formato da 32 bit e dovrebbe indirizzare il singolo byte
della scheda, ma siccome leggo 512 byte alla volta, questa variabile
devo incrementarla di 512 per ciascun settore. Parlando di numeri il
primo settore lo trovo a $00000000, il secondo a $00000200 e cosi' via...
in pratica il byte meno significativo e' sempre 0, mentre i restanti
24 bit contengono il numero del settore shiftato di 1 una posizione a
sinistra..
questa routine mi serve perche' vorrei fare in modo di caricare i
file .Tap dalla SD e sommando la lunghezza di ogni blocco, conoscere
esattamente la posizione di ogni singolo file e usare una specie di
browser per scegliere quale file caricare... insomma e' piu' semplice
di quanto non sembri ma sono bloccato su questa storia... :(
Se ho capito bene, volevi questo:
LD HL, var16 LD IX, var32
LD A, (IX+0) LD D, (IX+1) LD C, (IX+2)
RR C RR D RRA RR C RR D RRA
LD E, A ADD HL, DE
LD (var16), HL
(scusate la fretta e furia: ho il terrore che qualcuno trovi un bug nel mio listatino di cui sopra) :-)
Il giorno 17-gen-2006, alle ore 14:04, Mario Prato ha scritto:
compitino per casa, devo sommare una variabile a 16 bit contenuta in un registro (HL o DE) ad un'altra variabile contenuta in 4 locazioni di memoria consecutive puntate dal un altro registro, questa variabile di 4 byte pero' e' shiftata di 2 bit a sinistra, cioe' i 2 bit meno significativi sono sempre a 0... chi mi da una mano? :)
-- alf