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.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » Projet : Editeur de programmes Casio
Stev75 Hors ligne Membre Points: 8 Défis: 0 Message

Projet : Editeur de programmes Casio

Posté le 28/10/2012 12:19

Bonjour à tous,

Voilà, cela fait pas longtemps que je me suis mis à la programmation en Casio Basic. J'aimerai en effet mettre mes cours sur la calculette, faire des programmes qui calculent les dérivés,etc. afin de me préparer au mieux pour le bac.

Mais j'ai remarquer à quel point c'était pénible de taper les programmes sur la calculatrice. Comme j'ai des bases en C++ et Qt, j'ai eu l'idée de créer une éditeur de programmes Casio sur Ordi avec coloration syntaxique et, dans l'idéal, un simulateur de programmes (mais là, ça pourrait devenir très compliqué). En effet je n'ai pas été conquis par les autres éditeurs de programmes, je voudrais en faire un à ma sauce.

Mais il y a plein de questions que je me pose, et c'est là que j'ai besoin de votre aide. Par exemple, comment traduire des fonctions tel que "Disp" pour les rendre compréhensibles par la calculette ?

Merci d'avance pour vos réponse.

PS: J'ai une graph 35+ avec l'OS de la graph 75


Cartix Hors ligne Membre Points: 2748 Défis: 98 Message

Citer : Posté le 28/10/2012 13:13 | #


Sinon tu télécharge FA-124, et tu édite les programmes avec ça.
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 28/10/2012 13:15 | #


ou alors tu programme en c sur ton pc pour ta calto
Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm (dont je connais le nom, mais pas vous ) Arcuz !
Ziqumu Hors ligne Membre d'honneur Points: 3055 Défis: 9 Message

Citer : Posté le 28/10/2012 13:58 | # | Fichier joint


Dejà pour faire un editeur, il faut que tu choisisse ton format d'enregistrement. Je suppose que ton programme ne va pas gérer le transfert (du moins dans un premier temps).
Prenons donc par exemple le fichier G1M qui est utilisé avec FA-124(un logiciel qui permet de taper et de transférer des programmes en basic à la calculatrice). Ton but va être d'en générer un grâce à ton logiciel. A ma connaissance il n'existe pas de doc qui explique comment fonctionne ce type de fichier donc c'est à toi de trouver.
Donc tu va aller sous FA-124 et on va crer un fichier basic du nom de TEST par exemple et on va le remplir comme ci-dessous :



Ensuite tu l'exporte en G1M (fait un glisser deposer du fichier sur ton bureau par exemple) et tu va ouvrir ce fichier avec un editeur hexadecimale. En gros c'est un editeur qui decoupe ton fichier en octet et te donne sa traduction en hexadecimal et si possible il te donne le caractere qui correspond, mais il n'y en a pas toujours.
Prenons par exemple cet editeur
Quand on ouvre notre fichier voila ce qu'on obtient :



La partie gauche de donne le code hexadécimal correspondant à chaque octet. Et la partie droite te donne le caractere correspondant s'il y en a un.
Tu peut voir que tous les codes qu'il y a avant la partie en bleu n'est pas très compréhensible. C'est l'en-tete du fichier, elle donne des info sur le fichier comme le nom du programme (que tu peut voire un peu plus haut : TEST) et d'autres info qu'il faudra dans un premier temps recopier exactement pareil, puis peu a peu comprendre le fonctionnement pour faire varier ces paramètres.

Quand tu regarde a droite tu vois notre "Hello" et j'ai selectionné en bleu le code qui est juste avant. Dans notre code basic c'était une flèche de retour à la ligne, mais il n'y avait pas que celle la il y en avait après "Test" et après "Boug". J'ai sélectionne en vert ces caractères la. Tu peu voir que tous ces caractères ont le code hexadécimal 0D, on peut donc en conclure que le retour à la ligne est 0D dans notre fichier.
On avait mis un Disp entre "Hello" et "Test", il est sélectionné en orange, tu peu donc en déduire que le code de ce caractère est 0C.

La fonction disp était codé sur un seul octet, mais ça ne sera pas toujours le cas. Hésite pas a poser des question si tu n'a pas compris, c'est un projet ambitieux qui mérite notre attention
Dark storm En ligne Labélisateur Points: 11634 Défis: 176 Message

Citer : Posté le 28/10/2012 14:03 | #


oui, c'est vraiment cool, mais le plus dur pour toi sera de comprendre le fonctionnement des fichiers Basic.
Si tu y arrive, la communauté fera un grand bond
Finir est souvent bien plus difficile que commencer. — Jack Beauregard


Invité

Citer : Posté le 28/10/2012 15:53 | #


__A ma connaissance il n'existe pas de doc qui explique comment fonctionne ce type de fichier donc c'est à toi de trouver.

J'ai.
Qu'il attende un peu, j'ai besoin de gens comme ça.
Stev75, contact moi si tu veux plus d'infos sur les g1m, je pensais avoir ça sur mon site, mais pas du tout finalement, je t'enverrais ça par email.
Mais sinon tu peux attendre, il me faut retravailler ce que j'ai pour le lancement du projet.
pascal _a_ diogoantunes _d_ org

Si je me souviens bien, je n'ai que quelques zones d'ombres, mais rien de bien méchant.
Helder7 Hors ligne Partenaire Points: 179 Défis: 0 Message

Citer : Posté le 28/10/2012 17:47 | #


you can get info about common header in fxReverse 2
SiO2 + CaCO3 ----------> CaSiO3 + CO2
Stev75 Hors ligne Membre Points: 8 Défis: 0 Message

Citer : Posté le 28/10/2012 19:22 | #


Merci beaucoup pour vos réponse, c'est très encourageant .

Je vais analyser tout ça et faire des tests. Je solliciterai votre aide si besoin. Ca ne va pas tarder...
Stev75 Hors ligne Membre Points: 8 Défis: 0 Message

Citer : Posté le 29/10/2012 21:48 | # | Fichier joint


Rebonjour !

J'ai fais quelques recherche et j'ai réussi à décoder toutes les fonctions de PGRM plus quelques KEY. Regarder s'il vous plait le pdf "Chara info" que j'ai joint.
Je crois avoir compris à peu près comment fonctionne un fichier G1M, mais pour ce qui est du Header, c'est encore un peu flou.Grâce à l'éditeur hexadécimal et en faisant plusieurs tests, j'ai un peu compris la structure des Headers :

Header : 86 Octets

De 00000000 à 0000001F offset : partie variable

De 00000020 à 00000044 offset : partie « constante »
entre 00000020 et 00000032 offset : PROGRAM + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00
entre 00000033 et 00000044 offset : 01 + system + 00 + 00 + nom du Programme (8 caractères max) + 01

De 00000045 à 00000055 offset : partie variable


Mais comme le montre les "parties variables", il me manque encore quelques informations pour avancer. J'ai regarder le fichier pdf que Helder7 m'a fournis et il y a une partie qui semble expliquer le fonctionnement des headers. Mais déjà que c'est compliqué à ce la s'ajoute une autre difficulté : l'anglais. Donc si vous pouviez m'aider à comprendre ce qu'il est dit, ça me ferait beaucoup avancer .
Purobaz Hors ligne Membre d'honneur Points: 2690 Défis: 110 Message

Citer : Posté le 29/10/2012 22:00 | #


Dafp avait fait une doc assez bien faite sur ce sujet, il faudrait lui demander.

Sinon le lien de Helder est sans doute la source la plus fiable qui existe.

Je ne sais pas si beaucoup pourrons t'aider sur Planète Casio, au pire demande sur Casiopeia, mais la encore c'est en anglais (l'anglais n'est pas en option avec la programmation).
I'll be back !
pour plus de fun
mes programmes fun
de technique
mes projets
et de Swag
les projets que je soutiens
Stev75 Hors ligne Membre Points: 8 Défis: 0 Message

