ERRE PROJECT per C-64 e PC

ERRE PROJECT for C-64 and PC

 

Dopo tre anni di TI-59, nell'ottobre del 1982 arrivò il mio primo "personal computer" il grande VIC-20 con il proprio registratore Datassette, la VIC Expander di 3K (che portava la memoria dai 3.5K originali a 6K) e iniziarono così i primi esperimenti d programmazione con il Basic 2.0 Commodore. Assieme a Renato, mio collega di università (eravamo al terzo anno della facoltà di Ingegneria del Politecnico di Milano) pensammo di realizzare, sotto l'influenza dei vari corsi di Programmazione, Sistemi Operativi e così via, un ambiente di sviluppo, con il proprio linguaggio di programmazione più evoluto del Basic, da programmare proprio sul VIC-20. Nel contempo una rivista italiana del settore, MC Microcomputer, aveva pubblicato sul n. 22 del Settembre 1983 un articolo su un "linguaggio" strutturato per il VIC-20 (chiamato BASAL) che ci diede la spinta decisiva. Una trascrizione di questo articolo è scaricabile qui.

Nacque così ERRE PROJECT verso la fine del 1983: ovviamente i mezzi a disposizione erano veramente primitivi (non avevamo neanche un compilatore BASIC per il VIC-20) e i risultati modesti: ricordo, tra l'altro, che il manuale fu battuto al Centro di Calcolo del Politecnico di Milano su un PDP-11/34 (!).

Nel frattempo la Commodore aveva lanciato sul mercato il successore del VIC-20, il mitico C-64, cosicché venduto il VIC, arrivò nel febbraio 1984 il 64 nudo e crudo e nel giro di qualche mese seguirono tutte le periferiche (monitor composito, unità floppy 1541, stampante MPS 801) e un bel po' di software copiato qua e là (gli scambi "culturali" tra studenti erano molto intensi).

ERRE PROJECT decollò con le varie versioni: fu realizzato un interprete dei comandi (MCR), un vero e proprio traduttore del linguaggio ERRE con i propri programmi di utilità, interpreti di altri linguaggi (LISP e PILOT), assemblatori 6510, copiatori e così via.

Fu anche utilizzato come aiuto per sostenere varie prove di esame: ad esempio realizzammo la prova pratica dell'esame di Calcolo Numerico  programmando con ERRE la risoluzione numerica dell'equazione del calore applicata ad un muro a forma di elle e graficando con il plotter 1520 le isoterme così calcolate.

