I've found and issue that caused some of the problem. UART code that hung the simulator unexpectedly. The LCD does work if I comment out any send command on the hardware UART. Commands where the UART only talks when talked to can be used.
Unfortunatly this brings up a worse bug. The UART worked fine untill I used a long integer in an AD read. I've rechecked and if I leave adresh & adresl as bytes the UART's fine. But, in order to scale the AD I need to combine them into one 16 bit integer. As soon as I even declare the 16 bit integer the UART's baud rate is off. With optimization at medium or off, I get one clear character back, and that's it. The AD's long integer and the UART code have nothing to do with each other, makes no sense why it's happening (for now). The UART has never given me problems before. 8051's etc. don't seem anywhere near as buggy as the PIC.
I'm looking through the assembled code to see where the bug is now. The UART can't be simulated (I assume...), so this may be slow going. Any ideas.