Memory issue?

Now store help in the flash:

//Help text

prog_uchar PROGMEM helpText[] = 
  "~USB ASCII to Morse converter.\r\n"
.... snipped for brevity.

and retrieve with this:




void help() {
  unsigned char character;
  int index = 0; 
  while ((character = pgm_read_byte_near(helpText + index)) != 0) {

Help now no longer has an issue. Job done!

Still appear to have buffer overruns, but that is a separate issue - lower maximum allowable user input and make code more memory efficient are to strategies.