La cronologia delle varie versioni è riportata più avanti. Nel frattempo (siamo nel 1986) erano arrivati i primi compatibili IBM a prezzo "studentesco" e così, trovato un acquirente (sigh!) per il C-64, arrivò nel novembre 1986 il primo PC compatibile (XT turbo, dual floppy da 5"¼ con scheda Hercules monocromatica, monitor e stampante ad aghi Citizen MSP-10). Tutto il materiale ERRE, tranne un backup su nastro e qualche stampa, lo diedi al mio amico Alberto, anche lui cultore del C64.

Così per provare a mantenere un po' vivo lo spirito del progetto, dopo un paio d'anni portai l'ultima versione per C-64 (la 3.1) su PC (ricopiando a mano pazientemente tutti i listati e facendo ovviamente gli opportuni aggiustamenti) e nacque la versione 1.0.  Era l'Agosto del 1989: il linguaggio utilizzato era il Quick Basic 4.5.

A questa versione seguì nel 2002 la 2.0; nel frattempo avevo scovato un C-64 con il solo registratore e un po' di giochi su nastro ed è rinato il vecchio amore. A questo si deve aggiungere Internet con la "scoperta" che il C64 era tutt'altro che morto: emulatori per PC sempre più perfezionati, tutta la documentazione disponibile, nuovo hardware e un sacco di vecchio hardware messo in vendita.

Il cerchio si è così chiuso, recuperato un 1541 ho ricontattato Alberto che nel frattempo aveva conservato tutto il proprio materiale (ERRE compreso) e dopo 23 anni la versione 3.1 di ERRE è stata fatta girare nuovamente sul C64. Tramite un cavo XM1541 ho portato tutto sul PC e creato i vari file D64, ho travasato tutta la documentazione sotto Word (la documentazione era stata scritta a sua tempo con il grande Easy Script) e messo a disposizione il tutto per il download su questa pagina.

Ora il C64 è di nuovo attivo come si può vedere dalla foto e fa la sua figura accanto ai vari PC.

N.B.: I file D64 sono stati testati sotto Win-VICE 2.1, CCS-64 e C64S.

CRONOLOGIA DELLE VERSIONI DI ERRE SYSTEM

Versione Periodo Sistema Commenti
ERRE v 1.2 Primavera - Estate 1983 VIC20+3K Due moduli (EDITOR/COMPIL e TKB) e gira su nastro ed in BASIC. Vengono "tradotte" solo le strutture di controllo (REPEAT, WHILE, CASE, IF..THEN..ELSE). Presenti anche le varie ENDCASE, ENDWHILE e le loro abbreviazioni. Il ciclo FOR usa ancora NEXT. Utilizza il BASIC 2.0 Commodore come interprete R-Code.

Manuale e sorgenti recuperati (esiste anche il nastro).

ERRE v 2.1 Aprile 1984 C-64 Utilizza una sola unità a dischi. Il sistema operativo è ribattezzato 64VMS. Presenti già i moduli LOGIN, MCR, EDITOR, COMPIL e TKB (FORMAT è ancora all’interno di EDITOR). File di sistema SYSTEM.DAT, SYSTEM2.DAT, ERROR.DAT e COERROR.DAT, TKB (del 09/1984) è ancora a immissione in memoria tramite buffer di tastiera. Presenti come parole chiave di ERRE anche le varie CLS, HOME, AT ecc. per il controllo del cursore. Compilata con AUSTROSPEED. Utilizza il BASIC 2.0 Commodore come interprete R-Code. Sorgenti recuperati su carta.
ERRE v 2.2 Luglio 1984 C-64 Documento "Stoneman": è la prima formalizzazione di ERRE e presenta anche delle possibili aggiunte al linguaggio. Nel documento si fa riferimento ad una versione 2.2 della quale non resta traccia. Accanto ad alcune ingenuità "Stoneman" fornisce degli spunti che saranno realizzati solo nella versione 2.6 per PC (trent'anni dopo!).
ERRE v 2.3 Aprile 1985 C-64 Utilizza una forma di "install" che consente di scegliere la configurazione tra uno o due dischi. LOGIN carica anche il primo nucleo di routine in L.M. Stessi moduli e file di sistema precedenti con FORMAT accessibile anche da MCR. Distribuita la prima libreria "HGR.LIB" per l’alta risoluzione. Presente solo il manuale.

Ritrovata gran parte dei sorgenti su carta: è disponibile l'immagine del disco ERRE23.D64 che permette di far compilare le versioni 2.x usando l'ambiente di programmazione della versione 3.2

ERRE v 3.0 Febbraio 1986 C-64 Le routine LM sono ora in un file separato "ERRE.LM", il programma si autoconfigura per l’uso sui dischi. Stessi moduli e file di sistema della versione precedente. TKB ora è un vero "tokenizzatore". Le librerie sono tre: "CURSOR.LIB" (per la gestione del cursore - tolte le relative parole chiave per ERRE), "HGR.LIB" (alta risoluzione) e "WIN.LIB" (gestione a finestre). Aggiunti i programmi di utilità (XREF, EXTCOPY, VIEW, CRYPT). Le strutture di controllo di ERRE ora terminano con END + parola chiave e senza abbreviazioni). Presente il manuale, il floppy degli eseguibili (lato A) e i manuali scritti sotto EASY SCRIPT (lato B) nonché un backup dei sorgenti su nastro.
ERRE v 3.0 Marzo 1986 C64 Aggiunti gli interpreti per i linguaggi LISP e PILOT.
ERRE v 3.1 Agosto 1986 C-64 Formalizzato completamente il linguaggio ERRE (diagrammi sintattici). Introdotta EXCEPTION per la gestione degli errori runtime, tolta SWAP e la "←"(sostituita con "->"). Sostituita SYS con CALL e CLR con CLEAR. Tolto pigreco. Ultima versione (per il momento ....) su C64.
ERRE v 1.0 Agosto 1989

(la versione su floppy è dell’ Agosto 1992).

PC Porting della versione 3.1 su PC (per MS-DOS 3.20/3.30). MCR semplificata e come EDITOR si usa l’EDIT Olivetti. Nuovo modulo LOE (editor guidato da sintassi). Dal manuale per C64 trascritto il file di HELP. Gestione Colori (copiata dal WSCOLOR per Wordstar 3.3). Aggiunta in ERRE la funzione SEEK per l’utilizzo con i file relativi e la clausola FORWARD per la mutua ricorsione. Nuova libreria "XT.LIB" che unifica le tre precedenti per C64. Compilata sotto QB 4.5 (anche se conserva tutti i numeri di riga). Utilizza il GWBASIC 3.23 come interprete R-Code. Floppy presente.

N.B.: la versione 1.0 non funzionava sotto Windows 2000/XP (l’anomalia è stata corretta nel 2009).

ERRE v 2.0 Agosto 2002 PC Migliorata MCR e aggiornato il linguaggio ERRE con nuove caratteristiche (nuovo tipo LONG REAL, reintrodotta SWAP, nuove costanti (pigreco e MAXREAL), nuovi statement (USING, PAUSE, RANDOMIZE), passaggio funzioni nelle procedure, numeri ottali, nuova gestione dei file relativi (FIELD), interfaccia verso il sistema operativo (SHELL). Nuovo EDIT a tutto schermo e reintrodotto (con il nome di EDLIN) il vecchio editor utilizzato dalle versioni Commodore. La libreria "XT.LIB" diventa, genericamente, "PC.LIB". Compilato sotto QB 4.5 (tolti i numeri di riga con l’utility REMLINE). Floppy presente.

N.B.: la versione 2.0 non funzionava sotto Windows 2000/XP (l’anomalia è stata corretta nel 2009).

  Marzo 2009   Trascritti i manuale della versione 3.x per C64 e della versione 2.x per PC sotto Word.
ERRE v 2.1 Marzo 2009 PC Aggiunta l’istruzione FOR..DO e corretti tre errori della versione 2.0. Nuova compilazione sotto Basic PDS 7.1. Floppy presente.
  Aprile 2009 C-64 Portata la versione 2.1 per C64 su PC per l’utilizzo con l’emulatore VICE 2.1 (file ERREV21.D64): sono stati corretti 3 bug del compilatore.

Rimesso in funzione un C64 (con Datassette C2N, drive 1541 e monitor composito) e fatta girare la versione 3.1 (dopo 23 anni !!).

Trascritti i manuali della versione 2.3 per C64 su PC sotto Word.

ERRE v 2.5 Dicembre 2012 PC Aggiunta l’istruzione COMMON per la gestione dei moduli e la GOTO che implementa la “famigerata” istruzione (con l’annessa dichiarazione LABEL).  Corrette anche alcune anomalie del compilatore e del LOE. Estesa la libreria PC.LIB. Floppy presente.
ERRE v 1.3 Dicembre 2012 VIC20+16K

Miglioramento della versione 1.2 per VIC-20. Utilizzo del disco anziché del nastro, aggiunti quattro nuovi comandi per il modulo EDITOR [PF, PRINT, TASK e NEW] ed utilizzo della stampante. EDITOR è stato anche compilato con AustroSpeed per VIC-20 (che nel 1983 non mi era ancora disponibile); invece TASK deve restare in BASIC perché utilizza il metodo del buffer di tastiera per caricare il programma “tradotto” in memoria. Questa versione gira su VIC-20 espanso (almeno 16K) ed è stata fatta eseguire sull’emulatore VICE 2.1 (file ERREVIC.D64).

E' stato trascritto anche il manuale che, originariamente, era stato battuto su un PDP 11/34 (!!) al Politenico di Milano.

ERRE v 2.6 Maggio 2014 PC

Su PC. Sistemato il codice (estesi i limiti interni del compilatore e corrette alcune anomalie):

  • la parola chiave USING diventa WRITE

  • aggiunto DO ai cicli WHILE e FOR – come in Pascal.

  • aggiunta LOCAL per definire variabili locali nelle procedure.

  • introdotta EXIT PROCEDURE

  • introdotta la gestione dei record (TYPE) con WITH .

  • IF estesa con ELSIF

  • cicli LOOP..END LOOP

  • intervalli numerici nei case_label

  • uso di   ‘_’ per migliorare la leggibilità degli identificatori

  • array dinamici

  • controllo dell’uso di GOTO e RESTORE.

  • operatore IN

  • istruzione CONTINUE e operatori += -= *= /=

  • nuove direttive di compilazione - compresa la compilazione condizionale per le due versioni di ERRE.

Introdotto lo strumento R-Viewer per la visualizzazione a colori del programma .R. Libreria PC.LIB estesa con nuove procedure e nuova libreria MOUSE.LIB.

ERRE v 3.2 Maggio 2014 C-64

Su C64. Finalmente ripreso in mano il progetto anche per il C64 con nuove estensioni rispetto alla versione 3.1 del 1986.

1)  Completata la gestione della configurazione a 2 dischi che diventa la configurazione standard per ERRE System.

2)  MCR rivista con l’aggiunta del file ‘autoexec’ (simile a quello di MS-DOS) eseguito all’avvio del sistema, nuova visualizzazione per il comando ‘dir –f’, nuovi comandi e rifatte tutte le abbreviazioni. VIEW e XREF diventano comandi di MCR, programma applicativo SPREAD (foglio elettronico)

