Posté le 05/05/2020 16:04
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 180 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
Citer : Posté le 05/05/2020 16:41 | #
Il y a trois objets ici :
• La chaîne de caractère avec un seul caractère "A"
• L'entier 0x41 = 65
• Le bitmap 6x8 représentant la lettre et stocké dans l'OS
En Basic Casio, il n'y a aucune façon de passer d'une de ces choses à une autre à moins d'écrire à la main toutes les correspondances. En C, on peut passer de la chaîne de caractère à la valeur entière en lisant simplement les données dans le tableaau, et on peut obtenir le bitmap par un syscall.
De façon méta, en-dehors d'un programme, l'encodage des caractères est documenté par Casio pour l'encodage FONTCHARACTER et par SimLo pour la partie bytecode du Basic. L'ensemble complet des bitmaps n'a pas été extrait à ma connaissance mais on peut les sortir avec un addin et Remiweb s'est amusé à les modifier dans l'OS un fois.
Citer : Posté le 05/05/2020 16:45 | #
Si si je m'étais fait chier à manuellement transcrire les bitmaps pour la police de BIDE
https://github.com/Zezombye/BIDE/blob/master/src/Casio%20Graph.ttf
Ecrivez vos programmes basic sur PC avec BIDE
Citer : Posté le 05/05/2020 17:17 | #
Là, je parle du bitmap stocké dans l'OS. Peut-on modifier ce bitmap ? (J'ai regardé la manip de Remiweb Mais rien compris)
....Et donc quelqu'un saurait comment obtenir la valeur hexadécimale d'un
caractèrebitmap (6*8) créé ?Citer : Posté le 05/05/2020 17:20 | #
- chaque ligne de pixels du caractère est codée sur un octet
- les deux derniers bits de cet octet sont inutilisés, donc des 0
C'est assez explicite, après pour obtenir un bitmap tu feras mieux de calculer la valeur hexa à la main. Pourquoi veux tu obtenir les valeurs hexa ?
Et oui on peut modifier le bitmap en modifiant l'OS, mais c'est risqué.
Ecrivez vos programmes basic sur PC avec BIDE
Citer : Posté le 05/05/2020 17:28 | #
En fait à la base je voulais juste me documenter sur le codage hexadécimal, mais le topic de Remiweb m'a vachement interessé.
Tu es sûr que, si on indique à la calculatrice (en modifiant l'OS) un bitmap inconnu sous la forme d'un code hexadécimal, elle le comprendra ?
Autre chose : quels sont les risques de cette manip ? On peut craindre un flingage total de la calto ?
Citer : Posté le 05/05/2020 17:31 | #
Tu parles de la "valeur hexadécimale d'un bitmap" mais il n'y a pas de telle chose. Je ne vois pas ce que tu veux obtenir ni ce que tu veux modifier.
Citer : Posté le 05/05/2020 17:34 | #
Désolé, j'essaye de bien me faire comprendre.
En gros, la façon dont est codé le bitmap dans l'OS, c'est bien de l'hexadécimal, non ?
Citer : Posté le 05/05/2020 17:38 | #
C'est du binaire, qui peut être représenté en binaire, décimal, hexadécimal, base64, base36, fractions, etc.
Ecrivez vos programmes basic sur PC avec BIDE
Citer : Posté le 05/05/2020 17:47 | #
Ah, okay. Mais donc le bitmap représentant le caractère "A" est codée de quelle manière en hexadécimal ?
C'est ça que je voulais dire par
la "valeur hexadécimale d'un bitmap".
En modifiant cette valeur, on obtiendra un bitmap différent ?
Citer : Posté le 05/05/2020 17:48 | #
Pour préciser un peu ce que dit Zezombye, les données sont des données, ce ne sont que des suites de 0 et de 1. Tu peux les écrire en hexadécimal, tu peux les représenter par un bitmap ; mais ce ne sont que des 0 et des 1. Le caractère 'A' et l'entier 65 sont la même chose par exemple, ils sont tous les deux 01000001 interprétés de façon différente.
Puisque tu as une image du caractère, tu as tout. Il n'y a rien d'autre à découvrir dans l'OS. Par contre tu peux te demander "quelle méthode est utilisée pour écrire ce bitmap avec des 0 et des 1 ?", auquel cas tu t'intéresses à l'encodage du bitmap. Ce n'est pas une conversion.
Si tu modifies les données dans l'OS, le bitmap sera différent oui.
Citer : Posté le 05/05/2020 17:52 | #
Je m’intéresse à l'encodage du bitmap. Quelle méthode est utilisée pour écrire ce bitmap avec des 0 et des 1 ? (j'ai pas compris du tout la méthode de ZZ )
Citer : Posté le 05/05/2020 17:55 | #
ZZ ne parle pas de la méthode d'encodage mais pointait juste le fait que "en hexadécimal" n'est pas un format. L'hexadécimal est juste une notation pour écrire les bits de façon un peu compacte, c'est une description des données pure qui ne te donne aucune information sur ce à quoi les données servent ni ce qu'elles représentent.
Donc, de mémoire, l'encodage pour ces bitmaps est le suivant. Il y un octet par ligne, et chaque bit vaut 1 pour représenter un pixel noir, 0 pour un pixel blanc. Donc ton A s'écrit :
10001000 = 0x88
10001000 = 0x88
11111000 = 0xf8
10001000 = 0x88
10001000 = 0x88
10001000 = 0x88
La forme courte serait donc 70 88 88 f8 88 88 88. Note qu'il y a des bits inutiles.
Ajouté le 05/05/2020 à 17:58 :
Y'a des infos sur l'encodage à taille variable de la petit police (plus compliqué) et le syscalls qui permettent de récupérer les adresses des glyphes dans l'OS dans la documentation de SimLo, si tu sais lire le C et l'anglais technique écrit rapidement.
Citer : Posté le 05/05/2020 17:58 | #
Merci beaucoup !
Mais pourquoi y a-il des bits inutiles ?et quels sont-ils ?
Citer : Posté le 05/05/2020 18:00 | #
(On s'est croisés, j'ai rajouté un lien dans mon message précédent à l'instant).
Les bits inutiles ce sont les 2 bits à la fin de chaque ligne. Tu sais que le bitmap est de 6x8, or il y a 8 bits disponibles par ligne. 2 de ces bits sont en fait inutilisés. Et comme les caractères font normalement 5x7, en fait 3 bits sont inutilisés, et l'octet final (que je n'ai même pas écrit) est inutilisé aussi.
Pourquoi ? Pour se simplifier la tâche. La calculatrice manipule toujours des octets entiers, donc c'est plus simple si chaque ligne est encodée sur ses octets à elle toute seule. Note que l'encodage de la petite police dont je parle plus haut et plus compact et les lignes se mélangent parfois sur le même octet, ce qui rend le travail de décodage un peu plus compliqué.
Citer : Posté le 05/05/2020 18:07 | #
(J'ai vu, effectivement)
Les bits inutiles ce sont les 2 bits à la fin de chaque ligne. Tu sais que le bitmap est de 6x8, or il y a 8 bits disponibles par ligne. 2 de ces bits sont en fait inutilisés. Et comme les caractères font normalement 5x7, en fait 3 bits sont inutilisés, et l'octet final (que je n'ai même pas écrit) est inutilisé aussi..
Ah oui, bien sûr
Mais les 0 et les 1, c'est du binaire...
...Et ça donne quoi en hexadécimal ? (oui, oui, toujours l'hexadécimal)
Citer : Posté le 05/05/2020 18:09 | #
Relis bien mon message, j'ai écrit la forme hexadécimale juste à côté.
Citer : Posté le 05/05/2020 18:13 | #
OOOps!!
J'avais pas vu !!
Super! Ça simplifie tout alors! Exactement ce que je voulais
Merci beaucoup de tes réponses rapides
Citer : Posté le 05/05/2020 18:13 | #
Garde bien en tête que ce n'est que l'encodage choisi par l'OS, il y a plein d'autre façons d'encoder cette image, y compris le format BMP dont les octets sont exactement ceux du fichier que tu as joins à ton message un peu plus tôt ^^"
Citer : Posté le 05/05/2020 18:16 | #
Euh...
Ah oui ! C'est bon ! Compris !
Ajouté le 05/05/2020 à 18:22 :
Tu connaîtrais un logiciel pour ouvrir l'OS d'une calto en binaire (hélas non, pas en hexadécimal)
J'ai CodeBlocks, mais ça semble ne pas marcher...
Ajouté le 05/05/2020 à 18:23 :
Nan, oublie, je viens de réussir
Citer : Posté le 05/05/2020 18:24 | #
Comme on l'a dit, le binaire et l'hexa ne sont que deux faces de la même chose, tout éditeur hexa décent t'affichera le binaire.
Mais prends l'habitude de bosser avec l'hexa si tu peux, parce que personne ne s'embête à écrire le binaire complet sauf pour faire des images. C'est pas assez compact.