- Fix incompatibilities with Windows 7.
The popen POSIX standard function does not work properly under windows 7.
This version contains a workaround that fixes this issue.
- Suppress name clash between cpik-specific and device-specific symbols.
Some uppercase symbols defined in .inc device files were the same than symbols used by cpik and the cpik run-time library.
This problem was very rare, but a few devices were affected.
Because of new naming conventions now used by cpik, the name clashes are made impossible
Warning: the new naming convention affects the code generator, the cpik prolog code (cpik.prolog), the floating point library (float.slb), the run-time library (rtl.slb) and many headers. It makes any previously compiled code incompatible with new one,
thus the existing applications must be totally recompiled (including the IO library) to become compatible with this version of cpik.
- Several bug fixes concerning issues reported by
Pascal Niklaus (Thanks Pascal !)
- (a)
- Incorrect parsing of character constants containing an hexadecimal value
- (b)
- Spurious error message when and expression was split by a line-feed at a "wrong" place.
- (c)
- Undetected programming errors concerning structures.
- (d)
- Missing W register value tracking causing a wrong code generation
- Several instructions have been added in order to allow a better support of data tables located in ROM.
The non-standard instructions
__data8__
, __data16__
, __data32__
, __dataf__
and __datat__
allow to insert
integer, floating point or text data in ROM. These new instructions are used by new macros in the rom.h header.
The run-time support of these macros has been improved.
- In case of error during a compilation, the .slb output file is not generated anymore.
This simple feature suggested by Pascal Niklaus avoids to build an application from a broken code.
Moreover, the output of the preprocessor (.c.c file) is now removed after each compilation.
- New -k option.
This option, related to the previous item asks the compiler to keep the output file
generated by the preprocessor (.c.c file), and the object file (.slb file), even when the compilation fails. The default behavior
of the compiler is to remove these files.
- New string and sort libraries,
Directly written in assembly language by P. Niklaus, these libraries are provided as two .slb files.
The first one contents 9 frequently used functions implemented in a compact and fast way. The second library
contains 3 different sort algorithms.
- Modified devices files,
The #defined symbols that were provided in the device files (ie: p18xxxx.h)
to access register's field using the nonstandard bit-field extension of cpik have been removed.
This decision was necessary because of name clashes in certain header files. For this reason,
use the XXXbits.MEMBER syntax instead of the XXX._MEMBER one to refer to the MEMBER member of the XXX register.
Note that the former is the Microchip's standard way to use register.
Because this decision may break existing code, the old definitions are still available in the <device_obsolete> directory in order to allow a smooth transition to the unique way to access register bit-fields.
Alain Gibaud
2015-07-09