Hardware and Ndless: Difference between pages

From Hackspire
(Difference between pages)
Jump to navigation Jump to search
No edit summary
 
No edit summary
 
Line 1: Line 1:
==Hardware revisions==
Ndless combines a resident program and utilities to open the TI-Nspire to third-party C and assembly development. Ndless is distributed under the Open Source [https://en.wikipedia.org/wiki/Mozilla_Public_License Mozilla Public License].
===TI-Nspire (Clickpad) / Phoenix ===
 
<div style="overflow-x: auto">
The installation of Ndless on a TI-Nspire is required to be able to run [[Assembly_programs|assembly programs]].
{| class="wikitable" style="font-size: 0.8em"
 
! Variant / HW Revision !! Factory !! Datestamps !! MB code (PCB ID) !! board # !! LCD board code !! board # !! KB board code !! board # !! Other board !! board # !! Source (URL) !! Comment. (Note: many datestamps come from forums and other compilations) !!
Find help for any Ndless related question or issues on the [https://github.com/ndless-nspire/Ndless/issues issue tracker].
| PVT CAS+ ||  ||  ||  ||  || PH1_PVT_LCDB || 2430 ||  ||  ||  ||  || http://i.imgur.com/4hVUkaa.jpg ||  ||
 
| <none> / pre-A || S || 0407-0707 || P2/P3 ASIC MB_MP || 6440 || P1R2/P3_LB_MP || 2440 ||  ||  ||  ||  || http://i.imgur.com/WGPf0LF.jpg || Some hav
'''[http://ndless.me/ Latest stable release]
utf-8
 
<center>Proud owner of a TI-83+, TI-84+SE, and TI-Nspire clickpad edition.
==Developing with Ndless==
</center>utf-8
Tutorials and general information are available in the [[Main_Page#Development_resources|Development resources]] section.
e an 'A' suffix to the left serial part: https://i.imgur.com/77oy8JT.jpg , https://i.imgur.com/K0aqUuW.jpg ; Also reported here: https://tiplanet.org/forum/viewtopic.php?f=17&t=4995 || Ph3-EVT1_FPC_1413
 
| A || S || 0707-0907? ||  ||  ||  ||  ||  ||  ||  ||  ||  || http://www.publicsurplus.com/sms/auction/view?auc=1171896 for the associated viewscreen. (0607A would be seen for CAS devices) ||
===Version upgrade===
| A (other?) || K || 0509 ||  ||  ||  ||  ||  ||  ||  ||  ||  || http://i.ebayimg.com/images/g/j6kAAOSwgn5XEZ-a/s-l1600.jpg ||
The executable format, the conventions and the header files are currently being defined and prone to change. Some changes are forced by This section describes the upgrade steps between the different releases of Ndless.
| B || S || 1207? ||  ||  ||  ||  ||  ||  ||  ||  ||  || https://groups.google.com/forum/#!msg/tinspire/wwFr1zlFf0s/G2ePaXVXwOkJ ||
 
| C || P || 0108-0308? ||  ||  ||  ||  ||  ||  ||  ||  ||  ||  ||
====To v4.4 r2005====
| D || P || 0508 ||  ||  ||  ||  ||  ||  ||  ||  ||  ||  ||
*Should work directly for most programs if they don't contain any OS-version specific addresses (SYSCALL_CUSTOM(), hooks, etc.)
| E || P || 0508-0708 ||  ||  ||  ||  ||  ||  ||  ||  ||  ||  ||  
 
| F || P || 0708-0908? ||  ||  ||  ||  ||  ||  ||  ||  ||  ||  ||  
====To v4.2 r2004====
| G || P || 0409-0809 ||  ||  ||  ||  ||  ||  ||  ||  ||  ||  ||
*HW rev. W introduced a new 240x320px screen which breaks most Ndless programs.
| H || P || 0609 ||  ||  ||  ||  ||  ||  ||  ||  ||  ||  ||
*A new API to make use of the different screen is now available, SCREEN_BASE_ADDRESS is only available in OLD_SCREEN_API (Add the define to the compile options) mode. See [[Libndls#LCD_API|LCD API]] for information about the new API.
| I || P || 0809?-1209 ||  ||  || N1/N3_LB_ ||  ||  ||  ||  ||  || http://i.imgur.com/RidWq1Z.jpg ||  ||
*Nspire I/O and nSDL support the new screen, and programs that use them should work after recompilation.
</div>
 
===TI-Nspire (Touchpad) / Phoenix (Nspire2.0)===
====From v3.9 to v4.2====
<div style="overflow-x: auto">
*Should work directly for most programs if they don't contain any OS-version specific addresses (SYSCALL_CUSTOM(), hooks, etc.)
{| class="wikitable" style="font-size: 0.8em"
 
! Variant / HW Revision !! Factory !! Datestamps !! MB code (PCB ID) !! board # !! LCD board code !! board # !! KB board code !! board # !! Other board !! board # !! Source (URL) !! Comment. (Note: many datestamps come from forums and other compilations)
====From v3.6 to v3.9====
| PROTO CAS ||  ||  || PCB TG2995C MB || 4400 ||  ||  ||  ||  ||  ||  || https://tiplanet.org/forum/viewtopic.php?t=14207 ||
*Migration to newlib and libsyscalls. os.h and common.h shouldn't be used anymore. Use the standard C API directly.
|  DVT CAS ||  ||  || N1 MB NKB || 4420 || N1/N3 LB PCR2 FPC || 2410 ||  ||  ||  ||  || https://tiplanet.org/forum/viewtopic.php?t=10964 ||
*Introduction of the new [[Zehn]] format. Makefiles need to be updated to use [[Zehn#genzehn|genzehn]] and [[Zehn#make-prg|make-prg]].
| A || P || 0110-0310 || PCB TG2995D MB || 4430 || TG2995 C LB || 2410 ||  ||  ||  ||  || http://datamath.org/Graphing/JPEG_NSpire_CAS_TP.htm || What is https://i.imgur.com/04R7lYv.jpg ?
 
| B || P || 0310-0710 || PCB TG2995D MB || 4430 || TG2995 C LB || 2410 ||  ||  ||  ||  || http://datamath.org/Graphing/JPEG_NSpire_TP_Y.htm || Found on a school edition (yellow)
====From v2.0 to v3.1====
| C || P || 0710-1010 ||  ||  ||  ||  ||  ||  ||  ||  ||  ||
*Programs must be rebuilt to work on TI-Nspire CX because of several hardware changes. Programs with low-level accesses to hardware must also be slightly adapted: some hardware controllers have changed and their registers are laid out differently. The [[libndls#Hardware|IO() macro]] can be used to select the address corresponding to the TI-Nspire model.
| D || P || 0611-0711 ||  ||  ||  ||  ||  ||  ||  ||  ||  || https://i.imgur.com/znF0jP3.jpg shows a datestamp
**The LCD control register of the [[Memory-mapped_I/O_ports#C0000000_-_LCD_controller|LCD controller]] has moved from C000001C to C0000018. Use IO_LCD_CONTROL instead.
| E || P || 0412 ||  ||  ||  ||  ||  ||  ||  ||  ||  || https://i.imgur.com/73G6iBH.jpg shows a datestamp
**The [[Memory-mapped_I/O_ports#900D0000_-_Second_timer|timer module]] has changed and has completely different registers
</div>
**Programs are run in color mode. Add ''clrscr(); lcd_ingray();'' at the beginning of a program ported from classic TI-Nspire to CX (the ''clrscr()'' avoids displaying color data that remains in screen buffer)
===TI-Nspire CX / Firebird===
**Keep the TI-Nspire classic user base in mind: make your programs compatible with both color and grayscale mode with the help of ''has_color'' . The color screen buffer is in [[Memory-mapped_I/O_ports#A4000000_-_Internal_SRAM|R5G6B5 mode]].
<div style="overflow-x: auto">
*Programs which use ''show_msgbox()'' must be rebuilt with the new SDK, even for TI-NSpire classic
{| class="wikitable" style="font-size: 0.8em"
*SYSCALL_CUSTOM(): the first parameter should now only contain [[Ndless_features_and_limitations#Syscalls|OS v3.1 addresses]].
! Variant / HW Revision !! Factory !! Datestamps !! MB code (PCB ID) !! board # !! LCD board code !! board # !! KB board code !! board # !! Other board !! board # !! Source (URL) !! Comment. (Note: many datestamps come from forums and other compilations)
 
| Proto ("Nspire Color") ||  || 0810 || Firebird Color MB || 6412 ||  ||  || none ||  || Firebird Color BTB EVT || 2410 || https://tiplanet.org/forum/gallery/image_page.php?image_id=1691 ||
====From v1.7 to v2.0====
| <none> / pre-A ||  ||  || Firebird Color MB || 6421 ||  ||  ||  ||  ||  ||  || https://i.imgur.com/Y4yds6M.png ||
* Touchpad key map support: rebuild your programs with the SDK of v2.0, which includes an updated <tt>isKeyPressed()</tt> function. Make sure that the programs do not depend on keys specific to the Clickpad.
| A || P || 0211?-0411 || Firebird Color MB || 6422 ||  ||  || Firebird (Noncas) Color KB EVT || 4421 || Firebird Color BTB EVT1.2 || 2412 || https://tiplanet.org/forum/gallery/image_page.php?image_id=1229 ||
 
| B || P || 0411-0511 || Firebird Color MB || 6422 ||  ||  || Firebird (Noncas) Color KB EVT || 4421 || Firebird Color BTB EVT1.2 || 2412 || https://tiplanet.org/forum/gallery/image_page.php?image_id=2634 ||
====From v1.1.x to v1.7====
| C || P || 0511-0811? || Firebird Color MB || 6422 ||  ||  || Firebird (Noncas) Color KB EVT || 4421 || Firebird Color BTB EVT1.2 || 2412 || https://tiplanet.org/forum/gallery/image_page.php?image_id=1227 ||
 
| D || P || 0911-0512 || Firebird Color MB || 6422 ||  ||  || Firebird (Noncas) Color KB EVT || 4421 || Firebird Color BTB EVT1.2 || 2412 || https://tiplanet.org/forum/gallery/image_page.php?image_id=2397 || https://i.imgur.com/OtnD7S3.jpg shows a datestamp. https://i.imgur.com/XEqIPUf.jpg is a CX-C CAS.
C and assembly programs:
| E || P || 0512-0612? ||  ||  ||  ||  ||  ||  ||  ||  ||  || https://i.imgur.com/O3hLcQT.jpg shows a datestamp
* The syscall convention has changed, programs built with Ndless < v1.7 need to be rebuilt without any change to the code. This format should be compatible with the new OS versions once supported by Ndless, as long as backward compatibility can be kept.
| F || P || 0712-0812? || Firebird Color MB || 6430 ||  ||  || Firebird (Noncas) Color KB EVT || 4421 || Firebird Color BTB EVT1.2 || 2412 || https://tiplanet.org/forum/gallery/image_page.php?image_id=2398 ||
* Custom syscalls should be defined using SYSCALL_CUSTOM (see above)
| G || P || 1012? ||  ||  ||  ||  ||  ||  ||  ||  ||  || https://i.imgur.com/SNfyWQP.jpg shows a datestamp
* The "PRG\0" signature before main() isn't required anymore, you can remove it
| H || P || 1112-0213 ||  ||  ||  ||  ||  ||  ||  ||  ||  || https://i.imgur.com/yOmZY29.jpg shows a datestamp
* MakeTNS doesn't exist anymore. You must objcopy directly to the .tns file in your Makefile.
| I || P || 0213 ||  ||  ||  ||  ||  ||  ||  ||  ||  || Mention of the datestamp: https://www.omnimaga.org/general-calculator-help/hardware-needed-to-downgrade-3-2-4/msg360687/#msg360687
* The program format is not specific to an hardware model anymore. You can now build your programs only once without defining NSPIRE_HARDWARE.
| J ("CR") || P || 0313-0513? || NSC CR MB || 4440 ||  ||  || Firebird (non)cas Color KB DVT || 4424 || Firebird Color BTB EVT1.2 || 2412 || https://tiplanet.org/forum/gallery/image_page.php?album_id=184&image_id=2878 || incompatible with OS versions < 3.2.3 / Nlaunch + J04 connector removed
* OS v1.1 is not supported anymore. Check that your programs still work on OS v1.7.
| K || P || 0613-0713? ||  ||  ||  ||  ||  ||  ||  ||  ||  ||
* The program path is passed to the main function by following the C calling convention instead of using register r9
| L || P || 1113?-1213 ||  ||  ||  ||  ||  ||  ||  ||  ||  || Datestamp from here: https://tiplanet.org/forum/viewtopic.php?p=170487#p170487
 
| M || P || 1213-0114? ||  ||  ||  ||  ||  ||  ||  ||  ||  || Datestamp from here: https://tiplanet.org/forum/viewtopic.php?p=166933#p166933
Assembly programs:
| N || P || 0314 || NSC SM MB || 4412 ||  ||  || Firebird (non)cas Color KB DVT || 4424 || Firebird Color BTB EVT1.2 || 2412 || https://tiplanet.org/forum/gallery/image_page.php?image_id=3697 ||
* The way to call syscalls has changed: replace 'oscall <os_function>' with 'syscall(<os_function>)'
| O ("CR II") || P || 0414-0614 || NSC SM MB || 4412 ||  ||  || NSC CELL (Non)CAS KB || 4410 || Firebird Color BTB || 2440 || https://tiplanet.org/forum/gallery/image_page.php?image_id=5469 || Samsung rechargeable battery. (Ref calc for France: N3/TBL/1E2/K)
 
| P || P || 0614 || NSC SM MB || 4412 ||  ||  || NSC CELL (Non)CAS KB || 4410 || Firebird Color BTB || 2440 ||  ||
====From v1.0 to v1.1====
| Q ? ||  ||  ||  ||  ||  ||  ||  ||  ||  ||  ||  ||
 
| R || P || 0814? ||  ||  ||  ||  ||  ||  ||  ||  ||  || Datestamp from http://www.cncalc.org/thread-11903-1-1.html
C and assembly programs:
| S || P || 0914-1014 ||  ||  ||  ||  ||  ||  ||  ||  ||  || https://i.imgur.com/zsYyaNC.jpg shows a datestamp
* Install the toolchain as described above. Your project doesn't need to follow the Ndless file tree anymore.
| T ("CR III") || P || 1014-1214? || CX CRIII MB || 4412 ||  ||  || NSC CR OS (Non)CAS || 4413 || Firebird Color BTB || 2440 || https://tiplanet.org/forum/gallery/image_page.php?image_id=5472 || incompatible with OS versions < 3.9.1
* Adapt your Makefile based on src/arm/Makefile or src/arm/demo/Makefile
| U || P || 0115? ||  ||  ||  ||  ||  ||  ||  ||  ||  ||
* You may upgrade to the latest version of YAGARTO. Don't forget to delete any remaining *.o file before rebuilding a project.
| V || P || 0315-0815? || CX CRIII MB || 4412 ||  ||  || NSC CR OS (Non)CAS || 4413 || Firebird Color BTB || 2440 ||  ||
 
| W ("CR IV") || P || 1115-0116 || CX CR IV MB || 4440 ||  ||  || <none> ||  || <none> ||  || https://tiplanet.org/forum/gallery/image_page.php?album_id=184&image_id=6823 || Now uses a unified motherboard, instead of 3 parts. New LCD + J04 connector back + incompatible versions < 4.0.1
Pure-assembly programs:
</div>
* Make sure that the file extensions is in uppercase (.S)
===TI-Nspire CM / Rabbit===
* Add the "main" symbol as described in the previous section
<div style="overflow-x: auto">
* You do not need to define the symbol "_start" anymore
{| class="wikitable" style="font-size: 0.8em"
! Variant / HW Revision !! Factory !! Datestamps !! MB code (PCB ID) !! board # !! LCD board code !! board # !! KB board code !! board # !! Other board !! board # !! Source (URL) !! Comment. (Note: many datestamps come from forums and other compilations)
| Chinese Language EVT1 ||  || <none> || RABBIT MB EVT || 4410 ||  ||  || RABBIT KB (NON ) CAS EVT || 2416 ||  ||  || https://tiplanet.org/forum/gallery/image_page.php?image_id=2658 ||
| CM-C EVT1 ||  || (103) ||  ||  ||  ||  || RABBIT KB (NON) CAS EVT || 2419 ||  ||  || https://tiplanet.org/forum/gallery/image_page.php?album_id=193&image_id=2761 ||
| CM-C CAS DVT1 ||  || (240) || RABBIT MB EVT || 4415 ||  ||  || RABBIT KB (NON) CAS EVT || 4411 ||  ||  || https://tiplanet.org/forum/gallery/image_page.php?album_id=1&image_id=6294 ||
| CM-C || P || 0911 || RABBIT MB DVT || 6420 ||  ||  || RABBIT KB (NON) CAS EVT || 4420 ||  ||  || https://tiplanet.org/forum/gallery/image_page.php?album_id=119&image_id=1359 ||
| CM-C (CAS) No-rev -> A || P || 0412-0512 || RABBIT MB DVT || 6420 ||  ||  || RABBIT KB (NON) CAS EVT || 4411 ||  ||  || https://tiplanet.org/forum/gallery/image_page.php?album_id=180&image_id=2596 || https://i.imgur.com/J3cJBcI.jpg shows a 0512 datestamp
</div>
==PCB==
High resolution photos can be found in the above table.
===Connector J04===
As can be seen in the PCB photos, there are empty pads for a connector labelled "J04" (not on some CR models). Most likely this is for debugging using an interface such as JTAG.
Analyzation of the signals on the pins provided the following information regarding signal types.
"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.
"Vcc 3.3V" means the 3.3V power supply of the calculator. It seems to be present even if the calculator is off.
"Floating" is a signal with an undefined voltage level, this state is very likely for inputs.
"High" is a signal with almost 3.3V, but not a supply signal. These signals are probably inputs with pull-up resistors (they can be pulled-down with a large value resistor).
{| class="wikitable"
| GND
| GND
| Vcc 3.3V
| Square-wave: 112Hz, 99% duty-cycle, not present if the calc is off
| High
| Square-wave: 112Hz, 99% duty-cycle, not present if the calc is off
| High
| Square-wave: 112Hz, 99% duty-cycle, not present if the calc is off
| Floating
| 10
| Square-wave: 112Hz, 99% duty-cycle, not present if the calc is off
| GND
| 11
| 12
| Square-wave: 112Hz, 99% duty-cycle, not present if the calc is off
| GND
| 13
| 14
| GND
| Floating
| 15
| 16
| Floating
| Floating
| 17
| 18
| GND
| Floating
| 19
| 20
| Square-wave: 112Hz, 99% duty-cycle, not present if the calc is off
| Floating
| 21
| 22
| Square-wave: 112Hz, 99% duty-cycle, not present if the calc is off
| Floating
| 23
| 24
| RS232 Output (115'200,8,n,1)
| Floating
| 25
| 26
| RS232 Input
| GND
| 27
| 28
| GND
| GND
| 29
| 30
| GND
'''TODO:''' Double-check the results and find out, what these signals (Floating, High, Square-wave) really are. Maybe, there are common interfaces as JTAG, I2C or whatever.
===Connector J01 - Dock connector===
Pins currently known, probably there are more GPIOs accessible. Somewhere there's SPI, too.
{| class="wikitable"
| Vcc || pin 2
| Rx || pin 3
| Tx || pin 4
| GND || pin 5 (long)
| GPIO4 / USB Data+ with Navigator Cradle || pin 6
| USB Data- with Navigator Cradle || pin 7
| Vin || pin 8 (medium)
| GPIO0 || pin 17
| GPIO22 || pin 18
| Vin || pin 19 (medium)
| GND || pin 22 (long)
===UART===
A serial adapter can be connected to the Tx/Rx/GND pins of the dock connector (pin 1 is the one at the left-hand side, TI-Nspire upside down, connector at the bottom). '''Warning: only use TTL voltage levels, never RS232 levels'''.
The configuration of the terminal on the computer side should be:
{| class="wikitable"
| Baud rate || 115200
| Data || 8 bit
| Parity || none
| Stop || 1 bit
| Flow control || none
While starting up, the calculator sends some logging information through the interface. A log (including deletion and reprogramming the OS) can be found [http://hackspire.unsads.com/files/log-philippburch-serial-boot.txt here]).
Different types of files can be send with the X-Modem protocol, depending on the boot startup options chosen with the [[Operating_System#Startup_key_combinaisons|key combos]]. Windows HyperTerminal or TeraTerm strangely couldn't be used for the X-Modem transfer. [http://www.ohse.de/uwe/software/lrzsz.html lrzsz] is a better alternative, which can be built on Windows with Cygwin.
stty -F /dev/ttyS0 115200 -evenp -cstopb
cat < /dev/ttyS0
# Abort with Ctrl+C when the X-Modem transfer begins
# The `cat` is used to show the startup logs during reboot
./lsz -X boot2.img <> /dev/ttyS0 >&0; cat /dev/ttyS0
===Power supply===
You can use the TI-Nspire with an external power supply (5V to 6V) instead of the batteries. Use pad P1, pin 8 or pin 19 for V+ and pad P2, pin 5 or pin 22 for GND. It will boot, but print "Critical voltage detected. Forcing shutdown." on RS232 and shutdown. It seems that the battery voltage of measured using only 2 batteries. A workaround is to use two resistors (100K work) to set the middle point at half voltage.
==Screen==
{| class="wikitable"
! Device !! Screen !! Controller !! Notes
| TI-Nspire Clickpad/Touchpad || 320x240 - 4 bit greyscale LCD || [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0161e/index.html ARM PrimeCell PL110] ||
| TI-Nspire CX (before rev W)|| 320x240 - 16 bit color LCD || [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0293c/index.html ARM PrimeCell PL111] ||
| TI-Nspire CX (from rev W)|| 240x320 - 16 bit color LCD || Same as previous? || LCD is rotated
==CPU==
CPU is an [http://www.arm.com/products/CPUs/ARM926EJ-S.html ARM926EJ-S] with ARM9 instruction set ([http://infocenter.arm.com/help/topic/com.arm.doc.ddi0198e/index.html Reference manual]), 16KB of instruction cache, 8KB of data cache.
{| class="wikitable"
! Device !! Chip !! Technology !! Notes
| TI-Nspire Clickpad || Texas Instruments TI-NS2006A || Zevio LSI || [http://microblog.routed.net/2008/08/15/ic-friday-tis-nspire/ Die photos]
| TI-Nspire Touchpad || Texas Instruments TI-NS2007C Magnum || Zevio LSI ||
| TI-Nspire COLOR || Texas Instruments ET-NS2010A || Toshiba ASIC ||
| TI-Nspire CX || Texas Instruments ET-NS2010B || Toshiba ASIC ||
| TI-Nspire CM || Texas Instruments ET-LC2010B || Toshiba ASIC || Some research should be done to find differences with CX SOC
==SDRAM==
{| class="wikitable"
! Device !! Chip !! Size !! Notes
| TI-Nspire Clickpad || QIMONDA HYB18L256160 || 32MiB (16Mb x 16) ||
| TI-Nspire Touchpad || MT48H16M16 || 32MiB (16Mb x 16) ||
| TI-Nspire CX (before rev J) || Samsung K511F12ACA-B075 || 64MiB|| K511F12ACA is a multipart package, shared with NAND Flash-ROM
| TI-Nspire CX (from rev J) || ESMT FM60D1G12A 6BE || 64MiB || FM60D1G12A is a multipart package, shared with NAND Flash-ROM
| TI-Nspire CM || Samsung K511F5ACC-B075 || 32MiB || K511F5ACC is a multipart package, shared with NAND Flash-ROM
Some more research has to be done here, regarding what the SOC exactly contains + external in all revisions.
==NAND memory==
Used for Boot2, Diag, OS and user filesystem.
{| class="wikitable"
! Device !! Chip !! Size !! Notes
| TI-Nspire Clickpad || ST NAND256R3A || 32MiB ||
| TI-Nspire Touchpad || Samsung SEC K9F5608 || 32MiB ||
| TI-Nspire CX (before rev J) || Samsung K511F12ACA-B075 || 128MiB || K511F12ACA is a multipart package, shared with SDRAM
| TI-Nspire CX (from rev J) || ESMT FM60D1G12A 6BE || 128MiB || FM60D1G12A is a multipart package, shared with SDRAM
| TI-Nspire CM || Samsung K511F5ACC-B075 || 128MiB || K511F5ACC is a multipart package, shared with SDRAM
Notes: The memory does not support "Execute In Place" (XIP). If executable code is contained in this memory, it has to be copied in RAM first.
==NOR ROM==
Used for boot1 and certificate memory.
{| class="wikitable"
! Device !! Chip !! Size !! Notes
| TI-Nspire Clickpad || SST 39WF400A || 512KB ||
| TI-Nspire Touchpad || Internal || ??KB ||
| TI-Nspire COLOR || Macronix MX29SL402 || 512KB || Prototype
| TI-Nspire CX || Internal || ??KB ||
| TI-Nspire CX rev W || Macronix MX29SL402 || 512KB || Probably added so that they could include a new boot1 that can handle the new board design / LCD
| TI-Nspire CM || Internal || ??KB ||
==Other==
===Real-Time Clock===
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''.
===MMU===
The [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0198e/Babfdfbh.html ARM926EJ-S] integrated [http://en.wikipedia.org/wiki/Memory_management_unit Memory Management Unit] is enabled, but seems to only be used to map NOR, RAM and peripherals in memory space, and control the cache settings : [[Virtual Memory]].
==More information==
*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

Latest revision as of 15:39, 21 June 2019

Ndless combines a resident program and utilities to open the TI-Nspire to third-party C and assembly development. Ndless is distributed under the Open Source Mozilla Public License.

The installation of Ndless on a TI-Nspire is required to be able to run assembly programs.

Find help for any Ndless related question or issues on the issue tracker.

Latest stable release

Developing with Ndless

Tutorials and general information are available in the Development resources section.

Version upgrade

The executable format, the conventions and the header files are currently being defined and prone to change. Some changes are forced by This section describes the upgrade steps between the different releases of Ndless.

To v4.4 r2005

  • Should work directly for most programs if they don't contain any OS-version specific addresses (SYSCALL_CUSTOM(), hooks, etc.)

To v4.2 r2004

  • HW rev. W introduced a new 240x320px screen which breaks most Ndless programs.
  • A new API to make use of the different screen is now available, SCREEN_BASE_ADDRESS is only available in OLD_SCREEN_API (Add the define to the compile options) mode. See LCD API for information about the new API.
  • Nspire I/O and nSDL support the new screen, and programs that use them should work after recompilation.

From v3.9 to v4.2

  • Should work directly for most programs if they don't contain any OS-version specific addresses (SYSCALL_CUSTOM(), hooks, etc.)

From v3.6 to v3.9

  • Migration to newlib and libsyscalls. os.h and common.h shouldn't be used anymore. Use the standard C API directly.
  • Introduction of the new Zehn format. Makefiles need to be updated to use genzehn and make-prg.

From v2.0 to v3.1

  • Programs must be rebuilt to work on TI-Nspire CX because of several hardware changes. Programs with low-level accesses to hardware must also be slightly adapted: some hardware controllers have changed and their registers are laid out differently. The IO() macro can be used to select the address corresponding to the TI-Nspire model.
    • The LCD control register of the LCD controller has moved from C000001C to C0000018. Use IO_LCD_CONTROL instead.
    • The timer module has changed and has completely different registers
    • Programs are run in color mode. Add clrscr(); lcd_ingray(); at the beginning of a program ported from classic TI-Nspire to CX (the clrscr() avoids displaying color data that remains in screen buffer)
    • Keep the TI-Nspire classic user base in mind: make your programs compatible with both color and grayscale mode with the help of has_color . The color screen buffer is in R5G6B5 mode.
  • Programs which use show_msgbox() must be rebuilt with the new SDK, even for TI-NSpire classic
  • SYSCALL_CUSTOM(): the first parameter should now only contain OS v3.1 addresses.

From v1.7 to v2.0

  • Touchpad key map support: rebuild your programs with the SDK of v2.0, which includes an updated isKeyPressed() function. Make sure that the programs do not depend on keys specific to the Clickpad.

From v1.1.x to v1.7

C and assembly programs:

  • The syscall convention has changed, programs built with Ndless < v1.7 need to be rebuilt without any change to the code. This format should be compatible with the new OS versions once supported by Ndless, as long as backward compatibility can be kept.
  • Custom syscalls should be defined using SYSCALL_CUSTOM (see above)
  • The "PRG\0" signature before main() isn't required anymore, you can remove it
  • MakeTNS doesn't exist anymore. You must objcopy directly to the .tns file in your Makefile.
  • The program format is not specific to an hardware model anymore. You can now build your programs only once without defining NSPIRE_HARDWARE.
  • OS v1.1 is not supported anymore. Check that your programs still work on OS v1.7.
  • The program path is passed to the main function by following the C calling convention instead of using register r9

Assembly programs:

  • The way to call syscalls has changed: replace 'oscall <os_function>' with 'syscall(<os_function>)'

From v1.0 to v1.1

C and assembly programs:

  • Install the toolchain as described above. Your project doesn't need to follow the Ndless file tree anymore.
  • Adapt your Makefile based on src/arm/Makefile or src/arm/demo/Makefile
  • You may upgrade to the latest version of YAGARTO. Don't forget to delete any remaining *.o file before rebuilding a project.

Pure-assembly programs:

  • Make sure that the file extensions is in uppercase (.S)
  • Add the "main" symbol as described in the previous section
  • You do not need to define the symbol "_start" anymore