I have changed rencently to CCS 3.160, and the COD that it generate differs from earlier versions. That make's that i can't use it with Proteus (which CODDDX gives an error to me), and i can't debug mixed code (C & ASM) at real time.
I heard that version of CCS above 3.155 aren't stable. Many people had problem with version 3.160 and 3.159. The integration between CCS and Proteus never was easy. Try to reinstall 3.155 and try it with PROTEUS.
Have you tried ver. 3.163? You can choose between 4 different Debug file formats: Standard .COD, ATD .MAP, Expanded .COD and COFF.
You can change the debug file format in Options -> Compiler properties...
Simulating partition 1 [D4486C1A]...
Animation started sucessfully...
PROSPICE Release 6.2 SP0 (C) Labcenter Electronics 1993-2002.
SPICE Kernel Version 3f5. (C) Berkeley University ERL.
Reading netlist...
Net VDD taken as alias for VCC
Net VSS taken as alias for GND
Reading SPICE models...
Building circuit...
Instantiating SPICE models...
[MICROCONTROLLER] PIC16 model release 6.01.00 simulating PIC16877 device.
[MICROCONTROLLER] Loaded 256 bytes of persistent EEPROM data.
[MICROCONTROLLER] Loading PIC COFF file 'Ex_sisr.COF'.
FATAL: [MICROCONTROLLER] Program or EEPROM data has invalid address [400E] for this device
The problem with COD I think is really more related to the optimisations used by the compiler that the OMF itself.
Specifically optimisiations with the call stack ( push and jump ) make it very difficult to track nestings and the lack of size of data type information means that, for example, you dont know the size of an array (or at least the documentation isn't at all useful in this regard).
The information may well be within the COD format but it;s not well documents or easily obtainable.