Oggi è facile immaginare un utilizzatore del TI-99/4A con una configurazione espansa almeno di una bella FinalGROM e magari dell'espansione da 32K, che vi permette di usare comodamente tutti i moduli SSS e anche molti dei programmi Assembler disponibili su disco e convertiti in formato modulo. Se avete una nanoPEB è piuttosto comodo caricare anche qualche vecchio gioco in TI BASIC, ma se siete senza vi tocca tirare fuori il vecchio registratore a cassette… ok, vogliamo ricreare l’esperienza dell’epoca, ma ci sono dei limiti! Lasciate pure da parte il Vostro bel registratore a cassette perché ora vedremo come trasformare i programmi TI BASIC in moduli SSS da utilizzare con la FinalGROM (o anche con il MiSTer e gli emulatori software). Il processo è piuttosto semplice e veloce ed è applicabile solo ai programmi in TI BASIC, non in Extended BASIC (almeno al momento). Prima di tutto, scaricate l'ultima versione dell'emulatore Classic99 - se non l’avete già - ed installatelo sul vostro hard disk (basta scompattare l’archivio). Proveremo il metodo con un esempio pratico, per facilitare la comprensione dei vari passaggi. In particolate, convertiremo il programma Robopods (per comodità, il file è disponibile per il download in fondo all’articolo). Lanciamo il Classic99 e dal menu Edit selezioniamo il Debugger.  Si aprirà la finestra “Classic99 Debugger” in cui c’è la possibilità di settare un breakpoint nell’esecuzione del TI99 e di effettuare un dump della VDP da 16K in cui è memorizzato il programma TI BASIC (con il relativo stato di esecuzione).  Il menu da utilizzare nella finestra del debugger è il “Make”. Se provate a selezionarlo ora vedrete che non è possibile selezionare la voce “Save Memory As Program”, questo perché non abbiamo ancora settato un breakpoint. Un breakpoint serve per fermare l’esecuzione del codice se si verifica una determinata condizione. La prima cosa che dobbiamo fare è determinare il punto giusto in cui metterlo. Osserviamo ora la finestra del Debugger. Sulla destra avremo i registri della CPU e subito sotto quelli della VDP, cioè il chip video. Teniamo d’occhio ora il valore del registro VDP7, cioè quello del colore dello sfondo. Il valore corrente è F7. Analizziamo ora il significato di questo valore (per maggiori approfondimenti su questo argomento vi consiglio questa pagina). Il registro contiene un valore a 8 bit, cioè 1 byte, che sono 2 nibble (1 nibble = 4 bit). Il nibble a sinistra non ci interessa (contiene il colore dei caratteri nel modo Text della VDP), mentre quello a destra contiene il colore dello sfondo. Può assumere valore esadecimale da 0 a F, cioè i 16 valori della palette del TI99. Attualmente vale 7, che in decimale è 8, cioè Ciano (fate riferimento alla tabella dei colori del TI BASIC). Entriamo quindi in TI BASIC. Il valore del registro è ora 07, cioè il colore dello sfondo non è cambiato. Digitiamo ora un semplice 10 CALL SCREEN(2) premiamo ENTER e diamo il solito RUN. Il valore del registro VDP7 cambierà in 01 (cioè nero) mentre vedrete sullo schermo il cambio di colore, per poi tornare al valore precedente. Aggiungiamo ora la linea 20 PRINT “HELLO!” Dopo il RUN, vedremo quindi il cambio di colore e poi la scritta sul video. Settiamo ora un breakpoint per fermare il programma quando lo schermo diventa nero, cioè alla fine della riga 10. Per farlo dobbiamo dire al Debugger di bloccare l’esecuzione se il valore del registro VDP è 01. Nella finestra del Debugger, premete il pulsante “?” per vedere la sintassi dei comandi.  Il comando da usare è U0=FF che blocca l’esecuzione quando il valore del registro VDP 0 è uguale a FF. Nel nostro caso dovremo mettere U7=01. Scriviamo questa istruzione e premiamo il pulsante “Add”.  Diamo ora un bel RUN per rilanciare il nostro programma in TI BASIC. Vedrete l’esecuzione bloccarsi e nessuna stampa della parola “HELLO!”. Nel menu “Make” si può ora selezionare la voce “Save Memory As Program”. Rifate partire il tutto andando nel menu “Debug” e selezionando “Normal Speed”. Rimuovete il breakpoint selezionandolo e premendo il pulsante “Remove”. Ora abbiamo tutte le informazioni per procedere con il programma Robopods. In sintesi, dobbiamo fermare il programma quando viene modificato il colore di sfondo per poterlo salvare come modulo. Potremmo banalmente inserire la CALL SCREEN(2) come prima riga del programma, ma cerchiamo di fare qualcosa di più sofisticato e utile. La funzione di salvataggio del Debugger è in grado di copiare lo stato completo della VDP, quindi approfittiamone per evitare di attendere i secondi iniziali richiesti dal TI BASIC per fare le sue varie operazioni iniziali di scan ed inizializzazione dopo il comando RUN. Mettiamo il breakpoint nella schermata iniziale del gioco, quando magari viene presentato il titolo e di solito cambiato il colore dello sfondo. Carichiamo il programma con CALL FILES(1) seguito da OLD DSK1.ROBOPODS e lanciamolo con il solito RUN. Dopo un po’ lo sfondo diventerà di colore verde (valore del registro a 03) e poi blu (valore del registro a 04), quindi inizierà una breve musichetta che porta al titolo. Usiamo proprio questo secondo valore. Resettiamo poi Classic99 (menu “File”, poi “Cold Reset”) in modo da avere la VDP pulita, selezioniamo il TI BASIC e inseriamo senza fare errori di digitazione il comando per caricare il file (CALL FILES(1) seguito da O LD DSK1.ROBOPODS ). Questo perché altrimenti salveremo nel modulo anche la schermata di lancio con i vari messaggi di errore, cosa poco gradevole esteticamente. Mettiamo il breakpoint, cioè U7=04. Lanciamo ora il programma (il solito RUN ). Al blocco del codice andiamo nel menu “Make” e poi in “Save Memory As Program”. In “Save Type” selezioniamo “TI BASIC Restore” e ignoriamo eventuali messaggi pop up di avvertimento. Mettiamo un nome in “Cartridge Name”. Possiamo poi decidere se disabilitare il CTRL+4 (break).  Premiamo poi il pulsante “Build” e mettiamo il nome del file (es. Robopods). Avremo ottenuto un file Robopods_8.bin con il nostro modulo! Per un bug della versione attuale di Classic99 dovremo rinominare il file in Robopods_9.bin per testarlo con questo emulatore. Lanciatelo per vedere che funzioni correttamente. Abbiamo ottenuto il nostro programma TI BASIC in modulo SSS, con il caricamento immediato e il risparmio di un po’ di secondi anche sull’esecuzione iniziale. Ancora un piccolo passo per poterlo eseguire su FinalGROM o su MiSTer TI99. Il file .BIN generato è, come si dice, invertito. Ci serve usare, ad esempio, il tool di Rasmus (disponibile al fondo dell’articolo) per salvarlo nel formato realmente corretto come Robopods_8.bin (o Robopods_C.bin per il MiSTer). Infine, per chi è in possesso del MiSTer, ricordiamo che abilitando la modalità Turbo della CPU questi giochi in TI BASIC diventeranno immediatamente più godibili, grazie alla maggiore velocità! Un motivo in più per procurarsene subito uno se ancora non lo avete preso in considerazione (leggete l'articolo sul MiSTer TI99 già pubblicato). Potete ora cimentarvi da soli nella conversione di quasi tutti i programmi TI BASIC. In calce a questa pagina troverete anche un link con 112 giochi in TI BASIC già convertiti .BIN e pronti per essere giocati! Ci sono poi anche alcuni programmi che usano tecniche particolari, come ad esempio Morphy, che richiedono qualche altro accorgimento in più per poter essere convertiti. Il Morphy in versione cartuccia è già pronto, ma per questo vi stiamo preparando una sorpresa speciale... non posso aggiungere altro per ora, se non Auguri di Buon Natale dal TI99iuc!  |