3) Correzione di tutti i moduli interessati.

4) Nuovo editor VEDIT (scritto in GWBASIC per PC e poi “tradotto” nel Basic 2.0 Commodore) e nuovo comando LISTER con scelta a menu per visualizzare file sequenziali. Aggiunto il pre-processore per il compilatore (come nella versione per PC).

5) Nel linguaggio ERRE fatte le seguenti aggiunte:

  • i numeri in ottale (&)

  • uso di DO con i cicli WHILE e FOR – come in Pascal

  • EXIT PROCEDURE

  • GOTO con l’annessa LABEL con controllo sui salti (locale)

  • uso di per migliorare la leggibilità degli identificatori (come ‘_’ sul PC)

  • IF estesa con ELSIF

  • cicli LOOP..END LOOP

  • RESTORE locale

  • ritorna SWAP e pi-greco (tolti dalla 3.1)

  • i case_label consentono l’uso di intervalli numerici (es 1..100)

  • assegnazione diretta array (come su PC)

  • array dinamici

  • istruzione CONTINUE e operatori +=  -=  *=  /=

  • estesi i limiti interni del compilatore.

6) Definite le direttive di compilazione ($FREE, $INCLUDE- a 2 livelli - $RCODE,  $VARSEG, $DIMCOMMON, $DIM, $NULL)

