Cerca articoli...
Mini gallery
  • Eventi/brusaporto 2010
  • Hardware/flashrom99
  • Eventi/brusaporto 2014
  • Varie/lotti Ruota Della Fortuna 2022
  • Eventi/fvb2011
  • Eventi/brusaporto 2013
  • Eventi/viretro2014
  • Eventi/brusaporto 2014
  • Eventi/titreff2011
  • Eventi/fvb2011
Articoli piu' letti
Storico articoli
Mailing list
Nome
Email
Iscrizione
Cancellazione
YouTube Channel
Facebook
Conversione da TI BASIC a Modulo SSS... si puo' fare?

CONVERSIONE DA TI BASIC A MODULO SSS... SI PUO' FARE?

 Martedì, 24 Dicembre, 2019 00:00

scritto da Alessandro Benedettini

   

Ci stiamo avvicinando al 2020, cioè a circa 36 anni dall’uscita di produzione del TI99, quando la configurazione media era (almeno in Italia) la console, il modulo Extended Basic ed il registratore a cassetta. Vi ricorderete di sicuro i lunghi tempi di caricamento dei programmi in BASIC. All’epoca un upgrade significativo della configurazione era rappresentato dal Peripheral Expansion Box (Il Box di espansione anche chiamato 'PEB') che poteva contenere l'espansione di memoria da 32K ed il Floppy Drive. La velocità e comodità del disco per caricare un programma BASIC era notevole e l’abbandono del registratore a cassette era una conseguenza quasi immediata.

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 OLD 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!

 

  
Link utili:

Link con 112 giochi già convertiti in .BIN, include file .txt con le istruzioni:    
  TIBASIC_to_SSS_(112_Games)_MEGA_Pack_V1.0.1;

- Robopods files per la guida descritta;

- Utility creata da Rasmus per invertire immagini .BIN dei Moduli SSS.

 

 


Vuoi commentare l'articolo?
 Nome
 Email
Il tuo commento
Verifica

I vostri commenti ...

Fred Kaal 2020-01-25 11:22:43 
Very nice tutorial. Can I use this to create an article for the Dutch Tijdingen magazine?<
> <
> Tutorial molto bello. Posso usarlo per creare un articolo per la rivista olandese Tijdingen?<
>
Ciro 2020-01-25 13:08:26 
Hello Fred!<
> sure you can :) very appreciated if you could mention the source also.<
> You're Welcome and very happy you found this article useful.

1

Google Translate

Don't understand Italian? Choose your language!

Materiale TI99?

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

Donazione

Se desideri sostenere questo sito puoi inviare una donazione.

Hot Links

TI-99 RELEATED

RETROCOMPUTING altro...

Copyright © 2009-2024 by TI99 I.U.C. - Tutti i diritti riservati - All rights reserved - Loghi e marchi sono di proprieta' dei rispettivi proprietari.
E' vietata la riproduzione integrale o parziale di contenuti o documenti previa autorizzazione.
Copyright   |    Privacy