part of code appended into string, resulting in very strange serial output

I think this line is part of your problem:

  String charFilename = currentChar + ".tmp";

Since your printout shows currentChar == 'A' I think you are getting:

  String charFilename = &".tmp"+65;

Since ".tmp" is only 5 bytes long and you are starting at the 66th byte I expect you will get something unexpected.

You can't concatenate a character and a character string. Try this instead:

  String charFilename = currentChar;
charFilename += ".tmp";

I'm not sure that is the only mistake since many of the variable are not declared.