Post

AgonLight vs CPC 6128plus

Immagine
Questa sera ho testato la velocità di un ciclo FOR nidificato sul Amstrad CPC 6128plus e il nuovo AgonLight 2, speravo che il 6128plus fosse più veloce 😞 invece siamo 28,23 secondi contro 1,78 🙀🙀🙀 Che disperazione 🤪, certo AgonLight avendo un processore eZ80 a 18MHz contro un Z80A a 4 MHz del CPC 6128Plus non c’è storia. Ma è come quando scommetti vincente il tuo cavallo preferito anche se sai, nonostante sia stato il migliore ai suoi tempi che non potrà farcela ma speri in un miracolo solo per il fatto che tu ci credi. Nella speranza che il tuo credere sia un iniezione di protossido di azoto alla Fast&Furious 🤣🤣🤣

AgonLight2

Immagine
AgonLight2 è arrivato oggi, nella sua bella scatolina . Prima del previsto, perché sul sito era segnato per il 31 gennaio. Questa è la versione della Olimex di AgonLight di Bernardo Kastrup . Il tempo di collegarlo al monitor, tastiera e corrente e digitare in BBC Basic l'immancabile " Ciao Mondo!"

Compilatore Z80 VI

Immagine
Un'altra manciata di giorni e ho aggiunto gli Array, per il momento mono-dimesione.  Sia stringhe che numerici e i comandi per usarli sono ANEW, APUT e AGET.  Al momento ogni elemento di un array di numeri occupa due byte perché uso word ma un array di stringhe occupa 256 byte estremamente esoso per un Amstrad CPC.  Sto pensando, in fase di creazione con ANEW, di poter dichiarare lo spazio massimo in byte  per elemento in maniera da ridurre il consumo di memoria. Anche perché in questo esempio mi partono 2 interi KByte. Come anche nel caso di PROC/FUNC il valore viene restituito tramite le variabili  globali _Value e _Value$ come succede per "it" in Livecode.

Compilatore Z80 V

Immagine
 Un'altra manciata di giorni e il compilatore cresce un'altro pochino. Ora c'è la struttura di controllo IF/ELSE/ENDIF su più righe (alla faccia del Locomotive Basic) e in più è possibile nidificarli. La parte più complicata, se posso dire così, è stato scrivere il codice Z80 per ogni tipo di confronto usando i salti jr ed ottimizzare il più possibile con le label. Inoltre nel esempio uso il nuovo comando FUNC/ENDFUNC e il ciclo FOR/NEXT Tanto per controllare che continua a funzionare tutto hahahahaha

Compilatore Z80 IV

 Credevo di scrivere molto più codice in Livecode per implementare due nuovi fondamentali comandi PROC/ENDPROC FUNC/ENDFUNC Invece con una buona analisi, con un pugno di righe, ecco qui due istruzioni fondamentali: case "PROC" case "FUNC" if gaProc[v_Token2]["Nome"] = v_Token2 then xAbort "[ERROR] PROC/FUNC already declared" else put v_Token2 into gaProc[v_Token2]["Nome"] //Aggiungo il nome della procedura all'elenco put 0 into gaProc[v_Token2]["NParametri"] put true into gProcedura //Indica al output che si sta generando una procedura xOutPut v_Token2&":" //Nome_procedura: repeat for each item tVar in v_RestoTesto2 add 1 to gaProc[v_Token2]["NParametri"] //Incremento il numero di parametri put (tVar) & comma after gaProc[v_Token2]["Parametri"] //Aggiungo xSeNonEsisteCrea tVar,,True //Crea una variabile per ogni parametro esistente end repeat end if break case "ENDFUNC" case

Compilatore Z80 III

 Da qualche giorno, nelle mie ore libere da impegni, ho ripreso il progetto del compilatore Z80.  Il nome provvisorio è NOBasicCompiler e l'unico target, per il momento, è l'Amstrad CPC. Mancava però una procedura per salvare e ripristinare lo schermo.  Alle volte la semplicità è la strada migliore in 10 righe ecco qui le due funzioni: _RestoreScreen: di" ld hl,&4000" ld de,&c000" jr EsciSRScreen" _SaveScreen: di" ld hl, &c000" ld de, &4000" EsciSRScreen: ld bc,#4000" ldir" ret" Certo manca ancora una gestione dell'area superiore ai 64KB nel caso dei modelli  6128, 6128Plus e con la presenza di espansione di memoria. Ma arriverà con il tempo. E sopratutto mi "mangia" 16KB di memoria per salvare lo schermo, il che riduce lo spazio dedicato al programma.

AmigaGuideViewer - II

La scrittura del programma è ultimata ma mi sono accorto che visto la quantità di guide scritte negli anni e utilizzando sia un semplice editor di testi che programmi apposta non tutte le guide sono uguali. Alcune i NODE sono ta apici alcuni senza, alcuni separati solo da TAB. Inoltre alcuni fanno un uso molto pesante del comando SYSTEM chiamando programmi esterni, comandi di AmigaOS o immagini. Da qui la decisione di ignorarli e visualizzarli in rosso , se si clicca sopra appare il Token o comando.