Nicely done! Thanks for sharing it!
Nice short code there too! (I had to change the #include <fix_fft.h>
to #include "fix_fft.h"
to make it compile though. And you seem to have some extra semicolons in there, after for {} blocks etc. Not that it matters).
Thanks to this, and not least that 8-bit fixfft you link to, I managed to get FFT onto a 8x8 red-green matrix display I have So not 64 bands, but 8 (or 9 probably). Still cool though. I did discover that my display PWM interfere a bit with the signal reading, unless I set it to lowest setting. Then I did get rid of the noise in the lowest band - until I changed something that is - my code and not least my simple mic preamp might be a bit buggy, still testing). But it works pretty well imho (I can't claim it worked on first try though).
FFT alorithms are pretty magic btw!
Also, I think, if you have N samples, you get N/2+1 frequency bands back, the first band (band 0) being the DC component, and the last band (in your code the 65th band, which is element 64, not 63), being the samplerate/2 component.
In other words I think you can do this in the last loop of your code:
 for (i=1; i< 65;i++)
 {                        // In the current design, 60Hz and noise
  data[i] = sqrt(data[i] * data[i] + im[i] * im[i]);  // in general are a problem.  Future designs
  TV.draw_line(i+x,lastpass[i],i+x,ylim,0);   // and code may fix this, but for now, I
  TV.draw_line(i+x,ylim,i+x,ylim-data[i],1);  // skip displaying the 0-500hz band completely.
  lastpass[i]=ylim-data[i];           // if you insist, initialize the loop with 0
 }                        // rather than 1.
}
Note the "I think".. I tried to make FFT a while back from scratch but gave up intending to get back to it. I just had to check my very brief notes about it, and I have yet to test my own 9th frequency band on the 8x8 display.. it was just something I noticed now while writing this. I'm no expert on FFT.