(I've been told to make a topic about it, so here it is Wink)

Since its beginning, TI-Planet has promoted programming, especially on TI calculators, through many news, program features and reviews, tutorials, contests etc.
We are now proud to launch, in beta, a new online platform (online so as to be more easily accessible), to push even further this programming promotional effort. This online tool is called the "Project Builder" (PB).


What's the "Project Builder"?
Simply put, it's a "subsite" of TI-Planet, that offers a simplified interface through a set of tools ("modules"), such as an IDE, for creating, by oneself or with other people, content like programs, for calculators.

The modular architecture of the PB allows for multiple types of projects themselves possibly containing several elements. For now, the PB is still very young, and the only "ready" project type / module is the C compiler for the CE calculators (TI-84 Plus CE and TI-83 Premium CE), on which we will give more details in the next section.
In fact, we had already told you a bit about the PB and its C Compiler some time ago (September 2015!) in another topic, so it might not be much of a surprise Wink

Moreover, in the future, we can imagine other modules like:
  • TI-Basic z80/eZ80 (82/83/84 series)
  • TI-Nspire Lua
  • images/sprites
  • ...

Let's go back in a little more detail on the reference above, creating things "with other people". Indeed, the PB has social / multi-user features:
  • Possibility of sharing one's projects with other people
  • Such sharing can be in read-only or read/write access
  • Possibility of cloning/forking a project
  • Real-time multiuser editing/collaboration
  • Integrated chat



We hope that these efforts will help popularize programming among high school and university students, providing a simple yet comprehensive platform Smile

We are also glad to announce that the Project Builder is open-source, and even free as in freedom (GPLv3), to enable the contribution in the spirit of the community - it is designed in such a way that its operation is not locked on a specific site infrastructure. We encourage (and thank in advance) anyone interested in contributing and helping in general, adding things, fixing bugs, etc. A link to the code is available at the bottom of this article.


The C Compiler for the CE calculators - a module of the PB
This isn't new - since the release of the CE calculators series in 2015, their new more powerful hardware (eZ80 CPU, faster than the Z80, more RAM, etc.) allows much more interesting things than on prior models, including indeed "native" C programming, much more attractive than assembly, and often used on PC or other platforms.
The Project Builder thus has a "CE C compiler" module, whose back-end is based on the toolchain work by "MateoConLechuga" (who we thank very much).

Features:
Relative to the back-end (compiler)
  • Compiling C for the CE via a transparent usage of the C89/ANSI ZDS-powered toolchain (using official Zilog tools)
  • Integrates enhanced standard include files (headers)
  • Automatic linking of libraries that you use in your source code (include in lib/ce/)
  • Automatic static code analysis via cppcheck (with built-in inline editor display)

Relative to the front-end (user interface)
  • Syntax coloring
  • Half-smart auto-completion
  • Multi-file project support
  • Console showing the Makefile output (build log, link log, etc.)
  • Build status indicator with associated timestamp
  • Inline display of compilation warning and errors
  • Embedded examples/templates so as to start from an existing base
  • Various editor "Goodies"
    • Auto-indentation, multiple selections/cursors, Code folding...
    • Built-in search&replace (with RegExp possibility)
    • Ctrl/Cmd + mouse-over on a variable/fonction to see its definition, and click to jump to it
    • Ctrl/Cmd + mouse-over on a base 10 number to see base 16 representation, and click to make it written in base 16

Specific to CE calculators
  • Export to .8xp (program) file directly
  • Integrates include files (headers) specific to the CE (via Toolchain and Libraries)
  • Program name choice



Features planned for the future...:
In addition to various improvements on the GUI for a better user experience, the following are on the TODO list:
  • Integration of the CEmu emulator core in order to try and debug programs in real-time Smile
  • Deeper sharing options (in addition to read/write currently, possibility to choose specific user access)
  • Auto-completion and inline help for CE-specific functions
  • Dynamic/Interactive function list in the current file
  • Improved integration of CodeMirror features for multi-file projects
  • Choice of compiling optimization towards speed (current setting) or size
  • Choice for the .8xp to be set by default in RAM or in Archive
  • Versioning integration (Git etc.)
  • Project Import/Export
  • Integrating the LLVM eZ80 toolchain when it is ready Smile
  • A dark theme
  • Your ideas?


Links


_________
Via TI-Planet.org: https://tiplanet.org/forum/viewtopic.php?f=41&t=18118
I'm probably the least qualified person to comment on this but nice work! I like the visual style of it as well. I can't wait to see where our respective tools go in the future.
Thanks! I like Bootstrap's stuff too (it's using BS3 but with the official alternate "theme" to give more depth to buttons and such)
thanks for sharing- any plans to support at least compiling prizm add-ins with that tool too please?
Integrating the Prizm toolchain wasn't mentioned above, but there's no philosophical barrier to doing it at some point, provided someone volunteers time and expertise for that task Smile
AFAIK, the Prizm toolchain is a well-behaved GCC-based toolchain, like the Nspire toolchain, or the GCC4TI toolchain to a slightly lesser extent, which can only help.

