π
<-

Langage de programmation TI-Z80 alternatif: KwyxTI...

Nouveautés, projets, mises à jour.

Langage de programmation TI-Z80 alternatif: KwyxTI...

Unread postby Lionel Debroux » 17 Oct 2015, 17:25

Au détour d'un topic sur Silicium, j'ai vu passer la mention d'un nouveau langage "KwyxTI". Or, je n'ai vu passer ça sur aucun des sites de la communauté active... il y a donc quelque chose à creuser :)

Une petite recherche me renvoie deux références (!): le site officiel http://kwyxti.free.fr/ et la Gazette des pocketicaires n°6... bref, ce projet, et sa description dans la gazette, ont bien été faits en isolation complète de la communauté TI active, ce qui est plus que dommage.

Le site officiel est en français, et ne décrit malheureusement pas les buts et capacités du projet. Il faut les déduire du screenshot de l'IDE en bas de la page, et de l'article de la gazette n°6, qui est globalement bien fait.

un langage de programmation pour calculatrice de la famille TI-83+, avec les caractéristiques suivantes :
- écriture du texte du programme sur un « gros » ordinateur genre PC ;
- compilateur qui génère directement un code exécutable Z80 au format compréhensible par la TI ;
- structures de programmes habituelles ;
- bibliothèque de fonctions graphiques orientées « jeu » : sprites, dessin, copie de blocs... ;
- gestion du texte sur écrans texte et graphique ;
- capture des touches clavier ;
- types supportés int et short, avec addition, soustraction et décalage de bits.
Le tout est librement téléchargeable à l'adresse suivante : http://kwyxti.free.fr.
Sont inclus :
- Un éditeur avec coloration syntaxique et liste des fonctions système disponibles avec aide intégrée ;
- La documentation ;
- 9 exemples de programmes fonctionnels démontrant les diverses capacités du langage.

Screenshot du logicielCode d'exempleScreenshot
Image
Code: Select all
string @str1 = "Hello";
string @str2 = "World";
int val;

$start()
{
   $clearGraphBuffer();
   $drawStringGraphBufferMode();
   $enableTextInverse();
   $drawString(@str1, 46, 25);
   $disableTextInverse();
   $drawString(@str2, 65, 25);
   $drawRectangleBorder(26, 24, 44, 32);

   val = 0;
   while (val <= 150)
   {
      // on centre au milieu du rectangle
      if (val >= 100)
         $drawNumber(val, 30, 25);
      else if (val >= 10)
         $drawNumber(val, 32, 25);
      else
         $drawNumber(val, 34, 25);

      val++;
      $drawGraphBufferOnLCD();
   }
   
   $waitKey();
   $home();
}
Image

Parmi les choix faits lors de la création de son langage, Seb a privilégié la simplicité de la relation entre le code source et l'assembleur produit, et l'orientation vers les jeux et le graphisme. Ceci explique que les seules opérations mathématiques supportées sont addition et soustraction, sur short ou int (1 ou 2 octets) ! En réalité ceci, qui semble rédhibitoire, ne bride aucunement pour une utilisation non scientifique.


La syntaxe s'inspire de langages comme C et Perl (@ pour les tableaux me fait penser à Perl, en particulier). Les noms des fonctions sont préfixés par "$". Il y a quelques types de donnés étendus, comme "sprite".

Il est clair que ce genre de projets est enrichissant et formateur pour celui qui le réalise; l'intérêt pour les développeurs de la communauté me paraît moins évident face à Axe Parser, bien implanté, avec le même genre de buts et de design, qui peut être programmé sur la calculatrice aussi bien que sur l'ordinateur (où les IDEs gèrent l'indentation et les commentaires).
Mais l'effort mérite quand même d'être signalé :)

Site du projet: http://kwyxti.free.fr/
Source: Silicium.org.

