No tube connected yet, but we're well on our way!
All bugs mentioned in the previous post have been fixed, and you can see the code as of now here. I still have some commenting to do, but it's not the ugliest, and works good (so far!).
The problem with "36" printing instead of "#" (for non-existent characters) was easily solved by changing pMark's type from char to byte.
The second problem (speed changing erratically) was caused by some code I forgot to remove. It was supposed to automatically detect the user's speed, however it wouldn't work for a dual-lever paddle.
The third problem (random DIT's) was much more troublesome. I "debugged" (putting LOTS of print statements) the code and found out it lied in the switch/case statement. I tried to figure out the problem... I really did. In the end I just changed it into a series of IFs and ELSE IFs, hoped for the best, and tah dah! It works.
I'll have to revisit the code later and attempt to pinpoint the problem, as I prefer to not leave things unsolved.
Here is the morsing in action (The light labeled 'L' flashes morse code, and TX flashes when a character is sent):
It's not the clearest video, but, I did what I could. Characters are printed to the serial port right after being morsed!