Page 1 of 1

[ASM83] CP83P : compilateur Ti-Basic -> assembleur

Unread postPosted: 01 Apr 2015, 14:47
by Epharius
Bonjour à tous !

Aujourd'hui, je poste le programme le moins utile de l'année : le compilateur Ti-Basic ! Mais pourquoi inutile me diriez-vous ? La raison est simple : après des dizaines voir cinquantaines d'heures passé sur ce programme, je me rend compte que ça ne va qu'un petit chouilla plus vite que le ti-basic. Ce n'est vraiment pas transcendant.
Mais bon, vu le mal que je me suis donné, je me suis dit que ce serait quand même sympa de partager mon programme.

Utilisation
Donc, c'est un compilateur ti-basic, créez un programme en l'appelant BASIC. Puis, exécutez la commande send(9prgmZCOMPIL : sortira un programme appelé FINAL qui s'exécute aussi avec la commande send(9prgmFINAL (NOTE : send, sur une ti-82 stats.fr s'appelle Envoi)
Tout est très facile donc. Mais bien entendu, tous les tokens ne sont pas supportés. Voici la liste de ceux que le compilateur prend en compte (les autres seront ignorés) :

  • ClrHome
  • Input
  • Prompt
  • Pause
  • Lbl et Goto
  • If
  • Repeat et While
  • la flèche sto
  • Disp
  • Return
Ne sont pas supportés les tokens pour la graphisme (Line, Pxl-[...], etc), le token getKey, et tous les autres que je n'ai pas cité bien sûr.


Précisions
Quelques précisions sont nécessaires :

  • La syntaxe de If est dans tous les cas If [...] End Si vous ne mettez pas le End vous aurez un bug. De plus, le Then n'est pas nécessaire (ignoré dans tous les cas)
  • Les erreurs n'ont pas été mises en place ! Si vous ne mettez pas de End à la fin d'un If par exemple, vous n'aurez pas de Ram Cleared, mais la calculatrice va tourner pendant quelques secondes voir dans les cas plus graves quelques minutes.
  • Le Disp doit impérativement ne pas être à la toute fin du programme : en effet, il attend un retour à la ligne pour savoir quand s'arrêter. Si vous voulez qu'il soit à la fin, rajoutez :f105:
  • Le programme ne supporte pas les chaines de caractères ni tout autre variable n'étant pas une variable A-Z+THETA. Je n'ai pas essayé mais vous aurez surement le droit à un gros bug en exécutant prgmFINAL (ça ne posera pas de problème dans prgmZCOMPIL)
  • Comme dit précédemment, vous ne pouvez pas faire getKey->K, ça provoquera une erreur dans la calculatrice (ERR : ARGUMENT ou quelque chose comme ça, rien de grave)
  • La syntaxe de l'Input et du prompt est Input X, pas de texte avant ! Risque de création de création d'une variable bizarre (j'ai eu un moment la variable + qui est apparue :p)
  • Le Disp ne prend en compte que les Nombres, les Lettres et l'espace ! Le risque est petit : vous aurez juste le droit à des signes bizarres au lieu du caractère demandé


Programme & ScreenShot
Voici un petit aperçu du programme "PLUS OU MOINS" qu'on pourrait faire en basic :
ZCOMPIL.gif


Et voici le lien pour le télécharger (SOURCE + PROGRAMME + SCREENSHOT) : archives_voir.php?id=181469


Voilà, n'hésitez pas à m'avertir si vous rencontrez un bug ! ;)

Re: [ASM83] CP83P : compilateur Ti-Basic -> assembleur

Unread postPosted: 05 Jul 2015, 11:19
by Wistaro
Sympa :)

Beau travail ^^

Re: [ASM83] CP83P : compilateur Ti-Basic -> assembleur

Unread postPosted: 05 Jul 2015, 12:59
by Epharius
Beau travail qui est malheureusement pas très utile :p

Mais j'ai une grande nouvelle, je compte enlever le support des variables (A-Z) pour les remplacer par des registres (AF, HL, etc) ! Du coup je pense pourvoir multiplier par 1.5 la vitesse d'exécution du programme ;)

M'enfin ce n'est pas pour tout de suite vu que j'ai changé de calculatrice...

Re: [ASM83] CP83P : compilateur Ti-Basic -> as-tsembleur

Unread postPosted: 07 Oct 2015, 13:45
by Ti64CLi++
Pourrais-tu me donner le fichier include ('ti83.inc') stp?

Re: [ASM83] CP83P : compilateur Ti-Basic -> assembleur

Unread postPosted: 13 Feb 2016, 15:37
by Ti64CLi++
Juste une précision, tu n'as pas dis qu'il supportait le token randInt(. L'as-tu oublié?

Re: [ASM83] CP83P : compilateur Ti-Basic -> assembleur

Unread postPosted: 13 Feb 2016, 15:42
by Epharius
Alors oui mais non :p
Le fonctionnement de ASM83P a un point faible (concernant la vitesse) qui devient un point fort si on veut supporter le plus de fonctions possibles. En fait, c'est tout simplement que pour calculer une expression, le programme utilise les fonctions (Y1 etc). Donc oui, il pourra supporter pas mal de fonction mais ce sera ralenti par rapport à si j'avais fait ma routine de calcul moi même. D'ailleurs, les fonctions Abs() etc sont "supportées" si tu essaies ;)

Je compte refaire ce programme pour Ti-83PCE, et j'essaierai de résoudre ces problèmes de vitesse.

Re: [ASM83] CP83P : compilateur Ti-Basic -> assembleur

Unread postPosted: 13 Feb 2016, 15:57
by Ti64CLi++
Donc la fonction randInt est supportée?

Re: [ASM83] CP83P : compilateur Ti-Basic -> assembleur

Unread postPosted: 13 Feb 2016, 15:58
by Epharius
Ben, oui, comme je l'ai dit plus haut :p
Ainsi que abs, fpart, round et toutes les fonctions que tu peux utiliser dans Y1

Re: [ASM83] CP83P : compilateur Ti-Basic -> assembleur

Unread postPosted: 13 Feb 2016, 15:59
by Ti64CLi++
Ok, merci beaucoup de ton aide