π
<-
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
Aucun vote
Je ne sais pas si ce projet est réellement utile
0
Aucun vote
Je trouve ce projet sans grand intérêt
0
Aucun vote
Je trouve ce projet totalement inutile
0
Aucun vote
 
Nombre total de votes : 2

[Projet] Ace Script

Message non lude 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: Tout sélectionner
#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: Tout sélectionner
// 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: Tout sélectionner
#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
Dernière édition par Clément.7 le 02 Nov 2014, 10:40, édité 3 fois.
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
Avatar de l’utilisateur
Clément.7
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Prochain niv.: 29.5%
 
Messages: 348
Inscription: 12 Juin 2013, 15:02
Localisation: Près de Nantes
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: IUT Informatique en 2017-2019
GitHub: ClementNerma

Re: [Projet] Ace Script

Message non lude 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
Avatar de l’utilisateur
Clément.7
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Prochain niv.: 29.5%
 
Messages: 348
Inscription: 12 Juin 2013, 15:02
Localisation: Près de Nantes
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: IUT Informatique en 2017-2019
GitHub: ClementNerma

Re: [Projet] Ace Script

Message non lude Adriweb » 18 Sep 2014, 15:39

Je deplace.

Projet ambitieux en tout cas ^^
Image

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...)
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 80.2%
 
Messages: 14616
Images: 1218
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

Re: [Projet] Ace Script

Message non lude 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: Tout sélectionner
#define nb
#define msg

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


donne

Code: Tout sélectionner
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: Tout sélectionner
#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: Tout sélectionner
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
Avatar de l’utilisateur
Clément.7
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Prochain niv.: 29.5%
 
Messages: 348
Inscription: 12 Juin 2013, 15:02
Localisation: Près de Nantes
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: IUT Informatique en 2017-2019
GitHub: ClementNerma

Re: [Projet] Ace Script

Message non lude 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: Tout sélectionner
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: Tout sélectionner
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: Tout sélectionner
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
Avatar de l’utilisateur
Clément.7
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Prochain niv.: 29.5%
 
Messages: 348
Inscription: 12 Juin 2013, 15:02
Localisation: Près de Nantes
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: IUT Informatique en 2017-2019
GitHub: ClementNerma

Re: [Projet] Ace Script

Message non lude 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...)
Image

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...)
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 80.2%
 
Messages: 14616
Images: 1218
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

Re: [Projet] Ace Script

Message non lude 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
Avatar de l’utilisateur
Clément.7
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Prochain niv.: 29.5%
 
Messages: 348
Inscription: 12 Juin 2013, 15:02
Localisation: Près de Nantes
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: IUT Informatique en 2017-2019
GitHub: ClementNerma

Re: [Projet] Ace Script

Message non lude 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 ^^
Image

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...)
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 80.2%
 
Messages: 14616
Images: 1218
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

Re: [Projet] Ace Script

Message non lude Clément.7 » 20 Sep 2014, 20:56

pourquoi pas un fibonacci ? je me lance !

EDIT :

Code: Tout sélectionner
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: Tout sélectionner
#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
Avatar de l’utilisateur
Clément.7
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Prochain niv.: 29.5%
 
Messages: 348
Inscription: 12 Juin 2013, 15:02
Localisation: Près de Nantes
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: IUT Informatique en 2017-2019
GitHub: ClementNerma

Re: [Projet] Ace Script

Message non lude 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
Avatar de l’utilisateur
Clément.7
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Prochain niv.: 29.5%
 
Messages: 348
Inscription: 12 Juin 2013, 15:02
Localisation: Près de Nantes
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: IUT Informatique en 2017-2019
GitHub: ClementNerma

Suivante

Retourner vers Langages alternatifs

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 15 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1581 utilisateurs:
>1561 invités
>15 membres
>5 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)