Gestion du compte
Calculatrices
Graph 35 à 100 (CFX)
Graph 25/25+ (Pro) (fx-7400)
Graph 75/85/95 (SD) (fx-9860)
Graph 100/100+ (AFX)
ClassPad 300/330
Fx-CG 10/20
Fx-CP 400
Graph 90+E

Retour aux miniatures
Tri avancé
Liste des programmes
Nom Date
Russian
Geometry
Physium
E-Con2
Agenda
Planetarium2
CasioPython
Casio_asm
Démo - multi
FXGB
SerialMo
GUMP
Game Of Life
Omgclock
Help
Eigenmath
Clavier virtuel
DPicoC
WebCalc
Serial_dlfiles
Pages: 1,2,3 >>

¤ Transférer un programme sur
sa calculatrice

¤ Vous cherchez une fonction ?
Utilitaires >> Graphs 75/85/95 (SD) >> Add-ins >> Casio_asm
Casio_asm
Version : 0.9 Taille : 57228 octets Ajouté le : 2018-06-27 12:40 Modifié le : 2018-06-29 11:01
Auteur et posteur :
Natnat
Hors ligne
Membre
Points: 73
Défis: 0
Message
Aucune image disponible
Nombre de visites sur cette page : 464
Score au progrank : 9
Pas encore de note !

Vous devez être inscrit(e) et avoir 20 points ou plus pour noter.
75 téléchargements | Soumettre un test


A cause du changement de processeur des nouvelles Graph 35+ USB, 75 et 95 SD, de nombreux addins sont incompatibles avec ces calculatrices.
Rendre un addin compatible - Plus d'informations sur ce problème - Liste des addins compatibles

Description :

Le BASIC Casio est lent. C'est un fait. Le C et l'ASM sont rapides mais il faut le SDK de Casio ou la toolchain GCC sur PC.
Donc je vous présente Casio_asm, un projet (encore incomplet mais globalement fonctionnel) de processeur virtuel et d'assembleur qui tourne aussi bien sur Casio que sur PC.

L'idée, c'est de créer un programme en un langage qui sera ensuite assemblé en bytecode (comme Java, mais plus proche de la machine). Ensuite, on peut executer ce bytecode avec la VM fournie. L'assembleur et la VM tournent tous les deux sur Casio pour être utilisables en cours et sur PC pour le debug plus facile.

