Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.
Menu
Transfert | Imagerie | Divers | Snippets | Développement | Émulateurs
Liste des logiciels
Nom Date
BIDE
LuaHelper
LuaFX
SDK Graph 75 85 95
MLC
Classpad SDK v3.08


Visiteurs :
Si vous souhaitez soumettre un logiciel veuillez prendre contact avec un administrateur seuls à pouvoir ajouter des logiciels par mesure de sécurité.
Logiciels >> Développement >> BIDE
BIDE
Ajouté par :
ZezombyeHors ligneRédacteurPoints: 1756 Défis: 13 Message
Pour les calculatrices : Graph 25+, 25+ Pro, 35+E, 35+, 100
Ajouté le : 2017-07-01 18:35
Nombre de visites de la page : 101922

Fichiers à télécharger :

¤ BIDE+4.4.zip 8.6 Mo (8307 téléchargements)

Description :

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;, &⁠⁠#7FD4; 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 "&⁠amp;⁠" (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 :

Pages: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 | Suivante

HackcellHors ligneMaître du PuzzlePoints: 1531 Défis: 11 Message
Posté le 12-07-2017 à 21:48 | #
J'ai une réclamation pour la taille des cadres, comme mon ecran est en 3:4, l'affichage des images donne n'importe quoi.
ZezombyeHors ligneRédacteurPoints: 1756 Défis: 13 Message
Posté le 13-07-2017 à 11:21 | #
La prochaine version comportera un éditeur de pictures intégré, qui ne sera plus en ASCII, avec possibilité de modifier le zoom pour les écrans trop petits
Fmc_Hors ligneMembrePoints: 40 Défis: 0 Message
Posté le 30-07-2017 à 20:47 | #
Alors salut ZZ, déjà un gros GG pour ton travail sur cet IDE, c'est bien foutu et fluide de ce que j'ai pu voir

J'aurais quelques remarques pour l'améliorer, si je puis me permettre.

- Pour que ton soft se réclame du titre d'IDE, il te faut un environnement de test à tout prix. Pas forcément un truc ultra compliqué avec debug instruction par instruction, contrôle des variables, etc (bon j'avoue si t'arrives à faire ça t'es un dieu ), mais genre un émulateur intégré serait tellement la propreté

Si tu fais une interface rapide entre ton éditeur et un émulateur, j'pense que tu tiens facilement une référence en terme de développement Basic Casio sur Dektop, les autres features restent de la déco

- En parlant de déco, pouvoir custom les couleurs de ton éditeur serait aussi un gros plus 8) Genre, un petit dark theme pour pas s'arracher les yeux pendant les sessions de code nocturne.

- De l'ordre du détail, je t'avoue que j'ai un peu galéré à trouver les boutons pour créer un programme, etc. Pourquoi ne pas ajouter un petit hint quand l'utilisateur survole ces boutons énigmatiques ? Ou bien tu pourrais faire comme tout le monde et ajouter un volet "File"

Voilà, c'est à peu près tout pour mes premières impressions, en tout cas c'est déjà la propreté et ça sent le bon travail !
ZezombyeHors ligneRédacteurPoints: 1756 Défis: 13 Message
Posté le 31-07-2017 à 09:14 | #
Merci de ton retour

C'est vrai que pour l'instant c'est plus un éditeur de texte qu'un IDE, mais le basic casio est très dur à parser, en particulier à cause de sa syntaxe chelou (il suffit de regarder Clonelab pour se rendre compte de la difficulté) et de ses 34231 opcodes (chelous aussi). Il y a aussi des bugs d'interpréteur (genre 1=>"Option 1: A" fera une erreur syntaxe, ou List List 1[A][B] aussi), et parser un langage qui contient des bugs c'est assez chaud.

L'émulateur intégré ce serait le paradis, mais malheureusement ce n'est pas possible, les seuls émulateurs disponibles sont ceux de Casio où je n'ai pas trouvé comment injecter directement un programme (comme le SDK le fait : il importe directement l'addin). Par contre il y a possibilité de tester sur l'émulateur de Casio, BIDE fera automatiquement les manoeuvres nécessaires à l'importation.

