Post

Visualizzazione dei post con l'etichetta Z80

IA: guai a chiamarla software

BLOG di Paolo Borzini Ovviamente il titolo è una provocazione. O forse no. Oggi pomeriggio sono stato all’inaugurazione di un negozio di cui conosco i titolari e tre quarti delle persone presenti. Ho augurato loro buona fortuna per questa nuova apertura. Un augurio che viene dal cuore. Non soltanto perché si desidera il meglio per chi apre un negozio, soprattutto in un periodo di acquisti online, ma anche perché, da ex piccolissimo imprenditore, vedo tutto questo come un’ulteriore tappa, un’altra casa verde costruita sul vero tabellone del Monopoli che è la vita imprenditoriale. Poi, da bravo nerd, mi sono posizionato accanto al punto ristoro e al distributore di birra. Perché è un ottimo punto strategico. Ho cominciato a parlare con una persona che conosco da quasi trent’anni. Abbiamo amici in comune e ogni volta ci scambiamo i soliti convenevoli: «Stai bene?». «Sì, tutto bene. E tu?». Poi, non si sa come, siamo finiti a parlare di IA. Il mio interlocutore non è una persona qualsiasi,...

Ritorniamo alle origini del Blog ;-)

BLOG di Paolo Borzini   Ritorniamo alle origini del Blog ;-) Nel mondo del retrocomputer, tra le macchine blasonate, famose, stravendute o sconosciute, c’è una cosa che le accomuna ed è la CPU. Il processore, il cuore o meglio il cervello del computer, della macchina. Tra le CPU di questo gruppo eterogeneo spicca lo Z80, progettato da Federico Faggin dopo la sua fondamentale esperienza in Intel, dove aveva contribuito a dare i natali al primo microprocessore commerciale, l’Intel 4004, e al leggendario 8080. Lo Z80 non fu una semplice evoluzione; fu una rivoluzione in silicio. Faggin, con la sua nuova azienda, la Zilog, partì dal progetto dell’8080 per creare un processore non solo più potente, ma anche infinitamente più elegante e pratico da usare per i progettisti. Mentre il suo “cugino” Intel 8080 richiedeva tre tensioni di alimentazione diverse e un intricato circuito di supporto per funzionare, lo Z80 si accontentava di un unico, semplice +5V. Questo lo rese, fin dal suo esordi...

36 anni e non sentirli: il mio CPC al BissaBook

Questo blog era nato anni fa per parlare di computer. Anzi, di retrocomputer e di programmazione. Nel tempo si è evoluto: dopo aver scritto per anni di macchine che – chi più, chi meno – hanno segnato l’epoca informatica tra la fine degli anni ’70 e l’inizio dei ’90, e dopo aver raccontato lo stato dei miei progetti informatici (soprattutto compilatori e interpreti), ho iniziato a condividere anche pensieri, riflessioni e letture accumulate nel corso del tempo. Oggi però voglio fare un passo indietro. Anche perché, durante l’incontro “Incontra l’autore” all’interno del BissaBook, oltre alle domande sul libro, molte persone mi hanno chiesto informazioni sullo splendido Amstrad CPC 6128 Plus che avevo portato con me. E che – piccola nota d’orgoglio – ha funzionato per tutte le tre ore (e oltre) in cui sono rimasto al tavolo. Un computer con 36 anni di vita, mica uno di quei gingilli moderni che si piantano appena aggiorni il sistema operativo. E con lo stesso editor di testi che usavo al...

Amstrad CPC 472

Quando la politica insiste nel legiferare nel mondo dell'informatica senza nemmeno conoscerlo, produce delle porcherie mostruose. Lo vediamo ogni giorno nei disastri combinati dai legislatori nel campo informatico, e siamo nel 2023: figuriamoci nel 1985! Uno di questi disastri è legato alla storia dell’Amstrad CPC 472. Come molti imprenditori, Sir Alan Sugar aveva l’ambizione di vendere i suoi favolosi computer in tutta Europa, e la Spagna era uno degli obiettivi principali. L’Amstrad CPC 472 è un computer prodotto da Amstrad per il mercato spagnolo negli anni '80. Questo modello è una variante specifica dell’Amstrad CPC 464, con alcune modifiche significative per adattarsi alle normative spagnole dell’epoca. Amstrad numerava i modelli con il primo numero a indicare la serie e le cifre restanti la quantità di memoria; quindi, intuiamo che il CPC 472 ha 72 KB di RAM. Questa strana quantità è dovuta al fatto che, nel settembre del 1985, il governo spagnolo introdusse una tassa su...

1986 Amstrad acquista Sinclair

Negli anni '80, Sinclair aveva raggiunto un notevole successo con i suoi computer ZX80, ZX81 e ZX Spectrum, che erano diventati computer a 8 bit tra più venduti nel Regno Unito e in europa. Tuttavia, nonostante il successo iniziale, Sinclair aveva incontrato problemi finanziari. La sua ambizione di creare computer sempre più piccoli e convenienti lo aveva portato a produrre il computer Sinclair QL, un modello che purtroppo non aveva riscosso il successo sperato.  L'acquisto della Sinclair Computer Ltd. da parte di Sir Alan Sugar fu un momento significativo nella storia dell'industria informatica britannica. La Sinclair Computer Ltd., fondata da Sir Clive Sinclair, era conosciuta per aver prodotto il popolare computer Sinclair ZX Spectrum negli anni '80. L'acquisizione da parte di Alan Sugar avvenne nel 1986 e segnò una svolta nella dinamica dell'industria dei computer personali nel Regno Unito. Alan Sugar all'apice del successo con la serie di computer Amstr...

