[zxspectrum] Aggiornamenti su z88dk

  • From: "Stefano Bodrato" <stefano_bodrato@xxxxxxxxxxx>
  • To: <zxspectrum@xxxxxxxxxxxxx>
  • Date: Tue, 29 Jul 2008 19:48:00 +0200

Tanto per aggiornarvi un po', vi racconto le ultime esperienze con il megacompilatore.

Per cominciare non è poi tanto "mega", ma ci da' le sue soddisfazioni..
Tutto è cominciato nel 1998 quando, scoperto z88dk, mi sono accorto di quanto fosse facile adattarne le librerie ad altre macchine (al tempo erano supportati solo Z88 e Spectrum): per gioco ho adattato l'I/O al VZ200, scelta a caso, e ho spedito il risultato a Dominic Morris. Dom è una persona di spirito, e in breve tempo è iniziato un "gioco" che ormai ha coinvolto un sacco di gente: la sfida è sempre la solita di sempre, stupirci l'un l'altro, stimolando nuove idee e proponendo esperimenti interessanti.

Il risultato è che uno strumento relativamente debole sta facendo faville ! Di recente nei forum è stato proposto dai "concorrenti" di SDCC un test comparativo in cui di nota chiaramente come il motore di quest'ultimo sia probabilmente superiore.. soltanto in uno dei programmi di prova z88dk risulta decisamente più compatto e veloce: le applicazioni matematiche ! Incuriositi da questo fatto abbiamo indagato, scoprendo che la nostra forza sta nelle librerie, che spesso riscriviamo in codice macchina. Questo ha indotto Alvin a riprendere in mano tutta la stdio e sono ormai certo che ne vedremo delle belle.

Tra le novità più vistose del momento c'è il c128 (quella povera bestia dello Z80 deve fare i salti mortali, per arrivare alla memoria video):
http://www.z88dk.org/wiki/doku.php/platform:c128

Quella che invece mi intenerisce di più è il completamento delle routine per interfacciarsi al BASIC con Spectrum e ZX81.
Pensate, i comando:

zx_setint("variabile",1234);

imposta la variabile dello ZX81 chiamata "VARIABILE" con l'intero 1234, traducendo automaticamente il nome scritto in ASCII nella codifica dello ZX81.

Nello stesso modo si possono leggere valori e leggere e scrivere stringhe (volendo traducendo dall'ASCII il contenuto).

Poi, con il comando zx_line(<numerolinea>) si può eseguire una singola linea di BASIC come se fosse una subroutine; quindi in supporto al C e al linguaggio macchina uno si può costruire una libreria fatta più o meno così

100 PLOT X,Y
110 UNPLOT X,Y
120 SAVE A$

I codici di errore BASIC sono restituiti al programma chiamante.



Other related posts: