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 - Autres questions


Index du Forum » Autres questions » syscalls et compatibilité SH4
Astrolab Hors ligne Membre Points: 78 Défis: 0 Message

syscalls et compatibilité SH4

Posté le 03/01/2024 23:43

Bonjour à tous

J'ai écrit un Add-In avec le fx-9860G SDK dans lequel j'utilise des syscalls pour accéder à des variables de la mémoire alpha. Je l'ai testé sur ma Graph 35+, il fonctionne plutôt bien je crois et je l'ai partagé ici. Maintenant, je souhaite le rendre compatible avec toutes les calculatrices CASIO mais j'ai un peu du mal à comprendre cette histoire de SH3 et SH4.

D'un côté, je crois comprendre en regardant le code fourni par Shadow15510 que le problème de compatibilité SH4 concerne seulement les fonctions impliquant les touches de la calculatrices. De l'autre en lisant les pages de la bible correspondant au travail de Simon Lothar, je vois que les calculatrices SH4 ont la version 2.02 de l'OS dans lequel les syscalls ne sont pas aux mêmes adresses que dans les précédentes versions de l'OS (<2.02). Or le SDK fx-9860G de CASIO contient forcément pleins de syscalls. Donc si les adresses ont changées entre les deux versions de l'OS, comment se fait-il que le SDK soit compatible avec la nouvelle version sans aucune autre modification que celles des touches ??

Maintenant je reviens à mon problème. Dans mon projet, j'ai implémenté les syscalls en suivant le le tuto de Zezombye (je précise que je ne connais strictement rien à l'assembleur). Ma calculatrice étant à priori en SH3, j'ai pris les adresses des legacy syscalls
J'ai donc un fichier .src qui contient des choses comme ça :
.export _Alpha_SetData
.export _Alpha_GetData

_Alpha_SetData:
    mov.l    syscall_table, r2
    mov.l    Alpha_SetData_code, r0
    jmp    @r2
    nop
Alpha_SetData_code:
    .data.l    H'4E0

_Alpha_GetData:
    mov.l    syscall_table, r2
    mov.l    Alpha_GetData_code, r0
    jmp    @r2
    nop
Alpha_GetData_code:
    .data.l    H'4DF

syscall_table:
    .data.l    H'80010070

    .end


et un fichier header correspondant :
char *Alpha_SetData(char variablecode, char *datasrc);
char *Alpha_GetData(char variablecode, char *datadest);


Donc pour rendre compatible mon programme SH4 sachant qu'il n'utilise pas les touches du clavier, j'ai juste à changer les adresses des syscalls dans mon fichier .src en suivant cette table c'est ça ? ou alors je ne change rien ?


Fcalva En ligne Membre Points: 521 Défis: 9 Message

Citer : Posté le 03/01/2024 23:50 | #


Le moyen le plus simple serait d'utiliser le fxsdk + gint dès le départ, c'est le sdk + kernel dévelloppé par la communauté (enfin principalement Lephenixnoir ), et qui à travers ses fonctions permet d'éviter ces problèmes de compatibilité. Sinon il y a un outil permettant de patcher le binaire fait pour SH3 de façon à marcher sur SH4 ici -> https://tools.planet-casio.com/SH4compatibilityTool/
Pc master race - Apréciateur de Noctua moyen
Caltos : G90+E, FX-92+ (x2)
Astrolab Hors ligne Membre Points: 78 Défis: 0 Message

Citer : Posté le 04/01/2024 00:07 | #


J'ai choisi de coder avec le fx-9860G SDK parce qu'il avait l'air plus facile à prendre en main, d'autant plus que je suis sous Windows et que gint a l'air d'être fait plutôt pour les linuxiens. Mais surtout, le fx-9860G SDK permet justement de rajouter des syscalls qui ne sont pas présents dedans par défaut. Dans mon cas, interagir avec l'OS de la calculatrice me permet d'enregistrer des valeurs dans les variables de la mémoire alpha. Je peux ensuite récupérer ces variables dans des programmes en BASIC que je lance juste après mon Add-In. Est-ce qu'une telle fonctionnalité est possible avec gint + fxsdk ?
Fcalva En ligne Membre Points: 521 Défis: 9 Message

Citer : Posté le 04/01/2024 00:23 | #


Il faut utiliser un "world switch" pour éxecuter des fonctions touchant à l'OS de Casio, mais oui c'est parfaitement possible. D'ailleurs l'ajout de syscalls par la méthode de Zezombye rentre dans cette catégorie.
Et quand a l'utilisation sur Windows, une installation a travers WSL (qui est un environement léger pour Linux sous Windows) est parfaitement possible et probablement celle la plus utilisée.
Pc master race - Apréciateur de Noctua moyen
Caltos : G90+E, FX-92+ (x2)
Lephenixnoir Hors ligne Administrateur Points: 24240 Défis: 170 Message

Citer : Posté le 04/01/2024 00:23 | #


Pour ta question sur les syscalls, tu ne changes rien - la différence legacy/fxCG20 dans la doc de SimLo c'est pas SH3/SH4 c'est les Graph mono vs. les Graph couleur. Ton code devrait marcher sur SH3 et SH4 comme ça.

Concernant gint, les interactions type accès à la mémoire Alpha sont sous-développées parce qu'on s'en sert pas beaucoup, mais oui tu peux le faire (en fait tu peux quitter gint via un appel de fonction et faire du syscall comme tu veux). Personnellement, je ne dirais pas que c'est indispensable d'utiliser gint, mais la qualité de vie est attractive à mon avis. Le SDK avec le vieux compilo en C89, la moitié de la libc qui manque, et pas de support SH4 natif, c'est drôle deux minutes. ^^"

Pour le support SH4 utilise bien le "SH4 compatibility tool" donné par Fcalva et tant que tu utilises pas de syscall incompatible (... j'en connais pas trop) tu peux y aller les yeux fermés.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Astrolab Hors ligne Membre Points: 78 Défis: 0 Message

Citer : Posté le 04/01/2024 12:42 | #


Ah je comprends mieux maintenant, merci. Mais il me reste encore une petite interrogation : si mon code est censé fonctionner sur SH4 "comme ça", il faut quand même que je le passe au "SH4 compatibility tool" ?

Je passerai certainement sur gint si je décide de me lancer un nouveau projet
Lephenixnoir Hors ligne Administrateur Points: 24240 Défis: 170 Message

Citer : Posté le 04/01/2024 12:46 | #


La partie qui va marcher sur SH4 tout seul c'est l'appel de syscall : les numéros et paramètres de syscall sont les mêmes sur SH3 et SH4. Par contre il y a toujours une partie qui ne va pas marcher toute seule et ça c'est les histoires de clavier dont tu as entendu parler. Le SH4 compatibility tool s'occupe du clavier.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Astrolab Hors ligne Membre Points: 78 Défis: 0 Message

Citer : Posté le 04/01/2024 12:48 | #


Donc mon Add-In est probablement déjà compatible SH4 puisqu'il n'utilise pas les touches du clavier ! merci
Tuper4 Hors ligne Membre Points: 832 Défis: 19 Message

Citer : Posté le 04/01/2024 15:59 | #


Bravo Astrolab! Je vois que tu avance rapidement! Plus que moi en tout cas
Ne vous arrêtez pas quand vous êtes fatigé(e), arrêtez vous quand vous avez terminez.
Astrolab Hors ligne Membre Points: 78 Défis: 0 Message

Citer : Posté le 06/01/2024 00:33 | #


Ahah merci ! En fait ça un peu plus d'un an maintenant que je programme sur CASIO mais je me suis inscrit ici tout récemment.

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 38 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