7) Aggiunti nuovi programmi di esempio (HGR 3D, file ad accesso casuale, Othello, Lowedi, demo finestre ed altri).

8) Preparate anche versioni per disco singolo 1541 e per il drive 1581. Presente tutto il set di floppy (5 dischi) nel formato .D64

ERRE v 3.2 & v 2.6 Agosto 2014 PC & C-64 E' disponibile la versione elettronica del mio libro "PROGRAMMARE IN ERRE": una lettura consigliata per chi vuole approfondire il linguaggio! "http://www.scribd.com/doc/237882130/PROGRAMMARE-IN-ERRE"
ERRE v 3.2 & v 2.6 Ottobre 2014 PC & C-64 E' disponibile la seconda edizione della versione elettronica del mio libro "PROGRAMMARE IN ERRE": una lettura consigliata per chi vuole approfondire il linguaggio!

Download diretto del libro (5° edizione).

Nuove estensioni per il linguaggio, sia per PC che per C-64, e nuovi tool per la versione 3.2 per C-64: inoltre è stato portato l'ambiente di sviluppo su un drive 1581 da 3"1/2.

Inserito ERRE sia in www.roesler-ac.de/wolfram/hello.htm che in http://rosettacode.org: i vari sorgenti caricati sono stati tradotti in inglese.

Nuova pagina con un breve, ma completo, tutorial per il linguaggio versione 2.6).

ERRE v 1.3 Novembre 2014 VIC20+16K

Aggiornata ancora la 1.3 del Dicembre 2012. Aggiunti altri 5 comandi ed esteso leggermente la versione di ERRE (adesso è più simile alla 2.X per C-64). E' stata anche completata la gestione del disco: il tutto è ancora sul file per Vice 2.1 ERREVIC.D64. E' stato completamente rifatto il manuale.