On a accès à plusieurs fonctionnalités intéressantes absentes du BASIC:
-> gestion des fichiers (partielle, mais quand même)
-> une grande région de RAM (je sais pas exactement combien la Casio va nous laisser utiliser, mais j'arrive à faire pas mal de trucs avec 1ko, et on devrait pouvoir allouer au moins 10 fois ça)
-> le clavier sur évenements (le processeur ne se met pas vraiment en pause sur Casio tant que je passe pas l'addin sur Gint, mais sur PC, si)
-> des fonctions graphiques bien plus rapides (et on dessine sur la VRAM, pas l'écran)
-> des timers à venir

En revanche, le programme n'est toujours pas fini, et peut crasher dans certains cas ou si on execute certaines instructions pas encore implémentées correctement. De plus, certaines fonctionalités ne marchent tout simplement pas.

Le programme tourne sur SH4. Normalement, il devrait aussi tourner sur SH3, mais je n'ai pas de quoi vérifier, si quelqu'un pouvait tester, ça serait sympa

Programmé et compilé sur Linux avec GCC 8.1.0. NE COMPILE PAS sur le SDK de Casio qui est resté bloqué en C89. Devrait compiler sur les anciennes versions de GCC.

Repo GitLab du projet
Topic dans le forum


Commentaires :


Nemhardy
Hors ligne
Grand maître des Traits d'Esprit
Points: 1232
Défis: 54
Message
Posté le 27-06-2018 à 22:08 | #
Salut !
Je dois dire que c'est plutôt impressionnant d'avoir ça qui tombe ici, même sans avoir encore testé ça encore sur machine, à la lecture de la doc et de la structure du projet, la machine virtuelle a l'air bien poussée ! Ça fait plaisir de voir des gens qui développent des trucs propres et bien construits, avec doc et GCC à l'appui…
Je pense que ça intéressera bien tout ça @LePhénixNoir ou peut être même @Julese50 qui sont sans doutes les plus porté⋅e⋅s sur ces aspects là de la commu'.

J'ai jeté un coup d'œil, je l'espère assez attentif, à la doc, et justement je n'ai pas trouvé d'infos correspondant à une présence de flags, pour détecter overflow ou récupérer les résultats des comparaisons par exemple, on a tout de même accès à ces informations d'une manière ou d'une autre ?

La ToDo list est aussi assez alléchante, on attend le plongement dans gint de tout ça !

Pour le Gitlab, il me semble que c'est un problème qui survient oui, le mieux c'est de poker @Dark Storm, ou @Breizh_Craft, qui auront sans doute le bon palliatif à ce mail de confirmation.
Lephenixnoir
En ligne
Administrateur
Points: 13067
Défis: 136
Message
Posté le 28-06-2018 à 07:24 | #
Les commentaires de programmes ne sont pas trop fréquentés en comparaison avec le forum. Si tu envisages de donner des infos de plus ça aurait plus de visibilité dans cette section.

Un truc qui n'était pas clair du tout pour moi en première lecture c'est le fait que tu fournis juste la machine virtuelle (moi j'étais parti sur une alternative au Basic à cause de l'introduction)...

Comment mets-tu le clavier sur écoute ? Des timers ?

Saleté de Gitlab, tous les membres ont ce problème. Si tu me donnes ton pseudo je peux bypasser la phase de confirmation, mais les mails suivants ne t'arriveront probablement pas non plus donc ne compte pas sur les notifs' par mail.
Natnat
Hors ligne
Membre
Points: 73
Défis: 0
Message
Posté le 28-06-2018 à 11:35 | #
Nemhardy a écrit :
propres et bien construits

On parle bien de la même chose? C'est certes plus propre que mes anciens projets, mais de là à dire que c'est propre et bien construit... Même le système de build est à refaire...

Nemhardy a écrit :
J'ai jeté un coup d'œil, je l'espère assez attentif, à la doc, et justement je n'ai pas trouvé d'infos correspondant à une présence de flags, pour détecter overflow ou récupérer les résultats des comparaisons par exemple, on a tout de même accès à ces informations d'une manière ou d'une autre ?

Effectivement, il n'y a bel et bien pas de flags... L'overflow n'est pas détectable, il faut bel et bien que je change ça. Pour les résultats de comparaison, je pousse un 1 ou un 0 dans le stack, qui sera ensuite utilisé comme argument par les instructions de saut, ou directement pour incrémenter conditionnellement une variable si il faut.

Lephenixnoir a écrit :
Les commentaires de programmes ne sont pas trop fréquentés en comparaison avec le forum. Si tu envisages de donner des infos de plus ça aurait plus de visibilité dans cette section.

Je créé le topic dans quelques secondes

Lephenixnoir a écrit :
Un truc qui n'était pas clair du tout pour moi en première lecture c'est le fait que tu fournis juste la machine virtuelle (moi j'étais parti sur une alternative au Basic à cause de l'introduction)...

Ba, je fournis la VM et l'assembleur, avec une interface graphique sur Casio pour les lancer, et en ligne de commande sur PC. Le but n'est pas vraiment de remplacer le Basic, le langage est beaucoup trop compliqué pour ça (je m'attend pas à ce que grand monde arrive à écrire du pseudo-assembler), mais d'avoir un langage de plus, de préférence le plus rapide possible.

Lephenixnoir a écrit :
Comment mets-tu le clavier sur écoute ? Des timers ?

Malheureusement, oui. J'ai un timer à 20Hz qui lit le clavier touche par touche avec la fonction key_down que j'ai piquée à usefull... Et avant, c'était le syscall 0x24b mais il ne marche pas dans les timers correctement, je n'avais pas toutes les touches... C'est une des raisons pour lesquelles je préfèrerait vraiment passer sur Gint et avoir des événements propres ainsi qu'une vraie mise en pause du CPU.

Lephenixnoir a écrit :
Saleté de Gitlab, tous les membres ont ce problème. Si tu me donnes ton pseudo je peux bypasser la phase de confirmation, mais les mails suivants ne t'arriveront probablement pas non plus donc ne compte pas sur les notifs' par mail.

Normalement, j'ai mis Natnat aussi. Pas grave pour les mails suivants. Vous avez un problème de spouleur? Les mails partent pas non plus sur le forum même quand on coche "recevoir les réponses par mail"...
Lephenixnoir
En ligne
Administrateur
Points: 13067
Défis: 136
Message
Posté le 28-06-2018 à 13:54 | #
Sache que gint utilise aussi un timer pour lire le clavier. C'est la plus grosse faute de hardware que j'ai commise, mais l'interruption qui est levée quand on presse une touche ne s'arrête jamais ! C'est juste inutilisable. D'ailleurs le système aussi a un timer.

Et donc, si tu as un timer, tu peux utiliser l'instruction assembleur sleep pour te mettre en pause. Bien mieux que l'attente active faite par Sleep().

J'ai confirmé ton compte Gitlab. Le forum c'est une autre affaire, ce n'est pas le même serveur. Son problème à lui c'est plutôt d'être codé en PHP et avec les pieds.
Dark storm
En ligne
Membre d'honneur
Points: 10668
Défis: 174
Message
Posté le 28-06-2018 à 19:27 | #
« Son problème à lui c'est plutôt d'être codé en PHP et avec les pieds. »
Nan, même avec les pieds on fait mieux.

Bref, mis à part ça, j'en ai parlé sur le fofo, mais y'a une démo ? Je dois avouer que j'ai pas trop le temps de tester sur machine, mais du coup si la VM est fonctionnelle sur PC, je pourrais me faire une idée
Natnat
Hors ligne
Membre
Points: 73
Défis: 0
Message
Posté le 28-06-2018 à 20:00 | #
Merci beaucoup pour le GitLab @Lephenixnoir, je crée le repo dès que j'ai accès à mon pc.
Il faudra que je regarde pour l'instruction sleep, mais ça suffit de la mettre dans un bloc asm ?
Et oui, je sais que Gint utilise un timer pour lire le clavier, mais au moins ça fait ça bien, pas comme moi avec mes lectures touche par touche...
Ouais @Dark storm, y'a une espèce de démo, mais c'est quasiment rien... Le fichier fib.asm qui s'assemble en fib.bin est un programme qui calcule des termes de la suite de Fibonacci et les affiche sur l'écran avec un 7-segment, puis se met en pause et quitte quand on appuie sur EXIT. Sur la version PC, c'est Echap la touche qui correspond. Attention, pour le moment, ça compile que pour Linux (et peut-être Cygwin). Les make doivent être faits dans l'ordre data->common->assembler->interpreter, il faut que j'y retravaille...
Lephenixnoir
En ligne
Administrateur
Points: 13067
Défis: 136
Message
Posté le 28-06-2018 à 20:14 | #
Il faudra que je regarde pour l'instruction sleep, mais ça suffit de la mettre dans un bloc asm ?

Yup. __asm__("sleep") suffit, ce qui est pas mal !

Il y a peut-être des effets de réordonnement tels que volatile serait approprié, mais je ne saurais pas le dire.

Et oui, je sais que Gint utilise un timer pour lire le clavier, mais au moins ça fait ça bien, pas comme moi avec mes lectures touche par touche...

La méthode que j'utilise (celle de SimLo) est la méthode classique du SH3, mais le shadowing explose assez vite. Je me souviens que si je lis sur l'interface BIOS en 0xa44b0000 ça fait n'importe quoi après plusieurs tours de timer. Je n'ai pas réussi à comprendre pourquoi à l'époque où j'ai essayé.

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2018 | Il y a 49 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire indépendant, géré bénévolement et n'est donc pas affilié à Casio | Toute reproduction de Planète Casio, même partielle, est interdite
Les fichiers, programmes et autres publications présents sur Planète Casio restent la propriété de leurs auteurs respectifs et peuvent être soumis à des licences ou des copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd