https://hackspire.org//api.php?action=feedcontributions&user=Squalyl&feedformat=atomHackspire - User contributions [en]2024-03-28T08:45:51ZUser contributionsMediaWiki 1.38.4https://hackspire.org//index.php?title=Main_Page:fr&diff=1618Main Page:fr2014-08-11T07:38:53Z<p>Squalyl: </p>
<hr />
<div>Ce wiki est dédié aux travaux pour hacker la Nspire.<br />
<br />
Autres langues:<br />
* [[Main_Page]]<br />
* [[Main_Page:de]]<br />
<br />
<br />
<br />
==Insciption==<br />
A cause des spambots l'inscription automatique est désactivée.<br />
<br />
Si vous voulez un compte, envoyez un email à squalyl chez unsads (com après le point) en mettant "hackspire" dans l'objet, et en me disant rapidement pourquoi vous voulez vous inscrire (je ne répondrai pas à ceux qui veulent un compte juste pour avoir son nom dans la liste).<br />
<br />
==Bienvenue==<br />
<br />
Bienvenue à vous sur le wiki « Hackspire ».<br />
Le but de ce site est de fédérer tous les efforts de recherche sur la nouvelle calculatrice « Nspire » de Texas Instruments.<br />
<br />
N'hésitez pas à apporter votre contribution, plus nous avons de détails et plus nous irons vite pour que cette calculette fasse ce qu'on veut ! La société TI est super pour les programmes intégrés de maths, de physique, etc. Mais les développeurs indépendants sont meilleurs pour tout le reste, car TI n'a pas de temps à consacrer à ça !<br />
<br />
Si vous voulez continuer l'aventure des TI89 et 92+/Voyage 200 avec la Nspire, participez ! Vous n'avez pas besoin de désosser votre belle calculette pour ça, n'importe quelle contribution est la bienvenue, par exemple :<br />
<br />
* la communication : Rechercher les communautés françaises et internationales qui travaillent déjà sur la Nspire est important, car nous pensons que 1+1 est toujours supérieur à deux, c'est-à-dire que les travailleurs isolés ont tout intérêt à se regrouper pour améliorer leur efficacité, tout en bénéficiant de l'effort commun<br />
* le bidouillage : Nous devons trouver comment exécuter des programmes perso.<br />
* le développement du wiki : Je n'ai pas le temps de remplir toutes les pages du wiki en fonction de tout ce qui se passe sur les forums parlant de ce domaine. Si vous avez un peu de temps, écrivez des pages de wiki qui synthétisent les efforts faits et les découvertes... N'oubliez pas les sources !<br />
* Traduction : la langue officielle de ce wiki est l'anglais, mais faciliter la compréhension, aidez nous à traduire les pages pour que tout le monde puisse en profiter au mieux.<br />
*Et si vous possédez une Nspire, et que vous voulez juste pouvoir jouer à Mario et à d'autres super jeux, soyez patients et après avoir écrit votre nom dans la [[NSpire Owners List]] (liste des possesseurs de Nspire), posez des questions aux personnes qui s'y connaissent pour développer vos talents. Cela se passe sur [http://www.yaronet.com/sujets.php?f=2845 le forum yAronet des débutants de la Nspire].<br />
<br />
Ah, et si vous avez fait un test quelconque, que vous avez trouvé un moyen de faire planter votre calculette d'une manière qu'on connait pas encore, que vous avez découvert quelque chose qui ressemble à une faille, ou autre, n'hésitez pas à poster votre trouvaille ici: [[Contributed_Tests:fr]]<br />
Merci !<br />
<br />
squalyl, fondateur du wiki Hackspire.<br />
<br />
== Nouvelles du site==<br />
03102010 Restauration de la Base de donnée après un crash. Heureusement, très peu de données ont été perdues. Vous risquez cependant d'avoir à recréer votre compte.<br />
<br />
28102007 Ajout d'une [[Announces:fr|page pour les annonces]]<br />
<br />
23082007 L'édition des pages est interdite pour les gens non connectés<br />
<br />
08082007 Le fichier robots.txt qui bloquait l'indexation a été supprimé pour autoriser les moteurs de recherches à indexer le site et autoriser tout le monde à nous trouver. Un fichier [http://www.sitemap.org sitemap] a été ajouté pour référencer Main_page, Hardware et Operating_System. Si de bonnes âmes veulent traduire ces pages, elles sont bienvenues, mais leur évolution rapide rendra les choses difficiles.<br />
<br />
== Communautés ==<br />
===Forums and sites d'information===<br />
Bien que non spécifiques à la TI-Nspire, ces sites français sont fréquentés par de nombreux développeurs sur TI-Nspire.<br />
<br />
[http://ti-planet.org TI-Planet] ([http://ti-planet.org/forum/index.php forum]) (le plus actif)<br />
<br />
[http://yaronet.com/sujets.php?f=2844 yAronet] (où tout a commencé)<br />
<br />
=== Channels IRC (en anglais) ===<br />
<br />
<code>#inspired at irc.freequest.net:7000</code> - SSL: port 9999<br />
<br />
<code>#inspired at efnet.xs4all.nl:6667</code> - SSL: port 6697<br />
<br />
== Pages Principales ==<br />
===Support===<br />
*[[User FAQ|FAQ]]<br />
<br />
===Projets, programmes and outils===<br />
*[[Emulators|Emulateurs]]<br />
*[[Assembly programs|Programmes en assembleur]]<br />
<br />
===Ressources de développement!===<br />
*[[Ndless]]<br />
*[[C and assembly development introduction|Introduction au développement en C et en assembleur]]<br />
*[[Syscalls|Appels système]]<br />
*[[libndls]]<br />
*[[Debugging programs|Débogage]]<br />
*[[Ndless features and limitations|Ce que fait Ndless, et ses limitations]]<br />
*[[Memory-mapped I/O ports|Ports d'entrée-sortie mappés en mémoire]]<br />
*[[Virtual Memory|Mémoire virtuelle]]<br />
*[[Memory layout]]<br />
*[[USB Protocol|protocole USB]]<br />
*[[Interrupts|Interruptions]]<br />
*[[Hardware|Matériel]]<br />
<br />
===Informations sur l'OS===<br />
*[[Operating System|Système d'exploitation]]<br />
*[[OS upgrade files|Fichier de mise à jour de l'OS]]<br />
*[[TNS File Format|Format de fichier TNS]]<br />
*[[Document management|Gestion des documents]]<br />
*[[TI-84 Plus Emulation|Emulation de la TI-84 Plus]]<br />
<br />
===Autres===<br />
*[[Miscellaneous Information|Informations en vrac]]<br />
*[[Information Requests|Demande d'informations]]<br />
*[[TI-Nspire CAS Software|Le logiciel PC TI-Nspire CAS]]<br />
*[[Links|Liens]]</div>Squalylhttps://hackspire.org//index.php?title=Main_Page&diff=1617Main Page2014-08-11T07:37:04Z<p>Squalyl: /* Registration disabled. */</p>
<hr />
<div>This wiki is dedicated to hacking and development on the TI-Nspire.<br />
<br />
Translations:<br />
* [[Main_Page:fr]]<br />
* [[Main_Page:de]]<br />
<br />
== How to register ==<br />
<br />
Please write at squalyl on unsads (com after the dot) to register.<br />
<br />
Don't forget to ADD the name of this wiki in your message subject, and tell my why you want to register (just wanting to have your name in the list is not sufficient) otherwise I won't read it.<br />
<br />
==Welcome==<br />
<br />
Welcome to you on Hackspire, the TI-Nspire Hackings wiki.<br />
The goal of this wiki is to federate all research efforts about the Texas Instruments TI-Nspire calculator.<br />
<br />
Feel free to add your contribution, the more details we get, the faster we can get this calculator work for us!<br />
TI Software is great for Mathematics, Physics... And independent developers are great for all the rest, because TI does not have time for this!<br />
<br />
If you want to continue the TI-89 and TI92+ success story with the TI-Nspire, please contribute! You don't need to destroy your calc for this, any contribution is welcome! Examples include:<br />
<br />
* Communication: Searching for communities working on TI-Nspire is important, we feel that 1+1>2, ie lonely developers can benefit from common efforts<br />
* Hacking: We need to investigate the ability of TI-Nspire to run independent software<br />
* Wiki development: I'm not good at writing wiki pages, organizing categories, etc... If you know how to run a wiki actively, you can contribute!<br />
* And if you are a TI-Nspire owner, and are just waiting to play Mario and other cool games, be patient and after having registered yourself in the [[NSpire Owners List]], ask questions to develop your hacking skills :)<br />
<br />
Oh, and if you find something weird, a bug, a feature, a test you did and you don't know where to put it, feel free to edit this page: [[Contributed_Tests]]<br />
<br />
Thank you!<br />
<br />
squalyl, Hackspire wiki founder.<br />
<br />
== Site news ==<br />
20101003 Database restoration after a filesystem failure. Fortunately no or little data has been lost. You still may need to recreate your user account.<br />
<br />
20071029 Added [[Announces|an announce page]] to note important steps, discoveries, etc<br />
<br />
20070823 Editing disabled for anonymous users<br />
<br />
20070808 The robots.txt file that prevented indexation has been removed, to allow indexing and allow the world to come here. A sitemap has been added for Main_page, Operating_System and Hardware.<br />
<br />
== Communities ==<br />
===Forums and News sites===<br />
Although not specific to the TI-Nspire, these web sites are visited by many TI-Nspire hackers and developers.<br />
<br />
[http://www.omnimaga.org Omnimaga] ([http://www.omnimaga.org/index.php?action=forum forum]) (most active - English spoken)<br />
<br />
[http://tiplanet.org TI-Planet] ([http://tiplanet.org/forum/index.php forum]) (most active - French spoken)<br />
<br />
===Independent TI-Nspire Developers IRC channels===<br />
General discussion: <code>#inspired at efnet.xs4all.nl:6667</code> (SSL on port 6697), or another server listed on http://www.efnet.org/?module=servers .<br />
<br />
More specifically aimed at Lua programming: <code>#nspire-lua at efnet.xs4all.nl:6667</code> (SSL on port 6697), or another server listed on http://www.efnet.org/?module=servers .<br />
<br />
== Current pages ==<br />
===Support===<br />
*[[User FAQ|Frequently Asked Questions]]<br />
<br />
===Projects, programs and tools===<br />
*[[Emulators]]<br />
*[[Assembly programs]]<br />
*[[Lua Programs]]<br />
*[[Linux]]<br />
<br />
===Development resources===<br />
*[[Ndless]]<br />
*[[C and assembly development introduction on Linux]]<br />
*[[Development FAQ|Frequently Asked Questions]]<br />
*[[Syscalls|Syscalls and standard libraries]]<br />
*[[libndls|libndls - TI-Nspire-specific library]]<br />
*[[Lua Programming]]<br />
*[[CAS Programming]]<br />
*[[Debugging programs]]<br />
*[[Ndless features and limitations]]<br />
*[[Memory-mapped I/O ports]]<br />
*[[Clock speed]]<br />
*[[Keypads]]<br />
*[[Virtual Memory]]<br />
*[[NAND Memory Layout]]<br />
*[[USB Protocol]]<br />
*[[Interrupts]]<br />
*[[Hardware]]<br />
<br />
===OS information===<br />
*[[Operating System]]<br />
*[[OS upgrade files]]<br />
*[[TNS File Format]]<br />
*[[Document management]]<br />
*[[TI-84 Plus Emulation]]<br />
*[[Internal Filesystem]]<br />
<br />
===Miscellaneous===<br />
*[[Miscellaneous Information]]<br />
*[[Information Requests]]<br />
*[[TI-Nspire CAS Software]]<br />
*[[Links]]</div>Squalylhttps://hackspire.org//index.php?title=Main_Page&diff=1616Main Page2014-08-11T07:36:45Z<p>Squalyl: /* Registration disabled. */</p>
<hr />
<div>This wiki is dedicated to hacking and development on the TI-Nspire.<br />
<br />
Translations:<br />
* [[Main_Page:fr]]<br />
* [[Main_Page:de]]<br />
<br />
== Registration disabled. ==<br />
<br />
Please write at squalyl on unsads (com after the dot) to register.<br />
<br />
Don't forget to ADD the name of this wiki in your message subject, and tell my why you want to register (just wanting to have your name in the list is not sufficient) otherwise I won't read it.<br />
<br />
==Welcome==<br />
<br />
Welcome to you on Hackspire, the TI-Nspire Hackings wiki.<br />
The goal of this wiki is to federate all research efforts about the Texas Instruments TI-Nspire calculator.<br />
<br />
Feel free to add your contribution, the more details we get, the faster we can get this calculator work for us!<br />
TI Software is great for Mathematics, Physics... And independent developers are great for all the rest, because TI does not have time for this!<br />
<br />
If you want to continue the TI-89 and TI92+ success story with the TI-Nspire, please contribute! You don't need to destroy your calc for this, any contribution is welcome! Examples include:<br />
<br />
* Communication: Searching for communities working on TI-Nspire is important, we feel that 1+1>2, ie lonely developers can benefit from common efforts<br />
* Hacking: We need to investigate the ability of TI-Nspire to run independent software<br />
* Wiki development: I'm not good at writing wiki pages, organizing categories, etc... If you know how to run a wiki actively, you can contribute!<br />
* And if you are a TI-Nspire owner, and are just waiting to play Mario and other cool games, be patient and after having registered yourself in the [[NSpire Owners List]], ask questions to develop your hacking skills :)<br />
<br />
Oh, and if you find something weird, a bug, a feature, a test you did and you don't know where to put it, feel free to edit this page: [[Contributed_Tests]]<br />
<br />
Thank you!<br />
<br />
squalyl, Hackspire wiki founder.<br />
<br />
== Site news ==<br />
20101003 Database restoration after a filesystem failure. Fortunately no or little data has been lost. You still may need to recreate your user account.<br />
<br />
20071029 Added [[Announces|an announce page]] to note important steps, discoveries, etc<br />
<br />
20070823 Editing disabled for anonymous users<br />
<br />
20070808 The robots.txt file that prevented indexation has been removed, to allow indexing and allow the world to come here. A sitemap has been added for Main_page, Operating_System and Hardware.<br />
<br />
== Communities ==<br />
===Forums and News sites===<br />
Although not specific to the TI-Nspire, these web sites are visited by many TI-Nspire hackers and developers.<br />
<br />
[http://www.omnimaga.org Omnimaga] ([http://www.omnimaga.org/index.php?action=forum forum]) (most active - English spoken)<br />
<br />
[http://tiplanet.org TI-Planet] ([http://tiplanet.org/forum/index.php forum]) (most active - French spoken)<br />
<br />
===Independent TI-Nspire Developers IRC channels===<br />
General discussion: <code>#inspired at efnet.xs4all.nl:6667</code> (SSL on port 6697), or another server listed on http://www.efnet.org/?module=servers .<br />
<br />
More specifically aimed at Lua programming: <code>#nspire-lua at efnet.xs4all.nl:6667</code> (SSL on port 6697), or another server listed on http://www.efnet.org/?module=servers .<br />
<br />
== Current pages ==<br />
===Support===<br />
*[[User FAQ|Frequently Asked Questions]]<br />
<br />
===Projects, programs and tools===<br />
*[[Emulators]]<br />
*[[Assembly programs]]<br />
*[[Lua Programs]]<br />
*[[Linux]]<br />
<br />
===Development resources===<br />
*[[Ndless]]<br />
*[[C and assembly development introduction on Linux]]<br />
*[[Development FAQ|Frequently Asked Questions]]<br />
*[[Syscalls|Syscalls and standard libraries]]<br />
*[[libndls|libndls - TI-Nspire-specific library]]<br />
*[[Lua Programming]]<br />
*[[CAS Programming]]<br />
*[[Debugging programs]]<br />
*[[Ndless features and limitations]]<br />
*[[Memory-mapped I/O ports]]<br />
*[[Clock speed]]<br />
*[[Keypads]]<br />
*[[Virtual Memory]]<br />
*[[NAND Memory Layout]]<br />
*[[USB Protocol]]<br />
*[[Interrupts]]<br />
*[[Hardware]]<br />
<br />
===OS information===<br />
*[[Operating System]]<br />
*[[OS upgrade files]]<br />
*[[TNS File Format]]<br />
*[[Document management]]<br />
*[[TI-84 Plus Emulation]]<br />
*[[Internal Filesystem]]<br />
<br />
===Miscellaneous===<br />
*[[Miscellaneous Information]]<br />
*[[Information Requests]]<br />
*[[TI-Nspire CAS Software]]<br />
*[[Links]]</div>Squalylhttps://hackspire.org//index.php?title=C_and_assembly_development_introduction&diff=1472C and assembly development introduction2013-06-19T20:53:00Z<p>Squalyl: /* A C program */ Great job, friends!</p>
<hr />
<div>This tutorial describes how to set up an environment and use the Ndless SDK to write native Ndless-compatible programs for the TI-Nspire '''on Linux'''.<br />
<br />
If you are looking for a Windows tutorial, get one in the development resources of [http://ndlessly.wordpress.com ndlessly].<br />
<br />
==Setting up a development environment==<br />
*Get the [http://www.unsads.com/projects/nsptools/downloader/download/release/5 Ndless SDK] which resources for C and assembly development on TI-Nspire. This article is written for the Ndless SDK v3.1 beta r695 and higher.<br />
*Add the <tt>ndless/bin/</tt> directory of the SDK to your <tt>PATH</tt> environment variable (see [http://www.troubleshooters.com/linux/prepostpath.htm this tutorial]). If you don't like messing with PATH stuff, it's easy to just link the files inside. As root in the sdk/bin directory, run "link ./nspire-* /bin/nspire-*" where * is replaced with gcc, as and ld.<br />
*Choose an [[Emulators|emulator]] that will ease the development of programs<br />
*Install a GNU ARM toolchain. You can use the following script:<br />
**No need to be root<br />
**Add $HOME/bin to $PATH<br />
**You need the GMP, MPFR, MPC and CURSES development libraries.<br />
<br />
#!/bin/sh<br />
# Written by Uwe Hermann <uwe@hermann-uwe.de>, released as public domain.<br />
# Edited by Travis Wiens ( http://blog.nutaksas.com/2009/05/installing-gnuarm-arm-toolchain-on.html )<br />
# Edited by Lionel Debroux for newer gcc/binutils/newlib/gdb versions and nspire-gcc.<br />
<br />
TARGET=arm-none-eabi<br />
PREFIX=/usr/local<br />
PARALLEL="-j2" # or "-j<number of build jobs>"<br />
<br />
BINUTILS=binutils-2.23.2 # http://www.gnu.org/software/binutils/<br />
GCC=gcc-4.8.1 # http://gcc.gnu.org/<br />
NEWLIB=newlib-2.0.0 # http://sourceware.org/newlib/<br />
GDB=gdb-7.6 # http://www.gnu.org/software/gdb/<br />
<br />
mkdir build-binutils<br />
mkdir build<br />
<br />
# IMPORTANT NOTE: in order to compile GCC 4.8, you need the GMP, MPFR and MPC development libraries.<br />
# For example, if you have installed them yourself in $PREFIX, you'll have to add --with-gmp=$PREFIX --with-mpfr=$PREFIX --with-mpc=$PREFIX.<br />
<br />
# NOTE: the second rm -rf is commented, because it's not strictly necessary.<br />
<br />
# Section 1: GNU Binutils.<br />
(wget -c http://ftp.gnu.org/gnu/binutils/$BINUTILS.tar.bz2 && tar xvjf $BINUTILS.tar.bz2 && cd build-binutils && ../$BINUTILS/configure --target=$TARGET --prefix=$PREFIX --enable-interwork --enable-multilib --with-system-zlib --with-gnu-as --with-gnu-ld --disable-nls --with-float=soft --disable-werror && make $PARALLEL all && make install && cd ..) || exit 1;<br />
##rm -rf $BINUTILS $BINUTILS.tar.bz2<br />
<br />
# Section 2: GCC, step 1.<br />
(wget -c ftp://ftp.gnu.org/gnu/gcc/$GCC/$GCC.tar.bz2 && tar xvjf $GCC.tar.bz2 && cd build && ../$GCC/configure --target=$TARGET --prefix=$PREFIX --enable-interwork --enable-multilib --enable-languages="c,c++" --with-system-zlib --with-newlib --without-headers --disable-shared --with-gnu-as --with-gnu-ld --with-float=soft --disable-werror && make $PARALLEL all-gcc && make install-gcc && cd .. && rm -rf build/*) || exit 1;<br />
##rm -rf $GCC.tar.bz2<br />
<br />
# Section 3: Newlib.<br />
(wget -c ftp://sourceware.org/pub/newlib/$NEWLIB.tar.gz && tar xvzf $NEWLIB.tar.gz && cd build && ../$NEWLIB/configure --target=$TARGET --prefix=$PREFIX --enable-interwork --enable-multilib --with-gnu-as --with-gnu-ld --disable-nls --with-float=soft --disable-werror && make $PARALLEL && make install && cd .. && rm -rf build/*) || exit 1;<br />
##rm -rf $NEWLIB $NEWLIB.tar.gz<br />
<br />
# Section 4: GCC, step 2. Yes, this is necessary.<br />
(cd build && ../$GCC/configure --target=$TARGET --prefix=$PREFIX --enable-interwork --enable-multilib --enable-languages="c,c++" --with-system-zlib --with-newlib --disable-shared --with-gnu-as --with-gnu-ld --with-float=soft --disable-werror && make $PARALLEL && make install && cd .. && rm -rf build/*) || exit 1<br />
##rm -rf $GCC<br />
<br />
# Section 5: GDB.<br />
(wget -c ftp://ftp.gnu.org/gnu/gdb/$GDB.tar.bz2 && tar xvjf $GDB.tar.bz2 && cd build && ../$GDB/configure --target=$TARGET --prefix=$PREFIX --enable-interwork --enable-multilib --disable-werror && make $PARALLEL && make install && cd .. && rm -rf build/*) || exit 1;<br />
##rm -rf $GDB $GDB.tar.bz2<br />
<br />
# Section 6: elf2flt.<br />
cat > Ndless-elf2flt.patch << EOF<br />
91a92,97<br />
> #define R_ARM_CALL 28<br />
> #define R_ARM_JUMP24 29<br />
> #define R_ARM_TARGET1 38<br />
> #define R_ARM_V4BX 40<br />
> #define R_ARM_TARGET2 41<br />
> #define R_ARM_PREL31 42<br />
647a654,660<br />
> case R_ARM_NONE:<br />
> case R_ARM_PREL31:<br />
> case R_ARM_TARGET1:<br />
> case R_ARM_TARGET2:<br />
> case R_ARM_CALL:<br />
> case R_ARM_V4BX:<br />
> case R_ARM_JUMP24:<br />
EOF<br />
<br />
(cvs -z3 -d:pserver:anonymous@cvs.uclinux.org:/var/cvs checkout -P elf2flt && patch elf2flt/elf2flt.c Ndless-elf2flt.patch && cd build && ../elf2flt/configure --target=$TARGET --prefix=$PREFIX -with-libbfd=../build-binutils/bfd/libbfd.a --with-libiberty=../build-binutils/libiberty/libiberty.a --with-bfd-include-dir=../build-binutils/bfd --with-binutils-include-dir=../$BINUTILS/include && make $PARALLEL && make install && cd .. && rm -rf build/*) || exit 1;<br />
<br />
*Create symbolic links to <tt>arm-linux-gnueabi-*</tt> for the different GCC tools (ld, gcc, objcopy, ...) if your installation use custom file names.<br />
<br />
===Verifying the installation===<br />
*Open a console, and run:<br />
$ nspire-gcc<br />
If everything has been correctly set up you should see something similar to:<br />
arm-none-eabi-gcc: no input files<br />
<br />
As a convention for the next chapters, lines starting with <tt>$</tt> are commands you should type in a console. Other lines are commands output. You may [http://info.ee.surrey.ac.uk/Teaching/Unix/ pick up a tutorial] to learn the basic Unix commands before we continue.<br />
<br />
==5-minute tutorial==<br />
===Your first build===<br />
Ndless comes with sample programs in the ''_samples/'' directory of the Ndless SDK. We will try to build the C Hello World.<br />
Change the current directory of the console:<br />
$ cd "<my_ndless_sdk_copy>/_samples/helloworld"<br />
Check the content of the directory:<br />
$ ls<br />
Makefile hello.c<br />
A ''Makefile'' is a script which describes how to build the program. It is interpreted by ''GNU Make'', which is run with the command <tt>make</tt>. So let's ''make'' the program:<br />
$ make<br />
nspire-gcc -Os -Wall -W -c hello.c<br />
nspire-ld -nostdlib hello.o -o hello.elf<br />
mkdir -p ../../calcbin/samples<br />
''make'' tells us the different commands used during the building process.<br />
<br />
arm-none-eabi-objcopy -O binary hello.elf ../../calcbin/samples/hello.tns<br />
<tt>nspire-gcc</tt> is Ndless's wrapper for the GNU C Compiler ''GCC'', which compiles C and assembly source files to object files (here ''hello.o'').<br />
<br />
<tt>nspire-ld</tt> is the wrapper for the GNU linker ''ld'', which combines object files to produce an executable in the [http://en.wikipedia.org/wiki/Executable_and_Linkable_Format ELF] format (here ''hello.elf'').<br />
<br />
<tt>arm-none-eabi-objcopy</tt> is a GNU utility used to convert the ELF file to an Ndless-compatible executable directly runnable on a TI-Nspire. The file ''hello.tns'' can be found in ''src/calcbin/samples''.<br />
<br />
===A C program===<br />
Let's have a look at the Hello World source code ''hello.c''. It follows the C conventions.<br />
<br />
It has an entry point:<br />
int main(void) {<br />
and a return code (required but currently ignored by Ndless and the OS):<br />
return 0;<br />
}<br />
All Ndless programs requires the standard include file, ''os.h'':<br />
#include <os.h><br />
<br />
This allows programs to call ''syscalls'' provided by the TI-Nspire Operating System. Some syscalls are functions from the [http://en.wikipedia.org/wiki/C_standard_library C standard library], others are part of the [http://en.wikipedia.org/wiki/C_POSIX_library C POSIX library]. There are also functions of [http://en.wikipedia.org/wiki/Nucleus_RTOS Nucleus RTOS] on which is based the TI-Nspire OS.<br />
<br />
We are also using the ''nspireio2'' library provided with the SDK:<br />
#include <nspireio2.h><br />
<br />
Let's now say hello with nspireio2:<br />
nio_console csl;<br />
lcd_ingray(); // because nspireio2 doesn't support colors<br />
clrscr(); // clear the screen<br />
// 53 columns, 29 rows. 0px offset for x/y.<br />
// Background color 0 (black), foreground color 15 (white)<br />
nio_InitConsole(&csl, 53, 29, 0, 0, 0, 15);<br />
nio_DrawConsole(&csl);<br />
nio_printf(&csl, "hello world!");<br />
wait_key_pressed();<br />
nio_CleanUp(&csl);<br />
<br />
===Your first program===<br />
You can copy the ''helloworld'' directory and start to adapt the source code.<br />
<br />
If you want to create a program from scratch:<br />
*Create a new directory for the program<br />
*Type in a console:<br />
cd "<your directory path>"<br />
nspire-tools new <program><br />
:where <program> is your program name. This will create a Makefile to build ''<program>.tns''<br />
*Create a new .c file and edit your program<br />
*Run the <tt>make</tt> command to build it<br />
<br />
===Going further===<br />
*Pick up a good C tutorial before writing your own programs<br />
*Learn the syntax of [http://www.gnu.org/software/make/manual/make.html GNU Make's Makefiles] to adapt them to your own build requirements<br />
*Learn to use [http://gcc.gnu.org/onlinedocs/gcc/ GNU GCC] features and extensions</div>Squalylhttps://hackspire.org//index.php?title=Talk:Linux&diff=1392Talk:Linux2012-12-12T10:10:09Z<p>Squalyl: </p>
<hr />
<div>Cant we combine the statuses of clickpad and touchpad? They're both the same, only the touchpad has a touchpad instead of a clickpad. --[[User:Vogtinator|Vogtinator]] 18:18, 10 December 2012 (CET)<br />
<br />
Not sure if many people are reading this... You can have a try, and reverse it if it doesn't fit ;) [[User:Squalyl|squalyl]] 11:10, 12 December 2012 (CET)</div>Squalylhttps://hackspire.org//index.php?title=Main_Page&diff=1198Main Page2011-10-12T18:57:28Z<p>Squalyl: /* Registration disabled. */</p>
<hr />
<div>This wiki is dedicated to hacking and development on the TI-Nspire.<br />
<br />
Translations:<br />
* [[Main_Page:fr]]<br />
* [[Main_Page:de]]<br />
<br />
== Registration disabled. ==<br />
<br />
Please write at squalyl on unsads (com after the dot) to register.<br />
<br />
Don't forget to ADD the name of this wiki in your message subject, otherwise I won't read it.<br />
<br />
==Welcome==<br />
<br />
Welcome to you on Hackspire, the TI-Nspire Hackings wiki.<br />
The goal of this wiki is to federate all research efforts about the Texas Instruments TI-Nspire calculator.<br />
<br />
Feel free to add your contribution, the more details we get, the faster we can get this calculator work for us!<br />
TI Software is great for Mathematics, Physics... And independent developers are great for all the rest, because TI does not have time for this!<br />
<br />
If you want to continue the TI-89 and TI92+ success story with the TI-Nspire, please contribute! You don't need to destroy your calc for this, any contribution is welcome! Examples include:<br />
<br />
* Communication: Searching for communities working on TI-Nspire is important, we feel that 1+1>2, ie lonely developers can benefit from common efforts<br />
* Hacking: We need to investigate the ability of TI-Nspire to run independent software<br />
* Wiki development: I'm not good at writing wiki pages, organizing categories, etc... If you know how to run a wiki actively, you can contribute!<br />
* And if you are a TI-Nspire owner, and are just waiting to play Mario and other cool games, be patient and after having registered yourself in the [[NSpire Owners List]], ask questions to develop your hacking skills :)<br />
<br />
Oh, and if you find something weird, a bug, a feature, a test you did and you don't know where to put it, feel free to edit this page: [[Contributed_Tests]]<br />
<br />
Thank you!<br />
<br />
squalyl, Hackspire wiki founder.<br />
<br />
== Site news ==<br />
20101003 Database restoration after a filesystem failure. Fortunately no or little data has been lost. You still may need to recreate your user account.<br />
<br />
20071029 Added [[Announces|an announce page]] to note important steps, discoveries, etc<br />
<br />
20070823 Editing disabled for anonymous users<br />
<br />
20070808 The robots.txt file that prevented indexation has been removed, to allow indexing and allow the world to come here. A sitemap has been added for Main_page, Operating_System and Hardware.<br />
<br />
== Communities ==<br />
===Forums and News sites===<br />
Although not specific to the TI-Nspire, these web sites are visited by many TI-Nspire hackers and developers.<br />
<br />
[http://www.omnimaga.org Omnimaga] ([http://www.omnimaga.org/index.php?action=forum forum]) (most active - English spoken)<br />
<br />
[http://ti-planet.org TI-Planet] ([http://ti-planet.org/forum/index.php forum]) (most active - French spoken)<br />
<br />
[http://www.unitedti.org/forum/index.php?showforum=67 United-TI] (where hacking begun - English spoken)<br />
<br />
[http://yaronet.com/sujets.php?f=2844 yAronet] (where hacking began - French spoken)<br />
<br />
===Independent TI-Nspire Developers IRC channels===<br />
<code>#inspired at efnet.xs4all.nl:6667</code> - SSL on port 6697<br />
<br />
<code>#nspire-lua at efnet.xs4all.nl:6667</code> - SSL on port 6697 (for Lua programming)<br />
<br />
<code>#inspired at irc.freequest.net:7000</code> - SSL on port 9999<br />
<br />
== Current pages ==<br />
===Support===<br />
*[[User FAQ|Frequently Asked Questions]]<br />
<br />
===Projects, programs and tools===<br />
*[[Emulators]]<br />
*[[Assembly programs]]<br />
*[[Lua Programs]]<br />
<br />
===Development resources===<br />
*[[Ndless]]<br />
*[[C and assembly development introduction]]<br />
*[[Development FAQ|Frequently Asked Questions]]<br />
*[[Syscalls|Syscalls and standard libraries]]<br />
*[[libndls|libndls - TI-Nspire-specific library]]<br />
*[[Lua Programming]]<br />
*[[CAS Programming]]<br />
*[[Debugging programs]]<br />
*[[Ndless features and limitations]]<br />
*[[Memory-mapped I/O ports]]<br />
*[[Keypads]]<br />
*[[Virtual Memory]]<br />
*[[Memory layout]]<br />
*[[USB Protocol]]<br />
*[[Interrupts]]<br />
*[[Hardware]]<br />
<br />
===OS information===<br />
*[[Operating System]]<br />
*[[OS upgrade files]]<br />
*[[TNS File Format]]<br />
*[[Document management]]<br />
*[[TI-84 Plus Emulation]]<br />
<br />
===Miscellaneous===<br />
*[[Miscellaneous Information]]<br />
*[[Information Requests]]<br />
*[[TI-Nspire CAS Software]]<br />
*[[Links]]</div>Squalylhttps://hackspire.org//index.php?title=Retroengineering&diff=1184Retroengineering2011-09-06T08:56:36Z<p>Squalyl: </p>
<hr />
<div>=France=<br />
En france, le droit à la rétro ingénierie est garantie par l'article L122-6-1 du code de la Propriété intellectuelle :<br />
<br />
IV. La reproduction du code du logiciel ou la traduction de la forme de ce code n'est pas soumise à l'autorisation de l'auteur lorsque la reproduction ou la traduction au sens du 1° ou du 2° de l'article L. 122-6 est indispensable pour obtenir les informations nécessaires à l'interopérabilité d'un logiciel créé de façon indépendante avec d'autres logiciels, sous réserve que soient réunies les conditions suivantes :<br />
<br />
1° Ces actes sont accomplis par la personne ayant le droit d'utiliser un exemplaire du logiciel ou pour son compte par une personne habilitée à cette fin ;<br />
<br />
2° Les informations nécessaires à l'interopérabilité n'ont pas déjà été rendues facilement et rapidement accessibles aux personnes mentionnées au 1° ci-dessus ; <br />
<br />
* le point 1 est garanti car les nspire ont été achetées par tous les gens qui utilisent les logiciels proposés par hackspire.<br />
* le point 2 est garanti car nous avons besoin de ces informations pour garantir l'interopérabilité de la nspire avec les programmes ARM compilés par GCC.<br />
<br />
<br />
Les informations ainsi obtenues ne peuvent être :<br />
<br />
1° Ni utilisées à des fins autres que la réalisation de l'interopérabilité du logiciel créé de façon indépendante ;<br />
<br />
2° Ni communiquées à des tiers sauf si cela est nécessaire à l'interopérabilité du logiciel créé de façon indépendante ;<br />
<br />
3° Ni utilisées pour la mise au point, la production ou la commercialisation d'un logiciel dont l'expression est substantiellement similaire ou pour tout autre acte portant atteinte au droit d'auteur.<br />
<br />
* 1: c'est uniquement pour créer des logiciels interopérables avec gcc<br />
* 2: nous avons besoin de publier ces informations car gcc est utilisable pour créer des logiciels interopérables de manière indépendante par n'importe qui<br />
* 3: nous ne tentons pas de reproduire les fonctionnalités de la nspire<br />
<br />
=USA=<br />
In the US, the DMCA guarantees that retroengineering is legal for interoperability purposes. This site is an attempt to make the nspire interoperable with ARM programs generated by gcc.</div>Squalylhttps://hackspire.org//index.php?title=Retroengineering&diff=1183Retroengineering2011-09-06T08:55:37Z<p>Squalyl: </p>
<hr />
<div>=France=<br />
En france, le droit à la rétro ingénierie est garantie par l'article L122-6-1 du code de la Propriété intellectuelle :<br />
<br />
IV. La reproduction du code du logiciel ou la traduction de la forme de ce code n'est pas soumise à l'autorisation de l'auteur lorsque la reproduction ou la traduction au sens du 1° ou du 2° de l'article L. 122-6 est indispensable pour obtenir les informations nécessaires à l'interopérabilité d'un logiciel créé de façon indépendante avec d'autres logiciels, sous réserve que soient réunies les conditions suivantes :<br />
<br />
1° Ces actes sont accomplis par la personne ayant le droit d'utiliser un exemplaire du logiciel ou pour son compte par une personne habilitée à cette fin ;<br />
<br />
2° Les informations nécessaires à l'interopérabilité n'ont pas déjà été rendues facilement et rapidement accessibles aux personnes mentionnées au 1° ci-dessus ; <br />
<br />
* le point 1 est garanti car les nspire ont été achetées par tous les gens qui utilisent les logiciels proposés par hackspire.<br />
* le point 2 est garanti car nous avons besoin de ces informations pour garantir l'interopérabilité de la nspire avec les programmes ARM compilés par GCC.<br />
<br />
<br />
Les informations ainsi obtenues ne peuvent être :<br />
<br />
1° Ni utilisées à des fins autres que la réalisation de l'interopérabilité du logiciel créé de façon indépendante ;<br />
<br />
2° Ni communiquées à des tiers sauf si cela est nécessaire à l'interopérabilité du logiciel créé de façon indépendante ;<br />
<br />
3° Ni utilisées pour la mise au point, la production ou la commercialisation d'un logiciel dont l'expression est substantiellement similaire ou pour tout autre acte portant atteinte au droit d'auteur.<br />
<br />
* 1: c'est uniquement pour créer des logiciels interopérables avec gcc<br />
* 2: nous avons besoin de publier ces informations car gcc est un logiciel public<br />
* 3: nous ne tentons pas de reproduire les fonctionnalités de la nspire<br />
<br />
=USA=<br />
In the US, the DMCA guarantees that retroengineering is legal for interoperability purposes. This site is an attempt to make the nspire interoperable with ARM programs generated by gcc.</div>Squalylhttps://hackspire.org//index.php?title=Retroengineering&diff=1182Retroengineering2011-09-06T08:54:25Z<p>Squalyl: </p>
<hr />
<div>=France=<br />
=USA=<br />
<br />
En france, le droit à la rétro ingénierie est garantie par l'article L122-6-1 du code de la Propriété intellectuelle :<br />
<br />
IV. La reproduction du code du logiciel ou la traduction de la forme de ce code n'est pas soumise à l'autorisation de l'auteur lorsque la reproduction ou la traduction au sens du 1° ou du 2° de l'article L. 122-6 est indispensable pour obtenir les informations nécessaires à l'interopérabilité d'un logiciel créé de façon indépendante avec d'autres logiciels, sous réserve que soient réunies les conditions suivantes :<br />
<br />
1° Ces actes sont accomplis par la personne ayant le droit d'utiliser un exemplaire du logiciel ou pour son compte par une personne habilitée à cette fin ;<br />
<br />
2° Les informations nécessaires à l'interopérabilité n'ont pas déjà été rendues facilement et rapidement accessibles aux personnes mentionnées au 1° ci-dessus ; <br />
<br />
* le point 1 est garanti car les nspire ont été achetées par tous les gens qui utilisent les logiciels proposés par hackspire.<br />
* le point 2 est garanti car nous avons besoin de ces informations pour garantir l'interopérabilité de la nspire avec les outils libres GCC.<br />
<br />
<br />
Les informations ainsi obtenues ne peuvent être :<br />
<br />
1° Ni utilisées à des fins autres que la réalisation de l'interopérabilité du logiciel créé de façon indépendante ;<br />
<br />
2° Ni communiquées à des tiers sauf si cela est nécessaire à l'interopérabilité du logiciel créé de façon indépendante ;<br />
<br />
3° Ni utilisées pour la mise au point, la production ou la commercialisation d'un logiciel dont l'expression est substantiellement similaire ou pour tout autre acte portant atteinte au droit d'auteur.<br />
<br />
* 1: c'est uniquement pour créer des logiciels interopérables avec gcc<br />
* 2: nous avons besoin de publier ces informations car gcc est un logiciel public<br />
* 3: nous ne tentons pas de reproduire les fonctionnalités de la nspire</div>Squalylhttps://hackspire.org//index.php?title=Retroengineering&diff=1181Retroengineering2011-09-06T08:50:32Z<p>Squalyl: Created page with "En france, le droit à la rétro ingénierie est garantie par l'article L122-6-1 du code de la Propriété intellectuelle : IV. La reproduction du code du logiciel ou la traduct..."</p>
<hr />
<div>En france, le droit à la rétro ingénierie est garantie par l'article L122-6-1 du code de la Propriété intellectuelle :<br />
<br />
IV. La reproduction du code du logiciel ou la traduction de la forme de ce code n'est pas soumise à l'autorisation de l'auteur lorsque la reproduction ou la traduction au sens du 1° ou du 2° de l'article L. 122-6 est indispensable pour obtenir les informations nécessaires à l'interopérabilité d'un logiciel créé de façon indépendante avec d'autres logiciels, sous réserve que soient réunies les conditions suivantes :<br />
<br />
1° Ces actes sont accomplis par la personne ayant le droit d'utiliser un exemplaire du logiciel ou pour son compte par une personne habilitée à cette fin ;<br />
<br />
2° Les informations nécessaires à l'interopérabilité n'ont pas déjà été rendues facilement et rapidement accessibles aux personnes mentionnées au 1° ci-dessus ; <br />
<br />
* le point 1 est garanti car les nspire ont été achetées par tous les gens qui utilisent les logiciels proposés par hackspire.<br />
* le point 2 est garanti car nous avons besoin de ces informations pour garantir l'interopérabilité de la nspire avec les outils libres GCC.<br />
<br />
<br />
Les informations ainsi obtenues ne peuvent être :<br />
<br />
1° Ni utilisées à des fins autres que la réalisation de l'interopérabilité du logiciel créé de façon indépendante ;<br />
<br />
2° Ni communiquées à des tiers sauf si cela est nécessaire à l'interopérabilité du logiciel créé de façon indépendante ;<br />
<br />
3° Ni utilisées pour la mise au point, la production ou la commercialisation d'un logiciel dont l'expression est substantiellement similaire ou pour tout autre acte portant atteinte au droit d'auteur.<br />
<br />
* 1: c'est uniquement pour créer des logiciels interopérables avec gcc<br />
* 2: nous avons besoin de publier ces informations car gcc est un logiciel public<br />
* 3: nous ne tentons pas de reproduire les fonctionnalités de la nspire</div>Squalylhttps://hackspire.org//index.php?title=Talk:Debugging_programs&diff=1164Talk:Debugging programs2011-07-18T01:15:37Z<p>Squalyl: /* Which OS version? */</p>
<hr />
<div>==Which OS version?==<br />
Does it have to be 1.7 or can it be 2.0.1/2.1? [[User:Fb39ca4|Fb39ca4]] 19:13, 13 July 2011 (CEST)<br />
* you'd better ask on unitedti, yaronet, or tibank :) [[User:Squalyl|squalyl]] 03:15, 18 July 2011 (CEST)</div>Squalylhttps://hackspire.org//index.php?title=Main_Page&diff=1160Main Page2011-06-06T09:15:34Z<p>Squalyl: </p>
<hr />
<div>This wiki is dedicated to hacking and development on the TI-Nspire.<br />
<br />
Translations:<br />
* [[Main_Page:fr]]<br />
* [[Main_Page:de]]<br />
<br />
== Registration disabled. ==<br />
<br />
Please write at squalyl on gmail to register.<br />
<br />
Don't forget to ADD the name of this wiki in your message subject, otherwise I won't read it.<br />
<br />
==Welcome==<br />
<br />
Welcome to you on Hackspire, the TI-Nspire Hackings wiki.<br />
The goal of this wiki is to federate all research efforts about the Texas Instruments TI-Nspire calculator.<br />
<br />
Feel free to add your contribution, the more details we get, the faster we can get this calculator work for us!<br />
TI Software is great for Mathematics, Physics... And independent developers are great for all the rest, because TI does not have time for this!<br />
<br />
If you want to continue the TI-89 and TI92+ success story with the TI-Nspire, please contribute! You don't need to destroy your calc for this, any contribution is welcome! Examples include:<br />
<br />
* Communication: Searching for communities working on TI-Nspire is important, we feel that 1+1>2, ie lonely developers can benefit from common efforts<br />
* Hacking: We need to investigate the ability of TI-Nspire to run independent software<br />
* Wiki development: I'm not good at writing wiki pages, organizing categories, etc... If you know how to run a wiki actively, you can contribute!<br />
* And if you are a TI-Nspire owner, and are just waiting to play Mario and other cool games, be patient and after having registered yourself in the [[NSpire Owners List]], ask questions to develop your hacking skills :)<br />
<br />
Oh, and if you find something weird, a bug, a feature, a test you did and you don't know where to put it, feel free to edit this page: [[Contributed_Tests]]<br />
<br />
Thank you!<br />
<br />
squalyl, Hackspire wiki founder.<br />
<br />
== Site news ==<br />
20101003 Database restoration after a filesystem failure. Fortunately no or little data has been lost. You still may need to recreate your user account.<br />
<br />
20071029 Added [[Announces|an announce page]] to note important steps, discoveries, etc<br />
<br />
20070823 Editing disabled for anonymous users<br />
<br />
20070808 The robots.txt file that prevented indexation has been removed, to allow indexing and allow the world to come here. A sitemap has been added for Main_page, Operating_System and Hardware.<br />
<br />
== Communities ==<br />
===Forums and News sites===<br />
Although not specific to the TI-Nspire, these web sites are visited by many TI-Nspire hackers and developers.<br />
<br />
[http://www.omnimaga.org Omnimaga] ([http://www.omnimaga.org/index.php?action=forum forum]) (most active - English spoken)<br />
<br />
[http://ti.bank.free.fr TI-Bank] ([http://tibank.forumactif.com/forum-ti-nspire-c5/ forum]) (most active - French spoken)<br />
<br />
[http://www.unitedti.org/forum/index.php?showforum=67 United-TI] (where hacking begun - English spoken)<br />
<br />
[http://yaronet.com/sujets.php?f=2844 yAronet] (where hacking began - French spoken)<br />
<br />
===Independent TI-Nspire Developers IRC channels===<br />
<code>#inspired at efnet.xs4all.nl:6667</code> - SSL on port 6697<br />
<br />
<code>#nspire-lua at efnet.xs4all.nl:6667</code> - SSL on port 6697 (for Lua programming)<br />
<br />
<code>#inspired at irc.freequest.net:7000</code> - SSL on port 9999<br />
<br />
== Current pages ==<br />
===Support===<br />
*[[User FAQ|Frequently Asked Questions]]<br />
<br />
===Projects, programs and tools===<br />
*[[Emulators]]<br />
*[[Assembly programs]]<br />
*[[Lua Programs]]<br />
<br />
===Development resources===<br />
*[[Ndless]]<br />
*[[C and assembly development introduction]]<br />
*[[Development FAQ|Frequently Asked Questions]]<br />
*[[Syscalls|Syscalls and standard libraries]]<br />
*[[libndls|libndls - TI-Nspire-specific library]]<br />
*[[Lua Programming]]<br />
*[[CAS Programming]]<br />
*[[Debugging programs]]<br />
*[[Ndless features and limitations]]<br />
*[[Memory-mapped I/O ports]]<br />
*[[Keypads]]<br />
*[[Virtual Memory]]<br />
*[[Memory layout]]<br />
*[[USB Protocol]]<br />
*[[Interrupts]]<br />
*[[Hardware]]<br />
<br />
===OS information===<br />
*[[Operating System]]<br />
*[[OS upgrade files]]<br />
*[[TNS File Format]]<br />
*[[Document management]]<br />
*[[TI-84 Plus Emulation]]<br />
<br />
===Miscellaneous===<br />
*[[Miscellaneous Information]]<br />
*[[Information Requests]]<br />
*[[TI-Nspire CAS Software]]<br />
*[[Links]]</div>Squalylhttps://hackspire.org//index.php?title=Lua_Programming&diff=1148Lua Programming2011-06-01T12:29:46Z<p>Squalyl: Reverted edits by Squalyl (talk) to last revision by AdRiWeB</p>
<hr />
<div>[[Image: See-the-link-here |thumb||right| [http://i.imgur.com/LTznh.jpg The Hexadecimal view of all the api functions, readable in an extraded phoenix.raw file]]]<br />
<br />
<br />
<br />
= The Official Documentation is now available in the "[http://wiki.inspired-lua.org Inspired Lua Wiki]". = <br />
= Please go there in order to have a full, detailed and official documentation. =<br />
<br />
<br><br><br><br><br />
<br />
The TI-Nspire allows, since OS v3.0, programming with the Lua language through a hidden application "TI.ScriptApp".<br />
<br />
This page describes how to setup a Lua development environment and documents the currently known Lua functions for the Nspire, and a brief description of how to use the functions.<br />
<br />
Note: Neither the ''io'' nor ''os'' libraries are present for the TI-Nspire, which seems to be running a light version of Lua 5.1.4.<br />
<br />
Here's a dump of a lot of functions available in the API : [http://adriweb.free.fr/upload/ti/dump.html Link to the dump].<br />
<br />
==Prerequisites==<br />
<br />
Lua is only supported starting from OS v3.0.1. Creating Lua scripts is currently not officially supported by TI, you need one of the following third-party tools to convert Lua scripts to TI-Nspire documents:<br />
*[http://www.ticalc.org/archives/files/fileinfo/437/43704.html LUAtoTNS.sh] (bash script, works on Linux, Mac OS and Unix, or Windows + Cygwin or Windows + MSYS).<br />
*[http://www.mirari.fr/KbOD maketns.py] (Python script, cross-platform)<br />
*[http://www.omnimaga.org/index.php?action=downloads;sa=view;down=651 lua2ti] (Windows + .NET Framework v4.0)<br />
*[http://www.omnimaga.org/index.php?action=downloads;sa=view;down=652 lua2ti_linux] (Linux (No longer requires Mono, it is now a native Linux binary!))<br />
You may also want to install Lua [http://www.lua.org/download.html on your computer]: <tt>luac -p</tt> can be used to check the syntax of your script before running it on a TI-Nspire or an emulator.<br />
<br />
==Standard Library==<br />
<br />
( This has been taken from [http://www.wowwiki.com/Lua_functions a WoWWiki page] - See the full, official documentation [http://www.lua.org/manual/5.1/manual.html here] )<br />
<br />
*'''_G''' - Global Variable - A global variable (not a function) that holds the global environment (that is, _G._G = _G). Lua itself does not use this variable; changing its value does not affect any environment, nor vice-versa. (Use setfenv to change environments.) - taken from Lua docs<br />
*'''assert'''(value[, errormsg]) - asserts a value evaluates to true. If it is, returns value, otherwise causes a Lua error to be thrown.<br />
*'''getfenv'''(function or integer) - Returns the table representing the stack frame of the given function or stack level.<br />
*'''getmetatable'''(obj, mtable) - Returns the metatable of the given table or userdata object.<br />
*'''next'''(table, index) - Returns the next key, value pair of the table, allowing you to walk over the table.<br />
*'''newproxy'''(boolean or proxy) - Creates a userdata with a sharable metatable.<br />
*'''print''' - print (···) - Receives any number of arguments, and prints their values to stdout, using the tostring function to convert them to strings. print is not intended for formatted output, but only as a quick way to show a value, typically for debugging. For formatted output, use string.format. - taken from Lua Docs<br />
*'''select'''(index, list) - Returns the number of items in list or the value of the item in list at index.<br />
*'''setfenv'''(function or integer, table) - Sets the table representing the stack frame of the given function or stack level.<br />
*'''setmetatable'''(obj, mtable) - Sets the metatable of the given table or userdata object.<br />
*'''tostring''' - tostring (e) - Receives an argument of any type and converts it to a string in a reasonable format. For complete control of how numbers are converted, use string.format. If the metatable of e has a "__tostring" field, then tostring calls the corresponding value with e as argument, and uses the result of the call as its result. - taken from Lua Docs.<br />
*'''type'''(var) - Returns the type of variable as a string, "number", "string", "table", "function" or "userdata".<br />
*'''unpack'''(table[, start][, end]) - Returns the contents of its argument as separate values.<br />
*'''xpcall'''(func, err) - Returns a boolean indicating successful execution of func and calls err on failure, additionally returning func's or err's results.<br />
<br />
==Concepts and Basics==<br />
<br />
This part will explain you how the Lua actually works inside the OS and help you to figure out what you're doing when you write a script for the TI-Nspire. Before reading this, you have to know all about the Lua basics.<br />
<br />
The Lua is an interpreted script language which means that it isn't as fast as ASM/C programs, but is still better than the TI-BASIC.<br />
One good thing is that this language is in a complete harmony with the OS with basic events and a powerfull graphic context.<br />
First, we have to understand how this works. Basicly the script is launched before the executive engine. This means that we can neither evaluate expressions nor use some of the standard API (like platform, var) until the engine is launched. Here is a call summary :<br />
<br />
*Launch string library<br />
*Launch math library<br />
* ...<br />
*Open and launch User's Lua script<br />
*...<br />
*Launch var API (store, recall, ...)<br />
*Launch platform API (window, gc, ...)<br />
*...<br />
*Link events (pseudo code) <br />
while(Exit)<br />
------- Some OS routines here<br />
<br />
---- Begin of Event link<br />
buffer:captureDataFromKeyPad() -- (N) some underground routines to catch events<br />
if buffer.charInput ~= "" then -- (N)<br />
on.charIn(buffer.charInput)<br />
buffer.charInput= "" -- (N)<br />
end<br />
if buffer.arrowKey ~= "" then -- (N)<br />
on.arrowKey(buffer.arrowKey)<br />
buffer.arrowKey = "" -- (N)<br />
end<br />
----- etc ... <br />
if platform.window.isInvalidate then <br />
platform.gc():purge() -- (N) Empty buffer before starting to draw<br />
on.paint(platform.gc()) -- save all the things we have to draw<br />
platform:paint() -- (N) draw all those things<br />
platform.window.isInvalidate = false -- say that the window has been drawn<br />
end<br />
----- End of Event link<br />
end<br />
''Note : the (N) commented line only indicates the meaning of the routine. Those functions don't really exist.''<br />
<br />
Now we can understand how everything is linked, just by a main loop. This helps you to understand that you don't have to code a loop yourself, because the screen wouldn't be refreshed. This also helps to see when the screen gets refreshed. In other words, we cannot use niether '''gc''' nor '''platform.gc()''' (which are the same) in order to draw somthing on the screen if we are outside of '''on.paint()''' (except if your outside function is called within on.paint() ). This also means that we don't need to pass '''gc''' as parameter, because we can rather use '''platform.gc()''' for any functions called within on.paint(). This is exactly what [https://github.com/adriweb/BetterLuaAPI-for-TI-Nspire/blob/master/BetterLuaAPI.lua the BetterLuaAPI library for Nspire] does.<br />
<br />
Here is an example of a simple Lua program that displays a message only when a key is pressed (and let the screen blank otherwise).<br />
<br />
function on.paint(gc)<br />
if message then<br />
gc:setFont("sansserif", "r", 10) -- initialize font drawing<br />
gc:drawString(message, 0, 0, "top") -- display the message at (0, 0) coordinates<br />
message = nil -- erase the message<br />
timer.start(1) -- start a timer to exit on.paint() but keep in mind that we have to redraw the screen<br />
end<br />
end<br />
<br />
function on.timer()<br />
timer.stop()<br />
platform.window:invalidate()<br />
end<br />
<br />
function on.charIn(ch)<br />
message = "Hello World !" -- store a message<br />
platform.window:invalidate() -- force display<br />
end<br />
<br />
When you open the document, the script is read once. It initializes and overwrites all the functions and globals with the ones you defined. Thus, '''message''' is nil. Once the '''on.paint()''' event is called, '''message''' is nil, thus, nothing is done. When you press a key that calls '''on.charIn()''' (see below for more information), '''message''' is now "Hello World" and we tell the '''platform''' that the screen has to be refreshed. Then, '''on.paint()''' is called again, '''message''' is not nil then we display it, erase '''message''' and launch a timer. Why is that ? Because if we call '''platform.window:invalidate()''' right there, we won't refresh the screen. Why again ? Just look at the pseudo-code above. We set the window as drawn after each call of on.paint(). Thus a timer is necessary to manually recall '''on.paint()''' and exit the '''on.paint()''' function to draw the screen. When the timer is ended, '''on.timer()''' is called and we refresh the screen. The screen is then redrawn but there is nothing to draw because '''message''' is nil. Thus, the graphic context lets the screen blank.<br />
<br />
==GC (as in Graphics Context)==<br />
<br />
Note: You need to add “gc:” before each of these commands in order to use them. ex. '''gc:setAlpha(...)'''.<br />
You can also call gc like this : '''platform.gc():setAlpha(...)'''. Then you can use the gc library in a function where gc is not passed as an argument. but this function *has* to be called within '''on.paint(gc)'''<br />
<br />
The maximum screen resolution available to Lua programs is 318 by 212 pixels.<br />
<br />
*'''begin''' -<br />
*'''clipRect'''(?, x, y, width, height) -<br />
*'''drawArc'''(x, y, width, height, start angle, finish angle) Note, to draw a circle, use drawArc(x - diameter/2, y - diameter/2, diameter,diameter,0,360) where x and y are the coordinates of the middle.<br />
*'''drawImage'''(image,x,y) First argument in format “[[TI.Image]]”, x and y the coords.<br />
*'''drawLine'''(xstart, ystart, xend, yend) Draws a line starting at the point (xstart,ystart) and ending at the point (xend, yend)<br />
*'''drawPolyLine'''(int list1 [,int list2, .., int listN]) Draws a shape from a list contaning successively the x and y coordinates of each point the line have to draw.<br />
For example<br />
drawPolyLine({0,0, 0,100, 100,100, 100,0, 0,0})<br />
and<br />
drawRect(0,0,100,100)<br />
do the same. If there are multiple argument (which can be 4 elements list to represent lines), each list has to contain an even number of element.<br />
*'''drawRect'''(x, y, xwidth, yheight) Draws a rectangle at (x,y) with the “x” side being “xwidth” long and the “y” side being “yheight” long<br />
*'''drawString'''(string, x, y, PositionString) PositionString is the string’s anchor point and can be “bottom”, “middle”, or “top”. <br />
*'''fillArc'''(x, y, width, height, start angle, finish angle) see drawArc<br />
*'''fillPolygon'''(int list1 [,int list2, .., int listN]) see drawPolyLine<br />
*'''fillRect'''(x, y, width, height) see drawRect<br />
*'''finish''' -<br />
*'''getStringHeight'''(string)<br />
*'''getStringWidth'''(string)<br />
*'''isColorDisplay''' Bool (Read-only) Returns 1 if color, 0 if not.<br />
*'''setAlpha'''(int) - where the argument is an int between 0 and 255. Sets the transparency.<br />
*'''setColorRGB'''(red, green, blue) RGB values are integers, from 0 to 255.<br />
*'''setFont'''(font, type, size), with font : {“sansserif”, "serif", ..}, type {“b”, “r”, “i”}, size(int)<br />
*'''setPen'''(size, smooth) size {“thin”, “medium”, "thick"}, smooth {“smooth”, "dotted", "dashed"}<br />
<br />
==platform==<br />
These are mainly read-only. These work by writing "'''platform.'''" in front of them. Example : "'''platform.window:invalidate()'''"<br />
*'''apilevel()''' : Returns the version of the API. Currently (OS 3.0.1) returns 1.0.0.<br />
*'''window'''<br />
: *'''width()''' - Returns the width of the window. Ex : ''platform.window:height()''<br />
: *'''height()''' - Returns the height of the window<br />
: *'''invalidate()''' - Repaints the window (it calls '''on.paint(gc)''')<br />
*''' isDeviceModeRendering()''' Returns true or false whether the unit is "rendering" or not<br />
*'''gc''' - Other way to call '''gc'''. Use it like that : '''platform.gc():setAlpha(...)''' for example. This is useful when you're in a function outside '''on.paint(gc)''' (but this function has to be called within on.paint(gc).<br />
*'''isColorDisplay()''' Returns ''true'' if the unit the code is being run on has a color display (-> Nspire CX), and ''false'' otherwise.<br />
<br />
==cursor==<br />
*'''hide'''() - hides the cursor (mouse pointer)<br />
*'''set'''(string) - string can be one of those : (interrogation, crosshair, text, pointer, link select, diag resize, wait busy, hollow pointer, rotation, pencil, zoom box, arrow, zoom out, dotted arrow, clear, animate, excel plus, mod label, writing, unavailable, resize row, resize column, drag grab, hand open, hand close, hand pointer, zoom in, dilation, translation).<br />
*'''show'''() - Shows the cursor on screen<br />
<br />
==document==<br />
*'''markChanged'''() - Flag the document as "changed" so the user has to save it after using it.<br />
<br />
==clipboard==<br />
*'''addText'''(string) - adds plain text to the clipboard<br />
*'''getText'''() - gets the plain text contained in the clipboard<br />
<br />
==locale==<br />
*'''name'''() - Returns the current language the calculator is set in, formatted as ISO-639 (i.e : "fr", "en", "it" ...).<br />
<br />
==image==<br />
*'''__gc'''() - Do not use ! Causes crash : ''(Invalid memory access of location 0x0 eip=0x465cc7ac / Bus error)'' but thats probably just when calling in TI's emulator.<br />
*'''copy'''(image, width, height) - returns a new Image which has a new scale. Width is the final width, Heigth, the final height of the image.<br />
To make a relative scale, use '''image.copy'''(image, scaleX * '''image.width'''(image), scaleY * '''image.height'''(image))<br />
*'''height'''(image) - returns the height of the image given in parameter<br />
*'''new'''(string) - Creates a new image from the string given in parameter (see TI.Image). Call it with <tt>img = image.new("...")</tt><br />
*'''width'''(image) - returns the width of the image given in parameter<br />
<br />
==timer==<br />
*'''getMilliSecCounter'''() - Returns the amount of milliseconds elapsed since last calculator reboot. (in TI's Computer software, returns an absolute negative time)<br />
*'''start'''(int) - Starts a timer with 1 second.<br />
*'''stop'''() - Stops a timer<br />
<br />
==toolpalette==<br />
*'''enable'''(string)<br />
*'''enableCopy'''()<br />
*'''enableCut'''()<br />
*'''enablePaste'''()<br />
*'''register'''(table)<br />
<br />
==var==<br />
*'''list'''() - returns a list of all the variables in the entire Activity<br />
*'''monitor'''(var) - linked to event on.varChange<br />
*'''recall'''(string) - returns the variable value which name is given in parameter<br />
*'''recallstr'''(string) - returns the variable value converted to string which name is given in parameter<br />
*'''store'''(string, value) - store in the variable, which name is given in parameter, the value<br />
*'''unmonitor'''(var) - stops monitoring a variable<br />
<br />
==Events==<br />
<br />
*'''on.paint'''(gc) is called when the GUI is painted. 'gc' is the Graphics Context (see above)<br />
*'''on.resize'''() is called when the window is rezised<br />
*'''on.timer'''() is called when the timer has been finished. Here an example of using timer to play an animation : <br />
x = 1<br />
animating = false<br />
function on.paint(gc)<br />
gc:setFont("sansserif", "r", 10)<br />
gc:drawString(tostring(x), 0, 0, "top")<br />
if animating then<br />
x = x + 1<br />
timer.start(0.5)<br />
end<br />
end<br />
<br />
function on.charIn(ch)<br />
animating = not animating -- switch state<br />
platform.window:invalidate() -- recall graph engine<br />
end<br />
<br />
function on.timer()<br />
timer.stop()<br />
platform.window:invalidate() -- recall graph engine<br />
end<br />
<br />
----<br />
*'''on.arrowKey'''(key) is called when an '''arrow key''' from the clickPad/TouchPad is pressed (right, left, up, down)<br />
*'''on.arrowLeft'''() is called when the '''left''' arrow is pressed<br />
*'''on.arrowRight'''() is called when the '''right''' arrow is pressed<br />
*'''on.arrowUp'''() is called when the up '''arrow''' is pressed<br />
*'''on.arrowDown'''() is called when the '''down''' arrow is pressed<br />
----<br />
*'''on.up'''() -- probably for the touchpad up motion<br />
*'''on.down'''() -- probably for the touchpad down motion<br />
----<br />
*'''on.enterKey'''() is called when the '''enter''' key is pressed.<br />
*'''on.escapeKey'''() is called when the '''escape''' key is pressed.<br />
*'''on.tabKey'''() is called when the '''tab''' key is pressed.<br />
*'''on.deleteKey'''() is called when the '''delete''' key is pressed.<br />
*'''on.backspaceKey'''() is called when the '''clear''' key is pressed.<br />
*'''on.returnKey'''() is called when the '''return''' key is pressed.<br />
*'''on.contextMenu'''() is called when the combo-key '''Ctrl Menu''' is pressed.<br />
*'''on.backtabKey'''() is called when the combo-key '''Maj Tab''' is pressed.<br />
*'''on.clearKey'''() is called when the combo-key '''Ctrl Clear''' is pressed.<br />
*'''on.help'''() is called when the combo-key '''Ctrl H''' is pressed.<br />
<br />
*'''on.charIn'''(string) is called when the Nspire detects a non arrow key being pressed. ch is the character it detect. If you want to auto start an event in the file linked to key r(like a reset) put on.charIn(“r”) where you want. This Lua program lets you display the value of a valid non arrow key :<br />
<br />
c = “”<br />
function on.charIn(ch)<br />
c = ch<br />
platform.window:invalidate() -- we force the screen draw<br />
end<br />
function on.paint(gc)<br />
gc:setFont(“sansserif”, “r”, 10)<br />
gc:drawString(c, 0, 0, “top”)<br />
end<br />
<br />
----<br />
*'''on.blink'''() ? is called when the focus is lost on the page (like launching the document, changing page etc...)<br />
----<br />
*'''on.create'''() ? is called when the script gets created.<br />
*'''on.deactivate'''() ? is called when the focus is lost on the page (like launching the document, changing page etc...)<br />
*'''on.activate'''() ? is called when the focus is on the page (like launching the document, changing page etc...)<br />
----<br />
*'''on.mouseDown'''(x, y) is called when we press the left mouse button. X and Y are the pressed point coordinates.<br />
*'''on.mouseUp'''() is called when we release the left mouse button. <br />
*'''on.mouseMove'''() is called when the mouse moves<br />
*'''on.grabDown'''() ? (software only ?)<br />
*'''on.grabMove'''() ? (software only ?)<br />
*'''on.grabUp'''() ? (software only ?)<br />
*'''on.rightMouseDown'''() ? (software only ?)<br />
*'''on.rightMouseUp'''() ? (software only ?)<br />
----<br />
*'''on.cutEnabled'''() ? (software only ?)<br />
*'''on.copyEnabled'''() ? (software only ?)<br />
*'''on.pasteEnabled'''() ? (software only ?)<br />
*'''on.cut'''() ? (software only ?)<br />
*'''on.copy'''() ? (software only ?)<br />
*'''on.paste'''() ? (software only ?)<br />
----<br />
<br />
==D2Editor==<br />
*'''newRichText'''() creates a new RichText object (default values : x, y, width, height = 0)<br />
*'''resize'''(width, height) <br />
*'''move'''(x, y)<br />
*'''setText'''(string)<br />
*'''getText'''() returns the RichText value<br />
*'''setReadOnly'''(bool) bool : true/false : If true, the content becomes read-only, i.e. non-editable.<br />
*'''setFormattedText'''() - ?<br />
Example of a valid function using the D2Editor<br />
function createRichTextBox<br />
box = D2Editor.newRichText()<br />
box:move(50, 50)<br />
box:resize(50, 50)<br />
box:setText("Hello World !")<br />
end<br />
<br />
==External Links==<br />
An interesting page about LUA code optimization, that can be really useful, especially for calculators : [http://trac.caspring.org/wiki/LuaPerformance Lua Performance]</div>Squalylhttps://hackspire.org//index.php?title=Lua_Programming&diff=1147Lua Programming2011-06-01T12:29:12Z<p>Squalyl: Reverted edits by AdRiWeB (talk) to last revision by ExtendeD</p>
<hr />
<div>[[Image: See-the-link-here |thumb||right| [http://i.imgur.com/LTznh.jpg The Hexadecimal view of all the api functions, readable in an extraded phoenix.raw file]]]<br />
<br />
<br />
The TI-Nspire allows, since OS v3.0, programming with the Lua language through a hidden application "TI.ScriptApp".<br />
<br />
This page describes how to setup a Lua development environment and documents the currently known Lua functions for the Nspire, and a brief description of how to use the functions.<br />
<br />
Note: Neither the ''io'' nor ''os'' libraries are present for the TI-Nspire, which seems to be running a light version of Lua 5.1.4.<br />
<br />
Here's a dump of a lot of functions available in the API : [http://adriweb.free.fr/upload/ti/dump.html Link to the dump].<br />
<br />
==Prerequisites==<br />
<br />
Lua is only supported starting from OS v3.0.1. Creating Lua scripts is currently not officially supported by TI, you need one of the following third-party tools to convert Lua scripts to TI-Nspire documents:<br />
*[http://www.ticalc.org/archives/files/fileinfo/437/43704.html LUAtoTNS.sh] (bash script, works on Linux, Mac OS and Unix, or Windows + Cygwin or Windows + MSYS).<br />
*[http://www.mirari.fr/KbOD maketns.py] (Python script, cross-platform)<br />
*[http://www.omnimaga.org/index.php?action=downloads;sa=view;down=651 lua2ti] (Windows + .NET Framework v4.0)<br />
*[http://www.omnimaga.org/index.php?action=downloads;sa=view;down=652 lua2ti_linux] (Linux (No longer requires Mono, it is now a native Linux binary!))<br />
You may also want to install Lua [http://www.lua.org/download.html on your computer]: <tt>luac -p</tt> can be used to check the syntax of your script before running it on a TI-Nspire or an emulator.<br />
<br />
==Standard Library==<br />
<br />
( This has been taken from [http://www.wowwiki.com/Lua_functions a WoWWiki page] - See the full, official documentation [http://www.lua.org/manual/5.1/manual.html here] )<br />
<br />
*'''_G''' - Global Variable - A global variable (not a function) that holds the global environment (that is, _G._G = _G). Lua itself does not use this variable; changing its value does not affect any environment, nor vice-versa. (Use setfenv to change environments.) - taken from Lua docs<br />
*'''assert'''(value[, errormsg]) - asserts a value evaluates to true. If it is, returns value, otherwise causes a Lua error to be thrown.<br />
*'''getfenv'''(function or integer) - Returns the table representing the stack frame of the given function or stack level.<br />
*'''getmetatable'''(obj, mtable) - Returns the metatable of the given table or userdata object.<br />
*'''next'''(table, index) - Returns the next key, value pair of the table, allowing you to walk over the table.<br />
*'''newproxy'''(boolean or proxy) - Creates a userdata with a sharable metatable.<br />
*'''print''' - print (···) - Receives any number of arguments, and prints their values to stdout, using the tostring function to convert them to strings. print is not intended for formatted output, but only as a quick way to show a value, typically for debugging. For formatted output, use string.format. - taken from Lua Docs<br />
*'''select'''(index, list) - Returns the number of items in list or the value of the item in list at index.<br />
*'''setfenv'''(function or integer, table) - Sets the table representing the stack frame of the given function or stack level.<br />
*'''setmetatable'''(obj, mtable) - Sets the metatable of the given table or userdata object.<br />
*'''tostring''' - tostring (e) - Receives an argument of any type and converts it to a string in a reasonable format. For complete control of how numbers are converted, use string.format. If the metatable of e has a "__tostring" field, then tostring calls the corresponding value with e as argument, and uses the result of the call as its result. - taken from Lua Docs.<br />
*'''type'''(var) - Returns the type of variable as a string, "number", "string", "table", "function" or "userdata".<br />
*'''unpack'''(table[, start][, end]) - Returns the contents of its argument as separate values.<br />
*'''xpcall'''(func, err) - Returns a boolean indicating successful execution of func and calls err on failure, additionally returning func's or err's results.<br />
<br />
==Concepts and Basics==<br />
<br />
This part will explain you how the Lua actually works inside the OS and help you to figure out what you're doing when you write a script for the TI-Nspire. Before reading this, you have to know all about the Lua basics.<br />
<br />
The Lua is an interpreted script language which means that it isn't as fast as ASM/C programs, but is still better than the TI-BASIC.<br />
One good thing is that this language is in a complete harmony with the OS with basic events and a powerfull graphic context.<br />
First, we have to understand how this works. Basicly the script is launched before the executive engine. This means that we can neither evaluate expressions nor use some of the standard API (like platform, var) until the engine is launched. Here is a call summary :<br />
<br />
*Launch string library<br />
*Launch math library<br />
* ...<br />
*Open and launch User's Lua script<br />
*...<br />
*Launch var API (store, recall, ...)<br />
*Launch platform API (window, gc, ...)<br />
*...<br />
*Link events (pseudo code) <br />
while(Exit)<br />
------- Some OS routines here<br />
<br />
---- Begin of Event link<br />
buffer:captureDataFromKeyPad() -- (N) some underground routines to catch events<br />
if buffer.charInput ~= "" then -- (N)<br />
on.charIn(buffer.charInput)<br />
buffer.charInput= "" -- (N)<br />
end<br />
if buffer.arrowKey ~= "" then -- (N)<br />
on.arrowKey(buffer.arrowKey)<br />
buffer.arrowKey = "" -- (N)<br />
end<br />
----- etc ... <br />
if platform.window.isInvalidate then <br />
platform.gc():purge() -- (N) Empty buffer before starting to draw<br />
on.paint(platform.gc()) -- save all the things we have to draw<br />
platform:paint() -- (N) draw all those things<br />
platform.window.isInvalidate = false -- say that the window has been drawn<br />
end<br />
----- End of Event link<br />
end<br />
''Note : the (N) commented line only indicates the meaning of the routine. Those functions don't really exist.''<br />
<br />
Now we can understand how everything is linked, just by a main loop. This helps you to understand that you don't have to code a loop yourself, because the screen wouldn't be refreshed. This also helps to see when the screen gets refreshed. In other words, we cannot use niether '''gc''' nor '''platform.gc()''' (which are the same) in order to draw somthing on the screen if we are outside of '''on.paint()''' (except if your outside function is called within on.paint() ). This also means that we don't need to pass '''gc''' as parameter, because we can rather use '''platform.gc()''' for any functions called within on.paint(). This is exactly what [https://github.com/adriweb/BetterLuaAPI-for-TI-Nspire/blob/master/BetterLuaAPI.lua the BetterLuaAPI library for Nspire] does.<br />
<br />
Here is an example of a simple Lua program that displays a message only when a key is pressed (and let the screen blank otherwise).<br />
<br />
function on.paint(gc)<br />
if message then<br />
gc:setFont("sansserif", "r", 10) -- initialize font drawing<br />
gc:drawString(message, 0, 0, "top") -- display the message at (0, 0) coordinates<br />
message = nil -- erase the message<br />
timer.start(1) -- start a timer to exit on.paint() but keep in mind that we have to redraw the screen<br />
end<br />
end<br />
<br />
function on.timer()<br />
timer.stop()<br />
platform.window:invalidate()<br />
end<br />
<br />
function on.charIn(ch)<br />
message = "Hello World !" -- store a message<br />
platform.window:invalidate() -- force display<br />
end<br />
<br />
When you open the document, the script is read once. It initializes and overwrites all the functions and globals with the ones you defined. Thus, '''message''' is nil. Once the '''on.paint()''' event is called, '''message''' is nil, thus, nothing is done. When you press a key that calls '''on.charIn()''' (see below for more information), '''message''' is now "Hello World" and we tell the '''platform''' that the screen has to be refreshed. Then, '''on.paint()''' is called again, '''message''' is not nil then we display it, erase '''message''' and launch a timer. Why is that ? Because if we call '''platform.window:invalidate()''' right there, we won't refresh the screen. Why again ? Just look at the pseudo-code above. We set the window as drawn after each call of on.paint(). Thus a timer is necessary to manually recall '''on.paint()''' and exit the '''on.paint()''' function to draw the screen. When the timer is ended, '''on.timer()''' is called and we refresh the screen. The screen is then redrawn but there is nothing to draw because '''message''' is nil. Thus, the graphic context lets the screen blank.<br />
<br />
==GC (as in Graphics Context)==<br />
<br />
Note: You need to add “gc:” before each of these commands in order to use them. ex. '''gc:setAlpha(...)'''.<br />
You can also call gc like this : '''platform.gc():setAlpha(...)'''. Then you can use the gc library in a function where gc is not passed as an argument. but this function *has* to be called within '''on.paint(gc)'''<br />
<br />
The maximum screen resolution available to Lua programs is 318 by 212 pixels.<br />
<br />
*'''begin''' -<br />
*'''clipRect''' -<br />
*'''drawArc'''(x, y, width, height, start angle, finish angle) Note, to draw a circle, use drawArc(x - diameter/2, y - diameter/2, diameter,diameter,0,360) where x and y are the coordinates of the middle.<br />
*'''drawImage'''(image,x,y) First argument in format “[[TI.Image]]”, x and y the coords.<br />
*'''drawLine'''(xstart, ystart, xend, yend) Draws a line starting at the point (xstart,ystart) and ending at the point (xend, yend)<br />
*'''drawPolyLine'''(int list1 [,int list2, .., int listN]) Draws a shape from a list contaning successively the x and y coordinates of each point the line have to draw.<br />
For example<br />
drawPolyLine({0,0, 0,100, 100,100, 100,0, 0,0})<br />
and<br />
drawRect(0,0,100,100)<br />
do the same. If there are multiple argument (which can be 4 elements list to represent lines), each list has to contain an even number of element.<br />
*'''drawRect'''(x, y, xwidth, yheight) Draws a rectangle at (x,y) with the “x” side being “xwidth” long and the “y” side being “yheight” long<br />
*'''drawString'''(string, x, y, PositionString) PositionString is the string’s anchor point and can be “bottom”, “middle”, or “top”. <br />
*'''fillArc'''(x, y, width, height, start angle, finish angle) see drawArc<br />
*'''fillPolygon'''(int list1 [,int list2, .., int listN]) see drawPolyLine<br />
*'''fillRect'''(x, y, width, height) see drawRect<br />
*'''finish''' -<br />
*'''getStringHeight'''(string)<br />
*'''getStringWidth'''(string)<br />
*'''isColorDisplay''' Bool (Read-only) Returns 1 if color, 0 if not.<br />
*'''setAlpha'''(int) - where the argument is an int between 0 and 255. Sets the transparency.<br />
*'''setColorRGB'''(red, green, blue) RGB values are integers, from 0 to 255.<br />
*'''setFont'''(font, type, size), with font : {“sansserif”, "serif", ..}, type {“b”, “r”, “i”}, size(int)<br />
*'''setPen'''(size, smooth) size {“thin”, “medium”, "thick"}, smooth {“smooth”, "dotted", "dashed"}<br />
<br />
==platform==<br />
These are mainly read-only. These work by writing "'''platform.'''" in front of them. Example : "'''platform.window:invalidate()'''"<br />
*'''apilevel()''' : Returns the version of the API. Currently (OS 3.0.1) returns 1.0.0.<br />
*'''window'''<br />
: *'''width()''' - Returns the width of the window. Ex : ''platform.window:height()''<br />
: *'''height()''' - Returns the height of the window<br />
: *'''invalidate()''' - Repaints the window (it calls '''on.paint(gc)''')<br />
*''' isDeviceModeRendering()''' Returns true or false whether the unit is "rendering" or not<br />
*'''gc''' - Other way to call '''gc'''. Use it like that : '''platform.gc():setAlpha(...)''' for example. This is useful when you're in a function outside '''on.paint(gc)''' (but this function has to be called within on.paint(gc).<br />
*'''isColorDisplay()''' Returns ''true'' if the unit the code is being run on has a color display (-> Nspire CX), and ''false'' otherwise.<br />
<br />
==cursor==<br />
*'''hide'''() - hides the cursor (mouse pointer)<br />
*'''set'''(string) - string can be one of those : (interrogation, crosshair, text, pointer, link select, diag resize, wait busy, hollow pointer, rotation, pencil, zoom box, arrow, zoom out, dotted arrow, clear, animate, excel plus, mod label, writing, unavailable, resize row, resize column, drag grab, hand open, hand close, hand pointer, zoom in, dilation, translation).<br />
*'''show'''() - Shows the cursor on screen<br />
<br />
==document==<br />
*'''markChanged'''() - Flag the document as "changed" so the user has to save it after using it.<br />
<br />
==clipboard==<br />
*'''addText'''()<br />
*'''getText'''()<br />
<br />
==locale==<br />
*'''name'''() - Returns the current language the calculator is set in, formatted as ISO-639 (i.e : "fr", "en", "it" ...).<br />
<br />
==image==<br />
*'''__gc'''() - Do not use ! Causes crash : ''(Invalid memory access of location 0x0 eip=0x465cc7ac / Bus error)''<br />
*'''copy'''(image, width, height) - returns a new Image which has a new scale. Width is the final width, Heigth, the final height of the image.<br />
To make a relative scale, use '''image.copy'''(image, scaleX * '''image.width'''(image), scaleY * '''image.height'''(image))<br />
*'''height'''(image) - returns the height of the image given in parameter<br />
*'''new'''(string) - Creates a new image from the string given in parameter (see TI.Image). Call it with <tt>img = image.new("...")</tt><br />
*'''width'''(image) - returns the width of the image given in parameter<br />
<br />
==timer==<br />
*'''getMilliSecCounter'''() - Returns the amount of milliseconds elapsed since last calculator reboot. (in TI's Computer software, returns an absolute negative time)<br />
*'''start'''(int) - Starts a timer with 1 second.<br />
*'''stop'''() - Stops a timer<br />
<br />
==toolpalette==<br />
*'''enable'''(string)<br />
*'''enableCopy'''()<br />
*'''enableCut'''()<br />
*'''enablePaste'''()<br />
*'''register'''(table)<br />
<br />
==var==<br />
*'''list'''() - returns a list of all the variables in the entire Activity<br />
*'''monitor'''() - ?<br />
*'''recall'''(string) - returns the variable value which name is given in parameter<br />
*'''recallstr'''(string) - returns the variable value converted to string which name is given in parameter<br />
*'''store'''(string, value) - store in the variable, which name is given in parameter, the value<br />
*'''unmonitor'''() - ?<br />
<br />
==Events==<br />
<br />
*'''on.paint'''(gc) is called when the GUI is painted. 'gc' is the Graphics Context (see above)<br />
*'''on.resize'''() is called when the window is rezised<br />
*'''on.timer'''() is called when the timer has been finished. Here an example of using timer to play an animation : <br />
x = 1<br />
animating = false<br />
function on.paint(gc)<br />
gc:setFont("sansserif", "r", 10)<br />
gc:drawString(tostring(x), 0, 0, "top")<br />
if animating then<br />
x = x + 1<br />
timer.start(0.5)<br />
end<br />
end<br />
<br />
function on.charIn(ch)<br />
animating = not animating -- switch state<br />
platform.window:invalidate() -- recall graph engine<br />
end<br />
<br />
function on.timer()<br />
timer.stop()<br />
platform.window:invalidate() -- recall graph engine<br />
end<br />
<br />
----<br />
*'''on.arrowKey'''(key) is called when an '''arrow key''' from the clickPad/TouchPad is pressed (right, left, up, down)<br />
*'''on.arrowLeft'''() is called when the '''left''' arrow is pressed<br />
*'''on.arrowRight'''() is called when the '''right''' arrow is pressed<br />
*'''on.arrowUp'''() is called when the up '''arrow''' is pressed<br />
*'''on.arrowDown'''() is called when the '''down''' arrow is pressed<br />
----<br />
*'''on.up'''() -- probably for the touchpad up motion<br />
*'''on.down'''() -- probably for the touchpad down motion<br />
----<br />
*'''on.enterKey'''() is called when the '''enter''' key is pressed.<br />
*'''on.escapeKey'''() is called when the '''escape''' key is pressed.<br />
*'''on.tabKey'''() is called when the '''tab''' key is pressed.<br />
*'''on.deleteKey'''() is called when the '''delete''' key is pressed.<br />
*'''on.backspaceKey'''() is called when the '''clear''' key is pressed.<br />
*'''on.returnKey'''() is called when the '''return''' key is pressed.<br />
*'''on.contextMenu'''() is called when the combo-key '''Ctrl Menu''' is pressed.<br />
*'''on.backtabKey'''() is called when the combo-key '''Maj Tab''' is pressed.<br />
*'''on.clearKey'''() is called when the combo-key '''Ctrl Clear''' is pressed.<br />
*'''on.help'''() is called when the combo-key '''Ctrl H''' is pressed.<br />
<br />
*'''on.charIn'''(string) is called when the Nspire detects a non arrow key being pressed. ch is the character it detect. If you want to auto start an event in the file linked to key r(like a reset) put on.charIn(“r”) where you want. This Lua program lets you display the value of a valid non arrow key :<br />
<br />
c = “”<br />
function on.charIn(ch)<br />
c = ch<br />
platform.window:invalidate() -- we force the screen draw<br />
end<br />
function on.paint(gc)<br />
gc:setFont(“sansserif”, “r”, 10)<br />
gc:drawString(c, 0, 0, “top”)<br />
end<br />
<br />
----<br />
*'''on.blink'''() ? is called when the focus is lost on the page (like launching the document, changing page etc...)<br />
----<br />
*'''on.deactivate'''() ? is called when the focus is lost on the page (like launching the document, changing page etc...)<br />
*'''on.activate'''() ? is called when the focus is on the page (like launching the document, changing page etc...)<br />
----<br />
*'''on.mouseDown'''(x, y) is called when we press the left mouse button. X and Y are the pressed point coordinates.<br />
*'''on.mouseUp'''() is called when we release the left mouse button. <br />
*'''on.mouseMove'''() is called when the mouse moves<br />
*'''on.grabDown'''() ? (software only ?)<br />
*'''on.grabMove'''() ? (software only ?)<br />
*'''on.grabUp'''() ? (software only ?)<br />
*'''on.rightMouseDown'''() ? (software only ?)<br />
*'''on.rightMouseUp'''() ? (software only ?)<br />
----<br />
*'''on.cutEnabled'''() ? (software only ?)<br />
*'''on.copyEnabled'''() ? (software only ?)<br />
*'''on.pasteEnabled'''() ? (software only ?)<br />
*'''on.cut'''() ? (software only ?)<br />
*'''on.copy'''() ? (software only ?)<br />
*'''on.paste'''() ? (software only ?)<br />
----<br />
<br />
==D2Editor==<br />
*'''newRichText'''() creates a new RichText object (default values : x, y, width, height = 0)<br />
*'''resize'''(width, height) <br />
*'''move'''(x, y)<br />
*'''setText'''(string)<br />
*'''getText'''() returns the RichText value<br />
*'''setReadOnly'''(bool) bool : true/false : If true, the content becomes read-only, i.e. non-editable.<br />
*'''setFormattedText'''() - ?<br />
Example of a valid function using the D2Editor<br />
function createRichTextBox<br />
box = D2Editor.newRichText()<br />
box:move(50, 50)<br />
box:resize(50, 50)<br />
box:setText("Hello World !")<br />
end<br />
<br />
==External Links==<br />
An interesting page about LUA code optimization, that can be really useful, especially for calculators : [http://trac.caspring.org/wiki/LuaPerformance Lua Performance]</div>Squalylhttps://hackspire.org//index.php?title=Main_Page&diff=940Main Page2011-02-22T08:10:18Z<p>Squalyl: </p>
<hr />
<div>This wiki is dedicated to hacking the TI-Nspire.<br />
<br />
Translations:<br />
* [[Main_Page:fr]]<br />
* [[Main_Page:de]]<br />
<br />
== WARNING WARNING WARNING: DUE TO RECENT SPAM, I WILL BLOCK ANY USER THAT DO NOT WRITE HIS NAME IN THE NSPIRE OWNER LIST ==<br />
You are warned.<br />
<br />
==Welcome==<br />
<br />
Welcome to you on Hackspire, the TI-Nspire Hackings wiki.<br />
The goal of this wiki is to federate all research efforts about the Texas Instruments TI-Nspire calculator.<br />
<br />
Feel free to add your contribution, the more details we get, the faster we can get this calculator work for us!<br />
TI Software is great for Mathematics, Physics... And independent developers are great for all the rest, because TI does not have time for this!<br />
<br />
If you want to continue the TI-89 and TI92+ success story with the TI-Nspire, please contribute! You don't need to destroy your calc for this, any contribution is welcome! Examples include:<br />
<br />
* Communication: Searching for communities working on TI-Nspire is important, we feel that 1+1>2, ie lonely developers can benefit from common efforts<br />
* Hacking: We need to investigate the ability of TI-Nspire to run independent software<br />
* Wiki development: I'm not good at writing wiki pages, organizing categories, etc... If you know how to run a wiki actively, you can contribute!<br />
* And if you are a TI-Nspire owner, and are just waiting to play Mario and other cool games, be patient and after having registered yourself in the [[NSpire Owners List]], ask questions to develop your hacking skills :)<br />
<br />
Oh, and if you find something weird, a bug, a feature, a test you did and you don't know where to put it, feel free to edit this page: [[Contributed_Tests]]<br />
<br />
Thank you!<br />
<br />
squalyl, Hackspire wiki founder.<br />
<br />
== Site news ==<br />
20101003 Database restoration after a filesystem failure. Fortunately no or little data has been lost. You still may need to recreate your user account.<br />
<br />
20071029 Added [[Announces|an announce page]] to note important steps, discoveries, etc<br />
<br />
20070823 Editing disabled for anonymous users<br />
<br />
20070808 The robots.txt file that prevented indexation has been removed, to allow indexing and allow the world to come here. A sitemap has been added for Main_page, Operating_System and Hardware.<br />
<br />
== Communities ==<br />
===Forums and News sites===<br />
Although not specific to the TI-Nspire, these web sites are visited by many TI-Nspire hackers and developers.<br />
<br />
[http://www.omnimaga.org Omnimaga] ([http://www.omnimaga.org/index.php?action=forum forum]) (most active - English spoken)<br />
<br />
[http://ti.bank.free.fr TI-Bank] ([http://tibank.forumactif.com/forum-ti-nspire-c5/ forum]) (most active - French spoken)<br />
<br />
[http://www.unitedti.org/forum/index.php?showforum=67 United-TI] (where hacking begun - English spoken)<br />
<br />
[http://yaronet.com/sujets.php?f=2844 yAronet] (where hacking began - French spoken)<br />
<br />
===Independent TI-Nspire Developers IRC channels===<br />
<code>#inspired at irc.freequest.net:7000</code> - SSL on port 9999<br />
<br />
<code>#inspired at efnet.xs4all.nl:6667</code> - SSL on port 6697<br />
<br />
== Current pages ==<br />
===Support===<br />
*[[User FAQ|Frequently Asked Questions]]<br />
<br />
===Projects, programs and tools===<br />
*[[Emulators]]<br />
*[[Assembly programs]]<br />
<br />
===Development resources===<br />
*[[Ndless]]<br />
*[[C and assembly development introduction]]<br />
*[[Syscalls|Syscalls and standard libraries]]<br />
*[[libndls|libndls - TI-Nspire-specific library]]<br />
*[[Debugging programs]]<br />
*[[Ndless features and limitations]]<br />
*[[Memory-mapped I/O ports]]<br />
*[[Virtual Memory]]<br />
*[[Memory layout]]<br />
*[[USB Protocol]]<br />
*[[Interrupts]]<br />
*[[Hardware]]<br />
<br />
===OS information===<br />
*[[Operating System]]<br />
*[[OS upgrade files]]<br />
*[[TNS File Format]]<br />
*[[Document management]]<br />
*[[TI-84 Plus Emulation]]<br />
<br />
===Miscellaneous===<br />
*[[Miscellaneous Information]]<br />
*[[Information Requests]]<br />
*[[TI-Nspire CAS Software]]<br />
*[[Links]]</div>Squalylhttps://hackspire.org//index.php?title=Talk:Main_Page&diff=939Talk:Main Page2011-02-22T08:09:36Z<p>Squalyl: </p>
<hr />
<div>Hello everyone,<br />
<br />
I'm new. I joined this community to help everyone out with the Nspire "problem".<br />
If all of us are having the same problem, why not work together to solve it?<br />
I'm not much of an expert at anything with programming, but I will try my best if help is needed.<br />
<br />
-TJ<br />
<br />
I second this opinion. I am OK at programming, but I can help out in pretty much anything. We need this site more public - I haven't seen nearly any edits recently ):<br />
<br />
- Devnull<br />
<br />
Hello Devnull and everyone else. Join the TI-Nspire Google Group. There is much more activity on there than here.<br />
The TI-Nspire Google Group is on the following website: http://groups.google.com/group/tinspire?hl=en<br />
Have fun discussing! =]<br />
<br />
== This seems spammish ==<br />
<br />
"==WARNING WARNING DE SQUALYL SQUALYL DUE TO RECENT SPAM, I WILL BLOCK ANY USER THAT DO NOT WRITE HIS NAME IN THE NSPIRE OWNER LIST K==<br />
<br />
You are warned."<br />
<br />
Why is it there?<br />
<br />
hello, it's not spam it's really from me, squalyl. It's there because in the recent days, a high number of spammers tried to sell viagra and bank loans via this site, because ReCaptcha is partially broken. I will make it less spammish [[User:Squalyl|squalyl]] 09:09, 22 February 2011 (CET)</div>Squalylhttps://hackspire.org//index.php?title=Main_Page&diff=936Main Page2011-02-18T09:17:45Z<p>Squalyl: </p>
<hr />
<div>This wiki is dedicated to hacking the TI-Nspire.<br />
<br />
Translations:<br />
* [[Main_Page:fr]]<br />
* [[Main_Page:de]]<br />
<br />
== WARNING WARNING DE SQUALYL SQUALYL DUE TO RECENT SPAM, I WILL BLOCK ANY USER THAT DO NOT WRITE HIS NAME IN THE NSPIRE OWNER LIST K ==<br />
You are warned.<br />
<br />
==Welcome==<br />
<br />
Welcome to you on Hackspire, the TI-Nspire Hackings wiki.<br />
The goal of this wiki is to federate all research efforts about the Texas Instruments TI-Nspire calculator.<br />
<br />
Feel free to add your contribution, the more details we get, the faster we can get this calculator work for us!<br />
TI Software is great for Mathematics, Physics... And independent developers are great for all the rest, because TI does not have time for this!<br />
<br />
If you want to continue the TI-89 and TI92+ success story with the TI-Nspire, please contribute! You don't need to destroy your calc for this, any contribution is welcome! Examples include:<br />
<br />
* Communication: Searching for communities working on TI-Nspire is important, we feel that 1+1>2, ie lonely developers can benefit from common efforts<br />
* Hacking: We need to investigate the ability of TI-Nspire to run independent software<br />
* Wiki development: I'm not good at writing wiki pages, organizing categories, etc... If you know how to run a wiki actively, you can contribute!<br />
* And if you are a TI-Nspire owner, and are just waiting to play Mario and other cool games, be patient and after having registered yourself in the [[NSpire Owners List]], ask questions to develop your hacking skills :)<br />
<br />
Oh, and if you find something weird, a bug, a feature, a test you did and you don't know where to put it, feel free to edit this page: [[Contributed_Tests]]<br />
<br />
Thank you!<br />
<br />
squalyl, Hackspire wiki founder.<br />
<br />
== Site news ==<br />
20101003 Database restoration after a filesystem failure. Fortunately no or little data has been lost. You still may need to recreate your user account.<br />
<br />
20071029 Added [[Announces|an announce page]] to note important steps, discoveries, etc<br />
<br />
20070823 Editing disabled for anonymous users<br />
<br />
20070808 The robots.txt file that prevented indexation has been removed, to allow indexing and allow the world to come here. A sitemap has been added for Main_page, Operating_System and Hardware.<br />
<br />
== Communities ==<br />
===Forums and News sites===<br />
Although not specific to the TI-Nspire, these web sites are visited by many TI-Nspire hackers and developers.<br />
<br />
[http://www.omnimaga.org Omnimaga] ([http://www.omnimaga.org/index.php?action=forum forum]) (most active - English spoken)<br />
<br />
[http://ti.bank.free.fr TI-Bank] ([http://tibank.forumactif.com/forum-ti-nspire-c5/ forum]) (most active - French spoken)<br />
<br />
[http://www.unitedti.org/forum/index.php?showforum=67 United-TI] (where hacking begun - English spoken)<br />
<br />
[http://yaronet.com/sujets.php?f=2844 yAronet] (where hacking began - French spoken)<br />
<br />
===Independent TI-Nspire Developers IRC channels===<br />
<code>#inspired at irc.freequest.net:7000</code> - SSL on port 9999<br />
<br />
<code>#inspired at efnet.xs4all.nl:6667</code> - SSL on port 6697<br />
<br />
== Current pages ==<br />
===Support===<br />
*[[User FAQ|Frequently Asked Questions]]<br />
<br />
===Projects, programs and tools===<br />
*[[Emulators]]<br />
*[[Assembly programs]]<br />
<br />
===Development resources===<br />
*[[Ndless]]<br />
*[[C and assembly development introduction]]<br />
*[[Syscalls|Syscalls and standard libraries]]<br />
*[[libndls|libndls - TI-Nspire-specific library]]<br />
*[[Debugging programs]]<br />
*[[Ndless features and limitations]]<br />
*[[Memory-mapped I/O ports]]<br />
*[[Virtual Memory]]<br />
*[[Memory layout]]<br />
*[[USB Protocol]]<br />
*[[Interrupts]]<br />
*[[Hardware]]<br />
<br />
===OS information===<br />
*[[Operating System]]<br />
*[[OS upgrade files]]<br />
*[[TNS File Format]]<br />
*[[Document management]]<br />
*[[TI-84 Plus Emulation]]<br />
<br />
===Miscellaneous===<br />
*[[Miscellaneous Information]]<br />
*[[Information Requests]]<br />
*[[TI-Nspire CAS Software]]<br />
*[[Links]]</div>Squalylhttps://hackspire.org//index.php?title=Main_Page&diff=765Main Page2010-10-08T07:43:04Z<p>Squalyl: /* Independent Nspire Developers IRC channels */</p>
<hr />
<div>This wiki is dedicated to hacking the Nspire.<br />
<br />
==Welcome==<br />
<br />
<br />
Welcome to you on Hackspire, the TI-Nspire Hackings wiki.<br />
The goal of this wiki is to federate all research efforts about the Texas Instruments Nspire calculator.<br />
<br />
Feel free to add your contribution, the more details we get, the faster we can get this calculator work for us!<br />
TI Software is great for Mathematics, Physics... And independent developers are great for all the rest, because TI does not have time for this!<br />
<br />
If you want to continue the TI-89 and TI92+ success story with the Nspire, please contribute! You don't need to destroy your calc for this, any contribution is welcome! Examples includes:<br />
<br />
* Communication: Searching for communities working on Nspire is important, we feel that 1+1>2, ie lonely developers can benefit from common efforts<br />
* Hacking: We need to investigate the ability of Nspire to run independent software<br />
* Wiki development: I'm not good at writing wiki pages, organizing categories, etc... If you know how to run a wiki actively, you can contribute!<br />
* And if you are a Nspire owner, and are just waiting to play Mario and other cool games, be patient and after having registered yourself in the [[NSpire Owners List]], ask questions to develop your hacking skills :)<br />
<br />
Oh, and if you find something weird, a bug, a feature, a test you did and you don't know where to put it, feel free to edit this page: [[Contributed_Tests]]<br />
<br />
Thank you !<br />
<br />
squalyl, Hackspire wiki founder.<br />
<br />
== Site news ==<br />
20101003 Database restoration after a filesystem failure. Fortunately no or little data has been lost. You still may need to recreate your user account.<br />
<br />
20071029 Added [[Announces|an announce page]] to note important steps, discoveries, etc<br />
<br />
20070823 Editing disabled for anonymous users<br />
<br />
20070808 The robots.txt file that prevented indexation has been removed, to allow indexing and allow the world to come here. A sitemap has been added for Main_page, Operating_System and Hardware.<br />
<br />
== Independent Nspire Developers IRC channels ==<br />
<code>#inspired at irc.freequest.net:7000</code> - SSL on port 9999<br />
<br />
<code>#inspired at irc.efnet.fr:6667</code> - no SSL<br />
<br />
== Current pages ==<br />
===Development resources===<br />
*[[C and assembly development introduction]]<br />
*[[Ndless features and limitations]]<br />
*[[Memory-mapped I/O ports]]<br />
*[[Virtual Memory]]<br />
*[[Memory layout]]<br />
*[[USB Protocol]]<br />
*[[Interrupts]]<br />
*[[Hardware]]<br />
<br />
===OS information===<br />
*[[Operating System]]<br />
*[[OS upgrade files]]<br />
*[[TNS File Format]]<br />
*[[Document management]]<br />
*[[TI-84 Plus Emulation]]<br />
<br />
===Miscellaneous===<br />
*[[Miscellaneous Information]]<br />
*[[Information Requests]]<br />
*[[TI-Nspire CAS Software]]<br />
*[[Links]]<br />
<br />
== Translations ==<br />
* [[Main_Page:fr]]<br />
* [[Main_Page:de]]</div>Squalylhttps://hackspire.org//index.php?title=Main_Page&diff=764Main Page2010-10-08T07:42:55Z<p>Squalyl: </p>
<hr />
<div>This wiki is dedicated to hacking the Nspire.<br />
<br />
==Welcome==<br />
<br />
<br />
Welcome to you on Hackspire, the TI-Nspire Hackings wiki.<br />
The goal of this wiki is to federate all research efforts about the Texas Instruments Nspire calculator.<br />
<br />
Feel free to add your contribution, the more details we get, the faster we can get this calculator work for us!<br />
TI Software is great for Mathematics, Physics... And independent developers are great for all the rest, because TI does not have time for this!<br />
<br />
If you want to continue the TI-89 and TI92+ success story with the Nspire, please contribute! You don't need to destroy your calc for this, any contribution is welcome! Examples includes:<br />
<br />
* Communication: Searching for communities working on Nspire is important, we feel that 1+1>2, ie lonely developers can benefit from common efforts<br />
* Hacking: We need to investigate the ability of Nspire to run independent software<br />
* Wiki development: I'm not good at writing wiki pages, organizing categories, etc... If you know how to run a wiki actively, you can contribute!<br />
* And if you are a Nspire owner, and are just waiting to play Mario and other cool games, be patient and after having registered yourself in the [[NSpire Owners List]], ask questions to develop your hacking skills :)<br />
<br />
Oh, and if you find something weird, a bug, a feature, a test you did and you don't know where to put it, feel free to edit this page: [[Contributed_Tests]]<br />
<br />
Thank you !<br />
<br />
squalyl, Hackspire wiki founder.<br />
<br />
== Site news ==<br />
20101003 Database restoration after a filesystem failure. Fortunately no or little data has been lost. You still may need to recreate your user account.<br />
<br />
20071029 Added [[Announces|an announce page]] to note important steps, discoveries, etc<br />
<br />
20070823 Editing disabled for anonymous users<br />
<br />
20070808 The robots.txt file that prevented indexation has been removed, to allow indexing and allow the world to come here. A sitemap has been added for Main_page, Operating_System and Hardware.<br />
<br />
== Independent Nspire Developers IRC channels ==<br />
<code>#inspired at irc.freequest.net:7000</code> - SSL on port 9999<br />
<code>#inspired at irc.efnet.fr:6667</code> - no SSL<br />
<br />
== Current pages ==<br />
===Development resources===<br />
*[[C and assembly development introduction]]<br />
*[[Ndless features and limitations]]<br />
*[[Memory-mapped I/O ports]]<br />
*[[Virtual Memory]]<br />
*[[Memory layout]]<br />
*[[USB Protocol]]<br />
*[[Interrupts]]<br />
*[[Hardware]]<br />
<br />
===OS information===<br />
*[[Operating System]]<br />
*[[OS upgrade files]]<br />
*[[TNS File Format]]<br />
*[[Document management]]<br />
*[[TI-84 Plus Emulation]]<br />
<br />
===Miscellaneous===<br />
*[[Miscellaneous Information]]<br />
*[[Information Requests]]<br />
*[[TI-Nspire CAS Software]]<br />
*[[Links]]<br />
<br />
== Translations ==<br />
* [[Main_Page:fr]]<br />
* [[Main_Page:de]]</div>Squalylhttps://hackspire.org//index.php?title=Main_Page&diff=763Main Page2010-10-08T07:40:40Z<p>Squalyl: /* Independent Nspire Developers IRC channels */</p>
<hr />
<div>This wiki is dedicated to hacking the Nspire.<br />
<br />
==Welcome==<br />
<br />
<br />
Welcome to you on Hackspire, the TI-Nspire Hackings wiki.<br />
The goal of this wiki is to federate all research efforts about the Texas Instruments Nspire calculator.<br />
<br />
Feel free to add your contribution, the more details we get, the faster we can get this calculator work for us!<br />
TI Software is great for Mathematics, Physics... And independent developers are great for all the rest, because TI does not have time for this!<br />
<br />
If you want to continue the TI-89 and TI92+ success story with the Nspire, please contribute! You don't need to destroy your calc for this, any contribution is welcome! Examples includes:<br />
<br />
* Communication: Searching for communities working on Nspire is important, we feel that 1+1>2, ie lonely developers can benefit from common efforts<br />
* Hacking: We need to investigate the ability of Nspire to run independent software<br />
* Wiki development: I'm not good at writing wiki pages, organizing categories, etc... If you know how to run a wiki actively, you can contribute!<br />
* And if you are a Nspire owner, and are just waiting to play Mario and other cool games, be patient and after having registered yourself in the [[NSpire Owners List]], ask questions to develop your hacking skills :)<br />
<br />
Oh, and if you find something weird, a bug, a feature, a test you did and you don't know where to put it, feel free to edit this page: [[Contributed_Tests]]<br />
<br />
Thank you !<br />
<br />
squalyl, Hackspire wiki founder.<br />
<br />
== Site news ==<br />
20101003 Database restoration after a filesystem failure. Fortunately no or little data has been lost. You still may need to recreate your user account.<br />
<br />
20071029 Added [[Announces|an announce page]] to note important steps, discoveries, etc<br />
<br />
20070823 Editing disabled for anonymous users<br />
<br />
20070808 The robots.txt file that prevented indexation has been removed, to allow indexing and allow the world to come here. A sitemap has been added for Main_page, Operating_System and Hardware.<br />
<br />
== Independent Nspire Developers IRC channels ==<br />
<code>#inspired at irc.freequest.net:7000</code><br />
<code>#inspired at irc.efnet.fr:6667</code><br />
<br />
== Current pages ==<br />
===Development resources===<br />
*[[C and assembly development introduction]]<br />
*[[Ndless features and limitations]]<br />
*[[Memory-mapped I/O ports]]<br />
*[[Virtual Memory]]<br />
*[[Memory layout]]<br />
*[[USB Protocol]]<br />
*[[Interrupts]]<br />
*[[Hardware]]<br />
<br />
===OS information===<br />
*[[Operating System]]<br />
*[[OS upgrade files]]<br />
*[[TNS File Format]]<br />
*[[Document management]]<br />
*[[TI-84 Plus Emulation]]<br />
<br />
===Miscellaneous===<br />
*[[Miscellaneous Information]]<br />
*[[Information Requests]]<br />
*[[TI-Nspire CAS Software]]<br />
*[[Links]]<br />
<br />
== Translations ==<br />
* [[Main_Page:fr]]<br />
* [[Main_Page:de]]</div>Squalylhttps://hackspire.org//index.php?title=Main_Page&diff=762Main Page2010-10-07T23:49:09Z<p>Squalyl: </p>
<hr />
<div>This wiki is dedicated to hacking the Nspire.<br />
<br />
==Welcome==<br />
<br />
<br />
Welcome to you on Hackspire, the TI-Nspire Hackings wiki.<br />
The goal of this wiki is to federate all research efforts about the Texas Instruments Nspire calculator.<br />
<br />
Feel free to add your contribution, the more details we get, the faster we can get this calculator work for us!<br />
TI Software is great for Mathematics, Physics... And independent developers are great for all the rest, because TI does not have time for this!<br />
<br />
If you want to continue the TI-89 and TI92+ success story with the Nspire, please contribute! You don't need to destroy your calc for this, any contribution is welcome! Examples includes:<br />
<br />
* Communication: Searching for communities working on Nspire is important, we feel that 1+1>2, ie lonely developers can benefit from common efforts<br />
* Hacking: We need to investigate the ability of Nspire to run independent software<br />
* Wiki development: I'm not good at writing wiki pages, organizing categories, etc... If you know how to run a wiki actively, you can contribute!<br />
* And if you are a Nspire owner, and are just waiting to play Mario and other cool games, be patient and after having registered yourself in the [[NSpire Owners List]], ask questions to develop your hacking skills :)<br />
<br />
Oh, and if you find something weird, a bug, a feature, a test you did and you don't know where to put it, feel free to edit this page: [[Contributed_Tests]]<br />
<br />
Thank you !<br />
<br />
squalyl, Hackspire wiki founder.<br />
<br />
== Site news ==<br />
20101003 Database restoration after a filesystem failure. Fortunately no or little data has been lost. You still may need to recreate your user account.<br />
<br />
20071029 Added [[Announces|an announce page]] to note important steps, discoveries, etc<br />
<br />
20070823 Editing disabled for anonymous users<br />
<br />
20070808 The robots.txt file that prevented indexation has been removed, to allow indexing and allow the world to come here. A sitemap has been added for Main_page, Operating_System and Hardware.<br />
<br />
== Independent Nspire Developers IRC channels ==<br />
<code>#inspired at irc.freequest.net:7000</code> (UTF-8 charset, beware, trespassers are banned)<br><br />
<code>#inspired at irc.efnet.fr:6667</code><br />
<br />
== Current pages ==<br />
===Development resources===<br />
*[[C and assembly development introduction]]<br />
*[[Ndless features and limitations]]<br />
*[[Memory-mapped I/O ports]]<br />
*[[Virtual Memory]]<br />
*[[Memory layout]]<br />
*[[USB Protocol]]<br />
*[[Interrupts]]<br />
*[[Hardware]]<br />
<br />
===OS information===<br />
*[[Operating System]]<br />
*[[OS upgrade files]]<br />
*[[TNS File Format]]<br />
*[[Document management]]<br />
*[[TI-84 Plus Emulation]]<br />
<br />
===Miscellaneous===<br />
*[[Miscellaneous Information]]<br />
*[[Information Requests]]<br />
*[[TI-Nspire CAS Software]]<br />
*[[Links]]<br />
<br />
== Translations ==<br />
* [[Main_Page:fr]]<br />
* [[Main_Page:de]]</div>Squalylhttps://hackspire.org//index.php?title=User:Squalyl&diff=647User:Squalyl2009-11-18T20:43:02Z<p>Squalyl: Replacing page with 'site owner'</p>
<hr />
<div>site owner</div>Squalylhttps://hackspire.org//index.php?title=Talk:TNS_File_Format&diff=606Talk:TNS File Format2009-08-28T13:46:53Z<p>Squalyl: New page: did someone investigate the bzip 2 and the LZMA ways? ~~~~</p>
<hr />
<div>did someone investigate the bzip 2 and the LZMA ways? [[User:Squalyl|squalyl]] 13:46, 28 August 2009 (UTC)</div>Squalylhttps://hackspire.org//index.php?title=Main_Page&diff=598Main Page2009-08-24T19:58:37Z<p>Squalyl: </p>
<hr />
<div>Note: users interested in using the nspire can join this group:<br />
http://groups.google.com/group/tinspire?hl=en<br />
<br />
This wiki is dedicated to hacking the Nspire.<br />
<br />
==Welcome==<br />
<br />
<br />
Welcome to you on Hackspire, the TI-Nspire Hackings wiki.<br />
The goal of this wiki is to federate all research efforts about the Texas Instruments Nspire calculator.<br />
<br />
Feel free to add your contribution, the more details we get, the faster we can get this calculator work for us!<br />
TI Software is great for Mathematics, Physics... And independent developers are great for all the rest, because TI does not have time for this!<br />
<br />
If you want to continue the TI-89 and TI92+ success story with the Nspire, please contribute! You don't need to destroy your calc for this, any contribution is welcome! Examples includes:<br />
<br />
* Communication: Searching for communities working on Nspire is important, we feel that 1+1>2, ie lonely developers can benefit from common efforts<br />
* Hacking: We need to investigate the ability of Nspire to run independent software<br />
* Wiki development: I'm not good at writing wiki pages, organizing categories, etc... If you know how to run a wiki actively, you can contribute!<br />
* And if you are a Nspire owner, and are just waiting to play Mario and other cool games, be patient and after having registered yourself in the [[NSpire Owners List]], ask questions to develop your hacking skills :)<br />
<br />
Oh, and if you find something weird, a bug, a feature, a test you did and you don't know where to put it, feel free to edit this page: [[Contributed_Tests]]<br />
<br />
Thank you !<br />
<br />
squalyl, Hackspire wiki founder.<br />
<br />
== Site news ==<br />
20071029 Added [[Announces|an announce page]] to note important steps, discoveries, etc<br />
<br />
20070823 Editing disabled for anonymous users<br />
<br />
20070808 The robots.txt file that prevented indexation has been removed, to allow indexing and allow the world to come here. A sitemap has been added for Main_page, Operating_System and Hardware.<br />
<br />
== Independent Nspire Developers IRC chan ==<br />
<code>#inspired at irc.freequest.net:7000</code> (UTF-8 charset) - [http://tigcc.ticalc.org/webchatinspired.html Web Access]<br />
<br />
== Current pages ==<br />
*[[TNS File Format]]<br />
*[[Document management]]<br />
*[[Hardware]]<br />
*[[Links]]<br />
*[[Memory layout]]<br />
*[[Miscellaneous Information]]<br />
*[[Operating System]]<br />
*[[OS upgrade files]]<br />
*[[Information Requests]]<br />
*[[TI-84 Plus Emulation]]<br />
*[[TI-Nspire CAS Software]]<br />
*[[USB Protocol]]<br />
<br />
== Translations ==<br />
* [[Main_Page:fr]]<br />
* [[Main_Page:de]]</div>Squalylhttps://hackspire.org//index.php?title=Server&diff=574Server2009-04-13T10:38:41Z<p>Squalyl: </p>
<hr />
<div>This wiki is hosted on my dedicated server, a [http://www.dedibox.fr dedibox] from Illiad.<br />
==Location==<br />
Is's located in France, near Paris.<br />
<br />
==Hardware==<br />
It has a VIA C7 2 GHz CPU, 1024 MB DDR2 memory and a 160 GB SATA disk.<br />
The CPU has only 128kB of cache, which can explain why this wiki isn't fast...<br />
<br />
The datacenter can be seen [http://www.dedibox.fr/datacenter/visite_datacenter.html on this page]<br />
<br />
*[http://www.dedibox.fr/images/img-datacenter8.jpg Server racks]<br />
*[http://www.dedibox.fr/images/img-elec5.JPG Power supplies]<br />
*[http://www.dedibox.fr/images/img-elec1.JPG UPS]<br />
*[http://www.dedibox.fr/images/img-elec6.JPG Diesel Generators]<br />
*[http://www.dedibox.fr/images/img-clim1.JPG Ambient cooling]<br />
*[http://www.dedibox.fr/images/img-secu9.JPG Biometric access control]<br />
*[http://www.dedibox.fr/images/img-secu4.JPG Fire protection]<br />
<br />
==Software==<br />
I'm running Debian Lenny<br />
<br />
The services available includes http and subversion (by SSL). If you want to use them, please let me know [[User:squalyl|here]]<br />
<br />
* 20090413 Now using ReCaptcha to protect spam attempts<br />
* 20090302 Server upgraded to Debian lenny<br />
* 20081031 updated to Mediawiki 1.13.2<br />
* 20080323 Server upgraded to Fedora 9<br />
* 20070828 a daily backup has been setup.</div>Squalylhttps://hackspire.org//index.php?title=User:Squalyl&diff=565User:Squalyl2009-03-02T16:06:57Z<p>Squalyl: </p>
<hr />
<div>last-year student, currently intern in a french big company.<br />
<br />
Currently living in Paris<br />
<br />
Work experience:<br />
<br />
* Since 02-2009: Employed at [http://www.spirtech.com Spirtech] as JavaCard engineer.<br />
<br />
Studies:<br />
<br />
* 2006-2007: ENSIMAG (Grenoble's National Engineering School for Applied Mathematics and Computer Science) - Special Year<br />
* 2002-2006: ENSPG (Grenoble's National Engineering School for Physics)<br />
* 2000-2002: Exams preparation School at Montpellier's Lycée Joffre<br />
* 2000: Baccalaureat<br />
<br />
Internships:<br />
<br />
* 2007: Studies about OpenMoko Embedded Linux Platform<br />
* 2006: Schneider Electric, Grenoble, Shape memory Alloys<br />
* 2005: CEA Grenoble + GPM2, Powder Materials Simulation<br />
<br />
Personal experience:<br />
<br />
* A lot of small, never finished computer projects. Mainly to "test everything".<br />
<br />
Hobbies:<br />
<br />
* Programming<br />
* Project management<br />
* Business and Investment world<br />
* Korea<br />
* Other things that may change very fast, so no need to write them down :)<br />
<br />
Current Projects:<br />
<br />
* A small JVM. Not yet ready to be released.</div>Squalylhttps://hackspire.org//index.php?title=Server&diff=564Server2009-03-02T16:06:07Z<p>Squalyl: /* Software */</p>
<hr />
<div>This wiki is hosted on my dedicated server, a [http://www.dedibox.fr dedibox] from Illiad.<br />
==Location==<br />
Is's located in France, near Paris.<br />
<br />
==Hardware==<br />
It has a VIA C7 2 GHz CPU, 1024 MB DDR2 memory and a 160 GB SATA disk.<br />
The CPU has only 128kB of cache, which can explain why this wiki isn't fast...<br />
<br />
The datacenter can be seen [http://www.dedibox.fr/datacenter/visite_datacenter.html on this page]<br />
<br />
*[http://www.dedibox.fr/images/img-datacenter8.jpg Server racks]<br />
*[http://www.dedibox.fr/images/img-elec5.JPG Power supplies]<br />
*[http://www.dedibox.fr/images/img-elec1.JPG UPS]<br />
*[http://www.dedibox.fr/images/img-elec6.JPG Diesel Generators]<br />
*[http://www.dedibox.fr/images/img-clim1.JPG Ambient cooling]<br />
*[http://www.dedibox.fr/images/img-secu9.JPG Biometric access control]<br />
*[http://www.dedibox.fr/images/img-secu4.JPG Fire protection]<br />
<br />
==Software==<br />
I'm running Debian Lenny<br />
<br />
The services available includes http and subversion (by SSL). If you want to use them, please let me know [[User:squalyl|here]]<br />
<br />
* 20090302 Server upgraded to Debian lenny<br />
* 20081031 updated to Mediawiki 1.13.2<br />
* 20080323 Server upgraded to Fedora 9<br />
* 20070828 a daily backup has been setup.<br />
<br />
==Statistics==<br />
{|<br />
| Month || Uplaod || Download || Total<br />
|-<br />
| Octobre 2007||9 Go||68 Go||77 Go<br />
|-<br />
|Septembre 2007||10 Go||65 Go||75 Go<br />
|-<br />
|Aout 2007||21 Go||93 Go||114 Go<br />
|-<br />
|Juillet 2007||2 Go||875 Mo||2 Go<br />
|-<br />
|Juin 2007||718 Mo||7 Mo||725 Mo<br />
|-<br />
|Total||51 Go||247 Go||298 Go<br />
|}</div>Squalylhttps://hackspire.org//index.php?title=Server&diff=563Server2009-03-02T16:05:54Z<p>Squalyl: </p>
<hr />
<div>This wiki is hosted on my dedicated server, a [http://www.dedibox.fr dedibox] from Illiad.<br />
==Location==<br />
Is's located in France, near Paris.<br />
<br />
==Hardware==<br />
It has a VIA C7 2 GHz CPU, 1024 MB DDR2 memory and a 160 GB SATA disk.<br />
The CPU has only 128kB of cache, which can explain why this wiki isn't fast...<br />
<br />
The datacenter can be seen [http://www.dedibox.fr/datacenter/visite_datacenter.html on this page]<br />
<br />
*[http://www.dedibox.fr/images/img-datacenter8.jpg Server racks]<br />
*[http://www.dedibox.fr/images/img-elec5.JPG Power supplies]<br />
*[http://www.dedibox.fr/images/img-elec1.JPG UPS]<br />
*[http://www.dedibox.fr/images/img-elec6.JPG Diesel Generators]<br />
*[http://www.dedibox.fr/images/img-clim1.JPG Ambient cooling]<br />
*[http://www.dedibox.fr/images/img-secu9.JPG Biometric access control]<br />
*[http://www.dedibox.fr/images/img-secu4.JPG Fire protection]<br />
<br />
==Software==<br />
I'm running Fedora 9<br />
<br />
The services available includes http and subversion (by SSL). If you want to use them, please let me know [[User:squalyl|here]]<br />
<br />
* 20090302 Server upgraded to Debian lenny<br />
* 20081031 updated to Mediawiki 1.13.2<br />
* 20080323 Server upgraded to Fedora 9<br />
* 20070828 a daily backup has been setup.<br />
<br />
==Statistics==<br />
{|<br />
| Month || Uplaod || Download || Total<br />
|-<br />
| Octobre 2007||9 Go||68 Go||77 Go<br />
|-<br />
|Septembre 2007||10 Go||65 Go||75 Go<br />
|-<br />
|Aout 2007||21 Go||93 Go||114 Go<br />
|-<br />
|Juillet 2007||2 Go||875 Mo||2 Go<br />
|-<br />
|Juin 2007||718 Mo||7 Mo||725 Mo<br />
|-<br />
|Total||51 Go||247 Go||298 Go<br />
|}</div>Squalylhttps://hackspire.org//index.php?title=Server&diff=532Server2008-10-31T17:39:53Z<p>Squalyl: /* Software */</p>
<hr />
<div>This wiki is hosted on my dedicated server, a [http://www.dedibox.fr dedibox] from Illiad.<br />
==Location==<br />
Is's located in France, near Paris.<br />
<br />
==Hardware==<br />
It has a VIA C7 2 GHz CPU, 1024 MB DDR2 memory and a 160 GB SATA disk.<br />
The CPU has only 128kB of cache, which can explain why this wiki isn't fast...<br />
<br />
The datacenter can be seen [http://www.dedibox.fr/datacenter/visite_datacenter.html on this page]<br />
<br />
*[http://www.dedibox.fr/images/img-datacenter8.jpg Server racks]<br />
*[http://www.dedibox.fr/images/img-elec5.JPG Power supplies]<br />
*[http://www.dedibox.fr/images/img-elec1.JPG UPS]<br />
*[http://www.dedibox.fr/images/img-elec6.JPG Diesel Generators]<br />
*[http://www.dedibox.fr/images/img-clim1.JPG Ambient cooling]<br />
*[http://www.dedibox.fr/images/img-secu9.JPG Biometric access control]<br />
*[http://www.dedibox.fr/images/img-secu4.JPG Fire protection]<br />
<br />
==Software==<br />
I'm running Fedora 9<br />
<br />
The services available includes http and subversion (by SSL). If you want to use them, please let me know [[User:squalyl|here]]<br />
<br />
* 20081031 updated to Mediawiki 1.13.2<br />
* 20080323 Server upgraded to Fedora 9<br />
* 20070828 a daily backup has been setup.<br />
<br />
==Statistics==<br />
{|<br />
| Month || Uplaod || Download || Total<br />
|-<br />
| Octobre 2007||9 Go||68 Go||77 Go<br />
|-<br />
|Septembre 2007||10 Go||65 Go||75 Go<br />
|-<br />
|Aout 2007||21 Go||93 Go||114 Go<br />
|-<br />
|Juillet 2007||2 Go||875 Mo||2 Go<br />
|-<br />
|Juin 2007||718 Mo||7 Mo||725 Mo<br />
|-<br />
|Total||51 Go||247 Go||298 Go<br />
|}</div>Squalylhttps://hackspire.org//index.php?title=Hardware&diff=522Hardware2008-09-30T09:04:29Z<p>Squalyl: /* Storage (?) memory */</p>
<hr />
<div>The chips are the same on the TI-Nspire and the TI-Nspire CAS.<br />
<br />
==PCB==<br />
Here are some hi-res PCB images, provided by bloo: [http://www.unsads.com/~squalyl/nspire/pics/nspire001.jpg], [http://www.unsads.com/~squalyl/nspire/pics/nspire002.jpg], [http://www.unsads.com/~squalyl/nspire/pics/nspire003.jpg]<br />
<br />
===Connector J04===<br />
As can be seen on the above image, there are empty pads for a connector labelled "J04". Maybe, there are signals to get a little bit further into the calculator.<br />
<br />
I've analyzed the signals on the pins and found out a little about the types of signals.<br />
<br />
"GND" means signal ground, it has the same potential as the whole ground plane on the PCBs. The minus pole of one battery is directly connected to it.<br />
"Vcc 3.3V" means the 3.3V power supply of the calculator. It seems to be present even if the calculator is off.<br />
"Floating" is a signal with an undefined voltage level, this state is very likely for inputs.<br />
"High" is a signal with almost 3.3V, but not a supply signal. These signals can be outputs switched to "high" or inputs with pull-up resistors.<br />
<br />
{| border=1<br />
| GND<br />
| 1<br />
| 2<br />
| GND<br />
|-<br />
| Vcc 3.3V<br />
| 3<br />
| 4<br />
| Square-wave: 112Hz, 99% duty-cycle, not present if the calc is off<br />
|-<br />
| High<br />
| 5<br />
| 6<br />
| Square-wave: 112Hz, 99% duty-cycle, not present if the calc is off<br />
|-<br />
| High<br />
| 7<br />
| 8<br />
| Square-wave: 112Hz, 99% duty-cycle, not present if the calc is off<br />
|-<br />
| Floating<br />
| 9<br />
| 10<br />
| Square-wave: 112Hz, 99% duty-cycle, not present if the calc is off<br />
|-<br />
| GND<br />
| 11<br />
| 12<br />
| Square-wave: 112Hz, 99% duty-cycle, not present if the calc is off<br />
|-<br />
| GND<br />
| 13<br />
| 14<br />
| GND<br />
|-<br />
| Floating<br />
| 15<br />
| 16<br />
| Floating<br />
|-<br />
| Floating<br />
| 17<br />
| 18<br />
| GND<br />
|-<br />
| Floating<br />
| 19<br />
| 20<br />
| Square-wave: 112Hz, 99% duty-cycle, not present if the calc is off<br />
|-<br />
| Floating<br />
| 21<br />
| 22<br />
| Square-wave: 112Hz, 99% duty-cycle, not present if the calc is off<br />
|-<br />
| Floating<br />
| 23<br />
| 24<br />
| RS232 Output (115'200,8,n,1)<br />
|-<br />
| Floating<br />
| 25<br />
| 26<br />
| Maybe RS232 Input<br />
|-<br />
| GND<br />
| 27<br />
| 28<br />
| GND<br />
|-<br />
| GND<br />
| 29<br />
| 30<br />
| GND<br />
|}<br />
<br />
'''TODO:''' Double-check the results and find out, what these signals (Floating, High, Square-wave) really are. Maybe, there are common interfaces as RS232, JTAG, I2C or whatever.<br />
<br />
===RS232-Log===<br />
While starting up, the calculator sends some logging information through the serial (RS232) interface.<br />
<br />
A log (including deletion and reprogramming the OS) can be found here: http://www.activevb.de/members/philippburch/hackspire/log.txt<br />
( Log mirrored [http://hackspire.unsads.com/files/log-philippburch-serial-boot.txt here])<br />
<br />
==Screen==<br />
240x320, 16 grayshades LCD screen.<br />
<br />
==CPU==<br />
Code: ...<br />
<br />
Manufacturer: Texas Instruments<br />
<br />
Model: TI-NSPIRE / L9A0702 / TI-NS2006A-0 / LSI LOGIC / ZEVIO / U 0714 / WYJ14052-1<br />
<br />
(Seems to be the same one in TI-nspire CAS, 0702 and 0714 might be datestamps)<br />
<br />
[http://www.unsads.com/~squalyl/nspire/specs/ZEVIO1020_PB.pdf LSI Zevio 1020 product brief]<br />
<br />
CPU seems to be an [http://www.arm.com/products/CPUs/ARM926EJ-S.html ARM926EJ-S] with ARM5 instruction set ( see [http://www.arm.com/pdfs/DDI0198D_926_TRM.pdf Reference manual] ). Commands of the link protocol report a frequency of 90 Mhz for both the TI-Nspire and the TI-Nspire CAS.<br />
<br />
[http://microblog.routed.net/2008/08/15/ic-friday-tis-nspire/ Die photos] are now available, showing an in-house part number and dual CHIPIDEA cores.<br />
<br />
==SDRAM==<br />
Code: ...<br />
<br />
Manufacturer: QIMONDA<br />
<br />
Model: HYB18L256160BF-7.5 WV22400<br />
<br />
Datasheet: [http://www.unsads.com/~squalyl/nspire/specs/HYx18L256160BxL-7.5_rev173.pdf Local mirror] - [http://www.qimonda.com/download.jsp?ref=/qis_docs/Datasheets/Datasheets%20Mobile/HYx18L256160BxL-7.5_rev173.pdf Manufacturer site]<br />
<br />
Function: 32MB SDRAM (16bit bus)<br />
<br />
==Storage (?) memory==<br />
Code: ...<br />
<br />
Manufacturer: ST<br />
<br />
Model: NAND 256 / R3A2BZA6 / GK 0JF 8Y / CHN 88 711<br />
<br />
Function: 32MB FLASH NAND (block access) memory<br />
<br />
Notes: This memory does not support "Execute In Place" (XIP). If executable code is contained in this memory, it has to be copied in RAM first. Probably contains the Operating System, the documents and the invisible file system of the OS which needs to survive a [[Operating System#Booting and resetting|reboot]].<br />
<br />
==Boot/Kernel(?) memory==<br />
Code: ...<br />
<br />
Manufacturer: SST<br />
<br />
Model: 39WF400A 90-4C-B3KE<br />
<br />
Datasheet: [http://www.unsads.com/~squalyl/nspire/specs/S71220.pdf Local Mirror] - [http://www.sst.com/downloads/datasheet/S71220.pdf Manufacturer site]<br />
<br />
Function : 512KB NOR FLASH (16bit bus, memory mapped)<br />
<br />
Notes: Probably contains the boot code which loads the Operating System kept in the storage memory. As on previous calculator models with flash memory, contains code to receive a new Operating System. This memory would be read-only, only the storage memory would be written to. Another possible scenario is that the whole kernel (Nucleus RTOS) is stored here, and that OS updates do not include it (a two memories flashing seems unlikely), but in this case the kernel couldn't be updated.<br />
<br />
==Other==<br />
===Real-Time Clock===<br />
The clock is correctly emulated in the [[TI-84 Plus Emulation|TI-84 Plus mode]] of the TI-Nspire. Although the TI-Nspire OS doesn't display any clock as the TI-89 Titanium and the TI-84 Plus do, the TI-Nspire keeps track of time when the TI-84 Plus keypad is replaced by the TI-Nspire keypad, and then put back. We can be quite sure there is an [http://en.wikipedia.org/wiki/Real-time_clock RTC] inside. It is also interesting to mention the XML tags ''dfmt'' (date format) and ''tfmt'' (time format) set to 1 in the factory settings (''phoenix/syst/locales/en/settings/factory.zip/settings.xml'' of the [[OS_upgrade_files#Compressed_file_system|compressed file system]]) in the OS file of both the TI-Nspire and the TI-Nspire CAS. These two parameters don't appear in the system settings dialog of the TI-Nspire OS, as it is the case for the tags ''curr'' and ''unit'' of ''settings.xml''.<br />
<br />
===MMU===<br />
The TI-Nspire may have a [http://en.wikipedia.org/wiki/Memory_management_unit Memory management unit], but we can't be sure for the moment. If it had one, the [http://www.acceleratedtechnology.com.tw/embedded/nuc_kernels.html Nucleus MMU] extension for Nucleus RTOS would probably be used. But since the TI-NSpire is not open for third-party development, would the protections offered by an MMU really needed?<br />
<br />
==More information==<br />
*The [http://www.datamath.org/Graphing/NSpire.htm TI-Nspire] and [http://www.datamath.org/Graphing/NSpire_CAS.htm TI-Nspire CAS] in Datamath Calculator Musueum</div>Squalylhttps://hackspire.org//index.php?title=Hardware&diff=521Hardware2008-09-30T09:04:16Z<p>Squalyl: /* Storage (?) memory */</p>
<hr />
<div>The chips are the same on the TI-Nspire and the TI-Nspire CAS.<br />
<br />
==PCB==<br />
Here are some hi-res PCB images, provided by bloo: [http://www.unsads.com/~squalyl/nspire/pics/nspire001.jpg], [http://www.unsads.com/~squalyl/nspire/pics/nspire002.jpg], [http://www.unsads.com/~squalyl/nspire/pics/nspire003.jpg]<br />
<br />
===Connector J04===<br />
As can be seen on the above image, there are empty pads for a connector labelled "J04". Maybe, there are signals to get a little bit further into the calculator.<br />
<br />
I've analyzed the signals on the pins and found out a little about the types of signals.<br />
<br />
"GND" means signal ground, it has the same potential as the whole ground plane on the PCBs. The minus pole of one battery is directly connected to it.<br />
"Vcc 3.3V" means the 3.3V power supply of the calculator. It seems to be present even if the calculator is off.<br />
"Floating" is a signal with an undefined voltage level, this state is very likely for inputs.<br />
"High" is a signal with almost 3.3V, but not a supply signal. These signals can be outputs switched to "high" or inputs with pull-up resistors.<br />
<br />
{| border=1<br />
| GND<br />
| 1<br />
| 2<br />
| GND<br />
|-<br />
| Vcc 3.3V<br />
| 3<br />
| 4<br />
| Square-wave: 112Hz, 99% duty-cycle, not present if the calc is off<br />
|-<br />
| High<br />
| 5<br />
| 6<br />
| Square-wave: 112Hz, 99% duty-cycle, not present if the calc is off<br />
|-<br />
| High<br />
| 7<br />
| 8<br />
| Square-wave: 112Hz, 99% duty-cycle, not present if the calc is off<br />
|-<br />
| Floating<br />
| 9<br />
| 10<br />
| Square-wave: 112Hz, 99% duty-cycle, not present if the calc is off<br />
|-<br />
| GND<br />
| 11<br />
| 12<br />
| Square-wave: 112Hz, 99% duty-cycle, not present if the calc is off<br />
|-<br />
| GND<br />
| 13<br />
| 14<br />
| GND<br />
|-<br />
| Floating<br />
| 15<br />
| 16<br />
| Floating<br />
|-<br />
| Floating<br />
| 17<br />
| 18<br />
| GND<br />
|-<br />
| Floating<br />
| 19<br />
| 20<br />
| Square-wave: 112Hz, 99% duty-cycle, not present if the calc is off<br />
|-<br />
| Floating<br />
| 21<br />
| 22<br />
| Square-wave: 112Hz, 99% duty-cycle, not present if the calc is off<br />
|-<br />
| Floating<br />
| 23<br />
| 24<br />
| RS232 Output (115'200,8,n,1)<br />
|-<br />
| Floating<br />
| 25<br />
| 26<br />
| Maybe RS232 Input<br />
|-<br />
| GND<br />
| 27<br />
| 28<br />
| GND<br />
|-<br />
| GND<br />
| 29<br />
| 30<br />
| GND<br />
|}<br />
<br />
'''TODO:''' Double-check the results and find out, what these signals (Floating, High, Square-wave) really are. Maybe, there are common interfaces as RS232, JTAG, I2C or whatever.<br />
<br />
===RS232-Log===<br />
While starting up, the calculator sends some logging information through the serial (RS232) interface.<br />
<br />
A log (including deletion and reprogramming the OS) can be found here: http://www.activevb.de/members/philippburch/hackspire/log.txt<br />
( Log mirrored [http://hackspire.unsads.com/files/log-philippburch-serial-boot.txt here])<br />
<br />
==Screen==<br />
240x320, 16 grayshades LCD screen.<br />
<br />
==CPU==<br />
Code: ...<br />
<br />
Manufacturer: Texas Instruments<br />
<br />
Model: TI-NSPIRE / L9A0702 / TI-NS2006A-0 / LSI LOGIC / ZEVIO / U 0714 / WYJ14052-1<br />
<br />
(Seems to be the same one in TI-nspire CAS, 0702 and 0714 might be datestamps)<br />
<br />
[http://www.unsads.com/~squalyl/nspire/specs/ZEVIO1020_PB.pdf LSI Zevio 1020 product brief]<br />
<br />
CPU seems to be an [http://www.arm.com/products/CPUs/ARM926EJ-S.html ARM926EJ-S] with ARM5 instruction set ( see [http://www.arm.com/pdfs/DDI0198D_926_TRM.pdf Reference manual] ). Commands of the link protocol report a frequency of 90 Mhz for both the TI-Nspire and the TI-Nspire CAS.<br />
<br />
[http://microblog.routed.net/2008/08/15/ic-friday-tis-nspire/ Die photos] are now available, showing an in-house part number and dual CHIPIDEA cores.<br />
<br />
==SDRAM==<br />
Code: ...<br />
<br />
Manufacturer: QIMONDA<br />
<br />
Model: HYB18L256160BF-7.5 WV22400<br />
<br />
Datasheet: [http://www.unsads.com/~squalyl/nspire/specs/HYx18L256160BxL-7.5_rev173.pdf Local mirror] - [http://www.qimonda.com/download.jsp?ref=/qis_docs/Datasheets/Datasheets%20Mobile/HYx18L256160BxL-7.5_rev173.pdf Manufacturer site]<br />
<br />
Function: 32MB SDRAM (16bit bus)<br />
<br />
==Storage (?) memory==<br />
Code: ...<br />
<br />
Manufacturer: ST<br />
<br />
Model: NAND 256 / R3A2BZA6 / GK 0JF 8Y / CHN 88 711<br />
<br />
Function: 32MB FLASH NAND (block access) memory<br />
<br />
Notes: This memory does not support "Execute In Place" (XIP) If executable code is contained in this memory, it has to be copied in RAM first. Probably contains the Operating System, the documents and the invisible file system of the OS which needs to survive a [[Operating System#Booting and resetting|reboot]].<br />
<br />
==Boot/Kernel(?) memory==<br />
Code: ...<br />
<br />
Manufacturer: SST<br />
<br />
Model: 39WF400A 90-4C-B3KE<br />
<br />
Datasheet: [http://www.unsads.com/~squalyl/nspire/specs/S71220.pdf Local Mirror] - [http://www.sst.com/downloads/datasheet/S71220.pdf Manufacturer site]<br />
<br />
Function : 512KB NOR FLASH (16bit bus, memory mapped)<br />
<br />
Notes: Probably contains the boot code which loads the Operating System kept in the storage memory. As on previous calculator models with flash memory, contains code to receive a new Operating System. This memory would be read-only, only the storage memory would be written to. Another possible scenario is that the whole kernel (Nucleus RTOS) is stored here, and that OS updates do not include it (a two memories flashing seems unlikely), but in this case the kernel couldn't be updated.<br />
<br />
==Other==<br />
===Real-Time Clock===<br />
The clock is correctly emulated in the [[TI-84 Plus Emulation|TI-84 Plus mode]] of the TI-Nspire. Although the TI-Nspire OS doesn't display any clock as the TI-89 Titanium and the TI-84 Plus do, the TI-Nspire keeps track of time when the TI-84 Plus keypad is replaced by the TI-Nspire keypad, and then put back. We can be quite sure there is an [http://en.wikipedia.org/wiki/Real-time_clock RTC] inside. It is also interesting to mention the XML tags ''dfmt'' (date format) and ''tfmt'' (time format) set to 1 in the factory settings (''phoenix/syst/locales/en/settings/factory.zip/settings.xml'' of the [[OS_upgrade_files#Compressed_file_system|compressed file system]]) in the OS file of both the TI-Nspire and the TI-Nspire CAS. These two parameters don't appear in the system settings dialog of the TI-Nspire OS, as it is the case for the tags ''curr'' and ''unit'' of ''settings.xml''.<br />
<br />
===MMU===<br />
The TI-Nspire may have a [http://en.wikipedia.org/wiki/Memory_management_unit Memory management unit], but we can't be sure for the moment. If it had one, the [http://www.acceleratedtechnology.com.tw/embedded/nuc_kernels.html Nucleus MMU] extension for Nucleus RTOS would probably be used. But since the TI-NSpire is not open for third-party development, would the protections offered by an MMU really needed?<br />
<br />
==More information==<br />
*The [http://www.datamath.org/Graphing/NSpire.htm TI-Nspire] and [http://www.datamath.org/Graphing/NSpire_CAS.htm TI-Nspire CAS] in Datamath Calculator Musueum</div>Squalylhttps://hackspire.org//index.php?title=Server&diff=446Server2008-03-23T14:14:34Z<p>Squalyl: /* Software */</p>
<hr />
<div>This wiki is hosted on my dedicated server, a [http://www.dedibox.fr dedibox] from Illiad.<br />
==Location==<br />
Is's located in France, near Paris.<br />
<br />
==Hardware==<br />
It has a VIA C7 2 GHz CPU, 1024 MB DDR2 memory and a 160 GB SATA disk.<br />
The CPU has only 128kB of cache, which can explain why this wiki isn't fast...<br />
<br />
The datacenter can be seen [http://www.dedibox.fr/datacenter/visite_datacenter.html on this page]<br />
<br />
*[http://www.dedibox.fr/images/img-datacenter8.jpg Server racks]<br />
*[http://www.dedibox.fr/images/img-elec5.JPG Power supplies]<br />
*[http://www.dedibox.fr/images/img-elec1.JPG UPS]<br />
*[http://www.dedibox.fr/images/img-elec6.JPG Diesel Generators]<br />
*[http://www.dedibox.fr/images/img-clim1.JPG Ambient cooling]<br />
*[http://www.dedibox.fr/images/img-secu9.JPG Biometric access control]<br />
*[http://www.dedibox.fr/images/img-secu4.JPG Fire protection]<br />
<br />
==Software==<br />
I'm running Fedora 9<br />
<pre>Linux dedibox 2.6.24.3-34.fc8 #1 SMP Wed Mar 12 18:17:20 EDT 2008 i686 i686 i386 GNU/Linux</pre><br />
<br />
The services available includes http and subversion (by SSL). If you want to use them, please let me know [[User:squalyl|here]]<br />
<br />
* 20080323 Server upgraded to Fedora 9<br />
* 20070828 a daily backup has been setup.<br />
<br />
==Statistics==<br />
{|<br />
| Month || Uplaod || Download || Total<br />
|-<br />
| Octobre 2007||9 Go||68 Go||77 Go<br />
|-<br />
|Septembre 2007||10 Go||65 Go||75 Go<br />
|-<br />
|Aout 2007||21 Go||93 Go||114 Go<br />
|-<br />
|Juillet 2007||2 Go||875 Mo||2 Go<br />
|-<br />
|Juin 2007||718 Mo||7 Mo||725 Mo<br />
|-<br />
|Total||51 Go||247 Go||298 Go<br />
|}</div>Squalylhttps://hackspire.org//index.php?title=Information_Requests&diff=445Information Requests2008-03-13T14:46:29Z<p>Squalyl: </p>
<hr />
<div>1. Who decided that the processor was an ARM926EJ-S, and how sure is he?<br />
-Recursive Acronym<br />
<br />
Not really deciced, but this information was found in the asic documentation. [[User:Squalyl|squalyl]] 15:46, 13 March 2008 (CET)</div>Squalylhttps://hackspire.org//index.php?title=Server&diff=400Server2007-11-18T03:05:34Z<p>Squalyl: </p>
<hr />
<div>This wiki is hosted on my dedicated server, a [http://www.dedibox.fr dedibox] from Illiad.<br />
==Location==<br />
Is's located in France, near Paris.<br />
<br />
==Hardware==<br />
It has a VIA C7 2 GHz CPU, 1024 MB DDR2 memory and a 160 GB SATA disk.<br />
The CPU has only 128kB of cache, which can explain why this wiki isn't fast...<br />
<br />
The datacenter can be seen [http://www.dedibox.fr/datacenter/visite_datacenter.html on this page]<br />
<br />
*[http://www.dedibox.fr/images/img-datacenter8.jpg Server racks]<br />
*[http://www.dedibox.fr/images/img-elec5.JPG Power supplies]<br />
*[http://www.dedibox.fr/images/img-elec1.JPG UPS]<br />
*[http://www.dedibox.fr/images/img-elec6.JPG Diesel Generators]<br />
*[http://www.dedibox.fr/images/img-clim1.JPG Ambient cooling]<br />
*[http://www.dedibox.fr/images/img-secu9.JPG Biometric access control]<br />
*[http://www.dedibox.fr/images/img-secu4.JPG Fire protection]<br />
<br />
==Software==<br />
I'm running Fedora<br />
<br />
The services available includes http and subversion (by SSL). If you want to use them, please let me know [[User:squalyl|here]]<br />
<br />
20070828 a daily backup has been setup.<br />
<br />
==Statistics==<br />
{|<br />
| Month || Uplaod || Download || Total<br />
|-<br />
| Octobre 2007||9 Go||68 Go||77 Go<br />
|-<br />
|Septembre 2007||10 Go||65 Go||75 Go<br />
|-<br />
|Aout 2007||21 Go||93 Go||114 Go<br />
|-<br />
|Juillet 2007||2 Go||875 Mo||2 Go<br />
|-<br />
|Juin 2007||718 Mo||7 Mo||725 Mo<br />
|-<br />
|Total||51 Go||247 Go||298 Go<br />
|}</div>Squalylhttps://hackspire.org//index.php?title=User:Squalyl&diff=360User:Squalyl2007-11-02T03:00:31Z<p>Squalyl: </p>
<hr />
<div>last-year student, currently intern in a french big company.<br />
<br />
Currently living in Paris<br />
<br />
Work experience:<br />
<br />
* Since 10-2007: Employed at [http://www.nds.com NDS France] as software engineer.<br />
<br />
Studies:<br />
<br />
* 2006-2007: ENSIMAG (Grenoble's National Engineering School for Applied Mathematics and Computer Science) - Special Year<br />
* 2002-2006: ENSPG (Grenoble's National Engineering School for Physics)<br />
* 2000-2002: Exams preparation School at Montpellier's Lycée Joffre<br />
* 2000: Baccalaureat<br />
<br />
Internships:<br />
<br />
* 2007: Studies about OpenMoko Embedded Linux Platform<br />
* 2006: Schneider Electric, Grenoble, Shape memory Alloys<br />
* 2005: CEA Grenoble + GPM2, Powder Materials Simulation<br />
<br />
Personal experience:<br />
<br />
* A lot of small, never finished computer projects. Mainly to "test everything".<br />
<br />
Hobbies:<br />
<br />
* Programming<br />
* Project management<br />
* Business and Investment world<br />
* Korea<br />
* Other things that may change very fast, so no need to write them down :)<br />
<br />
Current Projects:<br />
<br />
* A small JVM. Not yet ready to be released.</div>Squalylhttps://hackspire.org//index.php?title=Announces::fr&diff=355Announces::fr2007-10-29T14:49:09Z<p>Squalyl: Announces::fr moved to Announces:fr</p>
<hr />
<div>#REDIRECT [[Announces:fr]]</div>Squalylhttps://hackspire.org//index.php?title=Announces:fr&diff=354Announces:fr2007-10-29T14:49:08Z<p>Squalyl: Announces::fr moved to Announces:fr</p>
<hr />
<div>(Editez cette page quand vous avez fait une grande découverte, etc... et quand quelqu'un a posté une nouvelle information en anglais)<br />
[[Announces|Page en anglais]]<br />
<br />
10 Oct 2007 05:07 GMT. - http://calcg.org/ - Brandon Wilson a publié un petit utilitaire qui corrige MirageOS sur l'émulateur TI84+ de la Nspire. Envoyez le petit programme sur la 84+ émulée, lancez le, et MirageOs fonctionnera.</div>Squalylhttps://hackspire.org//index.php?title=Main_Page:fr&diff=353Main Page:fr2007-10-29T14:47:35Z<p>Squalyl: /* Nouvelles du site */</p>
<hr />
<div>==Bienvenue==<br />
<br />
Bienvenue à vous sur le wiki « Hackspire ».<br />
Le but de ce site est de fédérer tous les efforts de recherche sur la nouvelle calculatrice « Nspire » de Texas Instruments.<br />
<br />
N'hésitez pas à apporter votre contribution, plus nous avons de détails et plus nous irons vite pour que cette calculette fasse ce qu'on veut ! La société TI est super pour les programmes intégrés de maths, de physique, etc. Mais les développeurs indépendants sont meilleurs pour tout le reste, car TI n'a pas de temps à consacrer à ça !<br />
<br />
Si vous voulez continuer l'aventure des TI89 et 92+/Voyage 200 avec la Nspire, participez ! Vous n'avez pas besoin de désosser votre belle calculette pour ça, n'importe quelle contribution est la bienvenue, par exemple :<br />
<br />
* la communication : Rechercher les communautés françaises et internationales qui travaillent déjà sur la Nspire est important, car nous pensons que 1+1 est toujours supérieur à deux, c'est-à-dire que les travailleurs isolés ont tout intérêt à se regrouper pour améliorer leur efficacité, tout en bénéficiant de l'effort commun<br />
* le bidouillage : Nous devons trouver comment exécuter des programmes perso. Pour le moment, rien n'est fait à ce niveau.<br />
* le développement du wiki : Je n'ai pas le temps de remplir toutes les pages du wiki en fonction de tout ce qui se passe sur les forums parlant de ce domaine. Si vous avez un peu de temps, écrivez des pages de wiki qui synthétisent les efforts des « gens du net »... Sans oublier les sources !<br />
* Traduction : la langue officielle de ce wiki est l'anglais, mais pour la facilité, des versions traduites des pages sont une bonne chose pour que tout le monde puisse en profiter au mieux.<br />
*Et si vous possédez une Nspire, et que vous attendez juste de pouvoir jouer à Mario et à d'autres super jeux, soyez patients et après avoir écrit votre nom dans la [[NSpire Owners List]] (liste des utilisateurs), posez des questions aux gens qui connaissent. Cela se passe sur [http://www.yaronet.com/sujets.php?f=2845 le forum yAronet des débutants de la Nspire].<br />
<br />
Ah, et si vous avez fait un test quelconque, que vous avez trouvé un moyen de faire planter votre calculette d'une manière qu'on connait pas encore, que vous avez découvert ce qui ressemble à une faille , ou autre, n'hésitez pas à poster votre trouvaille ici: [[Contributed_Tests:fr]]<br />
Merci !<br />
<br />
squalyl, fondateur du wiki Hackspire.<br />
<br />
== Nouvelles du site==<br />
28102007 Ajout d'une [[Announces:fr|page pour les annonces]]<br />
<br />
23082007 L'édition des pages est interdite pour les gens non connectés<br />
<br />
08082007 Le fichier robots.txt qui bloquait l'indexation a été supprimé pour autoriser les moteurs de recherches à indexer le site et autoriser tout le monde à nous trouver. Un fichier [http://www.sitemap.org sitemap] a été ajouté pour référencer Main_page, Hardware et Operating_System. Si de bonnes âmes veulent traduire ces pages, elles sont bienvenues, mais leur évolution rapide rendra les choses difficiles.<br />
<br />
== Independent Nspire Developers IRC chan ==<br />
<code>#inspired at irc.freequest.net:7000</code> (UTF-8 charset) - [http://tigcc.ticalc.org/webchatinspired.html Accès par le web]<br />
<br />
== Pages principales ==<br />
* [[Hardware]]: Liste des circuits de la Nspire<br />
*[[Links]]: Qui parle de la Nspire<br />
*[[Memory layout]]<br />
*[[Operating System]]<br />
*[[OS upgrade files]]<br />
*[[Texas Instruments]]<br />
*[[TI-84 Plus Emulation]]<br />
*[[USB]]</div>Squalylhttps://hackspire.org//index.php?title=Announces:fr&diff=351Announces:fr2007-10-29T14:46:49Z<p>Squalyl: Announces:fr moved to Announces::fr: typo?</p>
<hr />
<div>(Editez cette page quand vous avez fait une grande découverte, etc... et quand quelqu'un a posté une nouvelle information en anglais)<br />
[[Announces|Page en anglais]]<br />
<br />
10 Oct 2007 05:07 GMT. - http://calcg.org/ - Brandon Wilson a publié un petit utilitaire qui corrige MirageOS sur l'émulateur TI84+ de la Nspire. Envoyez le petit programme sur la 84+ émulée, lancez le, et MirageOs fonctionnera.</div>Squalylhttps://hackspire.org//index.php?title=Main_Page:fr&diff=350Main Page:fr2007-10-29T14:45:29Z<p>Squalyl: /* Nouvelles du site */</p>
<hr />
<div>==Bienvenue==<br />
<br />
Bienvenue à vous sur le wiki « Hackspire ».<br />
Le but de ce site est de fédérer tous les efforts de recherche sur la nouvelle calculatrice « Nspire » de Texas Instruments.<br />
<br />
N'hésitez pas à apporter votre contribution, plus nous avons de détails et plus nous irons vite pour que cette calculette fasse ce qu'on veut ! La société TI est super pour les programmes intégrés de maths, de physique, etc. Mais les développeurs indépendants sont meilleurs pour tout le reste, car TI n'a pas de temps à consacrer à ça !<br />
<br />
Si vous voulez continuer l'aventure des TI89 et 92+/Voyage 200 avec la Nspire, participez ! Vous n'avez pas besoin de désosser votre belle calculette pour ça, n'importe quelle contribution est la bienvenue, par exemple :<br />
<br />
* la communication : Rechercher les communautés françaises et internationales qui travaillent déjà sur la Nspire est important, car nous pensons que 1+1 est toujours supérieur à deux, c'est-à-dire que les travailleurs isolés ont tout intérêt à se regrouper pour améliorer leur efficacité, tout en bénéficiant de l'effort commun<br />
* le bidouillage : Nous devons trouver comment exécuter des programmes perso. Pour le moment, rien n'est fait à ce niveau.<br />
* le développement du wiki : Je n'ai pas le temps de remplir toutes les pages du wiki en fonction de tout ce qui se passe sur les forums parlant de ce domaine. Si vous avez un peu de temps, écrivez des pages de wiki qui synthétisent les efforts des « gens du net »... Sans oublier les sources !<br />
* Traduction : la langue officielle de ce wiki est l'anglais, mais pour la facilité, des versions traduites des pages sont une bonne chose pour que tout le monde puisse en profiter au mieux.<br />
*Et si vous possédez une Nspire, et que vous attendez juste de pouvoir jouer à Mario et à d'autres super jeux, soyez patients et après avoir écrit votre nom dans la [[NSpire Owners List]] (liste des utilisateurs), posez des questions aux gens qui connaissent. Cela se passe sur [http://www.yaronet.com/sujets.php?f=2845 le forum yAronet des débutants de la Nspire].<br />
<br />
Ah, et si vous avez fait un test quelconque, que vous avez trouvé un moyen de faire planter votre calculette d'une manière qu'on connait pas encore, que vous avez découvert ce qui ressemble à une faille , ou autre, n'hésitez pas à poster votre trouvaille ici: [[Contributed_Tests:fr]]<br />
Merci !<br />
<br />
squalyl, fondateur du wiki Hackspire.<br />
<br />
== Nouvelles du site==<br />
28102007 Ajout d'une [[Announces::fr|page pour les annonces]]<br />
<br />
23082007 L'édition des pages est interdite pour les gens non connectés<br />
<br />
08082007 Le fichier robots.txt qui bloquait l'indexation a été supprimé pour autoriser les moteurs de recherches à indexer le site et autoriser tout le monde à nous trouver. Un fichier [http://www.sitemap.org sitemap] a été ajouté pour référencer Main_page, Hardware et Operating_System. Si de bonnes âmes veulent traduire ces pages, elles sont bienvenues, mais leur évolution rapide rendra les choses difficiles.<br />
<br />
== Independent Nspire Developers IRC chan ==<br />
<code>#inspired at irc.freequest.net:7000</code> (UTF-8 charset) - [http://tigcc.ticalc.org/webchatinspired.html Accès par le web]<br />
<br />
== Pages principales ==<br />
* [[Hardware]]: Liste des circuits de la Nspire<br />
*[[Links]]: Qui parle de la Nspire<br />
*[[Memory layout]]<br />
*[[Operating System]]<br />
*[[OS upgrade files]]<br />
*[[Texas Instruments]]<br />
*[[TI-84 Plus Emulation]]<br />
*[[USB]]</div>Squalylhttps://hackspire.org//index.php?title=Announces&diff=349Announces2007-10-29T14:44:34Z<p>Squalyl: </p>
<hr />
<div>(Feel free to edit this page to report progresses, discoveries, etc... Also add an entry in other language's pages, maintainers will do traductions.)<br />
<br />
10 Oct 2007 05:07 GMT. - http://calcg.org/ - Brandon Wilson has released a small utility that fixes MirageOS on the Nspire's TI-84+ emulator. Send the small program to the emulated 84+, run it, and MirageOS will then work.</div>Squalylhttps://hackspire.org//index.php?title=Announces:fr&diff=348Announces:fr2007-10-29T14:44:15Z<p>Squalyl: </p>
<hr />
<div>(Editez cette page quand vous avez fait une grande découverte, etc... et quand quelqu'un a posté une nouvelle information en anglais)<br />
[[Announces|Page en anglais]]<br />
<br />
10 Oct 2007 05:07 GMT. - http://calcg.org/ - Brandon Wilson a publié un petit utilitaire qui corrige MirageOS sur l'émulateur TI84+ de la Nspire. Envoyez le petit programme sur la 84+ émulée, lancez le, et MirageOs fonctionnera.</div>Squalylhttps://hackspire.org//index.php?title=Announces:fr&diff=347Announces:fr2007-10-29T14:44:05Z<p>Squalyl: </p>
<hr />
<div>(Editez cette page quand vous avez fait une grande découverte, etc... et quand quelqu'un a posté une nouvelle information en anglais)<br />
[[Announces|Page en anglais]]<br />
<br />
10 Oct 2007 05:07 GMT. - http://calcg.org/<br />
<br />
Brandon Wilson a publié un petit utilitaire qui corrige MirageOS sur l'émulateur TI84+ de la Nspire. Envoyez le petit programme sur la 84+ émulée, lancez le, et MirageOs fonctionnera.</div>Squalylhttps://hackspire.org//index.php?title=Announces:fr&diff=346Announces:fr2007-10-29T14:43:49Z<p>Squalyl: </p>
<hr />
<div>[[Announces|Page en anglais]]<br />
(Editez cette page quand vous avez fait une grande découverte, etc... et quand quelqu'un a posté une nouvelle information en anglais)<br />
<br />
10 Oct 2007 05:07 GMT. - http://calcg.org/<br />
<br />
Brandon Wilson a publié un petit utilitaire qui corrige MirageOS sur l'émulateur TI84+ de la Nspire. Envoyez le petit programme sur la 84+ émulée, lancez le, et MirageOs fonctionnera.</div>Squalylhttps://hackspire.org//index.php?title=Announces:fr&diff=345Announces:fr2007-10-29T14:43:30Z<p>Squalyl: New page: (Editez cette page quand vous avez fait une grande découverte, etc... et quand quelqu'un a posté une nouvelle information en anglais) 10 Oct 2007 05:07 GMT. - http://calcg.org/ Brandon...</p>
<hr />
<div>(Editez cette page quand vous avez fait une grande découverte, etc... et quand quelqu'un a posté une nouvelle information en anglais)<br />
<br />
10 Oct 2007 05:07 GMT. - http://calcg.org/<br />
<br />
Brandon Wilson a publié un petit utilitaire qui corrige MirageOS sur l'émulateur TI84+ de la Nspire. Envoyez le petit programme sur la 84+ émulée, lancez le, et MirageOs fonctionnera.</div>Squalylhttps://hackspire.org//index.php?title=Main_Page&diff=344Main Page2007-10-29T14:40:51Z<p>Squalyl: added link to announce page</p>
<hr />
<div>==Welcome==<br />
<br />
Welcome to you on Hackspire, the TI-Nspire Hackings wiki.<br />
The goal of this wiki is to federate all research efforts about the Texas Instruments Nspire calculator.<br />
<br />
Feel free to add your contribution, the more details we get, the faster we can get this calculator work for us!<br />
TI Software is great for Mathematics, Physics... And independent developers are great for all the rest, because TI does not have time for this!<br />
<br />
If you want to continue the TI-89 and TI92+ success story with the Nspire, please contribute! You don't need to destroy your calc for this, any contribution is welcome! Examples includes:<br />
<br />
* Communication: Searching for communities working on Nspire is important, we feel that 1+1>2, ie lonely developers can benefit from common efforts<br />
* Hacking: We need to investigate the ability of Nspire to run independent software<br />
* Wiki development: I'm not good at writing wiki pages, organizing categories, etc... If you know how to run a wiki actively, you can contribute!<br />
* And if you are a Nspire owner, and are just waiting to play Mario and other cool games, be patient and after having registered yourself in the [[NSpire Owners List]], ask questions to develop your hacking skills :)<br />
<br />
Oh, and if you find something weird, a bug, a feature, a test you did and you don't know where to put it, feel free to edit this page: [[Contributed_Tests]]<br />
<br />
Thank you !<br />
<br />
squalyl, Hackspire wiki founder.<br />
<br />
== Site news ==<br />
20071029 Added [[Announces|an announce page]] to note important steps, discoveries, etc<br />
<br />
20070823 Editing disabled for anonymous users<br />
<br />
20070808 The robots.txt file that prevented indexation has been removed, to allow indexing and allow the world to come here. A sitemap has been added for Main_page, Operating_System and Hardware.<br />
<br />
== Independent Nspire Developers IRC chan ==<br />
<code>#inspired at irc.freequest.net:7000</code> (UTF-8 charset) - [http://tigcc.ticalc.org/webchatinspired.html Web Access]<br />
<br />
== Current pages ==<br />
*[[Document management]]<br />
*[[Hardware]]<br />
*[[Links]]<br />
*[[Memory layout]]<br />
*[[Miscellaneous Information]]<br />
*[[Operating System]]<br />
*[[OS upgrade files]]<br />
*[[Information Requests]]<br />
*[[TI-84 Plus Emulation]]<br />
*[[TI-Nspire CAS Software]]<br />
*[[USB Protocol]]<br />
<br />
== Translations ==<br />
* [[Main_Page:fr]]<br />
* [[Main_Page:de]]</div>Squalylhttps://hackspire.org//index.php?title=Announces&diff=343Announces2007-10-29T14:39:07Z<p>Squalyl: add a page for news</p>
<hr />
<div>(Feel free to edit this page to report progresses, discoveries, etc... Also add an entry in other language's pages, maintainers will do traductions.)<br />
<br />
10 Oct 2007 05:07 GMT. - http://calcg.org/<br />
<br />
Brandon Wilson has released a small utility that fixes MirageOS on the Nspire's TI-84+ emulator. Send the small program to the emulated 84+, run it, and MirageOS will then work.</div>Squalylhttps://hackspire.org//index.php?title=Talk:Main_Page:de&diff=318Talk:Main Page:de2007-10-19T09:22:02Z<p>Squalyl: New page: Many thanks for the traduction! I'll tell you When I update the fr/en versions of the pages! ~~~~</p>
<hr />
<div>Many thanks for the traduction! I'll tell you When I update the fr/en versions of the pages! [[User:Squalyl|squalyl]] 11:22, 19 October 2007 (CEST)</div>Squalylhttps://hackspire.org//index.php?title=Hardware&diff=317Hardware2007-10-19T09:17:55Z<p>Squalyl: /* RS232-Log */</p>
<hr />
<div>The chips are the same on the TI-Nspire and the TI-Nspire CAS.<br />
<br />
==PCB==<br />
Here are some hi-res PCB images, provided by bloo: [http://www.unsads.com/~squalyl/nspire/pics/nspire001.jpg], [http://www.unsads.com/~squalyl/nspire/pics/nspire002.jpg], [http://www.unsads.com/~squalyl/nspire/pics/nspire003.jpg]<br />
<br />
===Connector J04===<br />
As can be seen on the above image, there are empty pads for a connector labelled "J04". Maybe, there are signals to get a little bit further into the calculator.<br />
<br />
I've analyzed the signals on the pins and found out a little about the types of signals.<br />
<br />
"GND" means signal ground, it has the same potential as the whole ground plane on the PCBs. The minus pole of one battery is directly connected to it.<br />
"Vcc 3.3V" means the 3.3V power supply of the calculator. It seems to be present even if the calculator is off.<br />
"Floating" is a signal with an undefined voltage level, this state is very likely for inputs.<br />
"High" is a signal with almost 3.3V, but not a supply signal. These signals can be outputs switched to "high" or inputs with pull-up resistors.<br />
<br />
{| border=1<br />
| GND<br />
| 1<br />
| 2<br />
| GND<br />
|-<br />
| Vcc 3.3V<br />
| 3<br />
| 4<br />
| Square-wave: 112Hz, 99% duty-cycle, not present if the calc is off<br />
|-<br />
| High<br />
| 5<br />
| 6<br />
| Square-wave: 112Hz, 99% duty-cycle, not present if the calc is off<br />
|-<br />
| High<br />
| 7<br />
| 8<br />
| Square-wave: 112Hz, 99% duty-cycle, not present if the calc is off<br />
|-<br />
| Floating<br />
| 9<br />
| 10<br />
| Square-wave: 112Hz, 99% duty-cycle, not present if the calc is off<br />
|-<br />
| GND<br />
| 11<br />
| 12<br />
| Square-wave: 112Hz, 99% duty-cycle, not present if the calc is off<br />
|-<br />
| GND<br />
| 13<br />
| 14<br />
| GND<br />
|-<br />
| Floating<br />
| 15<br />
| 16<br />
| Floating<br />
|-<br />
| Floating<br />
| 17<br />
| 18<br />
| GND<br />
|-<br />
| Floating<br />
| 19<br />
| 20<br />
| Square-wave: 112Hz, 99% duty-cycle, not present if the calc is off<br />
|-<br />
| Floating<br />
| 21<br />
| 22<br />
| Square-wave: 112Hz, 99% duty-cycle, not present if the calc is off<br />
|-<br />
| Floating<br />
| 23<br />
| 24<br />
| RS232 Output (115'200,8,n,1)<br />
|-<br />
| Floating<br />
| 25<br />
| 26<br />
| Maybe RS232 Input<br />
|-<br />
| GND<br />
| 27<br />
| 28<br />
| GND<br />
|-<br />
| GND<br />
| 29<br />
| 30<br />
| GND<br />
|}<br />
<br />
'''TODO:''' Double-check the results and find out, what these signals (Floating, High, Square-wave) really are. Maybe, there are common interfaces as RS232, JTAG, I2C or whatever.<br />
<br />
===RS232-Log===<br />
While starting up, the calculator sends some logging information through the serial (RS232) interface.<br />
<br />
A log (including deletion and reprogramming the OS) can be found here: http://www.activevb.de/members/philippburch/hackspire/log.txt<br />
( Log mirrored [http://hackspire.unsads.com/files/log-philippburch-serial-boot.txt here])<br />
<br />
==Screen==<br />
240x320, 16 grayshades LCD screen.<br />
<br />
==CPU==<br />
Code: ...<br />
<br />
Manufacturer: Texas Instruments<br />
<br />
Model: TI-NSPIRE / L9A0702 / TI-NS2006A-0 / LSI LOGIC / ZEVIO / U 0714 / WYJ14052-1<br />
<br />
(Seems to be the same one in TI-nspire CAS, 0702 and 0714 might be datestamps)<br />
<br />
[http://www.unsads.com/~squalyl/nspire/specs/ZEVIO1020_PB.pdf LSI Zevio 1020 product brief]<br />
<br />
CPU seems to be an [http://www.arm.com/products/CPUs/ARM926EJ-S.html ARM926EJ-S] with ARM5 instruction set ( see [http://www.arm.com/pdfs/DDI0198D_926_TRM.pdf Reference manual] ). Commands of the link protocol report a frequency of 90 Mhz for both the TI-Nspire and the TI-Nspire CAS.<br />
<br />
==SDRAM==<br />
Code: ...<br />
<br />
Manufacturer: QIMONDA<br />
<br />
Model: HYB18L256160BF-7.5 WV22400<br />
<br />
Datasheet: [http://www.unsads.com/~squalyl/nspire/specs/HYx18L256160BxL-7.5_rev173.pdf Local mirror] - [http://www.qimonda.com/download.jsp?ref=/qis_docs/Datasheets/Datasheets%20Mobile/HYx18L256160BxL-7.5_rev173.pdf Manufacturer site]<br />
<br />
Function: 32MB SDRAM (16bit bus)<br />
<br />
==Storage (?) memory==<br />
Code: ...<br />
<br />
Manufacturer: ST<br />
<br />
Model: NAND 256 / R3A2BZA6 / GK 0JF 8Y / CHN 88 711<br />
<br />
Function: 32MB FLASH NAND (block access) memory<br />
<br />
Notes: This memory is not executable. Probably contains the Operating System, the documents and the invisible file system of the OS which needs to survive a [[Operating System#Booting and resetting|reboot]].<br />
<br />
==Boot/Kernel(?) memory==<br />
Code: ...<br />
<br />
Manufacturer: SST<br />
<br />
Model: 39WF400A 90-4C-B3KE<br />
<br />
Datasheet: [http://www.unsads.com/~squalyl/nspire/specs/S71220.pdf Local Mirror] - [http://www.sst.com/downloads/datasheet/S71220.pdf Manufacturer site]<br />
<br />
Function : 512KB NOR FLASH (16bit bus, memory mapped)<br />
<br />
Notes: Probably contains the boot code which loads the Operating System kept in the storage memory. As on previous calculator models with flash memory, contains code to receive a new Operating System. This memory would be read-only, only the storage memory would be written to. Another possible scenario is that the whole kernel (Nucleus RTOS) is stored here, and that OS updates do not include it (a two memories flashing seems unlikely), but in this case the kernel couldn't be updated.<br />
<br />
==Other==<br />
===Real-Time Clock===<br />
The clock is correctly emulated in the [[TI-84 Plus Emulation|TI-84 Plus mode]] of the TI-Nspire. Although the TI-Nspire OS doesn't display any clock as the TI-89 Titanium and the TI-84 Plus do, the TI-Nspire keeps track of time when the TI-84 Plus keypad is replaced by the TI-Nspire keypad, and then put back. We can be quite sure there is an [http://en.wikipedia.org/wiki/Real-time_clock RTC] inside. It is also interesting to mention the XML tags ''dfmt'' (date format) and ''tfmt'' (time format) set to 1 in the factory settings (''phoenix/syst/locales/en/settings/factory.zip/settings.xml'' of the [[OS_upgrade_files#Compressed_file_system|compressed file system]]) in the OS file of both the TI-Nspire and the TI-Nspire CAS. These two parameters don't appear in the system settings dialog of the TI-Nspire OS, as it is the case for the tags ''curr'' and ''unit'' of ''settings.xml''.<br />
<br />
===MMU===<br />
The TI-Nspire may have a [http://en.wikipedia.org/wiki/Memory_management_unit Memory management unit], but we can't be sure for the moment. If it had one, the [http://www.acceleratedtechnology.com.tw/embedded/nuc_kernels.html Nucleus MMU] extension for Nucleus RTOS would probably be used. But since the TI-NSpire is not open for third-party development, would the protections offered by an MMU really needed?<br />
<br />
==More information==<br />
*The [http://www.datamath.org/Graphing/NSpire.htm TI-Nspire] and [http://www.datamath.org/Graphing/NSpire_CAS.htm TI-Nspire CAS] in Datamath Calculator Musueum</div>Squalylhttps://hackspire.org//index.php?title=Talk:Operating_System&diff=264Talk:Operating System2007-08-28T10:05:36Z<p>Squalyl: /* 3rd party components */</p>
<hr />
<div>==Booting and resetting==<br />
Kevinh90: I can't get your key combo work. How did you find it? It's a bit acrobatic. --[[User:ExtendeD|ExtendeD]] 23:14, 8 August 2007 (CEST)<br />
:Mmm, the tech support told you according to #tcpa logs. Still, I can't get it work. Do I have to press the keys and the reset button at the same time? Or ON only at the end while keeping the others? --[[User:ExtendeD|ExtendeD]] 23:34, 8 August 2007 (CEST)<br />
::(Clarified with Kevinh90 off-site --[[User:ExtendeD|ExtendeD]] 22:19, 14 August 2007 (CEST))<br />
<br />
==OS update==<br />
Silly question, but what happen if during an OS update one (or all) battery is removed ? I don't think even what can say TI that downgrade should be impossible. On TI-68k is "theorically" impossible too --[[User:Godzil|Godzil]] 10:10, 6 August 2007 (CEST)<br />
:Good point. According to bloo (I haven't tried yet to flash it myself), the whole OS is received before it is written to flash memory, so this greatly limits the risk there was with TI-68k. But still, the write may take a few seconds. If the update process was well built, the new version could be written safely next to the current one, then the old version would be deleted. The boot should be able to start the first non corrupted copy. I will probably try your idea to see, it may be dangerous but we need to take the risk (and the warranty is there anyway). [[User:ExtendeD|ExtendeD]] 13:30, 6 August 2007 (CEST)<br />
::I tried, [[Operating System#Upgrading_the_OS]] contains the description of the behavior (there is a recovery mode, similar to TI-68k boot menu). But this doesn't tell us if it could be used to bypass the downgrade protection as long as there is only one version of the OS available. --[[User:ExtendeD|ExtendeD]] 23:46, 6 August 2007 (CEST)<br />
<br />
<br />
hmm, theoretically impossible. If it gets a new OS, then it is pulled, couldn't we just put an older OS on there when it asked for an OS reinstall?<br />
:As I mentioned above we can't test without at least two OS versions. The version of the last OS installed could also be stored in certificate memory (or the TI-Nspire equivalent) to prevent this. --[[User:ExtendeD|ExtendeD]] 09:46, 7 August 2007 (CEST)<br />
<br />
==3rd party components==<br />
As seen on datalight website, flashFX doesn't seem useful on the nspire. Flash managing? I don't understand what that means. The Flash Filesystem may be the one thing used, it provides the wear leveling and file management. JFFS2 should have been great, but it's silly to expect such things from TI. --[[User:Squalyl|squalyl]] 11:40, 7 August 2007 (CEST)<br />
:Unfortunately you are wrong this time ;) [http://www.datalight.com/companyinfo/success.php?successid=11 Here is] what I have just come across: ''After extensive research, Texas Instruments found the combination of Datalight FlashFX® Pro intelligent flash manager and Reliance™ fault-tolerant embedded file system, to be the right choice for their TI-Nspire family.'' --[[User:ExtendeD|ExtendeD]] 14:27, 7 August 2007 (CEST)<br />
::And jffs2 is mainly a Linux FS--[[User:212.157.49.189|212.157.49.189]] 14:55, 7 August 2007 (CEST) (<-- this is me who forgot to login --[[User:Godzil|Godzil]] 15:00, 7 August 2007 (CEST))<br />
:::Okay then the FlashFX system is the MTD layer and the Flash Filesystem is the "JFFS" layer :) (and no matter that JFFS is for linux or not, an adaptation layer on top of VFS is possible, I think, but this is off-topic) [[User:Squalyl|squalyl]] 12:05, 28 August 2007 (CEST)</div>Squalyl