Pour la référence vu le nombre d'opcodes ce sera assez long, surtout que toutes les fonctions ne sont pas forcément documentées (même dans le manuel). Mais ça pourrait être possible en tant que documentation insérée dans l'autocomplétion (je pense qu'elle supporte la documentation, comme dans Eclipse).

La customisation est déjà faite, et j'ai ajouté des tooltips dans la 3.1
LephenixnoirEn ligneAdministrateurPoints: 24572 Défis: 170 Message
Posté le 31-07-2017 à 11:02 | #
Aucune erreur de syntaxe à signaler pour 1⇒"Option 1: A" sur ma Graph 75+E.

Pour List List 1[A][B], si la grammaire du parser était bien écrite, ça irait comme sur des roulettes. Si j'ai bien suivi ce qui se passe :
Incorrect:
  <expr>    -> List <expr>[<expr>]
Correct:
  <expr>    -> List <list-no>[<expr>]
  <list-no> -> <variable> | <integer>
ZezombyeHors ligneRédacteurPoints: 1756 Défis: 13 Message
Posté le 31-07-2017 à 11:20 | #
Ouaip, ce bug n'a l'air de se faire que dans certaines circonstances. La ligne que j'ai donnée ne marche pas, mais 1->A:Not A:":t" fera une erreur syntaxe. (du coup je peux même pas être sur de ce qui cause ce bug...

Pour les listes je pense que tu as raison, l'utilisation d'une expression crée une erreur syntaxe. Je pense que c'est parce qu'il parse List 1+List 1[2] comme (List 1)+(List 1[2]) au lieu de List (1+List 1[2]). Par contre pourquoi List (1)[1] crée une erreur syntaxe, aucune idée.
LephenixnoirEn ligneAdministrateurPoints: 24572 Défis: 170 Message
Posté le 31-07-2017 à 11:22 | #
Toujours rien à signaler pour 1→A:Not A:":t", affiche :t.

Oui, c'est faux d'utiliser une expression. Mais c'est parce que tu n'as pas compris la grammaire que j'ai donnée ! Elle explique parfaitement pourquoi List (1)[1] crée une erreur de syntaxe.
EltoredoHors ligneModérateurPoints: 4301 Défis: 35 Message
Posté le 31-07-2017 à 14:17 | #
Damn, je plussoie Breizh, un grand GG pour ton travail ! Je soutiens particulièrement ces félicitations par rapport à tes débuts où beaucoup de personnes ont souligné la difficulté voire l'impossibilité de ton projet alors bravo

J'aurais adoré avoir ça quand je codais mes cours à la main à l'école ou alors quand j'améliorais des petits programmes, ça me donne presque envie d'en refaire mais j'en suis dans l'incapacité maintenant (#CakeTueurEnSérie)
TheprogHors ligneMembrePoints: 1447 Défis: 20 Message
Posté le 07-08-2017 à 19:05 | #
Franchement pas dégueulasse
C'est quand même nettement plus pratique au niveau visuel de coder sur un éditeur aussi grand Par contre c'est vrai qu'on perd le charme de pouvoir tester directement les programmes sur la calto mais bon, faut bien qu'il y ai des défauts.

Un petit détail aussi, le manque du Ctrl+S. Je dois avouer ma déception moi qui adore bourriner cette combinaison magique
Ah oui aussi, quand on modifie le nom du fichier dans son entête, le nom de l'onglet n'est pas modifié lui

J'ai peut-être raté un truc mais
ElTo a écrit :
je plussoie Breizh
LephenixnoirEn ligneAdministrateurPoints: 24572 Défis: 170 Message
Posté le 08-08-2017 à 15:46 | #
Breizh a pas mal parlé de BIDE avec Zezombye sur le chat.

Pages: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 | Suivante

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 95 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

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