Vous n'êtes pas identifié.
Bon en fait c'est pas si simple que je croyais de créer de nouveaux fichiers basiques directement dans la mémoire de la G100:
Comme on le sait un fichier basic ce trouve sous cette forme dans la mémoire à partir de 0x1C20:0xA:
[2bytes (taille)][0x01 (identifieur)][8bytes+8bytes (nom + password)][2bytes (base...)][{taille - 24}bytes (data)][0x0][2bytes (taille)]
(un fichier basic vide prends toujours 24 octets.)
Si on rajoute une telle structure après un fichier basique existant, celui-ci est bien pris en compte dans la taille de la mémoire restante (qu'on voit dans system) mais pas dans celle occupée par les fichiers basics et bien sûr le nouveau fichier basic n'apparaît pas dans la liste...
NOTE: chaque zone mémoire de la G100 que ce soit un fichier basic, une liste, une matrice une mémoire de fonction (FMEM) suit une structure similaire à celle des fichiers basics c'est à dire :
- la taille totale occupé par la zone (2 octets) - un octet contenant un identifieur (1 pour les fichier basic, 5 pour les listes...) - nom de la zone qui prend toujours 8 octets (les caractères non-utilisés sont remplacés par des NULL) - des données - un caractère nul -la taille
(on trouve 2 fois la taille car cela permet de parcourir la mémoire dans les 2 sens pour gagner du temps).
Les identifieurs + le nom de la zone permmettent à la g100 de retrouer les données stockées (les listes et les mémoires de configuration graphiques on pourtant le même identifieur mais si on inverse leur nom ça plante - les donnée ne sont donc pas organisées de la même façon...)
Mais les données de taille et les identifieurs ne disent pas tout, les tailles sont bien lues par la g100 pour savoir la place occupée mais elle ne sont pas utilisées pour déterminé les donnée existantes: quand on rajoute de telles zones la clto s'en fou.
Comme je l'ai dit, si je rajoute artificiellement (en écrivant directement dans la mémoire) un fichier basic (ou une list enfin bref une zone) ce dernier ne sera pas "vu" et si ensuite je créé une zone du même type mais avec la calto cela écrira par dessus la zone que j'ai créé artificiellement, exactement comme si elle n'existait pas...
Il y a donc un endroit quelque part dans la mémoire (avant 0x1c20:0) qui décrit le contenu de la mémoire. J'ai passé plusieurs heures à chercher cette zone en envoyant des backups vers l'ordinateur et en regardant les différences mais en fait elle se remarque très bien dans un fichier .fxb (produit par fxinterface) c'est une zone de moins de 100 octets identifiée dans le fichier par "BKU1RAMI" les donnée de cette zone commence à l'offset 0x24c du fichier fxb et je l'ai retrouvé sur la g100 !
Elle se trouve entre les adresses 1BF2:0 et 1BF8:2 mais je n'ai pas réussi à en comprendre le format qui est très étrange. En tout cas il est absolument certain que cette zone décrit la mémoire car j'ai rempli toute cette zone avec un même caractère et une fois dans le menu system, la g100 me disait qu'il restait 0 octet de libres alors que la mémoire était entièrement vide... Ensuite dés qu'une zone se rajoute (fichier basic une liste ou le replay du mode run...) les données de cette zonne changent mais changent vraiment beaucoup et je n'ai pas encore réussi à en identifier le format mais il y a quand même des trucs remarquable.
DONC SI VOUS POUVIEZ M'AIDER À DECRYPTER CE FORMAT ça me ferait gagner du temps, utilisez le viewer de TOUCHE pour ça bien sûr et pensez au mode curseur surtout pour lire la valeur d'un offset (en appuyant sur C quand le contenu de la mémoir s'affiche).
J'ai aussi trouvé le moyen d'utiliser les zones mémoires particulières aux programmes qui sont dans le menu (si vous mettait TOUCHE avec add-in il 'y aurra une entré TOUCHE2 dans le menu system de la g100), un jour j'ai vu que cette zone n'était plus vide !?!?! J'ai longtemps cherché à comprendre pourquoi puis j'ai trouvé: c'est en exécutant TUTOR depuis COMMAND.COM lui même lancé par T_EXPLOR.EXE lui même exécuté depuis TOUCHE2.EXE (j'avais lancé enter.com avant pour pouvoir utiliser command.com bien sûr).
En fait la g100 garde toujour le nom du dernier programme lancé depuis le menu principale ce nom est stocké juste après le dernier fichier basic comme une autre zone mémoire de 16 octets avec 0x03 comme identifieur, son nom est "FNAME" ensuite viens le nom du programme (3 octets après FNAME bien sûr (5 + 3 == huite)) quand TOUCHE est exécuté depuis le menu on peut y lire "TOUCHE2".
Cela permet aux ingénieurs de CASIO de changer le nom de leur programme sans problème, celui-ci parviendra toujour à sauver ces données en ce référant à cette entrée.
J'ai fait plusieurs essais: comme je l'ai dis si je lance TUTOR depuis TOUCHE et que je l'utilise un peu celui-ci va stocker des données dans "sa" zone mémoire: il va créer une nouvelle zone après toute les autres zone avec l'identifier 0xC et nommée "TOUCHE2" et qui va contenir des trucs à TUTOR.
Si je change l'entrée FNAME...TOUCHE2 par FNAME...ROUCHE2 avant de lancer TUTOR, cet imbécil va créer une zone ROUCHE2 dans la mémoire. Donc il est clair que FNAME sert bien à ça.
NOTE: au cas où vous ne l'auriez pas remarqué les zones sont toujours stockées dans l'ordre croissant des identifieurs.
Bon voilà mes recherches m'ont en outre fait découvrir que certaines zones de la mémoire n'était pas affectées par un reset générale de la mémoire : 1BE2:3 à 1BE3:F et 1BE8:D à 1BF1:F (il y en a peut-être d'autre).
Bon j'espère que ces infos seront utiles, une fois le format décrypté on pourra utiliser les zones spécifiques des programme du menu et je pourrai continuer mes librairies de fichiers basic !
aller @+
PS: (c'est sûrement un des posts les plus long que j'ai jamais écris )
Hors ligne
Tu peux redire TOUTES les zones mémoires que tu veux qu'on inspecte, car là g du mal à différencier ce que tu as trouvé de ce que tu veux trouver (admirez la phrase!)
Hors ligne
la zone entre 1BF2:0 et 1BF8:2, je ne connaît pas le format de cette zone.
Mon post est pourtant clair non ? en tout cas j'avais l'impression.
Hors ligne
Ok ok j'essaye de voir ça dès que je peux mais je pourrai pas trop t d car y'a la rentrée après 2m1...
Hors ligne
c'est genial ce petit recapitulatif que tu nous a fait...
si j'avais mon matos je t'aurais aidé volontier car c'est le genre de truc qui me tripe mais comme g pas mon matos et qu'en plus depuis ce matin j'ai repris les cours...
j'espere que tu trouvera ou qqun d'autre... ce serai genial de pouvoir gerer ça...
Hors ligne
Je t'aiderai bien mais j'ai du mal à comprendre et ya la rentré après 2m1 d'après ce ke je vois sur le chat CasioMax t'aide... Bon courage à vous :up:
Hors ligne
Ouaip je suis en train de décrypter le tout avec 2072 mais c un casse tête chinois ce truc! et c vré après 2m1 c la rentrée dc j'y vais mollo
Hors ligne
voila mon compte-rendu de 0x1BF2,0à 0x1BF8,2 on peut remarquer plusieurs choses mais bon 2072 m'a compris:
Sans fichiers basics .@ ..B ...B ...B ...B ...B ...B ...B ...B ...B ...B ...B ...B ...B ...B ...B ...B ...B ...B ...A8 Avec un fichier basic nommé: 'AAAAAA' .@ ..B ."B .."B .8B ..8B ..8B ..8B .EF ..EF ..EF ..EF . H .. H .. H .. H . 8 H . "B ...A8 Changement de taille: (25 octets) .@ ..B .#B ..#B .9B ..9B ..9B ..9B .FF ..FF ..FF ..FF ..FF . H .. H .. H .. H . 8 H . #B ...A8 Changement de taille: (26 octets) .@ ..B .$B ..$B .:B ..:B ..:B ..:B .GF ..GF ..GF ..GF .!H ..!H ..!H ..!H . 8 H . $B ...A8 Ajout d'une liste de 5 valeurs .@ ..B .2B ..2B .HB ..HB .0B ..0B .TF ..TF ..TF ..TF ..TF .wH ..wH ..wH ..wH . 8vH . 2B ...A8 4 liste de 1 valeur seulement: .@ ..B ...B ...B . B .. B . B .. B .. B .. B .. B .. B .. B .. B .. B .. B ..B . 8pB . .B ...A8
et c corrigé le premier listing!
Hors ligne
:cry: C la rentrée ...
Hors ligne
Bon faut que je refasse les tests mais dsl 2072 la rentrée c 2m1 et y'a des priorités. Alors merci pour tes aides techniques et @ dans 1 ou deux mois!
Hors ligne
Mais y'a plein de trucs qui changent à chaque création d'une nouvelle zone mémoire!
Hors ligne
ben en fait 2072 m'a dit que c une MAT (memory alloc table), mais bo
on c dur à décrypter!
Hors ligne
C klair, je crois ki faut penser komme Casio, vous vous souvenez de l'ecran ?
ben vpous pensez kom ça, il faut penser simple et rapide, un algo rapide doit faire ça
je pense que ça doit etre une addition, a des valeur et aprés un adition, a qulque valeurs suivantes, ...
Un algo simple et performant
Hors ligne
Ben tu sais quoi, g comme l'impression que ce sont les stagiaires qui ont fait cet algo si tu veux mon avis!
Hors ligne
Hors ligne
Ouais et pui comme ils sont sympa avec nous y vont nous répondre b*t*rds !! :evil:
Hors ligne
Je crois avoir compris comment marche ce truc, mais jai pas finit de tt explorer et de tt récapituler, ce message ne comportera pas de réelles Informations, je vais ecrire un texte clair ou tt sera expliké en détail.
Mais sachez que pour pouvoir décoder ça jai du programmer un petit executable sur casio (Sender) qui menvoie juste les 100 octets dont jai besoin a 115200 Bps !!!! c speed au lieu dattendre ke FxInterface ne me fasse son petit backup ki prend 10 min!
ensuite jai utilisé le SystemExplorerReceiver ( pour recevoir les données sur PC) et jai fait Un Decodeur en C++ qui soccupe de traiter les données reçues et de les formatter pour une eventuelle sortie ss forme de fichier txt .
Je prévois de vous remettre tt ça ce week-End .
jespere ke 2072 sera content
@++
Hors ligne
Oui, merci beaucoup de ton aide précieuse ! J'attends avec impatience le résultat de tes recherches !
Hors ligne
(ps:J'ai fournit a Yass des sources d'un prog ki sert a recupere la ram et la rom par le port comm, ki veut les sources, me mail !)
C genial !!
Kom ça on pourra savoir komment casio est con !!!!
Hors ligne
C'est clair que quand ce mystère sera élucidé la g100 n'aura plus bcp de secrêts pour nous ! À part un peut-être : comment la flash des fonctions composées fait elle pour interragir avec les aut progs mais là aussi je pense avoir trouvé la zone mémoire qui gère ça... mais bon c'est pas très utile...
Hors ligne
ça y est je pense que j'ai trouvé !!
En fait c'est tout con:
vous avez remarquer ces ..B (0x0 0x0A 0x42) qui se répête eh bien en fait chacune de ces 3 octets représente l'adresse de départ de chaque zone mémoire par rapport à 0x1800:0 (0x1800:0 + 0x420A == 0x1C20:A !!!)
Quand tout est vide on a bien les 3 première répetition identique (0x0 0x0A 0x42) sauf que la 4ème est (0x0 0x20 0x42) et toute les autre ensuite...
Tout est vide ? Non: il y a toujours ce Fname qui prends 16 octets et 0x20 - 0x0A == 16 !!
Eh oui c'est bien ça quand tout est vide ce FNAME ce trouve à 1C20:A rappelez-vous que ce FNAME à pour identifieur 0x03 d'où les 3 première répétition identique: les zone identifier par 1, 2 ou 3 commence à 0x1800 + 0x420A et la 4ème à 0x1800 + 0x420A + l'espace occupé par la 3 ème zone ! Et ainsi de suite...
Par contre à l'add 0x1BF7:3 les valeurs changent même qd tout est vide il faut que je me penche là-dessus mais sinon je pense que c'est ça !
Dîtes-moi si vous avez d'autres idées !
@+
PS: à 1800:0 y'a un truc bizarre : 0x47 0x0F 0x47 0x0F là je sais pas ce que c'est pour l'instant.
Hors ligne