Il Basic 8 della Walrusoft

Il progetto nasce con l’obiettivo di evolvere la versione originale del Basic (la 7) normalmente residente sul C128. Il Basic 8 della Walrusoft è proprio il prodotto giusto per far andare meglio la grafica del nostro amato sistema!

Il Basic 8 nasce nel 1986 ad opera della walrusoft, ( http://en.wikipedia.org/wiki/Walrusoft ) una società fondata da Louis R. Wallace e David P. Darus. Il Basic 8 copriva l’esigenza di estendere il set dei comandi con nuovi comandi grafici. Una interessante recensione del Basic 8 compare su Commodore Gazette e che mi sembra opportuno riportare quì di seguito:

Uno degli aspetti più interessanti del nostro mestiere è costituito dalla possibilità di visionare buona parte dei nuovi prodotti prima ancora che vengano lanciati sul mercato. Nonostante ciò penso che tale privilegio non sia neppure comparabile con le emozioni e le soddisfazioni che l’essere coinvolti nella progettazione e realizzazione di un pacchetto software riesce a dare. Nel corso dell’anno passato ho infatti avuto l’opportunità di realizzare tali aspirazioni, prendendo parte allo sviluppo del BASIC 8.0 dedicato al C-128.

Insieme al mio amico e collega David P. Darus, sono stato coinvolto in una serie di progetti orientati alla produzione di software per diversi tipi di macchine. Il programma per C-128 che, fino ad oggi, ha ottenuto il miglior successo, è stato Ultra Hires, un linguaggio orientato all’estensione delle capacità grafiche che sfrutta in modo efficiente le potenzialità del modo monocromatico a 80 colonne del C-128. Tale programma è diventato subito molto popolare: da quando è stato pubblicato un anno e mezzo fa, lettere di complimenti sono piovute a centinaia da ogni parte del mondo.

In conseguenza del successo di pubblico e, in parte, anche a causa della nostra curiosità, abbiamo deciso di studiare la possibilità di ottenere ulteriori risultati dal modo grafico RGB ad 80 colonne. Dopo qualche mese di studio ci siamo resi conto del fatto che Ultra Hires non sfruttava, se non marginalmente, tutte le capacità grafiche del Video Display Chip 8563 che gestisce il modo ad 80 colonne del 128. Ci è parso logico, di conseguenza, continuare le ricerche in questa direzione e, dopo quasi due anni di lavoro (e più di 15000 linee di codice assembly), è nato il BASIC 8.0.

Dal momento che, fin dall’inizio, ho fatto parte dello staff impegnato nella creazione del programma, non sono certamente in grado di offrirne una visione imparziale ed obbiettiva. Questo articolo non va quindi inteso come una recensione nel senso stretto del termine. Mi limiterò, infatti, alla descrizione del linguaggio e dei programmi accessori, prendendo le distanze, per quanto mi è possibile, da giudizi e valutazioni. Ad ogni modo, chiunque possa essere interessato ai particolari riguardanti questa potente estensione grafica, dopo la lettura di questo brano, sarà in grado di trattare le proprie valutazioni.

BASIC 8.0 è stato progettato e realizzato da David P. Darus e chi scrive. Si tratta, probabilmente, del primo pacchetto software dedicato al C-128 che ne sfrutti completamente tutte le potenzialità. E’ stato primariamente concepito per permettere a chi programma in Basic di accedere alla grafica a colori del modo 80 colonne del C-128 ed offre possibilità che vanno ben al di là della semplice gestione della grafica.

Il programma si serve dello schermo ad 80 colonne bitmap (capace di una risoluzione di 640 x 200 punti), ma non si limita ad un display monocromatico, permette invece l’utilizzo contemporaneo di sedici colori. Infatti sono disponibili cinque diversi tipi di schermo, ognuno dei quali può assumere qualsiasi dimensione si desideri. Uno degli schermi è monocromatico, mentre gli altri sono tutti a 16 colori. Gli schermi a colori differiscono fra loro nella dimensione delle celle di colore. La cella di colore è un’area rettangolare che può contenere due colori, uno per lo sfondo ed uno in primo piano. Sul C-64 e sul C-128 lo schermo ad alta risoluzione si serve di celle di colore di dimensioni di 8×8 pixel. Con BASIC 8.0 è possibile utilizzare celle colore di 8×16, 8×8, 8×4 e 8×2. In questo modo i programmatori possono scegliere il tipo di schermo che più corrisponde alle proprie esigenze specifiche. Naturalmente, più piccole sono le dimensioni della cella, migliore risulta essere la risoluzione del colore, ma nello stesso tempo maggiore risulta essere lo spazio di memoria da destinare alla grafica.
Dal momento che la prima versione del C-128 è dotata di soli 16K di RAM dedicata alle 80 colonne, si pongono dei limiti alla gestione di grafica a colori. Per utilizzare gli schermi a colori, infatti, è necessario ridurne le dimensioni per avere a disposizione una quantità di RAM sufficiente a gestire i colori. Le versioni più recenti del computer, invece, hanno a disposizione 64K di RAM VDC (oppure hanno rimpiazzato le due RAM VDC 4164 da 8K con due RAM 4464 da 32K); ciò permette di visualizzare schermi a colori a dimensioni piene o addirittura schermate superiori a 640 x 200.

Nella Tavola 1 sono elencati più di 50 comandi contenuti nel BASIC 8.0. Dal momento che molti di essi servono ad eseguire operazioni anche diverse fra loro il numero reale di nuovi comandi si estende anche al di là di quello indicato nell’elenco. Tenterò ora di descrivere il funzionamento di alcuni di essi, non essendo possibile esaminarli tutti (il manuale di BASIC 8.0 contiene quasi 200 pagine).

TAVOLA 1 – Sommario dei comandi del BASIC 8.0

ANGLE
ARC
BOX
BRUSHPATRN
BUFFER
CBRUSH
CHAR
CIRCLE
CLEAR
COLOR
COPY
CYLNDR
DIR$
DISPLAY
DOT
DRWMODA
DRWMODB
FETCH
FLASH
FONT
GROW
HCOPY
LINE
LOGO
LSTRUCT
WINDOW OPEN
WINDOW CLOSE

Il BASIC 8.0 è dotato di un comando chiamato SCRDEF (SCReen DEFinition) che permette la realizzazione di schermate grafiche larghe fino a 2040 pixel ed alte 819. E’ possibile specificare il modo colore da usare, un numero di schermo a 0 a 7 (che viene utilizzato dagli altri comandi per sapere su quale schermo operare), il modo interlace e l’indirizzo della RAM VDC da utilizzare per lo schermo. Se, invece, non si vuole perdere tempo nel definire un proprio schermo, il comando MODE rende operativi 32 diversi schermi predefiniti. E’ infatti sufficiente specificare di quale dei 4 modi ci si intende servire (ogni modo ha a disposizione otto definizione dello schermo). Il modo 0 è disegnato per essere utilizzato con la RAM VDC da 16K, mentre i modi da 1 a 3 sfruttano le superiori potenzialità dei nuovi C-128 con VDC da 64K.

Dal momento che si parla di un linguaggio grafico, i comandi dedicati al disegno sono ovviamente molti. Ci sono però molte possibilità non usuali che fanno del set di comandi del BASIC 8.0 uno dei più completi e potenti mai realizzati. Caratteristica di spicco è che tutti i comandi per il disegno (LINE, CIRCLE, ARC, BOX e DOT) funzionano in 3D. A differenza dei programmi di grafica standard, che si servono solo degli assi X e Y, BASIC 8.0 usa anche un terzo asse Z e non richiede noiose formule matematiche per visualizzare o ruotare immagini grafiche in tre dimensioni. Come corollario ai comandi di disegno si trova tutta una serie di istruzioni designate alla realizzazione delle rotazioni delle immagini, al cambiamento della loro origine e del punto di vista.

Un’altra potente capacità grafica è assicurata dalla possibilità di specificare un valore di altezza. Tale valore permette ai box di trasformarsi in barre tridimensionali, agli archi di trasformarsi in grafici a torta ed ai pennelli di assumere qualsiasi dimensione si desideri. Come nell’Amiga, tutti i comandi grafici possono assumere diverse matrici grafiche. E’ sufficiente specificare una matrice, ed attivare il relativo modo operativo con DRWMODA. Se la matrice è a colori tutti i disegni vengono visualizzati nel modo a colori.

Il Basic 8.0 è dotato di una funzione BRUSH che consente di delimitare una parte dello schermo di qualsiasi dimensione e di trasformarla in un pennello. I pennelli così creati possono essere ritrasferiti sullo schermo, salvati su disco, invertiti o capovolti. E’ anche possibile servirsi del comando BRUSHPATRN per trasformare un pennello in una matrice; in tal modo ogni immagine visualizzata sullo schermo può essere trasformata in una matrice.

Sono presenti anche comandi atti a gestire oggetti solidi in tre dimensioni come sfere, cilindri… Questi solidi possono essere vincolati in relazione al loro centro ed è possibile modificare gli effetti luminosi.

Le capacità di gestire e creare fonti-carattere sono anch’esse illimitate. Il comando CHAR è in grado di utilizzare qualsiasi fonte e di visualizzarla in 256 dimensioni diverse. I caratteri possono essere colorati, possono assumere diverse matrici grafiche e si può stabilire la direzione della stampa (verso l’alto, il basso, sinistra, destra, alto-sinistra…). E’ possibile infine ruotare o invertire i caratteri servendosi di un modo simile al codice di controllo. Il comando in questione offre anche altre possibilità operative, inclusa quella di visualizzare 160 caratteri per riga.

Nessun sistema grafico moderno può dirsi completo se non prevede l’utilizzo del mouse e delle finestre e BASIC 8.0 non fa eccezione. Le finestre possono essere aperte in qualsiasi punto dello schermo e tutti i comandi e le modifiche vengono attribuiti alla finestra che si è appena aperta. Se, ad esempio, si imposta il comando che cancella lo schermo viene cancellato solo il contenuto della finestra.
Il comando MOUSE include un driver per il mouse 1351 ed uno per il joystick. Una volta attivato (servendosi di tecniche IRQ), segue i movimenti del mouse e del joystick, e, tramite la funzione MOUSE, individua le coordinate X e Y del cursore.

Dal momento che nel modo 80 colonne del C-128 non sono disponibili gli sprite, si è resa necessaria la realizzazione di qualcosa di analogo. Il comando PTR crea un puntatore capace di funzioni simili a quelle svolte da uno sprite, che può essere posizionato in qualsiasi locazione dello schermo. Vi sono sedici possibilità di configurazione del puntatore, delle quali 8 sono già predefinite. Il programmatore è così in grado di creare definizioni personalizzate del puntatore, così come si definiscono gli sprite nel modo composito.

Uno degli aspetti più importanti del BASIC 8.0 è costituito dalla possibilità di supportare le cartucce di espansione 1700 e 1750. Servendosi, infatti, del comando BUFFER è possibile creare delle aree di immagazzinamento dati in qualsiasi banco di RAM del 128, sia esso interno o esterno. Una volta creati, tali buffer possono essere utilizzati per memorizzare e richiamare una vasta gamma di strutture di dati. Tali strutture possono essere costituite da fonti-carattere, pennelli, matrici o marchi particolari. E’ possibile immettere in memoria più di 192 strutture contemporaneamente.

Degno di particolare attenzione è anche il comando HCOPY, utilizzato per ottenere un’immagine stampata su carta di una schermata grafica. Le stampanti supportate direttamente sono circa una dozzina: Commodore, Epson, Panasonic, Mannesman Tally, Seikosha, Olivetti, Gemini, Canon e altre. Nel manuale sono riportati per intero i codici sorgente assembly di tutti i printer driver; in tal modo i driver per le stampanti non supportate direttamente possono essere realizzati con facilità da programmatori in LM. Il comando in questione permette anche la rotazione della pagina, densità del carattere variabili e dimensioni multiple dell’immagine.

Oltre a quelli illustrati, sono stati implementati molti altri comandi che contribuiscono a creare l’eccezionale potenza del Basic 8.0. Comandi come SCROLL (che permette lo scroll in 8 direzioni diverse), ZOOM (visualizza un pennello in forma espansa), SCALE (converte il display standard dei pixel in un display logico più grande) e FLASH (fa lampeggiare un’area fino a 255 volte) possono essere utilizzati nei programmi per creare effetti incredibili. Desidero menzionare, però, qualche altro dettaglio riguardante il BASIC 8.0.

Dal momento che questo programma è destinato alla realizzazione di altri programmi dotati di caratteristiche mai viste su di un C-128 fino ad oggi, è ovvio che i programmatore che abbiano acquistato il sistema desiderino distribuire o magari vendere i propri prodotti. Per far fronte a questa esigenza abbiamo sviluppato e realizzato RunTime: uno speciale modulo (incluso nel package senza prezzo aggiuntivo) che permette agli utenti registrati la distribuzione dei propri programmi senza rischiare di infrangere il copyright. I programmi RunTime possono girare, ma non essere listati o editati. Non esistono comunque royalty da pagare per avvalersi di questo sistema.

Altra caratteristica che desideravamo avesse il nostro package è la possibilità di iniziare ad usarlo ancora prima di avere imparato il linguaggio. Per questo abbiamo realizzato un programma applicativo per il disegno a colori, chiamato BASIC PAINT, scritto interamente in BASIC 8.0. Il programma si gestisce tramite mouse e icone e, sicuramente, regge il confronto con tutti i prodotti di questo tipo disponibili sul mercato. E’ possibile servirsene come un normale package grafico o come strumento per creare pennelli, immagini e matrici da utilizzare nei propri programmi in BASIC 8.0. Anche BASIC PAINT è incluso nel package di BASIC 8.0, funziona su ogni 128 ed è in grado di supportare mouse, joystick, stampanti ed espansioni RAM.

Prima di concludere, permettetemi di aggiungere qualcosa: David ed io speriamo che questo programma riesca a dimostrare a tutti i creatori di software che il 128 è una macchina eccezionale con capacità e possibilità molto particolari. A suo modo BASIC 8.0 può quindi rappresentare una pietra miliare nella storia di questo computer, che, speriamo, stimolerà lo sviluppo di software dedicato, e creato specificatamente per questa macchina, e non più soltanto di trasposizioni di programmi già esistenti adattati.

E ora il progetto !!!!!

Innanzi tutto cominciamo dai componenti necessari:

– Una EPROM 27256 o una 27C256. Componente un pò difficile da trovare anche se, con un pò di fortuna è ancora possibile acquistarne piccoli lotti su e-bay.

– In alternativa e con molta fortuna è possibile ancora trovare il package originale della Walrusoft (EPROM + 2 Floppy) sempre su (www.ebay.it ).

– Per i meno fortunati potete prelevare il file binario del contenuto della EPROM quì

– Servirà inoltre un programmatore di Eprom. Per questo componente consiglio vivamente l’uso del Willem Eprom programmer ( Spiegazioni e link su http://www.willem.org/ )

– Saranno infine necessari i due floppy a corredo



– Dotatevi di un monitor originale per il Commodore 128 …. oppure di tanta pazienza un buon saldatore ed alcuni componenti per costruire un convertitore RGBI-SCART per visualizzare il segnale video ad 80 colonne su un comune televisore a colori (il progetto è nel seguito dell’articolo).

Iniziamo !!!!

Cominciate inserendo la EPROM 27256 nello zoccolo Function ROM della scheda madre.

La ROM è quella etichettata in giallo “BASIC 8”.

Fate attenzione: l’inserimento della ROM sullo zoccolo va fatta con cautela !

Innanzi tutto dovreste evitare di indossare indumenti sintetici che possono accumulare troppa carica elettrostatica e distruggere i componenti più delicati.

Io posso suggerirvi una soluzione molto semplice per evitare rischi. Prima di inserire la ROM sullo zoccolo (non ridete funziona davvero!), poggiate i piedi scalzi direttamente sul pavimento.

Questo dovrebbe ridurre la vostra carica statica a valori non pericolosi per la ROM .

A questo punto occorre dire che il Basic 8 funziona esclusivamente con l’uscita video ad 80 colonne del C128.

Per cui inutile fare tentativi con l’uscita RF (adatta all’ingresso di antenna del vostro Televisore) : non vedreste nulla!

Questa uscita infatti permette la sola visualizzazione a 40 caratteri per riga e viene disabilitata dal Basic 8.

I pochi fortunati di voi possessori di un vecchio monitor CGA possono apprestarsi subito a fare qualche prova.
Per chi invece non fosse così fortunato ci sono due soluzioni:

– Acquistare un cavo di conversione RGBI-SCART per collegare il C128 direttamente alla presa SCART del vostro TV (C128-Kombikabel/SCART)

– Costruirne uno con un po’ di pazienza. Basta un minimo di dimestichezza con il saldatore e la componentistica (o avere un amico che ci sa fare).

L’impresa non è affatto difficile se avrete la pazienza di seguirmi.

Lo schema elettrico dell’interfaccia che permette di visualizzare su un comune TV l’uscita ad 80 colonne e quella a 40 del C128 è in parte derivato e reingegnerizzato da altri schemi presenti su Internet :

Per la realizzazione dell’adattatore vi dovrete procurare questi componenti:

· Un connettore EURO SCART Femmina da pannello

· Un connettore DB 9 poli completo di chiusura

· Un connettore DIN 8 poli maschio

· 50 centimetri di cavo schermato stereo

· 50 cm di cavo a 5 poli + schermo

· un deviatore doppio

· 3 resistenze da 1000 Ohm ¼ di watt

· 3 resistenze da 470 Ohm ¼ di watt

· 1 resistenza da 330 Ohm ¼ di watt

· 1 pila da 9 volt

· 1 basettina “millefori” per il montaggio

· 1 scatolina in plastica dotata di vano pila


Per la realizzazione vi consiglio di iniziare tagliando la basetta millefori per farle assumere un ingombro leggermente inferiore alla larghezza della presa SCART. Tagliate se necessario anche l’altro lato della basetta fino ad avere una dimensione prossima alla larghezza della scatolina. Saldate uno dei lati dei piedini della presa SCART alla basetta millefori. Saldate al lato opposto della basetta il doppio deviatore.

Scatolina RGBI-SCART Otterrete un montaggio di forma simile a quello indicato nella foto

La presa SCART ed il deviatore renderanno più robusto tutto il montaggio.

Saldate le resistenze e fate tutti i collegamenti indicati nello schema. Alla fine collegate il cavo schermato stereo al connettore DIN ad 8 poli ed il cavo schermato a 6 poli al connettore D SUB a 9 poli.

Alla fine collegate i contatti della pila a 9 volt e quindi richiudete la scatolina.

Alla fine del montaggio il risultato dovrebbe essere quello indicato in figura:



Collegate infine il Drive 1541, inserite il floppy etichettato “Run Time disk” ed accendete prima il drive e poi il C128.

La macchina inizierà a fare il boot da floppy e dopo vari passaggi guidati a schermo…..

Il risultato finale è visibile nella foto qui in basso !!! (tre mesi di duro lavoro!!!!).

Faber Pixel

www.commodoremania.it

Appassionato di retrocomputing e retrogaming. In modo particolare dei personal computer prodotti dalla Commodore, utilizzati e programmati fin dal 1982. Esperto di elettronica, gaming e informatica.

Commenti

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *