Changes since the last manual: Users that have old code with expresions of the form: *(&data + i) need to change them to: *((int8 *)(&data) + i) A compiler change was made to be ANSI compliant. Use OPTIONS > EDITOR OPTIONS > DISPLAY > CLASSIC MENUS to replace the ribbons with traditional menus in the IDE. #ROM has a new option to put a checksum value in ROM. A value will be put into this location such that the sum of all ROM locations equals 0x1248. #rom getenv("Program_memory")-1 = CHECKSUM The PORT_x_PULLUPS function allows for a second parametter for devices that have a pulldown option. The default value is 0. Example: port_b_pullups( 0xF0, 0x0F ); // Bits 4-7 are pullup and Bits 0-3 are pulldown #USE I2C has a new option MASK=value where value is a mask that can be applied to the hardware I2C address match. This is only available on some chips (like 18FxxK20). A new function SET_SLOW_SLEW_x(value) is available for chips with a slew select option. For example: set_slow_slew_b(TRUE); The CCS compilers traditionaly used the C keyword CONST to locate data in program memory. ANSI uses this keyword to specify a read only data item. The version 4 compiler has a new method of storing data in program memory for chips that allow program memory to be read. These three storage modes may be set directly using one of the following qualifiers: ROMI Traditional CCS method to store in ROM optimized for access from indexed arrays ROM New method to save data in ROM optimized for when the user needs pointers to the data _READONLY Marks the data item as read only, defaults to RAM (like ANSI wants) By default the CONST keyword is the same as ROMI. The CONST behavior may be changed with any of the following: #device CONST=READ_ONLY #device CONST=ROM #device CONST=ROMI Examples: char rom commands[] = {"put|get|status|shutdown"}; int32 add32( long _readonly * a; long _readonly * b ); char const hex[16] = "0123456789ABCDEF"; char rom * list[] = {"red","green","blue"}; ------------------------------------------------------------------------------------------- #device compilation mode differences: Default is CCS4: Pointer size is set to *=16 if the part has RAM over 0FF. Mode ANSI: Default data type is SIGNED all other modes default is UNSIGNED Compilation is case sensitive, all other modes are case insensitive Pointer size is set to *=16 if the part has RAM over 0FF. Mode CCS2 and CCS3: var16 = NegConst8 is compiled as: var16 = NegConst8 & 0xff (no sign extension) Pointer size is set to *=8 for PCM and PCH and *=5 for PCB. The overload keyword is required. The ROM keyword is _ROM for these versions. The WDT/NOWDT/NOLVP fuses are not automatically set by the compiler for these versions. Mode CCS2: onebit = eightbits is compiled as onebit = (eightbits != 0) all other modes compile as: onebit = (eightbits & 1) The default #device ADC= is set to the resolution of the part, all other modes default to 8.