[zxspectrum] Re: 48<->128, Nastro<->Drive

  • From: "FALCO CESARE (BAM - 00541)" <cesare.falco@xxxxxx>
  • To: <zxspectrum@xxxxxxxxxxxxx>
  • Date: Mon, 15 Sep 2003 12:58:27 +0200


> -----Original Message-----
> Sent: Monday, September 15, 2003 10:55 AM
> To: zxspectrum@xxxxxxxxxxxxx
> Subject: [zxspectrum] Re: 48<->128, Nastro<->Drive
> 
> 
> 
> 
> "FALCO CESARE (BAM - 00541)" wrote:
> > 
> > Vorresti dire che la Zilog doveva progettare una specie di Z380
> > con modalita' reale?! Non stai chiedendo un po' troppo?!    :^)
> > 
> Però, ripensandoci, forse bastava che il processore evoluto 
> avesse avuto
> tutti i registri del vecchio *più* quelli necessari ad accedere
> all'indirizzamento esteso. Un po' come AH/AL e AX degli Intel.
Appunto: uno Z380!    :^)

> > Il ramdrive dell'interprete Basic utilizza proprio le 
> pagine aggiuntive,
> 
> Sì, d'accordo. Ma io avrei gradito di più un'integrazione trasparente
> dell'uso delle pagine aggiuntive come memoria allocata dinamicamente.
Sarebbe stato troppo scontato. E il "Sinclair Spirit"?!  :^)

> 
> > > Ad esempio, pensa che pizza, in linguaggio C, non poter
> > > allocare la memoria che ti serve, pur avendola a 
> disposizione, solo
> > > perché questa è divisa in più pagine e il sistema operativo non ne
> > > prevede la gestione.
> > 
> > Scusa, ma questo al limite sarebbe un problema del compilatore.
> 
> No, normalmente non è compito del compilatore gestire la memoria. Il
> compilatore gira la richiesta al sistema operativo che è l'unico in
> grado di sapere se e dove trovare memoria disponibile. Nello Spectrum
Nel caso dell'allocazione dinamica hai sicuramente ragione (e il mio
esempio non e' dei piu' felici), ma se parliamo di variabili interne
al programma non sono d'accordo. Altrimenti come faresti a dire al tuo
eseguibile dove si trova in memoria una certa variabile? Avresti bisogno
di definire un puntatore ad intero tutte le volte che definisci un
intero, valorizzandolo con l'indirizzo di quest'ultimo!
Chiaro che se stai compilando per un ambiente multitasking, la mappa
di memoria dell'eseguibile sara' in formato di displacement e poi sara'
il sistema operativo ad assegnare al task l'indirizzo assoluto di memoria,
ma non e' la situazione di cui intendevo parlare io.

> 128k tale memoria è allocata solo nei 32 Kb superiori, 
> esattamente come
> nel 48k (sempre che ricordi bene). E quindi non puoi, ad esempio,
> allocare da C
> 
> FILE *ptr = malloc( 50000 );
> 
> come non puoi sperare che funzioni da Basic
> 
> DIM a( 50000 )
Non ho mai usato compilatori di linguaggi per Spectrum che non fossero
Assembler, e in questo caso eri comunque tu a preoccuparti dell'intera
gestione della memoria. Tuttavia non ho dubbi che il compilatore C 
per lo Spectrum che volesse ammettere una simile sintassi dovrebbe
essere il responsabile della scrittura del codice che permettesse
una cosa di questo tipo.

Rileggendo mi accorgo di essermi spiegato malissimo, ma non so se riesco
a spiegarmi meglio di cosi'...     :^-

Cesare.

Other related posts: