# Libraries

Until now, a small number of libraries are available, and they have been developed for my own needs, and/or compiler testing, so they are not always versatile.

Excepted for `rtl.slb`, `float.slb` and `lcd.slb` (which are directly written in assembly language) each library `x` is written in C, and related to 3 files:

- `x.c` : the source code (when written in C),
- `x.h` : the header file,
- `x.slb` : the source library file (compiled version of `x.c`

Obviously, sources files are not needed to use libraries, but can be useful because the `cpik` project is under development, so libraries are far from being stabilized.

Sources libraries are installed in `/usr/share/cpik/<version>/lib` and headers
in `/usr/share/cpik/<version>/include`.

However, source libraries generated from C files are not distributed because they depends on compiler and run time code version. You need to recompile the source code yourself.

As the compilation is really very fast, I generally include the source code of the libraries I use in my `pikdev` projects, so they are compiled with the rest of the application.

Subsections

- standard IO library
  - IO redirection
  - output functions
  - Conversion specifiers supported by the `printf()` family
  - input
  - Conversion specifiers supported by the `scanf()` family
- Standard math library
  - Trigonometric functions
  - Hyperbolic functions
  - Exponential, logarithmic and power functions
  - Nearest integer, absolute value, and remainder functions
- Standard stdlib library
  - System
  - Character processing
  - Conversions to/from strings
- rs232
- LCD
- AD conversion
- EEPROM read/write
- Timer 0