ArdEx -- a new program and book for learning


I'm looking for advice on the best way to publish some new software and a companion book, and hope this is the right forum to ask.

The book is meant to be instructive but conversational, expecting readers to pay attention and to do some thinking of their own. Think of some popular mathematics books -- that's the feel I was trying for.

The software is an Arduino Sketch, but is only useful on an Arduino UNO. It is called ArdEx (Arduino Explorer), and equips the user with an interactive assembly language interpreter. The language itself is a slightly changed TI MSP430 assembly language rather than the UNO's Atmega 328/P. The key thing is that all the Atmega's hardware registers are accessible in their own space. This means ArdEx gives you interactive access to the real hardware -- LED, I2C, SPI, Timers, etc.

To keep ArdEx as simple as possible, it only allows a total of 256 program steps. And RAM is even more restricted. So this isn't an environment for serious programming. I believe it is an environment for serious learning and that, with suitable material, it could be useful from 8th grade (14 year olds) to undergraduate computing courses.

I will attach the first ten pages of the book which explains how I came to write it and includes the table of contents. It also has a first program to blink an LED which should give you an idea of what I mean by an interactive assembly language. There are a few things marked "TODO", where I haven't nailed down installation/packaging details for using ArdEx from Windows or Mac, etc.

So how should I go about publishing this? My key objective is that as many people as possible will get the educational benefit. My thinking is that, rather than rushing to open it all out to the wider world, it would be better to work with a number of motivated reasonably technical teachers to see which parts work and which parts need more work. The book is there to teach the teachers, and they would then teach their students from what they have learnt.

But maybe someone here will have a better suggestion for how I should proceed.

I am in Australia, in the Blue Mountains, west of Sydney. If I seem slow to respond, allow for time zone differences.

Have fun,


ardexintro.pdf (179 KB)

The usual question ... selfpublish or not? If yes, deal with the devil and make a kindle version of the book (that's also publishable via createspace).

Interesting idea. Might be good in teaching coding in other languages, to give a perspective on What's Really In The Box...

Not clear: Are you making this Open Source, or expecting to market it commercially??

Thanks for the replies.

Yes Terry, I think it would be very instructive for students who have only used high level languages. Understanding that their elegant data structures will often just be lumped into a contiguous block of memory will, for one thing, make the dangers of buffer overruns much clearer.

The program is definitely free. One reservation on making the source code public is that I'd be worried about different dialects of the assembly language being created. It would be easy to add a MUL instruction, for instance, but that would be much less instructive than seeing the shifts and adds of the multiply function. I've attached the .hex file of ArdEx (you might need to rename the .txt as .hex). If you avrdude it onto an Arduino UNO and run a terminal emulator at 19200 8N1, you should be able to enter and run the 4 line blinky demo and tweak from there. I hope you'll find it fun as I do.

I haven't made up my mind yet on the book. My main hope is that it has some impact on education, but it would be nice to earn something for the work I've put into it.

In posting here, I'm hoping that some teachers or lecturers would be interested in trying ArdEx and the book for themselves. The writing has a conversational but concise style. It covers a lot of ground in not very many pages. I don't want the book to be a "spoon fed" guide, but I do need feedback on where motivated readers have trouble keeping up.

So any and all are welcome to try out the attached image. I have also attached the reference pages so you'll know the ArdEx commands and have a few hints on the assembly language instructions too (though you might have bother guessing the fancier addressing modes).

Anybody who is interested to go further is welcome to follow up, or contact me directly. I assume there's a PM facility here, or e-mail me at

Have fun,


ardref.pdf (98.6 KB)

ardex.txt (34.9 KB)

I would definitely publish the sketch on GitHub, as an .ino file, NOT as a .hex. This is by far the best way to make it accessible and easy for people to contribute improvements and submit bug reports or feature requests.

If it's open source, it's true that people may fork your sketch and and make changes to it, but the people using your book are going to be using your version of the sketch, so that doesn't matter.

If you decide to make the book public domain, Creative Commons, etc., then I would recommend also publishing that on GitHub as well for the same reasons. It's quite understandable if you decide to charge for the book though. There are ways to earn money from a book that is freely available as digital content, such as selling printed copies and soliciting donations, but I can't say whether that would end up being profitable or not.

In retrospect, I should have worded my questions more carefully.

Instead of "publish" I should have been saying "publicise". I certainly plan to publish the sketch and the book in due course, but for now I'm looking for educators who might be interested in trying it out.

So far it has only been tried out by one teacher. She's quite enthusiastic and tells me her class rated programming simple LED animations (and such like) in ArdEx as more satisfying than training Mindstorm robots. And she says she and the trainee teacher both have learnt quite a bit along the way.

I'd now like to put it in the hands of more educators as "alpha testers" of the approach. Of course they'll get the whole book, and advice from the author will only be an e-mail away. I think it could be a useful tool for:

  • Secondary school teachers of technology subjects
  • University computing courses
  • University EE courses maybe (ArdEx + oscilloscope and it's easy to poke around in the I2C protocol for example)

But I don't seem to be getting a great hit-rate here with teachers. If there is a better place to go recruiting, please let me know.

I have not done a great job, have I. Yes, I want teachers, but most of what I've said here assumes an unreasonable level of geekiness. Just saying "avrdude" was never going to get the software installed by a busy high school teacher.

So let me try again at a more sensible level. I have put a reasonably friendly web page together which guides through installing and trying ArdEx under Windows.

I'm not much of a Windows user -- the screen captures are from Window XP!! -- but it all worked for me and I'm pretty sure it'll all work in later versions too. Hope so anyway.