π
<-
Chat plein-écran
[^]

[Projet] Ace Script

Assembleur, Axe, C/C++, ICE...

Quel est votre avis quant à l'Ace Script ?

J'aimerais prendre part au développement du projet
1
50%
J'aimerais programmer en Ace Script lorsqu'il sera terminé
1
50%
Je trouve ce projet intéressant/prometteur mais ce langage ne m'intéresse pas
0
No votes
Je ne sais pas si ce projet est réellement utile
0
No votes
Je trouve ce projet sans grand intérêt
0
No votes
Je trouve ce projet totalement inutile
0
No votes
 
Total votes : 2

[Projet] Ace Script

Unread postby Clément.7 » 17 Sep 2014, 17:59

Bonjour à tous !

Récemment, j'ai en l'idée de créer un nouveau language de programmation simple qui permettrait, une fois compilé, de réaliser toutes sortes de programmes pour TI z80 ou du moins pour TI-83 Plus...

Concrètement, il serait compilé en C avec z88dk et convertit avec devpac8x, le problème est que je ne saurais jamais convertir de l'Ace Script en Asm z80 (qui est bien trop compliqué pour moi même si j'ai appris à l'utiliser), donc je propose ce projet à qui sera interessé et pourrait m'aider à créer le compilateur Ace Script...

Je vous montre tout de suite la syntaxe de l'Ace Script : (attention la colorisation n'est pas bonne puisque ti planet ne connait pas l'ace script il croit que c'est du javascript ou du c

Code: Select all
#define msg
#define nb
function msg(nb) {
   nb++;
   Screen.write(nb + ': ' + msg);
   return nb;
}

msg = 'Bonjour !';
nb = msg(nb);


Comme vous pouvez le constater, il possèdera une bibliothèque de fonctions détaillées ci-dessous.

Syntaxe


Code: Select all
// Définir une variable
#define nom_de_la_variable

// Modifier une variable
variable = 'texte';
variable = "texte";
variable = 1;
variable++; // variable = 2
variable--;
variable *= 2; // variable = 2
variable = 'a';
variable += 'b'; // variable = 'ab'

variable = int_array(1, 2);
variable = int[1, 2];

variable = string_array('a', 'b');
variable = string['a', 'b'];

variable = hex_array(0, 57, 255);
variable = hex[0, 57, 255];

// Les tableaux de type hex possèdent une fonction toString();

variable = md_int_array(int_array(1, 2), int_array(3), int_array(4));
variable = md_int[int[1, 2], int[3], int[4]];

// Un tableau int ne pourra contenir que des nombres
// Un table md_int ne pourra contenir que des tableaux int
// Supprimer une variable
#undefine nom_de_la_variable

// Définir une fonction
function nom_de_la_fonction(argument_1, argument_2, argument_3) {
   // Code
   return "dutexte";
}

// Exécuter une fonction
fonction('coucou', 2, false);

// Conditions
if(variable1 == 'texte') {
   // Code
} elseif(!variable1 == 'texte...') {
   // Code
} else {
   // Code
}

// Boucles
#define fornb

for(fornb = 0; fornb < 50; fornb++) {
   // Code
}

while(false == false) {
   // Code
}

// Labels
:nom_du_label
// Code
goto nom_du_label


Bibliothèque


Les noms de fonctions tels que Screen.write() correspond en réalité à la fonction S_Screen_Write(), les variables V_nomdelavariable, les fonctions F_nomdelafonction,

Code: Select all
#define false = 0;
#define true = !false;

Screen // Permet d'utiliser l'écran
Screen.write(text);   // Affiche un texte à l'écran
Screen.read();         // Lit le texte afficher à l'écran et le retourne sous forme d'une chaîne de caractères
Screen.output(x, y, text); // Affiche le texte à une position déterminée (x = 0 to 15 and y = 0 to 7)
Screen.clear();     // Efface l'écran

Screen.graph // Permet d'utiliser l'écran graphique
Screen.graph.on(x, y);  // Allume un pixel de l'écran graphique
Screen.graph.off(x, y); // Éteint un pixel de l'écran graphique
Screen.graph.get(x, y); // Permet de savoir si un pixel de l'écran graphique est allumé
Screen.graph.clear();   // Efface l'écran graphique
Screen.graph.show();    // Efface l'écran texte puis affiche l'écran graphique
Screen.graph.use(scr);  // Spécifie l'utilisation de l'un des cinq écrans (tous des md_int) qui seront ensuite affichés

