I'm having one of my major off days! I'm trying to invert the contents of an array, and am going all over the place to achieve what I think should be only a couple of lines of 'c' code. I have a constant array containing font pixel data for a graphics LCD. I access it by, BYTE *fnt; fnt = GLCD_font_set(ch); No problems here. However this does not work *fnt = *fnt ^ 0xFF; '' take contents of fnt and invert, place back in fnt. Nor does bracketing fnt's, contents do not alter. This does work in my 'c' compiler if (colour == WHITE) { tmp = *fnt; tmp = tmp ^ 0xFF; //invert font code fnt = (unsigned char *)tmp; } The above code has a build failure if I use Microchip C30, that is happy with if (colour == WHITE) { fnt = font[1];//test purposes, only get one 8 pixel strip from font table tmp = fnt ; tmp = tmp ^ 0xFF; fnt = tmp; } I don't see why the neater first attempt isn't working. tracing the assembler with the FED-C compiler is not the easiest of task, due to compiler macro overheads all over the place. Colin -- cdb, on 9/26/2009 -- http://www.piclist.com PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist