User Tools

Site Tools


The 10LC Wiki

This is the start page for the 10LC language and toolkit.

I have always been fascinated with the older Fluke 9010A microprocessor troubleshooter. I have owned a few through the years and my current bench one has the serial port on it for transferring programs and data between the unit and a PC.

However, I never found its programming language (usually referred to as 9LC, the name of its compiler) very appealing. It feels more like a cross between assembly and script, and does not seem as flexible as it should be but that might be due to its age. So I sought out to “fix” that.

You can read more about the History of the project, jump straight into its Features, Documentation, Examples of its use, or see what the Future plans are.

Or if you just want to jump right in and get started with it, visit the Downloads and Command Line pages.

If you have problems, check out the Troubleshooting section.

Version History

Internal - started with parsing MRec (Hex) files to be able to understand the binary format.

Internal - Implemented basic parsing using Irony, still trying to figure out what 10LC will actually look like.

Internal - Completed all new statements

Internal - Decided on new syntax for 10LC (and decided on 10LC as the name), can support decimal and hex values freely, implemented Alias and Const statements. Created internal ProgramState object and managers to store per-program stuff.

Internal - Finished new intrinsics (Fill, FillRamp and Delay).

Internal - 10LC can produce code for all supported statements and create steps that the 9010 can execute.

Internal - Implementing static optimizations, and global constants

Internal - 10LC can now track and issue warnings for all unreferenced objects (Labels, Programs, Consts, and Aliases). Changed Global Const statement from Global to just a Const that is created outside of program scope. Implemented global Aliases the same way. Added EndProgram statement.

Internal - Fixed label calculation, was off by one which would cause beeping whenever certain labels were jumped to. Implemented WriteEx statement. Found while implementing a test script for Vanguard. Working on decompiler - not quite there yet, here is the start of what it produces for the MRec round-trip for part of the Vanguard test script:

Active Force Line, Active Interrupt, Bad Power Supply0x00 (0)YesYes0x000000000xFFFFFFFC0x130x110x460x000000FA0x00000D0A"6502"0x20 (32)"", "", "", """", "EADY", "", ""0Display " VANGUARD TEST SCRIPT"
 REG E64;
Execute 99;
Label 0
Display " TEST RAM?0"
If REG 0==1Goto 1
Display " TEST ROM?0"
If REG 0==1
Goto 2
Display " TEST VIDEO?0"
If REG 0==1Goto 3
Display " TEST SOUND?0"
If REG 0==1Goto 4
Display " TEST SPEECH?0"
If REG 0==1
Goto 5
Display " TEST FLIP?0"
If REG 0==1Goto 6
Display " TEST SCROLL?0"
If REG 0==1Goto 7Goto 0;
 Label 1Execute 1;
 Goto 0;
 Label 2Execute 2;
 Goto 0;
3Execute 3;
 Goto 0;
 Label 4Execute 4;
 Goto 0;
 Label 5Execute 5;
 Goto 0;
 Label 6Execute 6;
 Goto 0;
7Execute 7;
 Goto 0;
 0Sync 01Q02Y030405060711
start.txt · Last modified: 2020/02/22 18:26 by jtwine