Screen.graph.line(x, y, nx, ny);     // Trace une ligne sur l'écran graphique
Screen.graph.circle(x, y, radius);   // Trace un cercle sur l'écran graphique
Screen.graph.rect(x, y, nx, ny);     // Trace un rectangle vide  sur l'écran graphique
Screen.graph.fillRect(x, y, nx, ny); // Trace un rectangle plein sur l'écran graphique


Keyboard // Permet d'utiliser le clavier, les codes de touches sont les mêmes qu'en TI-Basic
Keyboard.get();  // Permet de récupérer la touche actuellement pressée
Keyboard.last(); // Permet de récupérer la dernière touche pressée par l'utilisateur
Keyboard.bas();  // L'équivalent de getKey en TI-Basic (mémorise la dernière touche puis s'efface)

Files // Permet d'utiliser le système de fichiers
Files.write(name, value);    // Écrit dans un programme
Files.writeHex(name, value); // Écrit un contenu hexadécimal dans un programme, value doit être un tableau hex
Files.read(name);       // Lit le contenu d'un programme, false si erreur
Files.exists(name);       // Permet de savoir si un programme existe
Files.delete(name);       // Supprimer un programme
Files.list();       // Retourne un tableau de string contenant le nom de tous les programmes existants
Files.archive(name);       // Mets un programme en mémoire d'archive
Files.unarchive(name);       // Mets un programme en mémoire vive
Files.isarchived(name);      // Permet de savoir si un programme est archivé

Files.appvar // Permet d'utiliser les appvar, les fonctions sont les mêmes que pour Files
Files.prgm   // L'équivalent de Files, mais permet de mieux s'y retrouver quand on code
Files.apps   // Permet d'utiliser les applications, je ne sais pas quelles fonctions j'y mettrais...
             // Files.apps n'existera que si ça doit vraiment servir puisque l'Ace Script est à la base pour les jeux vidéos


Maths