Alan Sugar

 Alan Michael Sugar TRADing è l'acronimo che sta dietro a tutta quella serie favolosa di computer, impianti stereo e tutta una pletora infinita di elettrodomestici e non solo. Alan Sugar è una delle tantissime figure chiave nella storia dell'informatica e dell'industria dei computer domestici. Nato il 24 marzo 1947 a Londra, è diventato noto come imprenditore di successo, produttore televisivo e politico britannico. La sua visione e il suo contributo nell'ambito dei computer per ufficio con gli Amstrad PCW sono stati influenti e hanno lasciato un'impronta indelebile. Alan Sugar ha iniziato la sua carriera imprenditoriale negli anni '60 come venditore di elettronica e componenti audio. La sua società, Amstrad è stata fondata nel 1968. Inizialmente, l'azienda si occupava principalmente di componenti audio, ma presto ha iniziato a interessarsi ai computer. Negli anni '80, con il rapido sviluppo dei computer personali, Sugar ha intravisto un'opportunità ...

Amstrad PCW

 Sir Alan Sugar nella sua interpretazione del sogno degli hacker degli anni 60/70 di un computer in ogni casa, creò la serie Amstrad PCW; un successo di computer per l'ufficio. Negli anni '80 e '90, il mercato dei computer stava vivendo una rapida crescita e molti produttori stavano cercando di capitalizzare questa opportunità. In questo contesto Alan Sugar ha lanciato una serie di computer noti come Amstrad PCW (Personal Computer Wordprocessor), che si sono affermati come strumenti popolari per il lavoro d'ufficio. Questi computer, prodotti dal 1985 al 1998, hanno contribuito a definire il modo in cui molte persone svolgevano le attività di elaborazione testi e lavoravano con documenti. La serie Amstrad PCW comprendeva vari modelli nel corso degli anni, ma i tre principali erano il PCW 8256, il PCW 8512 e il PCW 9512.  - Amstrad PCW 8256 (1985): Questo è stato il modello introduttivo nella serie PCW, dotato di un processore Z80A a 4 MHz, 256 KB di RAM e un monitor mono...

Amstrad Computer

 Parlo sempre dei miei computer Amstrad,  nel periodo che va dalla metà degli anni '80 agli anni '90, Amstrad ha consolidato la sua posizione nel mercato dei computer domestici mediante la produzione di una serie di dispositivi con processore Z80 noti come Amstrad CPC. Questi sistemi, che includevano il CPC 464, il CPC 664, il CPC 6128 e, successivamente, i modelli CPC Plus, avevano una base tecnologica comune ma presentavano alcune differenze significative. - Amstrad CPC 464 (1984): Questo modello presentava un processore Z80A a 4 MHz, 64 KB di RAM e un lettore di cassette integrato. La tastiera era incorporata nella parte superiore del case. - Amstrad CPC 664 (1985): Simile al CPC 464, il modello 664 aveva le stesse specifiche tecniche ma includeva un drive per floppy disk integrato da 3 pollici. Inoltre, la tastiera era stata migliorata per un'esperienza utente più confortevole. - Amstrad CPC 6128 (1985): Il CPC 6128 era il modello di punta della serie originale. Condivi...

Nuovo Compilatore Z80...

 Sono passati mesi dall'ultima volta che ho inserito qualche notizia o novità. Per pigrizia o forse perchè non mi è mai piaciuto tenere un diario :-O Comunque sia ad un certo punto guardando il sorgente in LiveCode del compilatore Z80 questo era diventato un coacervo di codice ridondante con funzioni duplicate e in alcuni casi dissonanti tra loro. A quel punto la decisione di ripartire da zero per la terza volta ma ora con le idee più chiare (forse) e una lista di funzioni base per riconoscere i vari dati, d'altronde non ha senso inventare ogni volta la ruota.  Ad aprile è nato il SAM ovvero Strange And Messy Compiler hahahaha. Il codice assembler generato non è proprio ottimizzato e spesso è arzigogolato ma funziona alla grande, per lo meno sul mio 6128 plus. Questi i comandi e funzioni implementate finora: ASM,BORDER,CALL,CLS,COLORFG,COLORBG,COLORINV,CURSOR,DIM,ELSE,END,ENDIF,FOR,GET,GOTO, IF,IFG,IFP,INPUT,INK,NEXT,LABEL,LOCATE,MODE,PEEK,POKE,PRINT, RANDOMIZE,READGET,REM,RND...

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 🤣🤣🤣

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.

Compilatore Z80 - II

Oggi ho terminato di implementare alcuni comandi base del Basic nel NOBasic Compiler.  Funziona tutto, non credevo ;-) Ora passo al progetto successivo e in futuro ottimizzerò il codice Z80 :-)

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…