[zxspectrum] Re: TAP di esempio per Mouse Kempston
- From: Luca Alimandi <luca.alimandi62@xxxxxxxxxxx>
- To: zxspectrum@xxxxxxxxxxxxx
- Date: Fri, 19 Feb 2016 00:57:52 +0100
Il 18/02/2016 20:22, Enrico Maria Giordano ha scritto:
Il 18/02/2016 19:57, Luca Alimandi ha scritto:
Di quei 9158 bytes, 6912 sono dedicati allo swap della schermata prima
di "tirare giù" le tendine dei menu, per poi ripristinare tutto com'era
prima una volta chiusi i menu stessi.
Ti consiglio di salvare solo la parte presente sotto i menu stessi e
non l'intera schermata. Tra l'altro questo rallenta lo scorrimento.
Inizialmente avevo fatto così, ma mi risultava pi laborioso e lento (una
cosa è fare un solo LDIR di 6915 bytes una volta per tutte all'inizio e
restorare sempre quella parte, un'altra cosa è dover fare tanti piccoli
LDIR di 10 - 15 bytes ogni volta che scende una tendina... E poi è un
po' lungo far capire perché, in quanto la gestione che faccio dei menu,
per essere generalizzata, è un po' complessa... E poi avrei dovuto
gestire uno stack per le situazioni di menu annidati. Ma magari ci
riproverò ed eventualmente potremo fare un confronto tra le due soluzioni...
Dunque, in pratica, al momento i veri bytes di programma sono *meno di
2K*...
Solo per i menu? Mi sembra troppo lo stesso.
Come dicevo, ci sono anche altre routine, come la stampa a 64 caratteri
per riga, che gestisce anche i colori, l'inverse e il sottolineato (così
è già pronta per un eventuale utilizzo come word processing), ecc. Però
c'è sempre spazio per studiare soluzioni alternative, anche se ti
assicuro che ho già lavorato molto in modo da rendere più corto
possibile il codice, riutilizzando e condividendo pezzi del programma,
utilizzando, dove possibile, dei loop, ecc. Comunque tutto si può sempre
migliorare (almeno in generale...)
Sto però pensando di procedere con lo sviluppo passando al 128K, in modo
da sfruttare, ad esempio, la pagina RAM 5 (se non erro è già pensata
come area video alternativa), in modo da sfruttare meglio lo spazio RAM
rimanente... Ed avrei anche intenzione di inserire la gestione del RAM
Disk da GUI...
Mi sembra una buona idea ma non dev'essere una scusa per non cercare
di ottimizzare il codice. :-)
EMG
Ehi, stai parlando ad un "maniaco" dell'ottimizzazione del codice! :-D
L'idea di usare la RAM Page 5 mi è venuta proprio perché è una tecnica
che ho visto usata da molti giochi per velocizzare e fluidificare
l'esecuzione dei programmi. Non per niente nel progetto del 128K avevano
pensato di agganciarla alla zona bassa della memoria (da 16384 a 32767).
Semmai (ma è un'eventualità alquanto remota) sembra che creando un
grandissimo numero di piccoli file nel RAM Disk, lo stack che ne
conserva la tabella dei nomi e le informazioni di start e lunghezza di
ciascun file, scendendo verso il basso potrebbe cominciare ad invadere
la schermata (io non l'ho mai sperimentato, ma è quello che si legge
nella documentazione che si trova in Internet riguardo l'organizzazione
del RAM Disk). In pratica non è stato realizzato un controllo per
limitare il numero dei file in modo che lo stack non sconfini al di
sotto della locazione 23296, entrando praticamente nell'area finale
degli attributi dello schermo (ovviamente della pagina 5, ma comunque
sporcandola! :-( ).
Ma questo è un problema secondario. Come dicevo, proverò a riesumare il
codice originario, in cui gestivo la sovrapposizione come suggerivi tu
(solo per le parti occupate realmente dai menu), ma già so che mi
complicherò la vita... Dovrò valutare se ne vale veramente la pena... E
non è un fatto di pigrizia! ;-) Anzi, credo che uno sfruttamento
intelligente delle potenzialità dell'hardware sia comunque una forma di
ottimizzazione del software, almeno in certi casi... :-)
--
|_ /-\
Other related posts: