My Little Compiler
PreCompiler V1.32

Pour le TI-99 en Basic Etendu.

English Version


Comment profiter de la vitesse de l'assembler sans rien y connaître?

Accès au ressources suivantes:
  • Graphismes, couleurs, défintions de caractères
  • Sprites avec vitesse automatique
  • Le son et le sythétiseur de parole
  • Les fichiers séquentiels ou directs
  • Support du F18A (Coprocesseur, couche graphique, timer)
  • Modes TEXT et MULTICOLOR et option d'extension à 30 lignes (F18A)
Travail sur:
  • Des entiers 16 bits ou des réels 64 bits
  • Des chaines de caractères
  • Des variables simples ou des tableaux
  • Des ensembles de type intervalle

Simplement à partir du BASIC ETENDU sans cartouche Assembleur.


Le Compilateur MLC
Le PreCompiler

Un fichier binaire directement utilisable en Basic Etendu que l'on charge ainsi:

CALL INIT::CALL LOAD("DSK1.NEWMLCO")

Ou 12 fois plus vite avec le FastLoader fourni:

CALL INIT::CALL LOAD("DSK1.NEWFLO")::CALL LINK("NEWFLO")

Le compilateur est chargé en mémoire!

Il vous reste à remplir les lignes de DATA contenant
  • Des macro codes de programme
  • Des définitions de caractères
  • Des définitions de sons
RUN
et tout s'exécute! (compilation incluse!)
Préparez sur un PC votre travail:
  • Accès à un langage de haut niveau
  • Utilisation de votre éditeur de texte habituel
  • Génération automatique des lignes de DATA
  • Vitesse d'utilisation
  • Test sur un émulateur
Vous avez de plus accès à des facilités par rapport à la programmation directe sur le TI:
  • Un assembleur intégré
  • Des pseudos instructions de boucles WHILE, FOR, etc
  • La définition de caractères de manière semi-graphique
  • L'écriture des données en hexadécimal, binaire
  • Et d'autres encore...


Téléchargement
MLC.ZIP
Contenu:
  • Deux images disques pour les émulateurs ou carte CF7 avec le compilateur et son Fast Loader
  • Le PreCompiler pour Windows
  • Des exemples de programmes commentés
  • Les fichiers sources de MLC et du PreCompiler
MLC user's manual
Contenu:
  • Le manuel complet de programmation
  • Utilisation sur un TI avec MLC
  • Utilisation sur un PC avec le PreCompiler
  • L'assembleur intégré, l'utilisation mémoire, ...
Comment travaille t-on avec le PreCompiler?


Voici une petite vidéo qui montre la séquence Edition, Compilation et test du programme.

Pour l'édition vous pouvez choisir votre éditeur favori, pour moi c'est QuickEditor 3.5.

Pour le test, j'utilise l'émulateur Classic99 doté d'un très bon Debugger.


A quoi ressemblent le code source et le code compilé?


A titre d'exemple, voici le programme cherchant combien il y a de nombres premiers entre 1 et 32767.

100 CALL CLEAR
$MLC F 110 10 3000
310 CALL LINK("ERATHO",C)
320 PRINT C;" prime numbers"::PRINT "from 2 to 32767."
330 END
$ERATHO
    DIMSET 2 32767 A        ; A est défini comme l'ensemble des entiers de 2 à 32767
    SETFILL A               ; remplit A
    LET B 2                 ; premier élément à trouver
    DO
        SETFINDNEXT A B     ; cherche le premier élément à partir de la position B dans A
    WHILE=                  ; Si oui, alors renvoit dans B ce nombre premier
        LET C B             ; copie B dans C
        DO
            ADD C B         ; calcule 2*B, 3*B, 4*B, etc...
        WHILE>
            ELEMENT- A C    ; et enlève de l'ensemble A tous ses multiples
        LOOP
        INC B               ; regarde si il y a un autre nombre premier après B
    LOOP
    SETCARD A C             ; calcule le cardinal de A et le range dans C
    PUTPARAM 1 C            ; renvoie ce résultat
$$
$END
Le programme source


Notes:
  • la ligne $MLC intègre tout ce qu'il faut pour charger MLC et lancer la compilation.
  • la ligne CALL LINK fait un appel au programme compilé
  • entre $ERATHO et $END on définit le programme à compiler


100 CALL CLEAR
110 DIM IO(3)
120 CALL INIT::PRINT "LOADING COMPILER..."::CALL LOAD("DSK1.NEWFLO")::CALL LINK("NEWFLO")
130 IO(1)=3000::CALL LINK("COMPIL",IO(),S$(),C$())::If IO(1) THEN PRINT "Error ";IO(1)::END
140 PRINT "COMPILATION OK!"
310 CALL LINK("ERATHO",C)
320 PRINT C;" prime numbers"::PRINT "from 2 to 32767."
330 END
3000 DATA P
3010 DATA ERATHO
3020 DATA "FD2.32767A FOA =B2 LA FFAB _B !=B =CB LC +CB _D !>D F-AC BC LD IB BA LB FCAC P1C"
3030 DATA ""3040 DATA ""
Le programme compilé


Notes:
  • les lignes 110 à 140 correspondent à la directive $MLC.
  • les lignes de DATA à partir de 3000 correspondent à la version compilée en macro codes du programme précédent.


Quelques vidéos de réalisations avec MLC


Modes 32/40 et 80 lignes

MultiCOLOR



Lignes sur le BML (F18A)

Rectangles sur le BML (F18A)



Note: c'est l'ancienne version du Fast Loader qui est utilisée ici, le chargement est maintenant deux fois plus rapide!
Le jeu PONG

Film TINTIN



Scroll Parlant



Scroll 1 pixel



15 décembre 2007