Post

Visualizzazione dei post da dicembre, 2022

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.