Skip to content

Releases: CE-Programming/toolchain

CE C Toolchain (LLVM-based)

11 Sep 17:48
Compare
Choose a tag to compare

Getting Started

Read the Getting Started Guide.

Downloads

Windows: windows_CEdev_v9.2.1.zip
Linux: linux_CEdev_v9.2.1.tar.gz
macOS: mac_CEdev_v9.2.1.dmg

CE Libraries

Download the latest 'Standard' CE Libraries to fully utilize the CE C Toolchain.
These libraries add runtime support for fast graphics, file access, keypad integration, and more.
Documentation for the libraries can be found here.

Changelog

This is a bugfix release over v9.2, make sure to update!

  • Fix an edge case in the delay() and usleep() functions that would cause them to freeze
  • Fix linking of extra assembly sources in the makefile

For a more detailed changelog of v9.2, please see the changelog file.

CE C Toolchain (LLVM-based)

09 Sep 14:52
Compare
Choose a tag to compare

(A minor bug was found and fixed since this release, please make sure to download the latest toolchain version instead!)

Getting Started

Read the Getting Started Guide.

Downloads

Windows: windows_CEdev.zip
Linux: linux_CEdev.tar.gz
macOS: mac_CEdev.dmg

CE Libraries

Download the latest 'Standard' CE Libraries to fully utilize the CE C Toolchain.
These libraries add runtime support for fast graphics, file access, keypad integration, and more.
Documentation for the libraries can be found here.

Changelog

Among other things:

  • New time and clock-related functions added
  • New os_runPrgm function to run an external program
  • Deprecations of some functions that lead to bad code
  • Some C++ related improvements (new headers, static_assert, quick_exit...)
  • Other minor fixes and improvements
  • Documentation-related improvements
  • CI-related improvements

For a more detailed changelog of v9.2, please see the changelog file.

CE C Toolchain (LLVM-based)

17 Jan 00:26
Compare
Choose a tag to compare

This is a bugfix release over v9.0, make sure to update!

  • Updated fasmg (fix linker bug that could unnecessarily require a library)
  • Updated ez80-clang (fix compiler bug where taking the address of stack variables in simple functions was broken)

For the changelog of v9.1, please see the changelog file.

Getting Started

Read the Getting Started Guide.

Downloads

Windows: windows_CEdev.exe
Linux: linux_CEdev.zip
macOS: mac_CEdev.dmg

CE Libraries

The CE C Toolchain can use the 'Standard' CE Libraries.
These libraries add runtime support for fast graphics, file access, keypad integration, and more.
Download them at the above link, and add the appropriate headers in your source to use the supplied functions.
Documentation for the libraries can be found here.

CE C Toolchain (LLVM-based)

26 Dec 21:40
Compare
Choose a tag to compare

(A minor linker bug + a compiler bug were found and fixed since that release, please make sure to download the latest toolchain version!)

This is a major release, please read the sections below.

Getting Started

Read the Getting Started Guide.

Downloads

Windows: windows_CEdev.exe
Linux: linux_CEdev.zip
macOS: mac_CEdev.dmg

CE Libraries

The CE C Toolchain can use the 'Standard' CE Libraries.
These libraries add runtime support for fast graphics, file access, keypad integration, and more.
Download them at the above link, and add the appropriate headers in your source to use the supplied functions.
Documentation for the libraries can be found here.

The major upgrade from ZDS to LLVM

The toolchain is from now on based on LLVM, an open-source retargetable compiler infrastructure, and @jacobly0 created an (e)z80 backend!
This is a major milestone as it allows the CE toolchain to move away from using the legacy Zilog ZDS compiler, which is closed-source, proprietary, only worked on Windows, and contained numerous bugs.
Thanks to LLVM, later standards of the C and C++ languages are supported (you're not stuck with C89 anymore!), code optimization actually works, and the compiler is able to run natively across multiple platforms. The fact that it is open-source and community-maintained means that bugs can actually be fixed and improvements/feedback can come from anyone.

Note: No STL is provided for C++ source code (i.e. no std::string, no std::vector, etc.). Currently only language support is offered.

Updating your projects for this new toolchain version

In programs you build with this new toolchain, you should notice performance or speed improvements, depending on the optimization level you choose ... or even both :)

But the massive internal changes in the toolchain do mean that some programs might not compile right away anymore.
In fact, first, after installing the new toolchain, you'll have to update your projects' makefile. It's only a few lines, and a template makefile can be found here.

Regarding potential source code related migration, don't worry, it shouldn't be too difficult to fix your code. Here are some differences:

  • Old-style inline assembly will most likely not work, you'd have to write it like the compiler outputs it, in the format fasmg-ez80 expects. Update any assembly source modules with the guide described here.
  • Many new errors and warnings may be generated as the compiler is able to better infer. These should be fixed, and programs should compile without any warnings.
  • If your program was using 64-bit types (for instance long long), it may not build (link, more specifically) anymore. In fact, the ZDS compiler even made those 32-bit. If there's enough justified demand for actually supporting 64-bit types properly, we may work on it.
  • The convimg project has been updated to support a new YAML format that is easier for beginners and tooling. The previous toolchain release (v8.8) also used a YAML format, however some slight modifications were made in order to make it standard-compliant. Example convimg.yaml conversion files can be found in the examples.

Other changes and improvements

You can find the a more detailed list of changes (and a link to the commits) in the changelog file, but here are the other important changes in addition to the compiler change:

  • Lots of cleanup and improvements to the standard includes and headers in general, made possible by the compiler change mentioned above.
  • New fileioc function: ti_SetGCBehavior to set routines to run before and after a garbage collect would be triggered.
  • New keypadc defines: many keypad key defines corresponding to the TI-83 Premium CE keypad were added for easier coding.
  • New usb.h function: usb_BatteryCharging to check if the battery is currently charging.
  • Revamped v/s/printf functions, now available if needed thanks to a light third-party library, see docs.
  • New: fileioc-powered (by default) implementation for file IO functions, see docs.
  • New C++ header-only "library" for easily manipulating "TI real" numbers (see this PR), making some math operations easier. See examples.
  • abort() doesn't generate code that would make CEmu open its debugger anymore - you can use the specific debug functions for that now.
  • Documentation improved and revamped. Available on online here, which replaces the repo's wiki.

Let's thank once again @jacobly0 for his spectacular work (years in the making), as well as everybody who contributed in one way or another, to this release 🥂

Happy coding!

CE C Software Development Kit (SDK)

18 Jan 17:04
3ffaa8c
Compare
Choose a tag to compare

Installing

  • Download the file prefixed with your OS type
  • On windows, simply run the executable (.exe) as an administrator
  • If you are using Linux or macOS, a detailed install guide is here

Included you will find examples using the 'Standard' CE Libraries. These perform efficient and easy support for graphics, file I/O, keypad input, etc. Be sure to grab them if you plan to use them.

If this is your first time using the toolchain, please visit the startup wiki page.


Some notable improvements in this version include:

  • Documentation fixes and headers cleanup
  • Fixed gfx_TilePtr and gfx_TilePtrMapped
  • More OS functions exposed (see tice.h)
  • More LCD cursor defines
  • MMIO defines are all volatile
  • Examples folders hierarchy improved

Note 1: convimg is now used instead of convpng. Comparison example: v8.7 vs v8.8. You can find the convimg readme here.
Note 1.5: If, for some reason, you need ConvPNG temporarily, you can find its latest version (7.3) here.

Note 2: macOS 10.15+ doesn't allow 32-bit binaries/libraries anymore, so this won't work because wine can't run (needed for ZDS). The next release, based on LLVM, will only use native tools and so will run without any issues.


This will be the last v8 release before v9.0, which will be based on LLVM instead of ZDS, and may also include 3 USB libraries, namely usbdrvce, fatdrvce, and srldrvce. Stay tuned!


EDIT: This release has been updated with the latest versions of convimg and convbin. If you experienced any issues, try re-downloading this release.

Full changelog

CE C Software Development Kit

24 Aug 23:40
Compare
Choose a tag to compare

Installing

  • Download the file prefixed with your OS type
  • On windows, simply run the executable (.exe) as an administrator
  • If you are using Linux or macOS, a detailed install guide is here

Included you will find examples using the 'Standard' CE Libraries. These perform efficient and easy support for graphics, file I/O, keypad input, etc. Be sure to grab them if you plan to use them.

If this is your first time using the toolchain, please visit the startup wiki page.


Some notable improvements in this version include:

  • Documentation fixes
  • Fix gfx_Begin signature
  • Fix gfx_RotateSpriteC
  • Fix ti_Str0 value and add missing ti_Str9
  • Fix gfx_SetCharData (#221)
  • Improve build
  • Add ti_ArchiveHasRoom

Changelog

CE C Software Development Kit (SDK)

30 Jun 04:03
Compare
Choose a tag to compare

Installing

  • Download the file prefixed with your OS type
  • On windows, simply run the executable (.exe) as an administrator
  • If you are using Linux or macOS, a detailed install guide is here

Included you will find examples using the 'Standard' CE Libraries. These perform efficient and easy support for graphics, file I/O, keypad input, etc. Be sure to grab them if you plan to use them.

If this is your first time using the toolchain, please visit the startup wiki page.


Some notable improvements in this version include:

  • DrDnar has added another new 'Standard' CE C library, FontLibC. This library provides awesome support for working with and displaying different fonts and glyphs, and works alongside the fileioc library to load fonts dynamically from an appvar as well. There are a whole bunch of features, so see if you can integrate it into your next project!
  • Some bugs present in the fileioc and os_GetStringInput function have been repaired.
  • All the submodules (convpng, convfont, convcsv, convhex) have been updated with new features as well, to make development easier.

Changelog

CE C Software Development Kit

31 Oct 03:37
Compare
Choose a tag to compare

Installing

  • Download the file prefixed with your OS type
  • On windows, simply run the executable (.exe)
  • If you are using Linux or macOS, a detailed install guide is here

Included you will find examples using the 'Standard' CE Libraries. These perform efficient and easy support for graphics, file I/O, keypad input, etc. Be sure to grab them if you plan to use them.

If this is your first time using the toolchain, please visit the startup wiki page.

Changelog

CE C Software Development Kit

23 Aug 03:03
Compare
Choose a tag to compare

Installing

  • Download the file prefixed with your OS type
  • On windows, simply run the executable (.exe)
  • If you are using Linux or macOS, a detailed install guide is here

Included you will find examples using the 'Standard' CE Libraries. These perform efficient and easy support for graphics, file I/O, keypad input, etc. Be sure to grab them if you plan to use them.

If this is your first time using the toolchain, please visit the startup wiki page.

Changelog

CE C Software Development Kit

25 Jul 13:30
Compare
Choose a tag to compare

Installing

  • Download the file prefixed with your OS type
  • On windows, simply run the executable (.exe)
  • If you are using Linux or macOS, a detailed install guide is here

Included you will find examples using the 'Standard' CE Libraries. These perform efficient and easy support for graphics, file I/O, keypad input, etc. Be sure to grab them if you plan to use them.

If this is your first time using the toolchain, please visit the startup wiki page.

Changelog