SourceCoder is a web IDE for programming graphing calculators that evolved through several different version, eventually providing a rich online environment to create and test programs in several different languages for many different types of graphing calculators. Like many of my projects, its complexity and polish evolved as my own experience increased; this project also benefitted from skilled contributions from many graphing calculator hobbyist community members.

The very first version, simply called SourceCoder, converted binary TI-BASIC programs into human-readable source code. It later merged with a TI-BASIC program optimizing and syntax highlighting tool built by Joe “Brazucs”/"MysteryGuitarMan" Penna called optiBASIC. The combined programs became SourceCoder 2, allowing users to edit human-readable TI-BASIC programs and tokenize them back into calculator-readable binaries. SourceCoder 2 added compatibility with other types of files beyond programs, like images, matrices, lists, and groups. Ancillary features included collaborative sequential editing by multiple users, and automatically posting updated code to community forums. SourceCoder 2.5 cleaned up the interface, added more supported tokens, and inaugurated Casio Prizm support. SourceCoder 3 was a significant step forward in polishing the project, providing support for Casio as well as TI programs, adding z80 and ez80 assembly and C/C++ as available languages to write and assemble/compile, and integrating the jsTIfied TI calculator emulator to test projects.

SourceCoder

SourceCoder was first announced in May 2005 under the auspices of The BASIC Elite, a loose group of programmers attempting to raise the bar for the quality of TI-BASIC graphing calculator programs being released by the community. It was a single, simple script that would take a TI-83, TI-83 Plus, or TI-84 Plus TI-BASIC program, tokenized and calculator-readable, and convert it into human-readable source code. After a half-year of iteration, SourceCoder was released in November 2005 as a simple program source code viewer. It quickly gained support for TI-83 Plus/TI-84 Plus image files and group files, and was featured on ticalc.org.

SourceCoder 2

After SourceCoder 1.0 began to gain traction and users in the community, plenty of feedback and my own ideas spurred further development. I began making it more modular to providing support for several types of files, and it eventually came to support every type of .83* and .8x* file available. At the same time, Brazucs, a recently-minted staff member at UnitedTI.org, began working on a project to convert the badly-tokenized code generated by GraphLink into readable Unicode for use on forums. As I began v2.0 of SourceCoder, I planned to have a focus on editing and optimizing capabilities. After making substantial progress, and noting that Brazucs was making great strides towards a working optimizer and syntax-highlighter, he approached me with a proposal that we join forces to make a single complete and superior SourceCoder. In November 2005, optiBASIC was merged into the SourceCoder project.

After another year of development, SourceCoder 2.0 was released at the beginning of 2007, boasting support for more TI-83 Plus/TI-84 Plus formats beyond programs and images: it could also handle strings, lists, matrices, and groups. It added a virtual calculator keypad you could click on to enter tokens, sharing of projects between users, and automatically posting updated programs on several community forums.

Several more years of gradual improvements and upgrades yielded SourceCoder 2.5, incrementally making SourceCoder a better self-contained IDE to facilitate TI-BAIC programming. SourceCoder 2.5 was released in June 2010, and added various UI and quality-of-life improvements. The interface was cleaned up, additional options for exporting programs were provided, more TI-BASIC tokens were supported, and Casio Prizm fx-CG10/20/50 program support was added. SourceCoder 2.5 (and beyond) also had a symbiotic relationship with Shaun “Merthsoft” McFall’s TokenIDE project: Shaun used SourceCoder’s token conversion tables to make XML files that link TI tokens with their human-readable equivalents, and SourceCoder later switched to using TokenIDE’s XML files as a source of token truth. The TokenIDE files eventually expanded to include xLIB, Doors CS, Axe, Grammar, and TI-84 Plus C Silver Edition tokens.

SourceCoder 2.5 with jsTIfied emulator SourceCoder 2.5 with jsTIfied emulator

SourceCoder 3

SourceCoder 3 is the third generation of the SourceCoder project, a full, flexible IDE to facilitate programming in TI-BASIC. SourceCoder 3.0 included a ground-up rewrite of the frontend interface, with the jsTIfied emulator integrated directly so users can test programs on a calculator directly in their web browsers. Spurred by feature requests from the community and then-newly feasible technical aspects, I implemented features like command completion, argument hinting, a sprite editor, and much more. SourceCoder 3 can edit programs, lists, matrices, appvars, strings, pictures, images, and more.

The first closed alpha of SourceCoder 3 was published in April 2013, it reached beta in January 2014, and a release candidate was announced two years later, after which the tool was considered complete. Additional features, like C/C++ and ICE capabilities, continue to be added by Cemetech administrators Peter “Tari” Marheine and Peter “PT_” Tillema and by me up to the present.

SourceCoder 2.5 SourceCoder 2.5
SourceCoder 3 Alpha SourceCoder 3 Alpha

The major features present in the current SourceCoder 3 IDE:

  • Viewing, editing, and testing TI-BASIC programs for several different TI graphing calculator models like the TI-83, TI-83 Plus/TI-84 Plus, TI-84 Plus C Silver Edition, and TI-84 Plus CE.
  • Syntax highlighting, command completion (ctrl-space), argument hinting, and command completion. For example, typing seq( displays the arguments to the seq( function, followed by a brief explanation of what the command does.
  • Editing, assembling, and testing z80 and ez80 assembly programs (announced April 9, 2015)
  • Editing, compiling, and testing ez80 C/C++ programs (announced February 23, 2016)
  • Editing, syntax-highlighting, and testing TI-83+/84+ Axe, Grammer, and ICE programs (ICE support added by Peter Tillema and announced in April 2017)
  • Converting between Casio Prizm (fx-CG10/20/50) images and common computer image formats (announced August 3, 2014)
  • Automatic syntax highlighting and indentation of programs in each supported language
  • Sprite editor for monochrome, 3- and 4-level grayscale, and 16-color TI-BASIC and Axe sprites. You can edit existing sprites in programs or create new sprites.
  • Loading, editing, and saving lists and matrices, including importing from and exporting to CSV files that can be used by many numerical programs including Excel and Matlab.
  • Importing and exporting Picture and Image formats for the monochrome and color calculators, allowing you to save calculator images as computer images and convert computer images to be viewable on your calculator.
  • Embedded jsTIfied calculator emulator can emulate the TI-73, TI-81, TI-82, TI-83, TI-83 Plus/SE, TI-84 Plus/SE, TI-84 Plus C Silver Edition, TI-82 Stats.fr, TI-76.fr, and TI-83 Plus.fr. You can send files or projects directly from SourceCoder to jsTIfied and from jsTIfied to SourceCoder, allowing you to test out your programs without installing anything on your computer.
  • Export strings, AppVars, and programs as syntax-colored HTML or BBCode, allowing programs to be posted on personal or school websites or shared on forums.
  • Projects that include one or more programs, appvars, strings, lists, matrices, and real numbers can be stored in your Cemetech account and opened from SourceCoder on any computer. Projects can be imported from calculator files (.8xp, .8xg, and so on) and exported back to such files.