Visiteurs :
Si vous souhaitez soumettre un logiciel veuillez prendre contact avec un administrateur seuls à pouvoir ajouter des logiciels par mesure de sécurité.
BIDE (Basic IDE) est un éditeur de texte pour programmes Basic Casio (.g1m, .g2m, .g3m, .g1r, .g2r) permettant d'éditer vos programmes basic sur PC, afin de ne pas être limité par la calculatrice (écran monochrome 6*21, faible vitesse de frappe...)
Il nécessite Java 8, s'il vous fait une erreur dès le lancer et que vous n'avez pas java d'installé vous devez le télécharger ici. Les sources sont ici.
Features :
- Support de la totalité des caractères casio
- Deux polices disponibles :
DejaVu Avec Casio (basée sur DejaVu Sans Mono)
DejaVu Avec Casio (basée sur DejaVu Sans Mono)
Casio Graph
Casio Graph
- Features d'un éditeur de texte : Ctrl+Z, Ctrl+F, Ctrl+S, coloration syntaxique, tabulations, autocomplétion
- Editeur (très) basique de pictures/captures
- Conversion png <-> picture
- Supporte les pictures qui ne font pas 2048 octets (voir Picture 1024)
- Gestion de mot de passe
- Escape hexadécimale avec &#XX; ou &#XXXX;
- Gestion des macros
- Customisation (couleur du texte, du fond, etc)
- Importation automatique sur l'émulateur Manager PLUS
- Générateur de Multi Drawstat
- Sélecteur de caractère
- Utilisation possible en CLI
- Benchmark pour optimiser les programmes
FAQ :
- À quoi servent les boutons du menu ?
B : créer un programme basic
P : créer une picture
C : créer une capture
- Comment insérer => (ou ->, <=, >=, !=) dans un string sans que ça fasse ⇒, →, ≤, ≥, ≠ ?
Il faut remplacer le '-' ou '=' par &-; ou &=;
- Comment entrer du texte sans qu'il soit interprété en tant que commandes (ce qui fait une erreur lors de la sauvegarde en g1m) ?
Il faut utiliser la directive #nocheck, par exemple :
#Program name: Physique
#Password: <no password>
#nocheck //votre cours ici
- Pourquoi il y a des caractères chelous dans mes strings ? (&n_stat;, FD4; etc)
Pour faire simple : vous pouvez laisser ça, si ça vous gêne pour la lecture ou autre vous pouvez faire Tools -> Clean up strings.
Explications détaillées
Explications détaillées
Le basic casio fonctionne avec un système d'opcodes : chaque instruction, ou caractère, correspond à un et un seul nombre. Ainsi, l'opcode "If" est différent des caractères "I" et "f". Comment donc différencier les deux ?
La calculatrice différencie les 2 internalement, ce qui fait par exemple que le curseur ne peut pas se mettre au milieu de l'opcode "If" car il le considère comme un seul caractère. Ce n'est pas le cas si vous tapez les lettres "I" et "f" manuellement.
Mais BIDE n'a aucun moyen de différencier les 2, ici il n'y a que des lettres. En dehors des strings/commentaires, la solution est simple : étant donné qu'il ne peut pas y avoir de lettre minuscule sans causer une erreur de syntaxe, BIDE assume toujours que c'est l'opcode.
Toutefois, dans les strings, il peut y avoir les 2, et là la seule manière de les différencier est de les représenter autrement. En effet, si lors de l'importation BIDE convertissait l'opcode et les caractères tous deux en "If", lors de l'exportation en g1m il n'y a aucun moyen de savoir s'il faut convertir en opcode ou en caractères.
L'autre représentation est ainsi une entité ; ici, la lettre "n" est représentée par la lettre "n", et l'opcode n_stat (visuellement "n") est représenté par &n_stat;.
Maintenant, pourquoi il y a plein d'opcodes dans vos strings au lieu qu'il y ait des lettres ? Tout simplement parce que vous avez tapé vos strings avec l'éditeur intégré de FA-124. FA-124 est confronté au même problème que BIDE : impossible de différencier les opcodes et caractères lors de la conversion texte -> g1m. FA-124 applique une politique de "toujours convertir en opcode quand c'est possible". Du coup, vos "n" se retrouvent convertis en l'opcode "n stat". En soi ça ne pose pas de problème, sur la calculatrice c'est visuellement pareil.
BIDE fait la différence entre "lettre n" et "opcode n_stat" et montre donc cette différence. Maintenant, pourquoi ne pas faire pareil que FA-124 et traiter tout en tant qu'opcode quand possible ? Tout simplement parce que certains programmes ne fonctionneraient plus : par exemple, si je cherche la lettre "s" dans un string, et que manque de bol cette lettre a été remplacée par l'opcode "se", la recherche donnera de mauvais résultats. Dans l'autre sens (toujours traiter en tant que caractère quand c'est dans un string) ça cause des problèmes aussi, notamment à cause de la fonction Exp() qui exécute le contenu d'un string. Ainsi un string contenant des opcodes (Xor, Or, etc) qui auraient été convertis en lettres ferait une erreur syntaxe (exemple).
Tout ça est assez compliqué, mais c'est le basic casio qui rend la tâche compliquée ; convertir texte <> g1m n'est pas toujours facile.
- Comment éditer une picture/capture ?
Appuyez sur clic gauche pour faire du noir, et clic droit pour faire du blanc. Je conseille d'éditer dans un éditeur d'image externe, l'éditeur de BIDE n'étant pas très poussé.
- Pourquoi il y a 2 cadres dans les pictures ?
Une explication détaillée est fournie par Picture 1024. N'éditez pas le 2e cadre (ni la taille de la picture) si vous ne savez pas ce que vous faites.
- Quelle est la différence entre g1m, g2m, g3m, g1r et g2r ?
Aucune différence au niveau du format, sauvegarder ou renommer un g2r en g1m le rendra toujours lisible.
- Puis-je utiliser BIDE pour Classpad/Prizm ?
BIDE est conçu (et testé) sur les calculatrices monochromes, mais il reste possible de l'utiliser pour Prizm (ou Graph 90+E) car le format g3m est le même que le g1m. Les opcodes spécifiques à la Prizm sont également ajoutés. Toutefois, il n'est pas possible d'utiliser des pictures, qui sont dans un format différent.
Les Classpad ont un format totalement différent, il n'est donc pas géré.
- Le générateur de Multi Drawstat me génère des sprites inversés ou déformés, comment je fais ?
Il faut bien mettre votre ViewWindow à 1,127,0,63,1,0,0,1,1 (origine en haut à gauche). Vous pouvez également utiliser le macro graphxyVWin() ou initGraphScreen() qui fera ça.
- À quoi servent "show character list" et "show syntax coloration test" ?
Cela ne vous servira surement pas, "show character list" montre une liste de tous les caractères casio (pour ceux voulant utiliser une autre police) et "show syntax coloration test" est pour tester une coloration syntaxique qui pourrait être implémentée sur un autre éditeur.
Utilisation en CLI
Utilisation en CLI
L'utilisation est toute simple, il y a 2 commandes : --to-g1m target.g1m prog1.bide prog2.g1m ... --to-txt target.bide prog1.bide prog2.g1m ...
Les fichiers .bide sont tout simplement des fichiers texte, attention à bien respecter la syntaxe (les directives de préprocesseur). Pour mettre plusieurs programmes dans un seul fichier .bide, il faut les séparer par #End of program.
Utilisation des macros
Utilisation des macros
Les macros se définissent comme en C, avec #define text replacement, ou #define fonction(a,b) a+b.
Ainsi, si vous utilisez la variable M pour la vie du joueur, vous pouvez faire #define vieJoueur M.
Quelques choses à savoir sur les macros :
- Sauvegarder en .g1m ne conserve pas les macros. Pour les conserver, il faut enregistrer en .bide (fichier texte).
- Les macros sont définis sur l'ensemble des programmes, peu importe où ils sont déclarés. En cas de conflit, c'est le macro déclaré en premier qui l'emporte. Par exemple dans le code suivant :
#define vieJoueur A
vieJoueur -> C
#define vieJoueur B
vieJoueur -> D
Dans les 2 cas, vieJoueur sera remplacé par A.
- Les macros ignorent les strings/commentaires
- Les macros ont une priorité sur les opcodes
- Les macros sont classés dans l'ordre alphabétique inversé
- Les lignes comportant des macros peuvent fausser la colonne donnée en cas d'erreur
- Les macros supportent les fonctions
- Il est déconseillé d'overloader des macros (utiliser un macro dans un autre macro)
Utiliser l'émulateur
Utiliser l'émulateur
Pour utiliser l'émulateur, il faut être sous Windows (normal, l'émulateur ne marche que sous windows) et avoir l'émulateur Manager PLUS (il doit y avoir "manager plus" dans le titre).
Il faut également l'activer dans les options : mettez "runOn" en "emulator".
Lors de la première utilisation de l'émulateur, il peut être un peu lent (en particulier lors de l'ouverture de l'explorateur de fichiers), s'il vous fait une erreur il faut alors re-sauvegarder.
Les erreurs que vous pouvez avoir sont :
- "Could not find emulator" : l'émulateur n'est pas ouvert.
- "Could not find memory menu" : plusieurs cas sont possibles.
Parce que BIDE appuie automatiquement sur les touches nécessaires, il comporte des sécurités : ici, l'image de l'émulateur ne correspond pas à l'image de référence, il s'arrête donc (sinon il continue, et bonne chance pour le stopper )
Si l'émulateur n'affiche effectivement pas le menu mémoire, il faut se positionner sur le menu des programmes pour que ça fonctionne.
Ensuite, regardez si vous n'avez pas redimensionné l'émulateur (taille de l'écran, ou taille de la fenêtre). Il est parfois nécessaire de le redémarrer.
Si l'écran de mémoire s'affiche correctement, mais qu'il n'est pas à la bonne place, il faut changer les coordonnées de l'écran dans les options de BIDE en se basant sur celles de votre émulateur. Pour les savoir, faites un screenshot (tools -> take emulator screenshot).
Si vous avez un émulateur différent (par exemple celui de Graph 90) il est alors nécessaire de changer les images de référence (directement dans le .jar), et peut être les dimensions de l'écran.
- "Couldn't open file system" : soit l'explorateur de fichiers s'est ouvert trop tard (réessayez), soit il ne s'est pas ouvert du tout (ce qui est bizarre).
Faire un benchmark
Faire un benchmark
Pour faire un benchmark, il faut utiliser les macros beginBenchmark() et endBenchmark(), à placer au début et à la fin de chaque test. Ensuite, importez votre programme sur émulateur, puis exécutez le. Enfin, faites Tools->Run Benchmark.
Les benchmarks sont limités à 10 secondes, et ont une précision d'environ +/- 75ms.
Créer une police
Créer une police
Si vous voulez créer une police de caractères, il faudra un peu de boulot.
Tout d'abord, je vous conseille de choisir une police qui supporte déjà beaucoup de caractères unicode, ça vous évitera de refaire les caractères russes et grecs (et il y en a beaucoup). Regardez aussi pour les formes géométriques et les symboles mathématiques.
Pour faire la police, FontStruct vous permet de créer une police de toutes pièces (c'est ce que j'ai utilisé pour la police Casio) mais vous aurez de toute façon besoin de FontForge. Si vous voulez utiliser une police déjà existante, vous n'aurez besoin que de FontForge (suffit de rotater et agrandir des caractères déjà existants).
Ouvrez la police DejaVu Avec Casio avec FontForge (et votre police aussi). Allez vers le caractère U+E000. Les caractères à partir de U+E000 sont dans le domaine privé, c'est à dire qu'aucune police ne les supporte. Ils n'existent pas dans Unicode, c'est pourquoi ils sont dans le domaine privé.
Vous avez 101 caractères à créer, mais tous peuvent être faits à partir de caractères déjà existants.
Commençons par les caractères avec serifs : nMGTPEr. Si votre police est avec serifs, je vous conseille d'en prendre une sans serif. Ici il vous suffit d'ajouter des serifs à ces lettres.
On a ensuite les caractères gras : ABCDEFiePrXY. Ici j'ai tout simplement copié/collé les caractères de la version gras de la police, si votre police n'a pas de version gras choisissez en une autre.
Ensuite, les caractères inversés : B,R,L,=,<,>,<=,>=. Il suffit de dessiner un rectangle autour de la lettre. Attention : B,R,L doivent prendre toute la largeur, mais pas les autres !
On a ensuite les caractères divers, je vais faire au cas par cas :
- E00C : dessinez un rectangle de même taille que le symbole degré (°).
- E00D : concaténez les exposants '-' et '1'. Pareil pour E02A.
- E00E, E010 : copiez collez l'exposant r et g (déjà disponibles dans unicode).
- E00F : concaténez les indices 1 et 0.
- E011, E012, E013, E014, E017 : combinez les lettres x et y, et l'overline ou l'accent circonflexe.
- E018, E019 : combinez a,o et l'underline.
- E027, E028, E029 : rétrécissez les indices 0,1,2.
- E02B : prenez le subscript x (attention, il doit être dans le coin en haut à droite).
- E02C : rétrécissez le 'n'.
- E02D : rétrécissez le '3'.
- E064 : rétrécissez le 'E'.
Il vous reste alors tout l'alphabet en indice. Vous pouvez déjà prendre les caractères unicode indices et exposants (en déplaçant les exposants vers le bas), il vous manquera alors les lettres CFQSXYZq. Il suffira de rétrécir ces majuscules pour qu'elles aient la même taille que les autres indices (pour le 'q', il suffit d'inverser le 'p').
Enfin, pour E062 et E063, copiez collez les caractères '*' et '/'. Il faut ensuite remplacer dans la table ascii ces caractères par × et ÷.
Pour le reste des caractères, regardez dans le test des caractères lesquels manquent, et créez les en combinant d'autres caractères (ou en les faisant vous même, mais c'est chaud).
Liste des messages d'erreur
Liste des messages d'erreur
- The char '...' shouldn't be here, BIDE did not recognize that opcode. Check the spelling and case
BIDE n'a pas reconnu l'opcode spécifié, vérifiez que vous avez bien respecté les majuscules et les espaces (l'opcode "And" comporte un espace avant et après, par exemple). Attention à bien remplacer les '&' par "&" (si vous ne faites pas une entité bien entendu).
- Invalid g1m
Le g1m est invalide.
- Couldn't find the name of the program ..., make sure to include the directive "#Program name: <name>" at the beginning. Replace Program by Picture or Capture if necessary
À la première ligne du programme, il faut mettre "#Program name: " suivi du nom. Respectez bien les espaces et les majuscules. Il faut mettre "#Capture name: " si c'est une capture, et "#Picture name: " si c'est une picture.
- Invalid picture size
La taille de la picture n'est pas valide.
- No programs detected
Vous essayez de créer un g1m sans aucun programme, ce qui fera une erreur.
- Program "..." has a name too long (8 characters max)
Le programme spécifié a un nom trop long (8 caractères maximum).
- Capture "..."'s name should start with "CAPT"
Le nom d'une capture doit commencer par "CAPT".
- Picture "..."'s name should start with "PICT"
Le nom d'une picture doit commencer par "PICT".
- Number of ... should be 1-20
Le numéro de la capture/picture spécifiée doit être de 1 à 20 inclus.
- Invalid picture/capture number
Une capture/picture doit avoir un numéro après "CAPT" ou "PICT".
- Program "..." has a password too long (8 characters max)
Le programme spécifié a un mot de passe trop long (8 caractères maximum).
- Line length isn't 130
Les lignes des pictures/captures doivent être longues de 130 caractères. Vérifiez que vous avez bien respecté la bordure.
- Border error
Il manque la bordure gauche/droite de la picture.
- Unallowed character '...' in picture
Les pictures/captures doivent seulement avoir les caractères de pixels.
- Hex escape must be 2 or 4 characters long
L'escape hexa doit être uniquement de 2 ou 4 caractères, ajoutez des 0 si nécessaire.
- BIDE is denied access to the file at "..."
Fermez les programmes ayant accès au g1m (FA-124, éditeur hexa...) ou essayez de lancer BIDE en mode administrateur.
Postez ici s'il y a une erreur (regardez la liste des erreurs avant) ou un bug, ou juste pour du feedback Commentaires :
C'est normale si a chaque fois que je sauvegarde et que je met le programme sur l'emulateur, la sauvegarde n'a pas eu lieu ? meme sans la mettre sur emulateur la sauvegarde n'a pas ete faite :/
Je ne sais pas si c'est normal, mais le programme semble avoir du mal chez moi, sous gnunux donc ; notamment pour la commande java -jar bide.jar --decompile programme.g1m dossier (j'ai aussi testé avec un chemin absolu pour le dossier…) j'ai la sortie suivante :
[--decompile, programme.G1M, dossier]
Reading from g1m at programme.G1M
Found program "programme"
Exception in thread "main" java.lang.NullPointerException
at org.fife.ui.rsyntaxtextarea.SyntaxScheme.changeBaseFont(SyntaxScheme.java:111)
at org.fife.ui.rsyntaxtextarea.RSyntaxTextArea.setFont(RSyntaxTextArea.java:2516)
at zezombye.BIDE.ProgramTextPane.<init>(ProgramTextPane.java:53)
at zezombye.BIDE.Program.<init>(Program.java:59)
at zezombye.BIDE.BIDE.readFromG1M(BIDE.java:230)
at zezombye.BIDE.BIDE.main(BIDE.java:111)
J'essaye de l'utiliser pour mettre mes cours sur ma calculatrice Graph 90+E et profiter des caractères mathématiques.
Seulement je voulais savoir si je pouvais faire en sorte que tout mon texte soit considéré comme une string sans avoir à mettre une apostrophe au début de chaque ligne. Cela me ferait gagner un caractère à chaque ligne et serait plus simple à lire.
J'aimerais quand même pouvoir sauter des lignes afin que les mots ou expressions mathématiques ne soient pas coupées en deux.
D'ici à ce que Zezombye réponde (ça ne saurait tarder), sache que si tu veux juste écrire du texte et pas du code, tu peux utiliser le format d'e-acts qui est beaucoup plus adapté. En gros :
- Tu peux les éditer avec l'Eact Maker et les exporter en g3e
- Ensuite tu les copies dans le répertoire de la calculatrice
- Tu les visualises dans l'application E-ACT (3) au lieu de PRGM (B)
Je suis désolé de faire de l'anti-pub à Zezombye jusque sur sa page, c'est plus une suggestion pour ce cas précis.
Zezombye, je tenais à te féliciter pour ce remarquable travail. Je viens de télécharger BIDE, et je trouve ça tout simplement ÉNORME. C'est d'un confort que je n'avais jamais connu, que d'avoir un IDE (dont, bien sûr, un éditeur) pour du basic ! C'est génial. Je pense que ça m'a donné envie de reprendre mon projet. Si je trouve des défauts/bug en l'utilisant, je t'en ferai part.
Edit :
En fait, un petit défaut. Je pense qu'il n'est pas nécessaire de remplacer les opcodes "or", "And", etc. dans un chaîne de caractères. Dans mon programme, j'ai hardcodé des string qui contiennent des dialogues. Donc ça devient moins lisible lorsque je me retrouve avec "Hmm ? Vous connaisFD4;z Elt&bitwiseor;edo ?"
Au lieu de "Hmm ? Vous connaissez Eltoredo ?", à titre d'exemple. Comme tu arrives à coloriser en gris les chaînes de caractère, ça ne devrait pas trop poser problème ?
Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd