Back in '09 I was moving between jobs and decided I would start on making a better version of 9LC. I started by creating a simple language that resembles the existing 9LC one, but was not as terse as 9LC. Keywords and statements would tend to be longer than their 9LC counterparts.
I wanted support for constants and better support for the ability to rename registers, better symbol handling so that programs, labels and registers could be referred to using human-friendly identifiers and not have the limitations of requiring or prohibiting the use of hex identifiers in certain places. Eventually, I want to create a package that can be incorporated into the Visual Studio shell (e.g. VS Code) so that users can get the full IDE experience including things like syntax coloring, passive error indications, folding, suggestions, autocomplete, etc.
After deciding on what I wanted it to do, I had to decide on how. The Irony toolkit had recently been released and seemed like an interesting thing. Better than YACC and LEX (or Bison and Flex for you younger folk) anyway.
Life got in the way eventually, and development stalled for a while. But each time I turned on the 9010A to work on something, I thought about the project. Over time and through a few updates to Irony and Visual Studio, I started making headway on my little project.
I ended up adding a few features like a few intrinsic commands for things like a
RampFill, selective debug stepping, and code optimizations.
I had a few bumpy starts, like problems generating the correct 9010A binary code, or dealing with incorrect documentation that caused me to generate code that I thought was valid was really was not (tip: the byte used to end a string is not
But I eventually got the compiler generating the proper code in the proper order:
I call the new language 10LC, just because I could not think of anything better. Interested in the Features of 10LC?