Post

Visualizzazione dei post da giugno, 2022

Interprete Basic

Dopo molte prove e tentativi di ottimizzare l'interprete a velocità decenti ho deciso di sospendere il progetto. Utilizzo ora molte delle funzioni scritte e in pratica tutto il tokenizer per un compilatore Z80 / Amstrad CPC  Ecco cosa vuol dire riciclare i byte usati :-)

SECONDS e riflessioni

Immagine
Nuovo giorno e una nuova funzione aggiunta. Mi sono reso conto che lo schermo virtuale è comodo perché mi permetterà più avanti di cambiare quattro funzioni e adattarlo a qualsiasi output ma al costo della lentezza. Infatti la funzione odierna è SECONDS() che restituisce i secondi passati dal 1 gennaio 1970 è stata scritta proprio con lo scopo di cronometrare il tempo impiegato. Ho avuto la triste conferma con questo codice: se visualizzo il conto alla rovescia da 100 a 1 impiega ben 12 secondi ma se metto il REM davanti a LOCATE e PRINT allora il tempo è 0 secondi ;-O Per il momento proseguo così e poi si vedrà :-)

For Next e altro

Immagine
Eccoci qui e un'altro poco di codice è stato scritto Winking  Aggiunto i cicli For-Next nidificati con tanto di TO e DOWNTO oltre allo STEP. Inoltre ho creato uno schermo virtuale per l'output di 80x50 caratteri con gestione del colore tramite comando INK la paletta di 27 colori è stata ispirata dal Amstrad CPC Happy ovviamente Dimenticavo i comandi CENTER e LOCATE per posizionare il testo. Ho parecchie idee in stile CLIPPER ma per il momento procediamo un passo alla volta.

Cicli While

Immagine
Anche oggi un mattone in più nel mio interprete, prima o poi gli darò anche un nome hahaha Ora i cicli WHILE/ENDWHILE possono essere nidificati, sono arrivato a 24, dopodiche mi sono rotto e poi avevo terminato le lettere del alfabeto per le variabili ;-) Mentre stavo scrivendo il codice ho deciso di aggiungere tre nuovi comandi AUTOINC, AUTODEC e AUTOVAL che servono a incrementare o decrementare con un valore imposto la variabile del ciclo WHILE in maniera automatica.  Così il codice risultante sarà più pulito, forse. Inoltre ho aggiunto la possibilità di formattare automaticamente le variabili numeriche e i numeri.  Ecco un esempio…

Eliminare gli spazi

Sto ampliando e migliorando il mio interprete Basic e oggi mi sono accorto di un problema legato ad una funzione che uso da tanti anni, e mi sono reso conto di essere un pollastro ;-) La funzione in questione è Trim, siccome in LiveCode non c'era e avevo bisogno di qualcosa minimalista la scrissi così: function Trim pText return word 1 to -1 of pText end Trim Siccome lo spazio non viene considerato tipo WORD, scrivendo in questa maniera restituisco tutte le WORD dalla prima all'ultima e se ci sono degli spazi all'inizio o alla fine li salta, geniale. Ma c'è sempre un ma, in Basic per distinguere i tipi di variabili si usa mettere il simbolo $ alla fine del nome della variabile, cosi anche nel mio interprete Basic, se la riga è:  VAR Pollo$ = "Paolo" PRINT "Ciao ", Pollo$ , " bentornato!" Nella prima riga tutto bene perché Pollo$ è considerato tipo TOKEN ma se eseguo la funzione Trim nel PRINT, visto che ci sono tre segmenti separati dalla v...

Hypertalk

08/06/2022 16:02 Filed in: Programmazione | Livecode | HyperTalk Nel mio precedente post ho parlato di HyperTalk, quella sera riflettevo che in oltre quarant'anni di programmazione ho studiato, imparato e approfondito diversi linguaggi di programmazione.Dal Basic al Clipper, passando dal Turbo Pascal al C per scribacchiare in Python ma quello a cui sono più legato, se così si può dire, è HyperTalk . Ovviamente anche la sua ultima incarnazione, Livecode. In tempi passati ;-) in base al progetto da portare avanti si sceglieva il linguaggio più adatto come lo era anche per i computer e i sistemi nelle due ultime decadi del Ventesimo secolo. Nel 1989 circa mi fu richiesta un applicazione che doveva girare su un Mac SE con HyperCard. HyperCard è un applicazione ipertestuale che include un linguaggio di programmazione; HyperTalk. Fu amore a prima vista :-) Dopo qualche anno accantonai il Turbo Pascal e il Clipper per usare sempre più spesso HyperTalk. Un linguaggio chiaro, semplice e leg...

Il mio primo interprete

Immagine
Quasi tutti i programmatori della mia generazione, prima o poi si sono cimentati nello sviluppo di un interprete o in un compilatore. Oggi è stata la mia volta Happy In realtà qualche anno addietro avevo scritto un linguaggio script incluso in una applicazione che avevo sviluppato per un cliente ma questa volta è ispirato al buon vecchio linguaggio Basic. Linguaggio che tutti noi, quando abbiamo mosso i primi passi nell'uso dei nostri amati Home Computers ci siamo impegnati ad imparare, usare e abusarne ;-) Sono alla versione 0.0.1, ho iniziato a scriverlo due ore fa. E' molto rigido e al momento mancano IF e cicli FOR ma funziona. Ho usato il buon vecchio LiveCode, linguaggio che amo, evoluzione del HyperTalk e in meno di 200 linee di codice funziona :-) Ecco una foto dello schermo dove per provarlo ho scritto il classico generatore dei numeri di Fibonacci.