The project builder was designed to support multiple project types, multi-file projects, and hopefully no infrastructure lock-in, from the get go - which makes the code a bit more complex (more interfaces and abstraction than would be required for narrower goals) and slows down initial development, but pays off in the mid- and long-term.
Out of curiosity, why use cppcheck rather than clang?
elfprince13 wrote:
Out of curiosity, why use cppcheck rather than clang?

No particular reason, actually. I may try clang-check one day and see if it does a better job.

Unrelated, I've added a way to see the generated ASM code, it can be useful sometimes Smile



I'll probably improve it though, so as to integrate it better in the actual editor, which will make sense later for debugging purposes.
Adriweb wrote:
Unrelated, I've added a way to see the generated ASM code, it can be useful sometimes Smile
That's quite cool, actually. How does it know which segments of ASM code correspond to which segments of C code from the files that the Zilog compiler generates?
KermMartian wrote:
Adriweb wrote:
Unrelated, I've added a way to see the generated ASM code, it can be useful sometimes Smile
That's quite cool, actually. How does it know which segments of ASM code correspond to which segments of C code from the files that the Zilog compiler generates?

My recollection is that you can ask the Zilog compiler to comment the assembly code with the C code that generated it.
Yeah, I think it does it by default with the makefile how it is. There's a file it produces which has the assembly.
Good job Adriweb. Good Idea
Merthsoft, elfprince13, thanks! I'll have to investigate that. Smile
Yeah, it's using a rather stupid diff on ZDS output right now, though I wonder why I just didn't use the indicated lines directly Smile I'll rework it to use that, it looks more reliable (thanks Runer for pointing it out)
(Update:)
I've done that differently now, taking into account the line numbers, and thus making things much easier and reliable (and much more useful for the future debugging features).
It's not done yet, but CEmu integration is coming along nicely...
Alright, it's publicly available now, though I haven't been able to locally save the ROM yet, because it's quite big, and when trying compression, it wasn't working reasonably well, so far Razz
Lots of other improvements and fixes, though, on UI and perf.

Have fun Smile

A somewhat outdated video (UI looks better now, here and there):


(And don't forget that this definitely does not replace the offline CEmu version, which works much better, performance- and stability-wise. This integrated version is however quite practical for quick testing.)
This is a very cool and unique project, especially with the awesome license! FOSS benefits the community, and we must all support efforts to create community-built tools that can help us all learn and inspire.
Nice, i hope the same can still be done for prizm
I suppose getting the Prizm toolchain to work in the server side wouldn't be too hard, but even if we knew how to emulate all of the Prizm's peripherals (and we don't), emulating a 58 MHz SH4 CPU in the browser is very far from being possible. Unless there's a fast SH4 emulator in JavaScript I don't know about...
Thanks Smile
I'll add multiple file sending soon, and a way to get libs sent quickly as well.

gbl08ma wrote:
I suppose getting the Prizm toolchain to work in the server side wouldn't be too hard, but even if we knew how to emulate all of the Prizm's peripherals (and we don't), emulating a 58 MHz SH4 CPU in the browser is very far from being possible.

Well, the 133Mhz-ARM Nspire CX runs "fine" in a browser, though Smile
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 4
» All times are UTC - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement