SIMPL - A Serial Interpreted, Minimal Programming Language


monsonite

Recommended Posts

Hi All,

 

A couple of years ago, I stumbled across a minimalist, interpreted programming language, created by Ward Cunningham - wiki pioneer.

 

He called it Txtzyme - a concatenation of text and enzyme, and suggested that it could boost creativity.

 

What it is, is a tiny interpreted language, where a single ASCII character is interpreted as an instruction, and causes a block of associated C code to be executed.

 

It is so compact, it can be condensed into about 90 lines of Arduino C code.

 

However, what it provides, is a powerful means to command the hardware of a microcontroller, just using a few characters sent over a serial port.  

 

Essentially it is a low level language for exercising new hardware.

 

I took Ward's simple interpreter and extended it, to create a programming tool, that I call SIMPL.  It borrows heavily from some of the minimalist ideas, first used 40 years ago by Chuck Moore's FORTH and the various TinyBasics used in the mid-1970s for some of the early 8 bit systems.

 

To cut to the chase, I now have SIMPL running on ZPUino, on a Papilio Duo with Logic Start Shield.  

 

I can turn LEDs on and off with a few snippets of interpreted code, run LED chasers or synthesize musical tones.

 

I'm currently trying to compile about 2 years of experimentation into a concise document.  In the meantime - if you want to play with SIMPL - the raw sketch is up her on this github gist.

 

https://gist.github.com/monsonite/97730b0456762da20a98

 

 

I'd appreciate comments and feedback. Have fun

 

 

Ken B

 

 

London

 

 

Link to comment
Share on other sites

Jack

 

Thanks for taking a look.

 

This tiny interpreted language is a great way of breathing the first life signs into new hardware.

 

I was amazed how quickly I hacked it to run on the ZPUino.

 

In this simple form, It can toggle an output pin at 161kHz - just using the digitalWrite function.

 

Does the ZPUino  recognise standard  AVR register naming for direct I/O port manipulation - that way it would get an order of magnitude higher speed over digitalWrite see http://www.arduino.cc/en/Reference/PortManipulation

 

 

regards

 

 

 

Ken

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.