Ndless: Difference between revisions

From Hackspire
Jump to navigation Jump to search
(Ndless installation)
(Add "Developing with Ndless")
Line 3: Line 3:
The installation of Ndless on a TI-Nspire is required to be able to run [http://hackspire.unsads.com/wiki/index.php/Assembly_programs assembly programs].
The installation of Ndless on a TI-Nspire is required to be able to run [http://hackspire.unsads.com/wiki/index.php/Assembly_programs assembly programs].


'''Latest stable release: [http://www.ticalc.org/archives/files/fileinfo/426/42626.html v1.1]'''. Requires OS 1.1, unfortunately not publicly available. Although advertised as compatible with Computer Link 1.4, you may have difficulties to install it depending on your computer configuration, and will prefer to use Computer Link 1.3.
'''Latest stable release: [http://www.ticalc.org/archives/files/fileinfo/426/42626.html v1.1.1]'''. Requires OS 1.1, unfortunately not publicly available. Although advertised as compatible with Computer Link 1.4, you may have difficulties to install it depending on your computer configuration, and will prefer to use Computer Link 1.3.


'''(Unstable) Development version: [http://omnimaga.org/index.php?topic=4509.0 v1.7]'''. Compatible with OS 1.7. This version is made public for bug reports by developers. Binaries are not released, you will need to build it from the source code.
'''(Unstable) Development version: [http://omnimaga.org/index.php?topic=4509.0 v1.7]'''. Compatible with OS 1.7. This version is made public for bug reports by developers. Binaries are not released, you will need to build it from the source code.
==Developing with Ndless==
Tutorials and general information are available in the [[Main_Page#Development_resources|Development resources]] section.
===Version upgrade===
The executable format, the conventions and the header files are currently being defined and prone to change. This section describes the upgrade steps between the different releases of Ndless.
====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

Revision as of 09:42, 19 October 2010

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.

Latest stable release: v1.1.1. Requires OS 1.1, unfortunately not publicly available. Although advertised as compatible with Computer Link 1.4, you may have difficulties to install it depending on your computer configuration, and will prefer to use Computer Link 1.3.

(Unstable) Development version: v1.7. Compatible with OS 1.7. This version is made public for bug reports by developers. Binaries are not released, you will need to build it from the source code.

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. This section describes the upgrade steps between the different releases of Ndless.

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