ERRE v 3.2 & v 2.6 Dicembre 2014 PC & C-64 Ulteriori correzioni e miglioramenti (PC: VARPTR, nuove direttive di compilazione e compilazione condizionale; C-64: FORWARD e VARPTR e nuove direttive di compilazione). Aggiornati anche i manuali.
ERRE v 3.2 & v 2.6 Febbraio 2015 PC & C-64 Ulteriori correzioni e miglioramenti (UBOUND/LBOUND, GETKEY$, nuove direttive di compilazione, in più CONST per la versione C-64). Aggiornati anche i manuali.

E' disponibile la terza edizione della versione elettronica del mio libro "PROGRAMMARE IN ERRE": una lettura consigliata per chi vuole approfondire il linguaggio!

ERRE v 3.0 Aprile 2015 PC Nuova versione di ERRE su PC: introdotto il concetto di classe per dare al linguaggio una estensione O.O.P. Altre migliorie riguardano nuove direttive di compilazione ($MATRIX, $ERROR, $LOCK/UNLOCK, la gestione degli array (LOCAL DIM per gestire quelli locali e REDIM per ridimensionare quelli dinamici) nonché la sistemazione di alcuni errori. Di conseguenza è stato aggiornato sia il mio libro "PROGRAMMARE IN ERRE" (quarta edizione) che ERRE Poster ed i relativi manuali.
Tutte le versioni Marzo 2016 PC & C-64 Corrette alcune anomalie dei vari compilatori, rivista anche la quarta edizione del libro "PROGRAMMARE IN ERRE".
Tutte le versioni Marzo/Aprile 2016 PC  C-64 & VIC-20

Corretti alcuni errori minori dell'ambiente di programmazione e aggiunti gli operatori relazionali in un "case_label". Funzioni INSTR e STRING$ (C-64) e miglioramenti nel modulo MCR (comando HEXDUMP - unificate le routine l.m. con il file MCR32X.LM che si affianca ad ERRE32X.LM). Miglioramenti anche nella versione 1.3 per VIC-20 con un set completo di funzioni in l.m. e copertura anche dell'alta risoluzione.

L’istruzione DIM si può usare anche dichiarare variabili semplici (tutte le versioni).

Versione aggiornata (la quinta) del mio libro "PROGRAMMARE IN ERRE" con più capitoli e miglioramento degli esempi di utilizzo.

Tutte le versioni Maggio 2016 PC  C-64 & VIC-20

Completata la gestione delle eccezioni con l’istruzione RESUME, che consente di redirigere verso una label l’esecuzione del programma dopo un errore.  Nel caso del VIC-20 è stata introdotta anche la EXCEPTION vista come procedure.

Nella versione per C-64 completata l’implementazione delle routine in L.M. (vedi documento separato "64VMS-LM.DOC" per i particolari).

Nella versione PC introdotto l’uso del mouse per il L.O.E. e per EDIT, nuova istruzione EVENT (con la IF EVENT) per la gestione degli “eventi” esterni.

In tutte le versioni introdotta la funzione FACT: aggiornati ovviamente i manuali.

 

DOWNLOAD

Versioni per C-64 in formato D64

Versioni per VIC-20 in formato D64

Versioni per PC

ERRE Poster

E' disponibile per il download un poster (circa 45x120 cm) in formato .JPG con i diagrammi sintattici del linguaggio ERRE !!

Note: Le versioni segnate con (*) e cioè la 1.2 per VIC-20, fino alla 3.1 per C-64 e fino alla 2.6 per PC sono riportate solo a scopo storico. Le versioni effettive sono la V1.3 per VIC-20, V3.2 per C-64 e la V3.0 per PC. La versione per PC gira nativamente da MS-DOS 5.0 fino al prompt dei comandi di Windows (versioni a 32bit). Versioni di Windows a 64 bit devono virtualizzare (io uso VM Player, ma anche Doxbox funziona).

Notes: ERRE versions marked with (*), namely 1.2 for VIC-20, up to 3.1 for C-64 and up to 2.6 for PC are available for historical purpose only. Actual versions are V1.3 for VIC-20, V3.2 for C-64 and V3.0 for PC. PC version runs natively from MS-DOS 5.0 up to Windows (32 bit version) command prompt. 64 bit Windows versions must use a virtualization software (I use VM Player, but also Dosbox is working well too).

 GALLERY

HOME