Cerca articoli...
Mini gallery
  • Eventi/brusaporto 2010
  • Varie/lotti Ruota Della Fortuna 2022
  • Hardware/flashrom99
  • Hardware/flex card (for peb)
  • Eventi/brusaporto 2013
  • Eventi/brusaporto 2013
  • Eventi/fvb2011
  • Eventi/brusaporto 2013
  • Eventi/brusaporto 2013
  • Eventi/brusaporto 2013
Articoli piu' letti
Storico articoli
Mailing list
Nome
Email
Iscrizione
Cancellazione
YouTube Channel
Facebook
La compilazione del TI BASIC e XB - TUTORIAL

LA COMPILAZIONE DEL TI BASIC E XB - TUTORIAL

 Martedì, 03 Settembre, 2019 00:00

scritto da Alessandro Benedettini

   

Il BASIC del nostro TI99 è sempre stato tristemente famoso per l'estrema lentezza. Per questo motivo i giochi di tipo action/arcade realizzati in TI BASIC potevano risultare spesso noiosi.
Sono stati creati giochi anche potenzialmente interessanti, ma la lentezza esasperante li ha sicuramente penalizzati.

La situazione migliorava invece con l'utilizzo della cartuccia Extended Basic che aggiungeva anche l'uso degli Sprite, anche in questo caso però, eravamo ben lontani dalla reattività anche del peggior gioco scritto in Assembler.

 

All'epoca, l'unico modo per realizzare un gioco in TI Basic veloce era l'utilizzo di una particolare tecnica di programmazione con le CALL COLOR. Un esempio era il gioco Frogger pubblicato sulla rivista italiana PaperSoft.

Esisteva, però, anche la possibilità di compilare un programma dal TI BASIC all'Assembler usando il famoso compilatore di Harry Wilhelm. Per usarlo serviva un TI99 equipaggiato pesantemente: Box di Espansione (PEB), 32K RAM, disco e moduli Extended Basic ed Editor Assembler.
Per usarlo decentemente, come vedremo, sono anzi consigliate due unità disco (possibilmente DS, cioè 180K).

Lo scopo di questo tutorial è di farvi vedere quanto sarebbe stato interessante averlo come strumento di produzione negli anni passati! Ora, tramite gli emulatori su PC, possiamo provare a rendere più veloce qualche vecchio giochino che ci piaceva, ma che purtroppo, quando ci giocavamo noi, era proprio lento, tanto lento...

I prerequisiti per seguire il tutorial sono di avere almeno un emulatore TI99 configurato con l'espansione 32K, la gestione dei floppy disk ed i moduli TI Extended Basic ed Editor Assembler.
Il compilatore usato per questo esempio è il Wilhelm in versione 2.56 per Extended Basic del 2012/2014 (lo trovate con le istruzioni su Atari Age).
Comunque, per comodità, troverete le immagini dei dischi usati in questo tutorial, linkati in fondo alla pagina.

L'emulatore che utilizzo è il MESS (una vecchia versione, la V0.106, che avevo già pronta configurata), ma potete usarne anche altri.

Per iniziare ho creato un disco DSSD vuoto (cioè da 180K) con Ti99Dir di Kaal. Questo mi serve per velocizzare il processo di compilazione.

Una volta creato andremo a copiare al suo interno, i file del compilatore Basic + quelli del primo disco dell'Editor Assembler.

Qui c'è già un primo ostacolo: non c'è spazio per tutti i file!

Lo risolviamo però in fretta rinunciando a copiare alcuni files riguardanti il debugger del disco EA (non ci serve) e i file di esempio del compilatore.

Nell'immagine a sinistra, potete vedere il contenuto effettivo del disco (nome file: XBCOMP+EA.dsk).

