Adding human readable names to all of the basic io pins. Writing a very basic encoder function that does not use interupts as it really probably should.
More names fixes.
Adding some simple shift register code to cycle the associated LEDs.
Adding notes about the LEDs on the Range switches and the Tap and Length LEDs
Wiring up the Input Change Notification interrupt handler so that we can start building something useful. Finally.
Enabeling Input CN interrupts on the rest of the input pins. Now we can start writing an encoder handler.
Adding a lot of control to the Bar LEDs. Now we have a user interface that can actually display data. This is a huge step.
Starting to add CN state tracking. Turning encoder now shifts bar led display left and right correctly.
Adding basic control over the tap and length LEDs. Programmer needs to be disconnected for the output button to work correctly.
Adding a mode state so we can manage which mode, either length or tap, we are currently in.
Adding channel control via the output select button and the encoder just like the original Zorlon Cannon firmware provided.
Moving the LED update call into the while loop so that the display looks a little cleaner on user input.
Oops. It was starting in tap mode instead of length mode like the comments say.
Adding pattern management. Now we're  aetting so89~9mewhere...
Getting length and pattern to display on the bar leds.
Adding step cursor and implamenting clock a and b inputs to step through each pattern following length correctly.
Updating the UI so that it shifts through the modes in a more obvious way. Also changing the step display to blink per step and starting to work on cursor.
Adding movement of cursor on all channels and changing the way the step position is displayed to be a little more visiable.
Finally adding actual PATTERN OUTPUT and pattern modification control. Not sure how to manage ties. Maybe another mode is needed.
Oops. Not all channels should be tied to channel a1. Fixing that...