Citer : Posté le 29/10/2012 22:13 | #


Merci du conseil, je vais demander à daffp et potasser encore le pdf d'Helder7 en anglais . Pas le choix va falloir me mettre sérieusement à l'anglais .
Ziqumu Hors ligne Membre d'honneur Points: 3055 Défis: 9 Message

Citer : Posté le 29/10/2012 22:41 | #


Je m'excuse d'avance pour ce pavé indigeste, mais j'ai du mal a le tourner autrement pour qu'il soit plus agréable à lire :/

Pour la version plus condensé en anglais tu va dans le PDF qu'helder a mis dans la partie 3.3.1

Pour commencer, le header est codé en "contraire"(du moins la premiere partie), c'est à dire que pour avoir la valeur en normale de 0xCE (le 0x veut dire que c'est de l’hexadécimal) tu prend par exemple la calculatrice Windows tu la met en mode programmeur puis en Hex. Tu fait FF - CE ce qui te donne 0x31. Dans la suite je parlerais que dans le sens normal ça sera a toi de convertir pour avoir le sens contraire.

0 - Les 8 premiers octets sont constant et permettent de vérifier que le fichier est fait pour les calculatrice USB casio ces octets veulent dire "USBPower". Donc les 8 octets 55 53 42 50 6F 77 65 72, ce qui est la traduction de USBPower. (oublie pas de faire le contraire ce qui donne AA AC BD AF 90 88 9A 8D)
8 - Cet octet est constant et il permet d'identifier le type de fichier : D'après la doc c'est 31 pour les G1M (donc le contraire c'est CE)
9 - Les 5 octets suivants sont constant est vallent d'après la doc 00 10 00 10 00 (en contraire FF EF FF EF FF)
E - pour ce byte, C'est les LSB(Least significant bits : les bit les plus a droite quand tu écris le mot en binaire) de la taille du fichier auquel tu ajoute 0x41. Ici on prend les 8 derniers bits je suppose donc, on prend simplement les deux derniers caractères hexadécimales(un caractere hexadecimal=4bit). Pour prendre un exemple si tu as une taille de 539o, en hexa ça donne 0x21B, donc tu prend 0x1B et tu lui ajoute 0x41 ce qui te donne 0x5C. Et tu fait le contraire bien sur pour l’écrire dans ton fichier. Sinon les deux derniers caracteres de la taille en hexa correspondent à l'octet qui a pour offset 0x13, (oublie pas de faire le contraire).
F - un byte constant qui vaut 0x01 (donc 0xFE en contraire)
10 - Ces 4 octets sont la taille du fichier en unsigned int et en big endian. Je suppose que tu connais l'unsigned int, et pour le big endian, je ne connais pas, et ça ne change rien dans mon code actuel(il faut que je test avec des tailles plus grande et je te redirait ça, sinon fait des recherche toi même sur ce que c'est). En tout cas tu comprend pourquoi l'octet qui a pour offset 0x13 est le dernier octet de la taille
14 - Ce bit est comme pour l'offset E, le dernier octet de la taille, auquel tu ajoute cette fois si 0xB8
15 - La doc dit qu'elle ne connais pas le fonctionnement de ces 9 octets, mais qu'il ont l'aire de ne pas alterer le fichier. D'ailleur je suppose qu'ils valent toujours 0xFF (0x00 en contraire) donc te casse pas la tête pour ceux la, c'est sans doute de la place reservé pour mettre d'autres infos qui n'est pas utilisé.
1E - Ces deux bits sont le nombre d'objet que contient ton fichier(un G1M peut contenir plusieurs fichiers) Mais dans un premier temps je te conseille de rester sur un seul fichier, tu vera plus tard, pour en mettre plus alors ces octes auront pour valeur 0x0001 (0xFFFE en contraire)

20 - La doc dit qu'a partir d'ici cela dépend du fichier, et on a pas plus d'info je crois donc c'est a nous de trouver. D'ailleur tu peut voir qu'on est plus en "contraire" puisque le texte s'affiche a présent dans la partie droite de notre editeur hexadecimal.