Les nombres seront gérés en 16 bits (de 0 à 65535), soit 2 octets. Les opérations mathématique seront comme en Axe (sauf qu'on ne pourra assigner de valeurs à des variables dans une op. mathématique)

Sprites & Maps



Pour l'instant, pas de sprites, pas de maps, ni même d'hexadécimal, j'attends vos avis sur le projet pour implémenter des fonctions pour utiliser des tiles, des tilesmap et des fonctions pour gérer l'hexa (genre une fonction qui convertit un sprite hexa en md_int pour dessiner ensuite le sprite, je sais pas trop)
Mon but principal est de gérer les jeux en tout genre, donc ces fonctions-là viendront de toute façon si je crée un compilateur Ace Script.
Compilation


Très simple : on fait du C.
On crée un fichier compile.c, on mets dedans les header + les fonctions de la bibliothèque nécessaires pour le programme + le code du prog. Ace Script convertit en asm z80.
Au niveau de l'éditeur, je suis prêt à me lancer dans la conception d'un logiciel qui fairait IDE, compilateur et émulateur de programmes AceScript.

A noter que pour l'instant, je ne songe qu'à faire un compilateur PC pour Windows, si le projet est mené à terme pourquoi pas ne pas faire des compilateurs Linux et Mac voire même un compilateur on-calc !

Pour résumer



J'ai uniquement besoin de vos avis (j'espère qu'ils seront positifs :)) et d'un gentil petit développeur qui voudrait bien m'aider à créer un programme pour convertir du code AceScript en code Asm z80 (idem pour la bibliothèque AceScript).
Voilà ! Dites-moi ce que vous en pensez et si quelqu'un souhaite se lancer avec moi dans ce gros projet...

EDIT : je vous donne le lien de la discussion espace ti hihi quelle nouille je fais j'avais oublié http://espace-ti.forumactif.com/t1080-ace-script
Last edited by Clément.7 on 02 Nov 2014, 10:40, edited 3 times in total.
Toujours plus loin, toujours plus haut, toujours plus geek !
Créateur du projet Haskier : Jouer ! Sujet sur OpenClassrooms
Programmez en UnderBasic ! https://tiplanet.org/forum/viewtopic.php?t=19009&p=207260
User avatar
Clément.7
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Level up: 29.5%
 
Posts: 348
Joined: 12 Jun 2013, 15:02
Location: Près de Nantes
Gender: Male
Calculator(s):
MyCalcs profile
Class: IUT Informatique en 2017-2019
GitHub: ClementNerma

Re: [Projet] Ace Script

Unread postby Clément.7 » 18 Sep 2014, 14:45

Oups je me suis trompé de catégorie pourriez-vous déplacer ce sujet dans "Programmation alternative" s'il vous plaît ?
Toujours plus loin, toujours plus haut, toujours plus geek !
Créateur du projet Haskier : Jouer ! Sujet sur OpenClassrooms
Programmez en UnderBasic ! https://tiplanet.org/forum/viewtopic.php?t=19009&p=207260
User avatar
Clément.7
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Level up: 29.5%
 
Posts: 348
Joined: 12 Jun 2013, 15:02
Location: Près de Nantes
Gender: Male
Calculator(s):
MyCalcs profile
Class: IUT Informatique en 2017-2019
GitHub: ClementNerma

Re: [Projet] Ace Script

Unread postby Adriweb » 18 Sep 2014, 15:39

Je deplace.

Projet ambitieux en tout cas ^^

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.4%
 
Posts: 14670
Images: 1118
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb

Re: [Projet] Ace Script

Unread postby Clément.7 » 18 Sep 2014, 18:07

Ambitieux, c'est sûr mais j'ai déjà commencé le compilateur (en fait pour l'instant je fais un compilateur online en temps réel : on code et le code compilé apparait à côté), le plus je pense c'est de gérer le fait que l'utilisateur n'a pas besoin de déclarer le type de sa classe...

Code: Select all
#define nb
#define msg

function mine(arg1, arg2) {
     Screen.write('hello world !');   
}


donne

Code: Select all
ace_var V_nb;
ace_var V_msg;

char F_mine(char arg1, char arg2) {
     S_Screen_write('hello world !');   
}


la classe acevar pour pouvoir gérer les tableaux, les string, les nombres, etc.

P.S. : merci d'avoir déplacé le sujet

Mise à jour 1

Code: Select all
#define nb
#define msg

function mine(arg1, arg2) {
    nb = 2
    nb = 3
    int = md_int[1, 2, '3']
   
    mine(1, 2)
    Screen.graph.on(1, 2)
}


donne

Code: Select all
ace_var V_nb('');
ace_var V_msg('');

ace_var F_mine(ace_var arg1, ace_var arg2) {
    V_nb.setValue('2');
    V_nb.setValue('3');
    V_int.setValue('md_int[1, 2, \'3\']');
   
    F_mine(new ace_var('1'), new ace_var('2'));
    F_S_Screen_graph_on(new ace_var('1'), new ace_var('2'));
}


comme vous pouvez le constater (pour ceux qui s'embêtent à lire ce code un peu compliqué), setValue est une fonction de la classe ace_var qui permet d'en modifier la valeur.
Toutes les fonctions prennent des ace_var en argument car cette classe permet une grande flexibilité (possibilité d'y mettre des tableaux, des nombres, des string, etc.)
Toujours plus loin, toujours plus haut, toujours plus geek !
Créateur du projet Haskier : Jouer ! Sujet sur OpenClassrooms
Programmez en UnderBasic ! https://tiplanet.org/forum/viewtopic.php?t=19009&p=207260
User avatar
Clément.7
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Level up: 29.5%
 
Posts: 348
Joined: 12 Jun 2013, 15:02
Location: Près de Nantes
Gender: Male
Calculator(s):
MyCalcs profile
Class: IUT Informatique en 2017-2019
GitHub: ClementNerma

Re: [Projet] Ace Script

Unread postby Clément.7 » 20 Sep 2014, 09:35

Sortie du compilateur en ligne version bêta 0.1 : https://ace-script.olympe.in

Ce compilateur, bien que n'étant pas parfait, vous permet de compiler la plupart des fonctions ace script, à savoir :

- Définir une variable
- Modifier la valeur d'une variable
- Définir des fonctions et les utiliser
- Utiliser des fonctions de la bibliothèque (Screen.write, etc.)

Les variables se définissent désormais de la manière suivante :

Code: Select all
define mavariable


et uniquement en début de fonction !

Attention ! Les tableaux multi-dimensionnels ne sont pour l'instant pas gérés par le compilateur, et les tableaux se définissent désormais de la manière suivante :

Code: Select all
define tableau
tableau = [1, 2, 3]
tableau = ['a', 'b', 'c']


Pour utiliser des variables dans une définition, procédez de la manière suivante :

Code: Select all
define string1
define string2
define nombre1
define nombre2

nombre1 = 2;
string1 = 'salut';
nombre2 = nombre1.val + 1; // nombre2 = 3
string2 = string1.str + ' !'; // string2 = 'salut !';


A noter que le compilateur ne gère pas la vérification syntaxique (détecter s'il y a des erreurs de syntaxe), et que la bibliothèque Ace Script est encore en cours de développement (vous ne pourrez donc pas utiliser ces fonctions-là)

Utilisez l'option "code final" en haut à droite sur la page du compilateur pour obtenir le code complet à compiler par z88dk.

EDIT : C'est bizzarre y a des erreurs quand je compile avec z88dk mais pas avec codeblocks...
EDIT : Yes c'est bon j'ai juste mis 1 heure à résoudre les problèmes maintenant le code peut etre compilé et ne plante pas une fois sur la ti
Toujours plus loin, toujours plus haut, toujours plus geek !
Créateur du projet Haskier : Jouer ! Sujet sur OpenClassrooms
Programmez en UnderBasic ! https://tiplanet.org/forum/viewtopic.php?t=19009&p=207260
User avatar
Clément.7
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Level up: 29.5%
 
Posts: 348
Joined: 12 Jun 2013, 15:02
Location: Près de Nantes
Gender: Male
Calculator(s):
MyCalcs profile
Class: IUT Informatique en 2017-2019
GitHub: ClementNerma

Re: [Projet] Ace Script

Unread postby Adriweb » 20 Sep 2014, 19:06

Bien joué :)

Une idee de la taille du programme compilé, sur la TI ?
(C'est ca le point noir, en fait...)

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.4%
 
Posts: 14670
Images: 1118
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb

Re: [Projet] Ace Script

Unread postby Clément.7 » 20 Sep 2014, 19:10

C'est du C compilé par z88dk donc c'est assez léger...
Tout programme fait un minimum de 2 ko après la taille augmente très lentement (il faut vraiment avoir un assez gros code pour passer à 3 ko... donc ce sont des petits programmes)
Bon par contre j'ai oublié de préciser pour l'instant toutes les variables possèdent un tableau md_int et md_str qui contiennent chacun une capacité de 50 entrées, va falloir que j'implémente un truc pour adapter le nombre d'entrées en fonction de ce que veux l'utilisateur sinon pour ceux qui n'utilisent pas tout ça va faire de la mémoire gaspillée et pour les autres baaaaaaah... il seront bloqués
Je verrais ça demain ce soir je suis trop fatigué !
(en même temps après 1h de regex pcre en php...)
Toujours plus loin, toujours plus haut, toujours plus geek !
Créateur du projet Haskier : Jouer ! Sujet sur OpenClassrooms
Programmez en UnderBasic ! https://tiplanet.org/forum/viewtopic.php?t=19009&p=207260
User avatar
Clément.7
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Level up: 29.5%
 
Posts: 348
Joined: 12 Jun 2013, 15:02
Location: Près de Nantes
Gender: Male
Calculator(s):
MyCalcs profile
Class: IUT Informatique en 2017-2019
GitHub: ClementNerma

Re: [Projet] Ace Script

Unread postby Adriweb » 20 Sep 2014, 19:38

2ko restent un peu "gros" pour certaines z80, mais ca reste raisonnable quand meme :)

A quand le premier screenshot d'un programme ? :P

Avec un algo de base ... de ton choix, genre un Fibonacci(10) ou autre ^^

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.4%
 
Posts: 14670
Images: 1118
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb

Re: [Projet] Ace Script

Unread postby Clément.7 » 20 Sep 2014, 20:56

pourquoi pas un fibonacci ? je me lance !

EDIT :

Code: Select all
define suite
suite.ud_val[0] = 0;
suite.ud_val[1] = 1;

for(i, 2, 18) {
    suite.ud_val[i] = suite.ud_val[i - 2] + suite.ud_val[i - 1];
    printf("%d\n", suite.ud_val[i]);   
}


le code C convertit :

Code: Select all
#include <stdio.h>

typedef struct ace_var ace_var;

struct ace_var {
    int val;
    char* str;

    int* ud_val[50];
    char* ud_str[50];
};



int main() {
    ace_var suite;
    int i;

    suite.val = 0;
    suite.str = "";
    suite.ud_val[0] = 0;
    suite.ud_val[1] = 1;
   
    for(i = 2; i <= 18; i++) {
        suite.ud_val[i] = suite.ud_val[i - 2] + suite.ud_val[i - 1];
        printf("%d\n", suite.ud_val[i]);   
    }
   
    return 0;
}


j'ai compilé mais je n'ai pas réussi à envoyer sur ma ti il me dit "unable to communicate with the calculator. Please check your connection." c'est bizzarre !

EDIT : j'ai testé sur Wabbit Emu ça fonctionne parfaitement !
EDIT : j'ai oublié le screenshoot j'avais pas vu :D je vais faire ça dans la semaine
Toujours plus loin, toujours plus haut, toujours plus geek !
Créateur du projet Haskier : Jouer ! Sujet sur OpenClassrooms
Programmez en UnderBasic ! https://tiplanet.org/forum/viewtopic.php?t=19009&p=207260
User avatar
Clément.7
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Level up: 29.5%
 
Posts: 348
Joined: 12 Jun 2013, 15:02
Location: Près de Nantes
Gender: Male
Calculator(s):
MyCalcs profile
Class: IUT Informatique en 2017-2019
GitHub: ClementNerma

Re: [Projet] Ace Script

Unread postby Clément.7 » 01 Oct 2014, 08:50

ce langage n'est pas encore aussi simple que je le voudrais je vais devoir me concentrer encore plus sur le compilateur mais ça risque d'être plus difficile pour moi de continuer à le faire (disons qu'il va falloir que je crée un petit parseur...)

'fin bon, quand on aime on ne compte pas, comme on dit :D

Attention maintenant le compilateur n'est plus disponible sur Olympe pour le moment il faut aller sur http://ace-script.890m.com
Toujours plus loin, toujours plus haut, toujours plus geek !
Créateur du projet Haskier : Jouer ! Sujet sur OpenClassrooms
Programmez en UnderBasic ! https://tiplanet.org/forum/viewtopic.php?t=19009&p=207260
User avatar
Clément.7
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Level up: 29.5%
 
Posts: 348
Joined: 12 Jun 2013, 15:02
Location: Près de Nantes
Gender: Male
Calculator(s):
MyCalcs profile
Class: IUT Informatique en 2017-2019
GitHub: ClementNerma

Next

Return to Langages alternatifs

Who is online

Users browsing this forum: No registered users and 10 guests

-
Search
-
Social TI-Planet
-
Featured topics
"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.
Offre de test des nouveautés de rentrée 2024 par Casio. Enseignant(e), reçois gratuitement 1 exemplaire, à ton choix, de la Graph Light ou bien de la Graph Math+
14€ remboursés par Casio sur l'achat de ta calculatrice Graph 35 d'ici le 31 Octobre 2024
10€ remboursés par Casio sur l'achat de ta calculatrice Graph 90+E d'ici le 31 Décembre 2024
10€ remboursés par Casio sur l'achat de ta calculatrice Graph 25 d'ici le 31 Décembre 2024
8€ remboursés par Casio sur l'achat de ta calculatrice Graph Math+ d'ici le 31 Octobre 2024
Reprise de ton ancienne fx-92 Collège ou Graph 25/35/90 à 3€ peu importe son état. Même non fonctionnelle et donc invendable, même ancienne Graph 35 non conforme aux programmes (pas de Python), même ancienne Graph 25/35 inutilisable aux examens (pas de mode examen) et donc invendable. Etiquette de retour fournie, pas de frais de port à payer.
3€ remboursés par Casio sur l'achat de ta calculatrice fx-92 Collège d'ici le 30 Septembre 2024
5€ de remise immédiate sur l'achat de ta calculatrice TI-83 Premium CE Edition Python chez les revendeurs partenaires
4€ de remise immédiate sur l'achat de ta calculatrice TI-82 Advanced Edition Python chez les revendeurs partenaires
3€ de remise immédiate sur l'achat de ta calculatrice TI-82 Advanced chez les revendeurs partenaires
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
1234567891011121314
-
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.
1340 utilisateurs:
>1328 invités
>7 membres
>5 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)