I have a slight problem with the following code:
unsigned char code * code x[] = {"a", "b", "c"}; void main() { unsigned char a; for(;;) a = x[0][0]; }
The compiler is quite likely to have optimised your code: you assign values to 'a' in the loop, but never use those values - therefore the compiler considers this to be "dead" code, and removes it! Try making 'a' volatile