Alternatively, join us on Discord.

TI-Planet's "Project Builder" with online CE C Compiler

Started by Adriweb, March 19, 2016, 05:04:02 am

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Adriweb

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 ;)

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 :)

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/function 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:
Spoiler: ShowHide
  • Integration of the CEmu emulator core in order to try and debug programs in real-time :)
  • 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 :)
  • A dark theme
  • Your ideas?



Links


_________
Via TI-Planet.org: https://tiplanet.org/forum/viewtopic.php?f=41&t=18118
Co-founder & co-administrator of TI-Planet and Inspired-Lua

DJ Omnimaga

Glad to see this come to fruition. :) The share tools and multi-user edits are a nice touch as well. I personally won't be using C but I know that some people here might find this handy.

By the way, since it's open-source, does it mean that anyone could put the folders on his web server and it would run almost on the fly?

Adriweb

Quote from: DJ Omnimaga on March 19, 2016, 05:53:26 amBy the way, since it's open-source, does it mean that anyone could put the folders on his web server and it would run almost on the fly?

Almost, yes - there has to be some server-side setup for the modules requiring advanced back-ends (like the C one...) for things like wine setup if the server is linux-based, etc.

There'll probably be some kind of readme explaining the basics
Co-founder & co-administrator of TI-Planet and Inspired-Lua

DJ Omnimaga

Cool, thanks. :) Would it pose a risk of slowing down the rest of the server stuff if RAM is limited? (as an example, CW hosting only has 1 GB of RAM and a single-core CPU)

Also will CEmu integration in the future require an online version of CEmu to be made or will the project builder simply ask permission to open CEmu on the computer after specifying the directory the emulator is in (and letting the user change the setting)?

Adriweb

Quote from: DJ Omnimaga on March 19, 2016, 06:03:16 amCool, thanks. :) Would it pose a risk of slowing down the rest of the server stuff if RAM is limited? (as an example, CW hosting only has 1 GB of RAM and a single-core CPU)

Well, in theory yes, but it shouldn't be too bad either. That said... 1 GB of RAM and a single-core CPU isn't much :(

Quote from: DJ Omnimaga on March 19, 2016, 06:03:16 amAlso will CEmu integration in the future require an online version of CEmu to be made

Yes, I'm currently looking at an online CEmu version for the PB, but it's still very early, and doesn't even actually work right now under normal conditions. It'll require a bit of time :P

Quote from: DJ Omnimaga on March 19, 2016, 06:03:16 amwill the project builder simply ask permission to open CEmu on the computer after specifying the directory the emulator is in (and letting the user change the setting)?

This is also an idea I had, but isn't developed yet either.
Somewhat related is TI-Planet's desktop client that could act as a "bridge" between the Project Builder and a connected calculator on your computer, so that you may be able to directly send the programs to it.
Co-founder & co-administrator of TI-Planet and Inspired-Lua

DJ Omnimaga

My main concern about requiring CEmu to be online to work with project Builder is if the host decides to provide the ROM files on emulator launch or kept a copy of the user ROM on the server rather than doing like jsTIfied and requiring the user to supply his own calculator ROM himself. Because TI might not like that, plus it would be hard for us to link directly to the emulator since ROM links are against CW rules. >.<

Adriweb

Quote from: DJ Omnimaga on March 19, 2016, 06:18:27 amMy main concern about requiring CEmu to be online to work with project Builder is if the host decides to provide the ROM files on emulator launch rather than doing like jsTIfied and requiring the user to supply his own calculator ROM himself. Because if the online CEmu launched with ROMs hosted on the server then not only linking to it would be against the rules of most forums, but also Texas Instruments would not like that (they already shut down TI-Emulation a few years ago).

Yes, obviously the users will have to provide their own ROM :)
The good thing is that it can be saved locally in the browser's localStorage.
Co-founder & co-administrator of TI-Planet and Inspired-Lua

DJ Omnimaga


Dudeman313

So, if I have a CE ROM, I can basically use CEmu anywhere?
Does this qualify as a signature? 
The answer is "Sure."


Adriweb

It obviously won't be a full-blwon CEmu-desktop alternative, but rather some kind of "just the things" to get it working on online IDEs, for instance.
Also, I have some unexpected work this week so I won't be working on that as soon as I've had hoped :P
Co-founder & co-administrator of TI-Planet and Inspired-Lua

Dudeman313

Does the keyboard-keypad connection work? I kept trying to use WabbitEmu's keyboard controls for the virtual calculator in CEmu(the build that @alberthrocks gave me), and when I found that I had to click each key individually, I got kinda irked.
Does this qualify as a signature? 
The answer is "Sure."


MateoConLechuga

Um, of course it works? Click on the screen if you need to, and change the keyboard bindings to WabbitEmu in the settings if you really want to. The CEmu keybindings are a lot easier and make more sense once you get used to them.

DJ Omnimaga

Quote from: MateoConLechuga on March 21, 2016, 06:46:39 pm
The CEmu keybindings are a lot easier and make more sense once you get used to them.
That's unless you used PindurTI and/or WabbitEmu for 11 years straight :P

Quote from: Adriweb on March 21, 2016, 05:02:49 pm
It obviously won't be a full-blwon CEmu-desktop alternative, but rather some kind of "just the things" to get it working on online IDEs, for instance.
Also, I have some unexpected work this week so I won't be working on that as soon as I've had hoped :P
What would be cool is if clicking compile launched your game in CEmu, like TIEmu does :D

Lionel Debroux

QuoteWhat would be cool is if clicking compile launched your game in CEmu, like TIEmu does :D

Indeed, from a user's POV, this kind of functionality is cool, and I've obviously leveraged it myself in the past.
From a maintainer's POV, it's less cool, in that it requires multiple completely different code paths for implementing the same functionality across multiple OS, because there's no portable standard: OLE on Windows, D-Bus on Linux, I don't know what on MacOS X, etc. :)
Member of the TI-Chess Team.
Co-maintainer of GCC4TI (GCC4TI online documentation), TIEmu and TILP.
Co-admin of TI-Planet.

DJ Omnimaga

Yeah I understand, plus having to write different code for each browser so that people aren't forced to use 1 specific browser <_<

Powered by EzPortal