Ci serve ora un programma TI BASIC da compilare.
Abbiamo scelto il Poker (contenuto nel disco: Poker.dsk).
Lanciamo l'emulatore, selezioniamo l'Extended Basic.
Al prompt carichiamo il programma (fate il mount del disco sull'unità 2) con il comando:

OLD DSK2.POKER

Avrete notato che ci sono voluti alcuni secondi. E' possibile velocizzare alcune operazioni (caricamento, compilazione, etc.) usando la funzione di "CPU Throttle", che disabilita nell'emulatore l'utilizzo della velocità reale del TI99. In MESS l'opzione si trova nel menu Options. Per alcune operazioni è necessario ripristinarla, come quando si scrive, altrimenti legge la tastiera troppo velocemente, scrivendo troppi caratteri.

Il programma appena caricato deve essere salvato in formato DIS/VAR (è in pratica un formato testo) per poter essere compilato. Si deve usare il comando MERGE durante il salvataggio.
Indichiamo, inoltre, nel nome del file che stiamo usando questo formato con il suffisso "-M". Questa è solo una convenzione, per farci ricordare più semplicemente il tipo di file. Il comando è:

SAVE DSK2.POKER-M, MERGE

Ora, prima di premere invio, abilitate il CPU Throttle. Noterete che l'operazione è stata istantanea! Ora togliete il CPU Throttle. Di seguito non indicherò più la cosa, ma fatelo se non volete aspettare troppo.

Ci serve ora caricare il compilatore. Fate il mount del disco XBCOMP+EA.dsk sull'unità 1, caricatelo ed eseguitelo:

OLD DSK1.LOAD
RUN

Vi troverete nella schermata principale del compilatore. Selezionate il compilatore (opzione 1):

Inserite ora il nome del file da compilare (DSK2.POKER-M). Verrà in automatico presentato il file di output (DSK2.POKER-S). La "-S" indica il sorgente Assembler. Premete invio. Premete ancora invio per tutte le opzioni seguenti.

A questo punto inizierà la compilazione (avete abilitato il CPU Throttle?) che andrà a buon fine, mostrandovi le opzioni iniziali, come in figura:

Il caso più frequente di errore è quando il compilatore rimane sempre fermo a compilare la stessa linea. In tal caso, la prima cosa da fare è vedere quale è l'istruzione incriminata e modificarla. Nel nostro caso è andato tutto a buon fine, passiamo quindi alla compilazione con l'Editor Assembler.

Usciamo dal compilatore (opzione 4). Riavviamo l'emulatore con l'Editor Assembler (lasciate il disco XBCOMP+EA.dsk nell'unità 1 e il disco Poker.dsk nell'unità 2).

Selezionate l'opzione 2 (ASSEMBLE) e rispondete Y quando chiede LOAD ASSEMBLER.
Al termine bisogna indicare il file sorgente: DSK2.POKER-S ed il file oggetto DSK2.POKER-O. Non mettete nulla per LIST FILE NAME e indicate per le opzioni R, come nella figura:

Se la compilazione è andata a buon fine, vedrete 0 errori, come nella figura:

Un tipico errore qui può essere dovuto alla mancanza di spazio su disco (di solito un fantomatico DSR error), soprattutto se il disco è SSSD.

Ora torniamo all'Extended Basic. Fate partire il compilatore, come fatto in precedenza, ma ora selezionate il Loader (opzione 3). Dobbiamo ora indicare il file compilato prima con l'Editor Assembler, cioè DSK2.POKER-O ed al termine dell'operazione verranno indicate due opzioni per salvare il file, una per l'Extended Basic e l'altra per l'opzione 5 dell'Editor Assembler. Scegliamo la prima digitando il comando:

SAVE DSK2.POKER-C

dove l'estensione "-C" ci serve per indicate che è la versione compilata del programma:

Abbiamo completato la creazione de programma compilato, ora non ci resta che caricarlo ed eseguirlo con:

OLD DSK2.POKER-C
RUN

Potrete notare come il programma viene eseguito subito e le carte disegnate al volo! Merito della compilazione.

A questo punto, provate voi a compilare un altro programma, ad esempio TI Kong, che trovate sempre tra i dischi allegati (TIKong.dsk).

Per caricarlo, il nome del programma Basic è TIKONG e poi seguite questo tutorial.

Fatto? Una volta avviato il gioco compilato, noterete che ora il programma è troppo veloce! I barili scendono velocissimi e il nostro omino si muove troppo in fretta e cade subito!
Questo è ovviamente dovuto a come è stato scritto il codice: ora servirebbe introdurre dei ritardi nella gestione dei nemici e del movimento. Volete provarci e farci avere una versione giocabile?

Proprio quanto abbiamo appena elaborato è la prova concreta che ci mostra la velocità dell'Assembler rispetto al TI BASIC e quanto, purtroppo, il TI Basic fosse lento.
Peccato, perché alcune istruzioni come CHAR, HCHAR, etc. erano interessanti per gestire la grafica e di più alto livello se paragonate alle oscure POKE di altri computer.

Il compilatore originale di Wilhelm gestiva solo il TI Basic. La versione 2.56 che abbiamo usato gestisce anche l'Extended Basic, ma con alcune limitazioni, come indicato nel manuale (lo trovate nel pacchetto originale su AtariAge). Questo potrebbe essere interessante per sviluppare giochi in Extended Basic e poi compilarli in Assembler per ottenere la giusta velocità.

Aspettiamo i vostri pareri / commenti e magari anche qualche gioco compilato in Assembler!


Materiale Allegato:

- Disco Compilatore + Assembler (XCOMP+EA.dsk);

- Disco Poker (Poker.dsk);

- Disco TI Kong (TIKong.dsk);

- Frogger Game (scheda completa);
 


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

I vostri commenti ...

Francesco Ugga 2020-07-13 17:26:30 
Se provo a caricare il poker da TI Basic mi da il memory full alla riga 840
Alessandro Benedettini 2020-07-13 18:03:27 
@Francesco Ugga: devi usare l'XB+32K per poter fare il SAVE con il MERGE. Se guardi la schermata dell'esempio, vedi il prompt dell'XB. Lancialo da quella configurazione se vuoi provarlo.

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