While executing the following code:
char far * buf; buf=FARRAY(char, 0x8FFF0); printf("%p\r\n",buf); buf+=0x100; printf("%p\r\n",buf);
x:08fff0 x:0800f0
Oh, finally I've found it: http://www.keil.com/support/man/docs/c51/c51_le_far.htm Bottom line: yes, this is not a bug, this is a feature. It is my responsibility to not place objects over the 64K boundaries. Dot.