Apparemment tu as assez bien compris le fonctionnent jusqu’à l'offset 45, donc il te reste plus que de 45 à 55 à trouver.
Stev75 Hors ligne Membre Points: 8 Défis: 0 Message

Citer : Posté le 30/10/2012 22:21 | #


Merci beaucoup Ziqumu . Je pense avoir compris maintenant. Il me reste plus que le fonctionnement de l'offset 45 à 55, et j'ai repéré qu'à l'offset 48, il y a toujours une valeur, même si le fichier est vide. J'ai cru d'abord que c'était pour n'importe quel fichier, mais j'ai fais le test avec un fichier d'environ 1ko et il y avait aussi une valeur à l'offset 47. Je vais encore faire des tests, pour l'instant je sais pas à quoi ça correspond. Je vais peut-être demander chez Casiopeia...
Mais une question : ceux qui ont fait le générateur de cours doivent s'avoir normalement comment fonctionne les fichiers G1M. Si oui est-il possible qu'ils m'aident ?
Ziqumu Hors ligne Membre d'honneur Points: 3055 Défis: 9 Message

Citer : Posté le 30/10/2012 22:29 | #


Derien en tout cas c'est cool que t'ai compris j'avais peur de te perdre et de te dégouter de ton projet

Le générateur génére pas des G1M mais du code a copier coller donc ils ne connaissent pas le header.

Sinon envoi un mail à dafp apparemment il avait fait une doc, il t'avais donné son adresse email :
pascal _a_ diogoantunes _d_ org
tu enlève les _ et tu remplace le a par @ et le d par un point et t'a son adresse

Ajouté le 30/10/2012 à 22:31 :
En 47 j\'ai rien moi (du moins sur un fichier) et pour le 48 c\'est constant ? Si oui te casse pas la tete.
Stev75 Hors ligne Membre Points: 8 Défis: 0 Message

Citer : Posté le 30/10/2012 22:39 | #


C'est déjà fait j'attend sa réponse. Je vais encore continuer les recherches et continuer à décoder les caractères et les fonctions de la calculettes. Patience s'impose donc...
Ziqumu Hors ligne Membre d'honneur Points: 3055 Défis: 9 Message

Citer : Posté le 30/10/2012 23:08 | #


Pour les caractères et les fonctions, poste les à la fin, ça sert toujours aux futur projets ce genre de chose
Purobaz Hors ligne Membre d'honneur Points: 2690 Défis: 110 Message

Citer : Posté le 31/10/2012 09:01 | #


Au pire, je pourrais te l'envoyer si je la retrouve.
Il l'avait hébergé sur son serveur il y a quelques temps.
I'll be back !
pour plus de fun
mes programmes fun
de technique
mes projets
et de Swag
les projets que je soutiens
Dark storm En ligne Labélisateur Points: 11634 Défis: 176 Message

Citer : Posté le 31/10/2012 09:15 | #


oO tu as déjà réussi à trouver quoi que ce soit dans son serveur ?
Parce que c'est bien le bordel...
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Stev75 Hors ligne Membre Points: 8 Défis: 0 Message

Citer : Posté le 24/11/2012 11:02 | #


Bonjour,

Désolé d'avoir pris autant de temps pour donner des nouvelles, mais j'ai été beaucoup pris par les cours.
Dafp m'a fourni sa documentation qui est très bien faite. Avec les explications de Ziqumu et cette doc, je pense être en mesure de pouvoir commencer à développer le programme.
Je vous tiendrai au courant si il y a du nouveau. :).
Ziqumu Hors ligne Membre d'honneur Points: 3055 Défis: 9 Message

Citer : Posté le 24/11/2012 12:16 | #


Génial, hésite pas à poser d'autres question si tu a besoin

(et si tu a du mal à créer l’éditeur en Qt, je sais qu'il existe un exemple quelque part qui montre comment faire la numérotation des lignes sur le coté et un autre sur la colorisation syntaxique si tu a besoin)

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 87 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