1

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

2

oh cool ça, si ça permet d'accélerer le basic smile
Mais à la fin on aura un .89z ?
[URL=http://www.ti-bank.fr]TI-BANK[/url]
Téléchargez tous vos cours BAC & prépas pour TI sur TI-BANK
[URL=http://tibank.forumactif.com]Forum TI-BANK[/url]
Aide en ligne massive pour tos vos pb TI

3

Présenté comme ça, ça a l'air plutôt interessant comme projet happy

Par contre j'aurais plusieurs questions : tu dis que le basicest "précompilé", que ton langage est compilé, je pensais donc qu'il était réellement compilé (par opposion au basic qui n'est pas compilé du tout mais tokenizé); par contre d'un autre coté tu dis que tu ne connais pas l'assembleur, ce qui semble être "un peu" incompatible avec un langage compilé... et la vitesse de ton truc semble être bien élevée pour un langage interpreté; bref, y'a moyen d'en savoir plus ? ^^
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

4

Intéressant.
On peut avoir des screens ?

5

Ça semble intéressant.
Mais est-ce que le langage sera vraiment utilisé ? On n'est pas à la première tentative de création d'un nouveau langage (small, GFA-Basic, ETP, GT-Basic [trigic]), mais aucun n'a vraiment été utilisé.
Pour ce qui est du bench, il il faut se baser sur autre chose qu'une simple boucle for...
avatar
« 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. »

6

Ici tu trouveras des infos pour effectuer des benchmarks plus pertinents : http://dada.perl.it/shootout/
avatar
« 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. »

7

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 ?
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La 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.

8

Zephyr> Il a dit que c'est du bytecode, donc ça doit être comme le basic, mais plus rapide car plus optimisé hehe
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

9

Pour info, GFA-Basic fait tourner environ 25000 itérations de boucle for par seconde.
avatar
« 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. »

10

Un test sous Tiemu me donne 1350 itérations par seconde pour Lua89 sad Faudra que je teste oncalc...
avatar
« 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. »

11

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.

12

Bon, pour lua89 oncalc, je trouve environ 1450 itérations vides de boucle for par seconde.
C'est bien peu sad
avatar
« 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. »

13

Brunni :
Zephyr> Il a dit que c'est du bytecode, donc ça doit être comme le basic, mais plus rapide car plus optimisé hehe

Ah oui exact j'ai lu trop vite happy
Alors pour le coup ça me semble effectivement très rapide pour de l'interpreté, peut-être est-ce simplement parcequ'en effet une boucle for n'est pas le meilleur bench possible happy

Sasume > oui mais en GFA basic toutes les variables sont typées (avec cet affreux suffixe ^^) ce qui permet effectivement une plus grande vitesse, mais du coup c'est totalement incompatible avec le Ti-Basic; je ne sais pas ce qu'il en est pour "NewProg", mais si il est aussi proche du basic que l'auteur le dit, on peut esperer qu'il respecte ce point également smile
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

14

Pour GFA Basic reste juste des fonctions à coder, le moteur est là.
http://www.tigen.org/gfabasic

Ce langage à la base possède 250 fonctions, actuellement 85 fonctions ont été développées. De plus autour il existe une bibliothèque de polices, un gestionnaire de récupération d'erreurs, un éditeur de code source qui viendra avec la possibilité d'inclure des bibliothèques.
J'attend la fin des partiels pour m'y remettre.

avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

15

Hum des fonctions 'achement avancées en Ti-Basic comme flib et vertel, pas mal happy
Mais reste à savoir si on pourra vraiment exploiter ça correctement, parce que j'ai des doutes quant à faire un jeu en niveaux de gris avec cette lib sorry

16

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...

17

Donc en fait ça revient juste à faire une bibliothèque de fonctions "inline", mais si le basic de base n'en profite pas du tout je trouve effectivement ça moins intéressant que ce que laissait entendre le premier post.
Ceci dit, je ne programme plus en basic, donc je parle dans l'absolu grin
Enfin bonne continuation quand même happy
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La 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.

18

naPO :
Hum des fonctions 'achement avancées en Ti-Basic comme flib et vertel, pas mal happy
Mais reste à savoir si on pourra vraiment exploiter ça correctement, parce que j'ai des doutes quant à faire un jeu en niveaux de gris avec cette lib sorry
Euh, tu parles de quoi ?
avatar
« 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. »

19

euh, je parlais du NewProg, scusi.

20

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) ?

21

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à ? ^^
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

22

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...

23

mywell
: 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) ?

Si tu fais référence au libs kernel, non on ne peut pas linker les programmes aux lib kernel.
CC est très limité malheureusement. On est obligé de se cantonner au _notsub, et comme il n'y a pas de linker, il n'y pas vraiment la possibilité d'utiliser de librairie statiques comme avec tigcc.

Comme compilateur C oncalc, il ya GTC aussi smile Mais je ne sais pas quelle sont ses specs précises... Pollux ?
avatar
« 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. »

24

Sinon, concrètement il y a quoi de fait et que reste-t-il à faire, concernant Newprog ?
avatar
« 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. »

25

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)...

26

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...
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

27

mywell :
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)...

Pollux en a parlé il n'y a pas longtemps : http://membres.lycos.fr/ltech/beta/. (pour le faire marcher oncalc tu auras besoin d'un certificat de TI ).
avatar
Combien de tas de bois une marmotte pourrait couper si une marmotte pouvait couper du bois ?

28

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

29

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é

30

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 ?