Ignition
Ignition is a rather simple Interpreted Esoteric programming language designed by Luxen De'Mark that is meant to be run on lightweight devices, like the TI-83+/84+.
Background
Ignition was created as an attempt to simplify the command syntax of TI-Basic, but also poke fun at the person who requested it. the final product was a Programming Language that uses about 15 commands. It happens to be usable, but is pointless to code in.
Instructions
The Interpreter
The Interpreter, otherwise known as the IILE (Ignition Interpreted Language Engine), is what interprets Ignition Code. you need to supply it with the starting point of the code. this is usually handled by an external shell or another program.
Introduction
All Ignition code is treated as string data (unless math operators are used, but output is returned back to a string), accessible through comments. data must be loaded into 1 of 3 temporary variables, which could be thought of as non-destructive assembly registers.
Language Basics
Any Ignition code begins with "Igni", and customarily ends with a Quit command. The beginning snippet ensures to the Ignition interpreter that the code being read is Ignition code. The final Quit command ensures proper end-of-file execution (as the current engine is likely to continue running past the end of the file, resulting in garbage (or a crash, for the TI-Basic implementation of the engine)). also, you can optionally include a "Name:xxx" and "Type:xxx" after the Igni header, though currently these tags are ignored.
Ignition programming etiquette
Ignition code should begin after the header and a starting label, most often ":Start". Data should come after all code execution, at the bottom of the document. the final data tag should be ":EOF", and Quit on the next line. Ignition can handle excessive new lines, but whitespacing will cause the code to be skipped, as commands and arguments are literal matches in the engine.
Ignition Syntax
there are only a few executable commands and tags.
:xxx
Creates a Label, similar to the Batch Label naming. in this case, you created a Label called xxx. Labels arent indexed, so jumping to one in a lengthy program can be a tad bit slow.
Jump xxx
Jumps to the first declared label "xxx". Label searching begins from the start of the code.
Comp
Compares Var1 to Var2. If they are not the same, the interpreter skips the next line. otherwise, execution occurs as normal.
Load xxx
Loads the data in the line after label xxx into Var1.
Swap Var#,Var#
Loads the data in Var# and stores it into Var#.
Save xxx
Loads the data from Var1 and places it in the line after label xxx. data is overwritten.
Clear
Wipes the screen of all contents.
Displays the string in Var1, and a new line.
Input
Gets a string from the user. This data is stored into Var1.
Rand #
Creates a random number between 0-#, and stores to Var1
Quit
Stops program execution.
Math ~some operator that is +,-,*,or /~
does simple math on Var1 and Var2, storing the results in Var1. If you need to use Var1 multiple times, you should store it to Var3 before using Math.
Platform:xxx
Currently, this does nothing, but an IILE in the works would allow for specific platform checking (as in "Platform:TI" returning true if the interpreter is run on a TI-83+/84+). If true, the interpreter skips the next line.
Plugin:xxx
Currently, this does nothing, but an IILE in the works would allow for extensions to the programming language (perhaps making it useful). If the listed plugin is installed, then this returns true and skips the next line.
Wait #
Currently, this does nothing, but an IILE in the works would allow for halting program execution for # program ticks.
Speed #
Currently, this does nothing, but an IILE in the works would allow for switching between max processing speed(1) and snail speed(2)(about the speed that the TI-Basic-based interpreter processes Ignition code).
Exec xxx (xxx)
Currently, this does nothing, but an IILE in the works would allow for the current program to close and execution of another program to begin. an optional argument allows for automatic label searching, so it would jump directly to that label after opening the program.
The following are tags, and dont effect program execution:
Igni
This is essentially the program header. If you load a program into the Ignition interpreter, and this is not the first line of that program, then execution will not occur.
Name:xxx
Currently, this does nothing, but a planned Ignition program shell would allow Ignition programs to have long (<8 character) names using this tag after the program header.
Type:xxx
Currently, this does nothing, but a planned Ignition program shell would allow Ignition programs to have descriptions using this tag after the name tag.
Sample Programs
Hello World
Igni Name:Hello World Type:Other :Start Load Var1,Message Print Quit :Message Hello World! :EOF Quit
Random Number Guessing Game
Igni Name:Guess My Number Type:Game :Start Clear Rand 10 Swap Var1,Var2 :Game Load Var1,Msg1 Print Load Var1,Msg2 Print Input Comp Jump Win Load Var1,MsgLose Print Jump Game :Win Load Var1,MsgWin Print Quit :Msg1 Guess My Number :Msg2 Any Number 1-10 :MsgWin You Won! :MsgLose Try Again :EOF Quit
External resources
- Forum for Ignition and updates
- #Ignition on irc.efnet.net