| BITMAP Mode Tredimensioni - (by Gianpaolo Bottin) BITMAP Mode Tredimensioni - (by Gianpaolo Bottin) Andriamo ad esplorare le routine in linguaggio macchina che spalancano le porte dell’alta risoluzione, trasformando il calcolatore in uno strumento grafico capace di linee, cerchi e riempimenti: un laboratorio visivo per chi ama programmare con stile. A questo propostio lo sviluppatore Gianpaolo Bottin ci propone una soluzione con routines in LM in Extended BASIC con l'espansione da 32K. Nel 1985, venne pubblicato sulla rivista italiana TI99Newsoft di Giugno.  Il TI-99/4A nasconde una potenza grafica inaspettata ma che è da saper domare. La modalità BIT-MAP. Si può andare molto oltre i limiti del character mode, esplorando pixel, colori e segmenti con precisione chirurgica e spirito pionieristico. Le routine in linguaggio macchina per la gestione grafica BIT-MAP occupano poco più di 1 KB nella low memory e vengono caricate da cassetta tramite un LOADER. Quest’ultimo deve essere avviato da un programma BASIC, e risiede in high memory (attenzione quindi a lasciare liberi alcuni centinaia di byte per evitare sovrapposizioni pericolose). I sottoprogrammi per utilizzare il registratore a cassette sono: CALL LINK («BSAVE», IND1, IND2) salva su cassetta il contenuto della CPU RAM compresa tra IND1 e IND2 che devono essere specificati in decimale. CALL LINK («BLOAD») carica una zona di memoria precedentemente salvata (con questo comando vengono caricate le routine per l'altra risoluzione). Nota per chi sperimenta:
Il programma BASIC, dopo il RUN, avvia il caricamento da cassetta di un blocco di memoria esterno (solitamente una dimostrazione grafica o routine aggiuntive).
Per chi desiderasse utilizzare direttamente le istruzioni grafiche (PLOT , LINE , DRAW , ecc.) senza caricare nulla da cassetta, sarà sufficiente agire sulla riga 280. In questo modo, le routine già caricate tramite CALL LOAD saranno immediatamente disponibili per l’uso interattivo. Gestione BIT-MAP MODE Prima di utilizzare l'alta risoluzione in un programma occorre inserire la seguente istruzione per limitare la VDP ram disponibile per l'interprete BASIC: CALL LOAD (-32658,56,0,-32732,55,248),rimangono così liberi circa 2Kb per le stringhe e per i nomi delle variabili. - CALL LINK («HGR», col): inizializza i registri VDP e la pagina grafica colorando lo sfondo del colore specificato nella CALL LINK;
- CALL LINK («PLOT»,Y,X,COL): accende il pixel alle coordinate Y (riga) e X (colonna) e lo colora del colore COL;
- CALL LINK («LINE», Y1, X1, Y2, X2, COL): traccia un segmento dal punto di coordinate Y1 ,X1 al punto Y2,X2 e di colore COL;
- CALL LINK («DRAW», IY,IX,COL, ... ): traccia un segmento a partire dall'ultimo punto plottato (ad esempio con una CALL LINK («PLOT»,Y,X,C)) al punto ottenuto sommando IY e IX alle coordinate di tale punto. Naturalmente COL indica il colore del segmento. La terna di valori può essere ripetuta più volte permettendo così di tracciare delle spezzate con una sola istruzione, ad esempio:
- CALL LINK («PLOT», 100, 100, 4)
- CALL LINK («DRAW», -50, 0, 4, 0, 50, 4, 50, 0, 4, 0, -50, 4)
traccia un quadrato verde - CALL LINK («CIRCLE», Y, X, RY, RX, COL): traccia una ellissi di centro Y, X, con semiasse verticale uguale a RY e semiasse orizzontale uguale a RX e di colore COL naturalmente se i due semiassi sono uguali verrà tracciata una circonferenza;
- CALL LINK («FILL», Y, X, COL): permette di riempire aree chiuse con il colore COL, è sufficiente che il punto Y, X si trovi all'interno dell'area da riempire. Attenzione è sufficiente un buco di un solo pixel e invece di limitarsi a riempire la zona desiderata verrà riempito tutto lo schermo!;
- CALL LINK («N»): permette di riportare alla normalità lo schermo alla fine del programma;
- CALL LINK («POINT», Y, X, A): permette di testare lo stato di un pixel A=0 se il pixel è spento A=-1 se il pixel alle coordinate Y, X è acceso;
- CALL LINK («POKEV», IND, A, B, ... ): permette di scrivere nelle VDP ram all'indirizzo IND i valori indicati nella CALL LINK;
- CALL LINK («PEEKV», IND, A, B, ... ): permette di leggere bytes nella VDP ram all'indirizzo IND e li assegna alle variabili della CALL LINK.
Se l'indirizzo è negativo si modificano i registri VDP. N.B.: L'origine degli assi è posta in basso a sinistra per cui lo schermo appare come il primo quadrante di un sistema di assi cartesiani. Le coordinate verticali (Y) vanno da 0 a 191 quelle orizzontali (X) da 0 a 255 mentre i colori sono quelli soliti del BASIC.  Presente nella sezione download, trovate il file .ZIP del programma in Extended BASIC per formato cassetta o floppy disk. Questo gioco è stato pubblicato nella rivista Italiana TI99Newsoft  TI99NewSoft numero 10 - Giugno 1985
| Don't understand Italian? Choose your language!  Grazie! Non sono solito ostentare, ma è gratificante ricevere dei feedback e avere riscontro e apprezzamenti sul lavoro svolto nel tempo. Un sentito ringraziamento a tutti. 2022 The John Birdwell Award Categoria Computing 2017 Edgar Mauk Award Categoria Community Guarda il Video Completo... 2014 Rob Tempelmans Plat Miglior Sito Web Leggi tutto... 2012 Edgar Mauk Award Categoria Community  Vuoi aiutarmi preservare la storia del TI-99 ?
Se possiedi Materiale Italiano e non che riguarda il TI-99 e che vorresti condividere nella nostra Community... contattami e potermo inserirlo nel nostro Database Globale TI-99 RELEATED        RETROCOMPUTING altro...  |