Show/Hide spoilerAfficher/Masquer le spoiler
Un bémol sur l'article de la gazette: plusieurs extraits montrent une certaine méconnaissance de l'actualité "récente" de la communauté active (par qui, je l'ignore):
Parfois des années « après », on réalise quelque chose d'exceptionnel resté en gestation tout ce temps. C'est ce qui est arrivé à Seb, un ancien passionné de TI-83+ qui avait tâté de l'assembleur et toutes ces joyeusetés à l'époque où la programmation de ces calculatrices était en pleine effervescence.

(la communauté est certes moins active qu'il y a quelques années, mais elle l'était redevenue nettement, grâce à Axe Parser, justement. Et puis maintenant, la famille TI-eZ80 offre de nouvelles perspectives)

Il est bien sûr compatible avec les vrais émulateurs de la TI83+, notamment VirtualTI, ce qui fournit une solution globale de mise au point incolore de tous projets.

(ça fait bien longtemps que VTI n'est plus un émulateur de référence, il était loin d'être bon dans l'émulation de 83+, ou d'ailleurs des autres modèles; mais au moins, il y a une mention implicite du fait qu'il y a d'autres émulateurs)

KwyxTI comble le gouffre béant entre les langages faciles à utiliser et lisibles, comme le TI BASIC, mais qui sont trop lents ou n'offrent que peu d'accès au système, et l'assembleur pur et dur que seuls des spécialistes peuvent maîtriser.

(Axe n'est pas forcément très lisible, mais "gouffre béant" est juste faux à mon sens, grâce à Axe Parser)
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
User avatar
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 11.3%
 
Posts: 6865
Joined: 23 Dec 2009, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Class: -
GitHub: debrouxl

Re: Langage de programmation TI-Z80 alternatif: KwyxTI...

Unread postby Hayleia » 17 Oct 2015, 18:20

Lionel Debroux wrote:(Axe n'est pas forcément très lisible, mais "gouffre béant" est juste faux à mon sens)

Un programme inoptimisé et bien écrit en Axe n'est pas plus illisible qu'un programme inoptimisé et bien écrit dans un autre langage...
Exemple :
Show/Hide spoilerAfficher/Masquer le spoiler
Excusez s'il manque de l'indentation, l'indenteur automatique ne semble pas reconnaître l'Axe...
Code: Select all
.AA

.definitions
..keys
15→°ClearKey
01→°DownKey
02→°LeftKey
03→°RightKey
04→°UpKey
..screen
64→°ScreenHeight
96→°ScreenWidth
..others
8→°SquareSize

0→X
0→Y

While not(getKey(°ClearKey))

.check for movement
If getKey(°UpKey)
  Y--
End
If getKey(°DownKey)
  Y++
End
If getKey(°LeftKey)
  X--
End
If getKey(°RightKey)
  X++
End

.limit movement to screen
max(Y,0)^^r→Y
max(X,0)^^r→X
min(X,°ScreenWidth-°SquareSize)→X
min(Y,°ScreenHeight-°SquareSize)→Y

.draw frame
ClrDraw
Rect(X,Y,°SquareSize,°SquareSize)
DispGraph

End

Honnêtement, pour ne pas comprendre ce code, le seul moyen c'est de ne pas le lire :P

Celui qui suit en revanche fait la même chose en moins lisible, c'est vrai. Mais on peut faire la même chose avec les autres langages, ne pas aérer, utiliser des noms de variables qui ne veulent rien dire, écrire des nombres tels quels au lieu d'utiliser des define pour leur donner des noms, utiliser des algorithmes plus rapides/petits au lieu de détailler pour rester maintenable, indenter vers la gauche au lieu de la droite...
Show/Hide spoilerAfficher/Masquer le spoiler
Code: Select all
.AA
0→X→Y
While 1
Rect(min((X?-getKey(2))+getKey(3),88)→X,min((Y?-getKey(4))+getKey(1),56)→Y,8,)
DispGraphClrDraw
EndIf getKey(15)


Sinon, en rapport avec le sujet, c'est vrai que c'est dommage de faire quelque chose comme ça et de limite tout faire en sorte pour que personne ne le voie. Ça a quand même l'air d'un langage utilisable par tous ceux qui ont déjà fait des langages C-like, ce qui représente une bonne partie des programmeurs (pour ne pas dire "quasiment tous"). Je ne vois vraiment pas pourquoi l'auteur a fait un site aussi peu informatif et n'a diffusé son travail sur aucun des sites de programmation sur calculatrice...

Image
ImageImageImage
Pokemon Topaze (Axe) discussion and download links here
(19:29:36) noelnadal: plus sérieusemen​t, j'ai très peu de problèmes
(22:45:44) Clifward: J'aime rire du malheur des autres :troll:

(2017.11.18 - 17:07:12) Fireworks: Hayleia !!!!!
(2017.11.18 - 17:07:19) TI-Bot: Fireworks has been logged out (Kicked).
(2017.11.18 - 17:07:22) TI-Bot: Ban of user Fireworks revoked.
(2017.11.18 - 17:07:25) TI-Bot: Fireworks logs into the Chat.
(2017.11.18 - 17:07:28) Fireworks: <3
(2017.11.18 - 17:07:31) Fireworks: 208
User avatar
HayleiaGénéreux
Niveau 17: GM (Grand Maître des calculatrices)
Niveau 17: GM (Grand Maître des calculatrices)
Level up: 43.8%
 
Posts: 2509
Images: 2
Joined: 30 Aug 2011, 08:22
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: Templar

Re: Langage de programmation TI-Z80 alternatif: KwyxTI...

Unread postby Lionel Debroux » 17 Oct 2015, 18:37

La modération de Silicium a fait une bêtise en ne choisissant pas le bon cheval en 2011+. Avec un choix différent, je ne peux pas savoir si Silicium ferait réellement partie de la communauté TI active aujourd'hui; mais le fait d'embêter des posteurs apportant de l'activité n'est jamais bon, voir la section TI-68k de yAronet en 2010, et Omnimaga en 2013-2014.
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
User avatar
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 11.3%
 
Posts: 6865
Joined: 23 Dec 2009, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Class: -
GitHub: debrouxl

Re: Langage de programmation TI-Z80 alternatif: KwyxTI...

Unread postby Adriweb » 17 Oct 2015, 19:13

Relativement intéressant, tout de même, mais le fait que personne ici n'en avait entendu parler.... :|

(J'ai rajouté le tableau avec code et images)

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
My calculator programs
Mes programmes pour calculatrices
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 78.9%
 
Posts: 14744
Images: 1119
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb

Re: Langage de programmation TI-Z80 alternatif: KwyxTI...

Unread postby Ti64CLi++ » 18 Oct 2015, 11:16

Génial, super bien fait. ;)
Bravo
Image
User avatar
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 32.5%
 
Posts: 3446
Images: 75
Joined: 04 Jul 2014, 14:40
Location: Clermont-Ferrand 63
Gender: Male
Calculator(s):
MyCalcs profile
Class: ENS Rennes
GitHub: Ti64CLi


Return to Actualités

Who is online

Users browsing this forum: ClaudeBot [spider] and 3 guests

-
Search
-
Social TI-Planet
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
854 utilisateurs:
>824 invités
>21 membres
>9 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)