« Axe Parser » : différence entre les versions
m (fix: lien vers le tuto axe parser) |
|||
(9 versions intermédiaires par 2 utilisateurs non affichées) | |||
Ligne 8 : | Ligne 8 : | ||
| latest preview version = | | latest preview version = | ||
| latest preview date = | | latest preview date = | ||
| latest release version = Omega 1.2. | | latest release version = Omega 1.2.2a | ||
| latest release date = {{Start date and age| | | latest release date = {{Start date and age|25|10|2013}} | ||
| langage = [[Asm]] | | langage = [[Asm]] | ||
| os = OS 1.12 à 1.19, 2.41, 2.43, et 2.55 en mode CLASSIC uniquement | | os = OS 1.12 à 1.19, 2.41, 2.43, et 2.55 en mode CLASSIC uniquement | ||
Ligne 15 : | Ligne 15 : | ||
| statut = En développement | | statut = En développement | ||
| genre = Compilateur | | genre = Compilateur | ||
| licence = libre | | licence = (c) Kevin Horowitz, puis libre | ||
| site = [http://www.omnimaga.org/index.php?board=71.0 Forum Axe (en)] | | site = [http://www.omnimaga.org/index.php?board=71.0 Forum Axe (en)] | ||
[http://axe.eeems.ca/Documentation.pdf Documentation (en)] | [http://axe.eeems.ca/Documentation.pdf Documentation (en)] | ||
[http:// | [http://sdz.tdct.org/sdz/l-axe-parser.html Tutoriel (fr)] | ||
}} | }} | ||
Ligne 39 : | Ligne 39 : | ||
* À 19 ans, Kevin Horowitz (alias ''Quigibo''), étudiant en génie électrique et informatique, a eu l'idée de créer un langage permettant de bénéficier en partie des avantages de l'assembleur tout en essayant de rester dans le même domaine de simplicité que le [[TI-Basic]]. | * À 19 ans, Kevin Horowitz (alias ''Quigibo''), étudiant en génie électrique et informatique, a eu l'idée de créer un langage permettant de bénéficier en partie des avantages de l'assembleur tout en essayant de rester dans le même domaine de simplicité que le [[TI-Basic]]. | ||
* Le 1er février 2010 sort une première version de l'Axe Parser. C'est un succès sur le forum '''Omnimaga''' qui va en faire un de ses intérêts principaux. | * Le 1er février 2010 sort une première version de l'Axe Parser. C'est un succès sur le forum '''Omnimaga''' qui va en faire un de ses intérêts principaux. | ||
* La puissance du langage Axe attirera les programmeurs, et en 2010, l'Axe Parser se verra récompensé par le titre de '''''Program of the Year'' 2010''' décerné par TI-Calc.org ! | |||
* Dès lors, les versions du compilateur se succèdent et se perfectionnent (encore en développement aujourd'hui). Les possibilités de ce langage sont bien supérieures à celles du [[TI-Basic]] et son exécution bien plus rapide, certaines actions souvent utilisées pour des jeux ayant été automatisées par des routines programmées en assembleur. | * Dès lors, les versions du compilateur se succèdent et se perfectionnent (encore en développement aujourd'hui). Les possibilités de ce langage sont bien supérieures à celles du [[TI-Basic]] et son exécution bien plus rapide, certaines actions souvent utilisées pour des jeux ayant été automatisées par des routines programmées en assembleur. | ||
== Syntaxe == | |||
Le langage Axe utilise l'éditeur de programmes intégré de la calculatrice, soit le même que n'importe quel programme TI-Basic, et donc aussi une partie des tokens. Ainsi, un "hello world" en Axe peut s'écrire de la même manière qu'en TI-Basic : | |||
Disp "Hello world !" | |||
Le langage en lui-même (l'Axe), celui défini dans l'app faisant compilateur (l'Axe Parser), propose à ce jour (avec la version 1.2.1a du compilateur) plus de 150 fonctions par défaut, allant de la simple addition à l'affichage de sprites 8*8 en passant par le réglage du contraste et l'émission de sons par le port jack. | |||
=== Les surcharges de fonctions et les modificateurs === | |||
Étant donné le nombre limité de tokens, le langage devait trouver un moyen de proposer un maximum de fonctions utiles en utilisant un minimum de tokens, pour des soucis de praticité d'utilisation et surtout pour se ménager des tokens pour des fonctions futures. Première idée, les '''surcharges de fonctions''' permettent de faire varier l'effet de certaines fonctions simplement en passant un nombre différents de paramètres. Par exemple, alors que : | |||
GetCalc("prgmABC") | |||
... va chercher dans la mémoire de la calculatrice le programme nommé ''ABC'' et retourner 0 s'il n'est pas trouvé, | |||
GetCalc("prgmABC",20) | |||
... ne s'embête pas à le chercher et va tout simplement créer ou écraser un éventuel précédent programme ABC avec un homonyme de 20 octets. | |||
Plus tard, les '''modificateurs''' vinrent optimiser encore un peu les surcharges de fonctions : c'est en général un token, parfois deux, toujours d'un seul caractère, qu'on rajoute à la fin ou au début d'une fonction pour la "nuancer", changer subtilement son effet. On peut par exemple afficher un sprite sur le back-buffer (appelé par le token L<sub>3</sub>) de la sorte : | |||
Pt-On(X,Y,SPRITE,L<sub>3</sub>) | |||
Les modificateurs viennent cependant réduire légèrement la source comme l'exécutable : | |||
Pt-On(X,Y,SPRITE)<sup>r</sup> | |||
De la même manière, la commande DispGraph change d'effet selon que l'on utilise aucun, un ou deux modificateurs : | |||
DispGraph // copie le main buffer à l'écran | |||
DispGraph<sup>r</sup> // copie le main buffer et le back buffer à l'écran afin de donner 3 niveaux de gris (0%,50%,100%) | |||
DispGraph<sup>rr</sup> // comme précédemment, mais donne 4 niveaux de gris (0%,33%,66%,100%) | |||
Dernier exemple, depuis la version 1.2.1a a été rajouté les modificateurs venant avant le nom des fonctions graphiques pour les dessiner soit en blanc, soit en logique XOR ou autre. | |||
Line(0,0,10,20) // dessine en noir | |||
ILine(0,0,10,20) // inverse tous les pixels de l'écran sur lesquels passe la ligne. C'est le token Line( précédé du modificateur I. | |||
''Une liste de toutes les commandes de la version actuelle de l'Axe Parser (1.2.2a) [http://axe.eeems.ca/Commands.html est disponible ici] et sera mise à jour quand sortiront les différentes versions de l'Axe.'' | |||
== Historique des Versions == | == Historique des Versions == | ||
Ligne 432 : | Ligne 458 : | ||
| 28/11/2010 | | 28/11/2010 | ||
| | | | ||
* Support de [on] par le getkey | |||
* Défragmentation automatique après compilation d'une App | |||
* Modifications au niveau de la signature des [[Apps|applications]] | |||
* La touche de backup manuel est maintenant [alpha] | |||
| | | | ||
| | | | ||
* Bug qui contait les commentaires comme des erreurs de syntaxe résolu | |||
* Bug de ElseIf résolu | |||
* Bug du menu des programmes après un backup manuel résolu | |||
| | | | ||
* Les backups automatiques ne se font désormais QUE si la compilation a eu lieu sans erreur. | |||
|- | |- | ||
| 0.4.7 | | 0.4.7 | ||
| 26/12/2010 | | 26/12/2010 | ||
| | | | ||
* Affichage de nombres en hexadécimal | |||
* Dessin de lignes sur le back-buffer | |||
* Routine "Display & Clear" pour faire les deux à la fois | |||
* Ré-allocation de variables n'importe ou dans le programme | |||
* Icone personnalisée pour [[MirageOS]] | |||
* getkey supporte une variable en argument | |||
* Modification du buffer L1, qui est suivi des variables par défaut. | |||
| | | | ||
| | | | ||
* Bugs de Input résolus | |||
* Nouvelle routine d'affichage de lignes | |||
* Optimisation générale | |||
| | | | ||
|- | |- | ||
Ligne 446 : | Ligne 490 : | ||
| 09/01/2011 | | 09/01/2011 | ||
| | | | ||
* Commentaires sur plusieurs lignes | |||
* SDK des Axiomes terminé | |||
* Dessiner une ligne hors-écran ne la dessine pas. | |||
| | | | ||
| | | | ||
* Routine 3 niveaux de gris fixée | |||
* Amélioration de la lecture de programmes protégés en archive | |||
* Bugs mineurs résolus | |||
| | | | ||
|- | |- | ||
Ligne 453 : | Ligne 503 : | ||
| 12/02/2011 | | 12/02/2011 | ||
| | | | ||
* Axiomes complètement fonctionnels | |||
* While 1 et Repeat 0 automatiquement optimisées en boucles Do | |||
* "EndIf" et "End!If" | |||
* Ajout du menu d'aide | |||
| | | | ||
| | | | ||
* Amélioration de la commande de rotation de sprite | |||
| | | | ||
|- | |- | ||
Ligne 460 : | Ligne 515 : | ||
| 27/03/2011 | | 27/03/2011 | ||
| | | | ||
* Nouveau getkey | |||
* Amélioration de DispGraph | |||
* Comparaison de chaines | |||
* not() peut être utilisé dans des expressions | |||
| | | | ||
| | | | ||
* Optimisations par Runer112 | |||
* Bug du Ptr->DispGraph résolu | |||
| | | | ||
|- | |- | ||
Ligne 467 : | Ligne 528 : | ||
| 15/05/2011 | | 15/05/2011 | ||
| | | | ||
* Amélioration de DispGraph, de Fix | |||
* API documentation | |||
* | |||
| | | | ||
| | | | ||
Ligne 540 : | Ligne 604 : | ||
| | | | ||
| | | | ||
* Dernière version développée par Quibigo. Runer112 prendra la suite. | |||
|- | |- | ||
| 1.2.0 | | 1.2.0 | ||
Ligne 550 : | Ligne 615 : | ||
| 1.2.1 | | 1.2.1 | ||
| 17/12/2012 | | 17/12/2012 | ||
| | |||
| | |||
| | |||
| | |||
|- | |||
| 1.2.2 | |||
| 25/10/2013 | |||
| | | | ||
| | | | ||
Ligne 559 : | Ligne 631 : | ||
{{Langz80}} | {{Langz80}} | ||
== | == Voir Aussi == | ||
* [[Celtic III]] | |||
* [[BatLib]] | |||
* [[Grammer]] | |||
<references/> | <references/> | ||
{{Logiciels}} | {{Logiciels}} |
Dernière version du 8 septembre 2021 à 20:45
Développeur | Kevin Horowitz (Quibigo), Runer112 |
---|---|
Sortie | le 1 février 2010 |
Version Stable | Omega 1.2.2a / le 25 octobre 2013 |
Etat du développement | En développement |
Programmé en | Asm |
OS | OS 1.12 à 1.19, 2.41, 2.43, et 2.55 en mode CLASSIC uniquement |
Disponible en | 1 (en) langage(s) |
Genre | Compilateur |
Licence | (c) Kevin Horowitz, puis libre |
Site Internet |
Forum Axe (en) Documentation (en) Tutoriel (fr) |
La naissance d'un langage
Pour programmer pour calculatrice à processeur z80, il existe 2 langages officiels :
- Le TI-Basic : programmable sur la calculatrice (ou utilitaires PC). Ce langage de "haut niveau" est très simple à apprendre, mais la vitesse d'exécution des programmes TI-Basic reste lente (surtout pour les jeux).
- L'Assembleur (ASM) z80 : programmable sur calculatrice (avec l'application Mimas, ou directement en hexadécimal) mais surtout à partir de logiciels pour ordinateur. Ce langage est cependant beaucoup plus complexe que le TI-Basic mais aussi beaucoup plus puissant, car de très bas niveau (proche du processeur), et est donc considéré comme difficile à apprendre et à maîtriser pour des novices.
La nécessité d'alternatives langage s'imposait alors. Plusieurs tentatives plus ou moins abouties existent (voir tableau plus bas), mais celle qui ressort le plus du lot est l'Axe Parser.
Note:Le mot axe signifie hache (l'arme), et le mot parser est un terme pour désigner le compilateur, lorsque l'on parle de l'Axe Parser, on parle de l'application (du compilateur), mais lorsque l'on parle du langage, on parle de l'Axe )
- À 19 ans, Kevin Horowitz (alias Quigibo), étudiant en génie électrique et informatique, a eu l'idée de créer un langage permettant de bénéficier en partie des avantages de l'assembleur tout en essayant de rester dans le même domaine de simplicité que le TI-Basic.
- Le 1er février 2010 sort une première version de l'Axe Parser. C'est un succès sur le forum Omnimaga qui va en faire un de ses intérêts principaux.
- La puissance du langage Axe attirera les programmeurs, et en 2010, l'Axe Parser se verra récompensé par le titre de Program of the Year 2010 décerné par TI-Calc.org !
- Dès lors, les versions du compilateur se succèdent et se perfectionnent (encore en développement aujourd'hui). Les possibilités de ce langage sont bien supérieures à celles du TI-Basic et son exécution bien plus rapide, certaines actions souvent utilisées pour des jeux ayant été automatisées par des routines programmées en assembleur.
Syntaxe
Le langage Axe utilise l'éditeur de programmes intégré de la calculatrice, soit le même que n'importe quel programme TI-Basic, et donc aussi une partie des tokens. Ainsi, un "hello world" en Axe peut s'écrire de la même manière qu'en TI-Basic :
Disp "Hello world !"
Le langage en lui-même (l'Axe), celui défini dans l'app faisant compilateur (l'Axe Parser), propose à ce jour (avec la version 1.2.1a du compilateur) plus de 150 fonctions par défaut, allant de la simple addition à l'affichage de sprites 8*8 en passant par le réglage du contraste et l'émission de sons par le port jack.
Les surcharges de fonctions et les modificateurs
Étant donné le nombre limité de tokens, le langage devait trouver un moyen de proposer un maximum de fonctions utiles en utilisant un minimum de tokens, pour des soucis de praticité d'utilisation et surtout pour se ménager des tokens pour des fonctions futures. Première idée, les surcharges de fonctions permettent de faire varier l'effet de certaines fonctions simplement en passant un nombre différents de paramètres. Par exemple, alors que :
GetCalc("prgmABC")
... va chercher dans la mémoire de la calculatrice le programme nommé ABC et retourner 0 s'il n'est pas trouvé,
GetCalc("prgmABC",20)
... ne s'embête pas à le chercher et va tout simplement créer ou écraser un éventuel précédent programme ABC avec un homonyme de 20 octets.
Plus tard, les modificateurs vinrent optimiser encore un peu les surcharges de fonctions : c'est en général un token, parfois deux, toujours d'un seul caractère, qu'on rajoute à la fin ou au début d'une fonction pour la "nuancer", changer subtilement son effet. On peut par exemple afficher un sprite sur le back-buffer (appelé par le token L3) de la sorte :
Pt-On(X,Y,SPRITE,L3)
Les modificateurs viennent cependant réduire légèrement la source comme l'exécutable :
Pt-On(X,Y,SPRITE)r
De la même manière, la commande DispGraph change d'effet selon que l'on utilise aucun, un ou deux modificateurs :
DispGraph // copie le main buffer à l'écran DispGraphr // copie le main buffer et le back buffer à l'écran afin de donner 3 niveaux de gris (0%,50%,100%) DispGraphrr // comme précédemment, mais donne 4 niveaux de gris (0%,33%,66%,100%)
Dernier exemple, depuis la version 1.2.1a a été rajouté les modificateurs venant avant le nom des fonctions graphiques pour les dessiner soit en blanc, soit en logique XOR ou autre.
Line(0,0,10,20) // dessine en noir ILine(0,0,10,20) // inverse tous les pixels de l'écran sur lesquels passe la ligne. C'est le token Line( précédé du modificateur I.
Une liste de toutes les commandes de la version actuelle de l'Axe Parser (1.2.2a) est disponible ici et sera mise à jour quand sortiront les différentes versions de l'Axe.
Historique des Versions
Version | Date de Parution | Ajouts | Suppressions | Bugfixes | Notes |
---|---|---|---|---|---|
0.0.1 | 01/02/2010 |
|
|||
0.0.2 | 02/02/2010 |
|
|||
0.0.3 | 05/02/2010 |
|
|||
0.0.4 | 15/02/2010 |
|
|
| |
0.0.5 | 21/02/2010 |
|
|
||
0.0.6 | 28/02/2010 |
|
|
||
0.1.0 | 07/03/2010 |
|
|
||
0.1.1 | 10/03/2010 |
|
|
||
0.1.2 | 15/03/2010 |
|
|||
0.1.3 | 21/03/2010 |
|
|
||
0.1.4 | 05/04/2010 |
|
|
||
0.1.5 | 11/04/2010 |
|
|
||
0.2.0 | 18/04/2010 |
|
| ||
0.2.1 | 26/04/2010 |
|
| ||
0.2.2 | 04/05/2010 |
|
|
||
0.2.3 | 10/05/2010 |
|
|
|
|
0.2.4 | 16/05/2010 |
|
|
||
0.2.5 | 21/05/2010 |
|
|||
0.2.6 | 01/06/2010 |
|
|
||
0.3.0 | 16/06/2010 |
|
|
|
|
0.3.1 | 19/06/2010 |
|
|||
0.3.2 | 01/07/2010 |
|
|
| |
0.3.3 | 10/07/2010 |
|
|
||
0.4.0 | 25/07/2010 |
|
|
| |
0.4.1 | 28/07/2010 |
|
|
||
0.4.2 | 08/08/2010 |
|
|
|
|
0.4.3 | 10/08/2010 |
|
|
||
0.4.4 | 20/08/2010 |
|
|||
0.4.5 | 27/09/2010 |
|
|
|
|
0.4.6 | 28/11/2010 |
|
|
| |
0.4.7 | 26/12/2010 |
|
|
||
0.4.8 | 09/01/2011 |
|
|
||
0.5.0 | 12/02/2011 |
|
|
||
0.5.1 | 27/03/2011 |
|
|
||
0.5.2 | 15/05/2011 |
|
|||
0.5.3 | 28/05/2011 | ||||
1.0.0 | 13/06/2011 | ||||
1.0.1 | 14/06/2011 | ||||
1.0.2 | 25/06/2011 | ||||
1.0.3 | 20/08/2011 | ||||
1.0.4 | 24/09/2011 | ||||
1.0.5 | 26/09/2011 | ||||
1.1.0 | 11/12/2011 | ||||
1.1.1 | 18/12/2011 | ||||
1.1.2 | 03/02/2012 |
| |||
1.2.0 | 23/11/2012 | ||||
1.2.1 | 17/12/2012 | ||||
1.2.2 | 25/10/2013 |
Avantages et désavantages
Comparaison des langages
TI-Basic | Basic Étendu | BBC Basic | Grammer | Asm z80 | Axe | |
---|---|---|---|---|---|---|
Difficulté du langage | Facile | Facile | Moyen | Moyen | Difficile | Moyen |
Vitesse | Lent | Lent | Rapide | Très Rapide | Très très rapide | Très rapide |
Taille des programmes | Normale | Normale | Lourd | Normale | Léger | Lourd |
Éditable sur la calculatrice? | Oui | Oui | Avec un éditeur spécial | Oui | Avec un éditeur spécial | Oui |
Programmable/Compilable sans programme assembleur/application ? | Oui | Non | Non | Non | Oui | Non |
Exécution | Interprété | Interprété | Interprété | Interprété | Compilé | Compilé |
Support des sprites ? | Non | Oui | Oui | Oui | Oui | Oui |
Application nécessaire pour la programmation | Aucun | Aucun | 49Ko d'application | aucun | 32Ko d'application (ou un ordinateur) | 32Ko d'application |
Application nécessaire pour l'exécution | Aucun | 16Ko à 49Ko d'application selon le langage | 49Ko d'application | 16Ko à 32Ko d'application | aucun ou shell | aucun ou shell |
Compatible avec les shells ? | Oui | Oui | Non | Très Peu | Oui | Oui |
Spécialité | Math | Tout | Varié | Varié | Tout | Jeux |
Visibilité du code source | Toujours | Toujours | Toujours | Toujours | Optionnel | Optionnel |
Voir Aussi
|