π
<-

Récupérer le source Lua codé avec OClua depuis Linux

Pour TI-Nspire OS 3.0 ou ultérieur.

Récupérer le source Lua codé avec OClua depuis Linux

Unread postby Levak » 26 Sep 2011, 18:32

Aujourd'hui j'ai codé un script bash pour linux permettant d'automatiser la récupération du code XML d'un classeur depuis l'émulateur de Goplat (nspire_emu).

Ce code s'intègre avec mon lanceur bash pour nspire_emu, concernant uniquement les utilisateurs de Linux.

47 + "dump" "Dumper un classeur (Ctrl+S -- dump.xml)" \
177 + #le code en dessous#
271 + elif [ "$select_noncas" = "dump" ]; then
dump

Code: Select all
function dump {
   local winePath="$HOME/.wine/dosdevices/c:"
   local rom=$(zenity --file-selection --title="Sélectionnez un fichier *.rom" --filename="$RELPAT/");
   if [ "$rom" ]; then
      if [ "${rom##*.}" = "rom" ]; then
         local size=$(zenity --entry --title="Taille du classeur à dumper (octets)" --entry-text="0");
         let num=$size/170
         echo "k 10032AA0 +x" > "$RELPAT/commands.txt"
         echo "c" >> "$RELPAT/commands.txt"
         local i=0
         while [ $i -le $num ]; do
            # Complete tempory file names with zeros so that it's listed correclty
            let local dif=${#num}-${#i}
            local spaces=$(printf "%"$dif"s")
            local zeros=${spaces// /0}
            # Fill command list
            echo "w C:\dump$zeros$i.xml r1 r2" >> "$RELPAT/commands.txt"
            echo "c" >> "$RELPAT/commands.txt"
            let i=$i+1
         done
      
         # Launch emulator with debug command list
         "$RELPAT"/nspire_emu.exe /F="$rom" /B=boot2.img.raw /D < "$RELPAT/commands.txt"
         
         # Concatenate final XML file using tempory files
         echo -n "" > "$RELPAT/dump.xml"
         for f in "$winePath/dump*"; do
            cat $f >> "$RELPAT/dump.xml"
         done
         rm "$winePath/dump*"
         rm "$RELPAT/commands.txt"
      else
         zenity --error --title="Erreur" --text="Veuillez sélectionner un fichier *.rom et pas autre chose ! \n Opération annulée"
      fi
   fi
}


Comme vous aurez pu le voir lors de son intégration, qu'il s'utilise uniquement avec une rom Nspire basique. Il faut rajouter à cela OS 3.0.1 et uniquement ça. Sinon l'adresse de breakpoint change (10032AA0) et je ne connais pas les autres.

Pour l'utiliser, utilisez le lanceur, sélectionnez le choix "Dumper un classeur" puis sélectionner comme d'habitude votre ROM.
Là on vous demandera de rentrer à l'avance (car c'est pas si automatique que ça) la taille du fichier qui vous voudrez dumper en octets.
Cela générera un fichier de commandes de debug pour nspire_emu qui va nous permettre de récupérer automatiquement l'intégralité du classeur sans se casser le poignet.
Ensuite, ouvrez le classeur dans l'émulateur, et faites Ctrl+S. Dans l'invite de commande vous devriez voir plusieurs lignes se rajouter.

Là, fermez l'émulateur, et vous devriez voir un fichier dump.xml

Ce fichier dump.xml contient le source décompressé et décrypté d'un fichier problem.xml, ou de plusieurs concaténés les uns à la suite.

Le rapport avec OClua ? Et bien si vous développez des programmes sur OClua, vous devez surement utiliser le TI-Notepad (Editeur mathématique) pour taper le code. Or, le format du TI-Notepad en XML est juste ... indescriptiblement compliquée pour ce qu'elle est.

Voici comment récupérer son contenu :

Ouvrez une invite de commande dans ce dossier et utilisez :
Code: Select all
echo $(perl -0777 -pe 's/(.*&lt;r2dtotree&gt;|&lt;\/r2dtotree&gt;.*)//gsm' dump.xml | sed "s/&lt;node name=&quot;1para&quot;&gt;/\x0D/g;s/&lt;\/*node[^g]*&gt;//g;s/&lt;\/*leaf[^g]*&gt;//g;s/&lt;cursor[^g]*&gt;//g;s/&amp;quot;/\"/g;s/&amp;apos;/'/g;s/&amp;lt;/</g;s/&amp;gt;/>/g" | sed 's/&amp;/\&/g' ) > dump.lua

Responsable design/graphique de TI-Planet
I do not get mad at people, I just want them to learn the way I learnt.
ImageTNOC [topic][DL]
nClock [topic][DL]
HideManager [topic][DL]
ZLock [topic][DL]
Theme Editor [topic][DL]
Mes programmes
User avatar
LevakAdmin
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 98.9%
 
Posts: 6414
Images: 22
Joined: 27 Nov 2008, 00:00
Location: 0x1AACC355
Gender: Male
Calculator(s):
MyCalcs profile
Class: BAC+5: Epita (ING3)

Return to Nspire-Lua

Who is online

Users browsing this forum: ClaudeBot [spider] and 1 guest

-
Search
-
Social TI-Planet
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1928 utilisateurs:
>1874 invités
>46 membres
>8 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)