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

 

 

  • Like 1
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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.