Salut,
Je veux vous informer que je vais sortir d'ici deux mois un nouveau langage de programmation on-calc : le NewProg.
Il est déjà très avancé (2 ans de travail). On peut déjà faire des jeux puissants avec, des éditeurs hexadécimaux, niveaux de gris, scrolling de l'écran, gestion de fichier, lancer mêmes des commandes basics internes, pointeurs, fonctions lancées par des interruptions (brefs, ce que permettent les interuptions), allocations dynamique, graphique, passer facilement des variables du basic a Newprog et inversement... Pour l'instant, j'ai implémenter 150 fonctions environ.
En fait, on rentre le programme dans l'éditeur de programme de la TI, on utilise la même syntaxe que le basic (mais avec des évolutions). On compile après le programme avec un compilateur (en fait, le programme est d'abord précompilé par l'os comme pour un programme TIbasic classique mais une dauxième compilation intervient alors pour la compilation de Newprog). Ca nous sort alos un executable (en fait, pas un executable, mais un fichier codebyte, comme en java). Pour lancer le programme, une machine virtuelle est nécessaire. Vous aller me dire que ca doit être lent, mais pas du tout, ca pulse dans une boucle for:endfor a environ 30 000 bouclages à la seconde, donc c assez rapide pour faire un mario (en C, c'est 280 000 / sec et en basic c'est 100 / sec). La compilation Neworog est quasi instantanée. Le fichier de sortie prend environ 2 fois moins de place qu'un fichier tibasic précompilé par le tios.
Il sera assez simple aux personnes désireuses de rajouter des fonctions en C au seins même de newprog, c'est même pas compliqué. Mais pour cela, il faudra que je valide vaut fonction, histoire de pas avoir deux fonctions qui font la même chose.
J'envisage de permettre à l'utilisateur d'utilser les librairies assembleurs existantes, mais ca, vu que je m'y connais pas trop en assembleur, ca risque d'etre chaud pour moi.
Voila
Intéressant.
On peut avoir des screens ?
Et aussi, est-ce 100% compatible avec le basic existant ? Par exemple est-ce que n'importe quel programme basic déjà écrit tournerait efficacement ?

Que cache le pays des Dieux ? -
Forum Ghibli -
Forum LittéraireLa fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.
Pour info, GFA-Basic fait tourner environ 25000 itérations de boucle for par seconde.

« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas
. »
Keyboard a écrit (putain, comment on fait pour prendre des citations) :
oh cool ça, si ça permet d'accélerer le basic
Mais à la fin on aura un .89z ?
Ca na pas pour but d'accélérer le basic, c'est un langage différent. Néanmoins, newprog reprendra des éléments du tibasic comme les string, les labels, les affectations de variables (ie ->), la boucle while:endwhile mais c'est à peu près tout. J'ai voulu dire dans mon message que la ti est capable de précompilée le programme. On pourra utiliser des langages TIbasic sous newprog, ce sera beaucoup plus rapide, mais au final ca n'aura pas grand intérêt car il n'y aura pas assez dz fonctions compatibles.
En réponse a Zephir :
Tu as raison, c'est un langage tokenisé mais très peu interprété. Je vous explique le principe rapidement pour l'exécution des fonctions. Chaque fonctions Newprog a un numéro (comme en tibasci quoi) mais ce numéro permet de lancer directement la fonction car on peut récuperer l'adresse de la fonction dans une liste de fonction. En gros, le lancement d'une fonction c'est : *(Newprog_fonctions[num_fonctions])(); Donc ca reste très rapide.
Mais je ne ment pas sur la rapidité. Ca reste comme même très rapide.
En réponse a sasume :
Merci pour l'info concernant les noveaux basic sorti pour la 89, je ne les connaissait pas. En fait, il y a longtemps que je ne regarde plus les news. Neanmoins, pour ce qui est de ETP-basic, meme si il a l'air pas mal, il a l'inconvénient de ne pouvoir etre développé que sur PC ce qui n'est pas le cas avec Newprog. Pour ce qui est de GFA, j'ai l'impression que ce langage ce limite a des print a l'écran, alors que newprog permet d'exécuter des fonctions de bas niveau (acces a la mémoire, char, int, long, malloc...), interuptions, fonctions internes... Chaque basic a ses avantages et ses inconvenient, le mien sera parfiat pour ceux qui connaissent le C et qui veulent manipuler direct sur oncalc.
Non, in n'y aura pas de fichier 89z car apres la compilation (en fait, c'est une tokenisation simplifiée au maximum). Cela est du au fait qu'il n'existe déjà pas de compilateur assembleur serieux oncalc sur TI, donc c difficilement envisageable. Pour exécutée un programme Newprog, il faudra lancé la commande qbasic("newprog_out"). Pour obtenir "newprog_out", il faudra executer la commande cc("newprog_source").
Meme si on aura pas a 100% la puissance de l'ASM ou du C a tout moment, ca reste rapide. Je vais essayer ce soir les logiciels de bench que vous m'avez cités, si du moins ils sont pertinents dans mon cas. Je n'ai pas encoe fait de jeux, mais je vais tacher de réaliser un petit pong en niveau de gris et faire des screenshots pour vous donner un apercu de la puissance (même si pong étant un jeu simple, cela n'utilisera pas a 100% la puissance de la ti89).
J'ai néanmoins une crainte. J'ai peur que les personnes qui ne connaissent pas les bases du C ou de l'assembleur (les pointeurs quoi...) ne se détournent du langage. Comme vous dites, ils faudra que les programmeurs l'utilisent... Enfin, si ca ne plait pas, j'aurai mon langage puissant rien ka moi ! lol
Un exemple de code source de programme tres simple sera le suivant (dans l'éditeur de programme de la TI) :
Hello()
prgm
init()
//écrire des instructions tibasic ici possible
start //début de rédaction en Newprog
clrscr()
printf2("\n%s %s","Hello","World")
keywait()
mapl(va,1,1000,1,0h4c00,-1)
keywait()
end //fin de rédaction en Newprog
pause "fini"//écrire des instructions tibasic ici possible
endprgm
Cela affichera : Hello World à l'écran puis rendra tout noir l'écran (avec mapl).
Remarqué que l'on peut passer simplement du tibasic au NEwprog. L'exécution de ce programme executera d'abord les instructions tibasic puis Newprog puis tibasic (ie pause) automatiquement.
En réponse a zephyr :
Les variables NewProg sont au format long signé donc pas besoin de typage des données. Pour affecter 3 à la variable trois par exemple, on tape comme en basic :
3->trois , comme en basic.
Il y a aussi un mode d'exécution pas à pas, un editeur hexadécimal spécial Newprog.
Mais on pourra manipuler des listes, la mémoire en char, int, long, pointeurs.
Pour ce qui est des sections Tibasic dans les programme Newprog, c'est du tibasic pur, l'exécution ne sera pas plus rapide qu'en vrai basic. J'envisage de rajouter une fonction qui permettra d'utiliser les fonctions TIbasic avec des variables Newprog dans la zone de programme Newprog. Ce serait vraiment chouette. En effet, la lenteur du tibasic réside surtout dans le fait que le tios doit ouvrir chaque variable pour lire son contenu et ensuite la refermée ce qui est tres lent. J'ai une idée pour le faire...
Néanmoins, J'avoue que j'ai des doutes quand à la survie de Newprog car les utilisateurs trouveront peut être le langage pas assez intuitif. La détection des erreurs à la compilation n'est pas à son plus haut niveau. Je ne sais pas si je le mettrait sur internet, je préfère attendre qu'il soit bien peaufiner... GFA à l'air pas mal, il y a de la concurrence dans l'air même si il a l'air en standby depuis quelque temps...
euh, je parlais du NewProg, scusi.
Ouais, en fait je me rend compte qu'il y a pas mal de nouveaux langage oncalc sortie d'ici l'année dernière. Je pense aux basic tel que GFA mais surtout au compilateur assembleur et C on-calc tel que as() et cc().
J'aurais du sortir Newprog plus tot (du temps de flib et vertel), je suis sur que ca aurait marché du tonnere.
Je me demande si on peut exécutée une fonctions de notre ropre libraire avec cc et as. Avez-vous des infos (je suis peut etre Hors sujet) ?
Zeph Le 31/05/2006 à 23:18 yep, au moment où il n'y avait que flib et vertel, ton truc aurait surement bien marché vu qu'il est carrément plus interessant; par contre est-ce qu'il existait déjà ? ^^

All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez
par ici :)
Non, ca n'existait pas. Croit moi que si ca avait existé, j'aurais été au courant, j'étais a l'affut à l'époque !
Mais bon, je pense que je vais continuer a la developper Newprog, parceque avec cc, je crois pas qu'on puisse lancer des fonctions de libs. C'est dommage...
Sinon, concrètement il y a quoi de fait et que reste-t-il à faire, concernant Newprog ?

« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas
. »
Merci sasume pour ta réponse. Je n'arrive pas a mettre la main sur GTC. Je suis pas sur qu'il soit réellement sorti un jour si j'en crois ce qui est écrit sur le forum (même si ca date d'il y a 2 ans)...
Perso le top serait de faire un seul et unique projet.
Mon objectif pour GFA Basic est avant tout de l'intégré à Pedrom et permetter à Pedrom de remplacer l'AMS. Certe un langage de programmation ne suffit pas mais autour il est possible de développer un CAS...
Ce qu'il y a de fait :
* un précompilateur simpliste mais efficace
* des fonctions classiques : + - * / décalage de bits opérations logiques
* structures if then else endif ; While Endwhile ; lbl goto (meme syntaxe que le basic )
* Les fonctions de bases graphique : sprite, drawline, fillrect, scrolling
* fonctions classiques: printf, keywait, rowread, fopen, fputs, malloc...
* utilisation des expressions binaires et hexadécimales du tibasic
* les jsr rts
* les procédures, ie fonctions internes avec passage d'un seul argument possible (récursions possibles avec une puissance maximale de 20)
* 10 ou 20 interuptions, avec les fonctions qui vont avec pour gérer des évenements...
* 255 variables maximum. Il n'y a pas besoin de les définir en entete (comme en basic).
* des structures de données moyenement évolué, la liste du basic {1,2,3} crées un espace mémoire de type long avec les valeurs 1 2 et 3. Par contre, l'utilisation des [] n'est pas autorisé. Les strings définies simplements dans le programmes : "string"->ptr est autorisé.
Je vais résumé ce qu'il y a de PAS fait :
- pour le précompilateur :
* il resterait à afficher la ligne ou il y a une erreur de syntaxe si du moins il y en a une
* vérifier qu'il y a le bon nombre d'arguments pour chaque fonctions. C'est pas dur mais c'est chiant...
* le #define
* aussinon, ca roule pour le reste
- pour l'interpréteur :
* à pouvoir exporter et importer ses propres procédures même si on peut déjà le faire (par contre, c'est de la bidouille).
* Quelque fonctions qui pourrait être pratique, je sais pas moi, par exemple un petit moteur graphique capable de faire défiler des maps pour les jeux à partir d'une matrice ou de quelque chose comme ca. Ce sera plus simple que de le faire soit même (d'ailleur, c'est très chiant à faire). si vous connaissez des sources pour ca, ca m'intéresse
* a pouvoir exécuter du code assembleur directement dans le programme. Pour cela, ce sera juste un fichier asm que je chargerai. Pour cela il faudra utiliser la fonction asm_call de TIGCC. Je sais pas par contre ou trouver la base (ie le pointeur du début) du code assembleur a exécuter (peut etre juste apres les bytes de tailles du fichier ?!?). Je suppose que ca doit bien marcher pour une taille < 8kb...
* A pouvoir exécuter n'importe qu'elle fonction d'une lib kernel
J'ai un peu peur que ca dépasse mes compétences pour les deux dernieres.
Voila, je c'est que j'en ai oublié, mais je peux pas penser a tout aussi ! lol
En réponse a geogeo :
C'est sur que de faire un projet commum serai le mieu, mais moi je suis pas très bon en programmation, donc je pense que je ne suis pas a la hauteur pour GFA qui est pour moi de la "bonne" programmation, ce que je ne sais pas faire (j'aime bien avoir plein de warnings a l'écran, lol). En plus, je fais ma petite programmation de l'ordre de 1 heure par semaine, à mon rythme quoi... Pour GFA, il faudrait que je m'investisse beaucoup plus. J'ai pas la prétention d'être un Kevin Kofler...
Je me suis lancer dans ce projet car j'ai été frustré quand j'étais au lycée de ne pas pouvoir faire des jeux qui ne rament pas. Lorsque j'ai découvert Flib, ca a été une révolution, mais c'étais comme même limité par les fameux 50 ms de temps de lancement sans parler du temps de tokenisation. J'ai eu l'idée de faire un flib mais avec des variables internes pour la rapidité... Newprog est né
J'ai essayer de compiler avec GTC mais ca ne marche pas ! J'apercois rapidement un message qui me dit que ca compile et après plus rien. Il y en a t-il dans le même cas que moi ?