EXPANDER - (by Ezio Montini)
Chi ha avuto a che fare con il TI-99/4A sa bene quanto l’Extended BASIC fosse potente rispetto al TI-BASIC standard, ma anche quanto rimanesse comunque limitato nella velocità, soprattutto quando si aveva la necessità di manipolare la grafica. Disegnare un nuovo scenario, cambiare set di caratteri o variare i colori; Questo richiedeva decine di istruzioni, e ogni operazione era visibilmente lenta. In questo contesto nasce EXPANDER, un piccolo programma scritto da Ezio Montini e distribuito su cassetta. Venne pubblicato sulla rivista italiana TI99Newsoft nel 1985.

A prima vista può sembrare un semplice loader, ma in realtà svolge una funzione sorprendente: carica in memoria dei sottoprogrammi in linguaggio macchina, accessibili dall’Extended BASIC tramite l'istruzione CALL LINK.
La caratteristica più interessante è che, una volta lanciato con il classico OLD CS1
e poi RUN
, EXPANDER installa le sue routine direttamente in RAM, dove restano attive anche dopo aver dato il comando NEW
. Non è quindi un programma che “vive” solo durante l’esecuzione, ma una vera e propria estensione invisibile dell’Extended BASIC, pronta ad essere richiamata in qualunque momento. Per eliminarla, bisogna ricorrere a comandi radicali come CALL INIT
, BYE
, QUIT
o naturalmente lo spegnimento della macchina.
I COMANDI NUOVI
EXPANDER metterà a disposizione sei comandi aggiuntivi, divisi in due gruppi. I primi tre permettono di salvare in memoria alcune aree fondamentali del sistema video del TI-99/4A:
CALL LINK("SAVES")
salva l’intera pagina grafica, cioè la mappa dello schermo. CALL LINK("SAVEP")
salva i pattern dei caratteri, vale a dire le forme grafiche associate a ciascun simbolo. CALL LINK("SAVEC")
salva la tabella dei colori, che associa coppie di colori a gruppi di caratteri.
Gli altri tre fanno esattamente l’operazione opposta, cioè ricaricano ciò che era stato salvato nei rispettivi buffer:
CALL LINK("LOADS")
ripristina la pagina grafica. CALL LINK("LOADP")
ripristina i pattern. CALL LINK("LOADC")
ripristina i colori.
Il funzionamento è immediato e incredibilmente veloce, proprio perché le routine sono scritte in linguaggio macchina e non in BASIC.
QUALI SONO I VANTAGGI
La differenza rispetto al solo Extended BASIC è enorme. Normalmente, cambiare schermata in un gioco avrebbe richiesto di riscrivere da zero tutta la mappa video, ridefinire i caratteri e riassegnare i colori: un’operazione lenta e macchinosa. Con EXPANDER, invece, basterà un semplice comando CALL LINK
per passare istantaneamente a una nuova configurazione grafica.
Questo significa che un programmatore potrà preparare in anticipo più schermate, pattern e palette per poi salvarle nei buffer dedicati e quindi poi richiamarle in modo istantaneo quando servirà (per esempio al cambio di livello in un videogioco o per mostrare un’animazione complessa.)
Il risultato sarà un incremento notevole della velocità percepita e della fluidità del programma, senza dover scrivere complicate routine assembler personali.
Un altro pregio di EXPANDER è la sua leggerezza. Occupa poco più di un kilobyte (1.230 byte, per la precisione), uno spazio trascurabile per un sistema con 32K espansi. Questo lo rende facilmente integrabile in qualunque progetto in Extended BASIC, senza togliere memoria preziosa ai dati del gioco o alle logiche di programmazione.
EXPANDER è uno di quei programmi che, all’epoca, potevano passare inosservati ai più ma che, per chi amava spremere il TI-99/4A, rappresentavano una scoperta preziosa. È una soluzione elegante a un problema concreto: la lentezza del BASIC nella gestione grafica.
In un’epoca in cui ogni byte e ogni ciclo di clock contavano, avere un alleato come EXPANDER significava poter portare l’Extended BASIC un passo più vicino alla rapidità del linguaggio macchina, senza rinunciare alla comodità di un linguaggio ad alto livello.
Per chi volesse approfondire, tutte le istruzioni complete potranno essere trovate nelle pagine della rivista linkata di seguito.

Nella sezione download, trovate il file .ZIP che contiene i files immagini per Cassetta e Floppy.
Questo software è stato pubblicato nella rivista Italiana TI99Newsoft

TI99NewSoft numero 6 - Febbraio 1985