I've been MIA for a while with work. I wanted to release this for others to enjoy. The code is well documented. Make sure to look over it before you start to use it.
Set the queue size using "#define QUEUE_SIZE" in main source file. For the Atmega328, 20 moves seems to be the maximum it can hold. If you set this value too high, you'll lockup the arduino when the buffer fills up. If you use the 1280, it will hold considerably more moves. The only way I was able to exhaust the 20 move buffer on the 328 was by having many many tiny movements back to back. This should all but eliminate the deceleration and acceleration problem that some were having.
I've also added lots of custom functions. For example, adding a z-surface pin that will automatically find the surface of your platform. Read the code for more info. Do not use the custom functions unless you have the z-surface pin attached or you will damage your machine.
The limit pins have been redesigned. They are no longer connected to the arduino. They instead are connected directly to the cw/ccw pins of the stepper driver. When the platform reaches the end of it's movement, the limit switch forces the driver to reverse direction without notifying the arduino. This means that there is never the possibility of hurting your platform even if the arduino locks up. This also frees up the arduino to worry about the timing of the movements and does not need to constantly check the limit pins.
There is also code for using an external joystick to move the platform. Make sure these pins are disabled if you are not going use this feature.
I've included the processing script that will communicate with the firmware. You cannot use any other script to communicate with this firmware. This is because the firmware and script have been optimized to use the least about of communication to reduce any delays. If you read through the script, you can probably reverse engineer it fairly easily. Besides the streamlined communications, I've expanded the interface to have more functions.
Let me know if you catch any bugs. I haven't tested this thoroughly, but to the extent that I have, it has worked flawlessly.