Skip to content
Browse files

Fill out the README more.

  • Loading branch information...
1 parent 68bcd60 commit f523fc29a503a138e090ade2c8a961e59a22ceeb @tadpol committed Jan 9, 2012
Showing with 45 additions and 6 deletions.
  1. +45 −6 README.markdown
View
51 README.markdown
@@ -2,16 +2,55 @@
Avrian Jump
===========
-A very simple ladder language for programming ATMega168s.
+A very simple ladder language for programming ATMega168s from a web browser.
-This ladder language is not based on any other, and is mostly setup to be simple to use on a
-touch device with HTML elements. It also condenses down into an ASCII format that for most
-things will fit into a tweet.
+This started out as a desire to be able to program an Arduino from an iOS device. Since it
+doesn't seem like compiler tools of any sort would get into the app store, I figured something
+would need to be done in HTML5. I figured if a [PC emulator][psemu] could be written in
+javascript, so could something like this.
-This started out as a desire to be able to program an Arduino from an iOS device.
-Given that recreating the Arduino IDE in HTML seemed like too much work, the project was
+However, recreating the Arduino IDE in HTML seemed like too much work. So the project was
reduced into something much simpler. Mainly, a simple ladder language, and the Audioino
bootloader. That still left the need for an assembler, which while still a fair amount of
work, seemed a lot more managable.
+The Ladder
+----------
+
+Each rung on the ladder has a single test and multiple actions. Tests can check the digital
+pins, analog pins, and a couple of variables. Each action and set a digital pin, a PWM output,
+or a variable. Analog, PWM, and variables are 16bit values.
+
+There is no 'setup()'. Analog pins are alway sanalog inputs. When specified in a test, a
+digital pin is set to an input then read. When specified in an action, it is set to an output
+then set. ??? how does this interact with PWM ???
+
+There is an ascii format of the ladders. This was done because it seemed like it could be neat
+to be able to tweet ladders. You can view the ascii format, and also load ladders from it.
+The ascii parser skips anything it doesn't recognise; it is a bit too forgiving at times.
+
+An example program:
+ #Blink LED
+ :T;A+=1
+ :A=45;D0=1
+ :A=90;D0=0,A=0
+
+A ladder can also be turned into 8bit AVR assembly.
+
+The Assembler
+-------------
+
+The assembler is pretty basic. Lots of features commonly found in other assemblers are
+currently missing. It does assemble the mneonics from [Atmel's pdf][avrasm] into machine code.
+It supports labels, but not local labels. It has simple parameter replacement, so common names
+can be defined for IO registers and memory regions and things. It can also specify where in
+memory to put the machine code, and can specify immeadiate words to save in the machine code.
+
+This assembler doesn't know about the various AVR devices, and so will happily assemble any of
+the known mnemonics into the output. Even if your target device has no idea what to do with
+them.
+
+
+[pcemu]:http://bellard.org/jslinux/
+[avrasm]:http://www.atmel.com/atmel/acrobat/doc0856.pdf

0 comments on commit f523fc2

Please sign in to comment.
Something went wrong with that request. Please try again.