************************ Compiler library modules ************************ The compiler provides several "built-in" library modules with useful subroutine and variables. Some of these may be specific for a certain compilation target, or work slightly different, but some effort is put into making them available across compilation targets. This means that as long as your program is only using the subroutines from these libraries and not using hardware- and/or system dependent code, and isn't hardcoding certain assumptions like the screen size, the exact same source program can be compiled for multiple different target platforms. Many of the example programs that come with Prog8 are written like this. You can ``%import`` and use these modules explicitly, but the compiler may also import one or more of these library modules automatically as required. .. caution:: The resulting compiled binary program *only works on the target machine it was compiled for*. You must recompile the program for every target you want to run it on. syslib ------ The "system library" for your target machine. It contains many system-specific definitions such as ROM/kernal subroutine definitions, memory location constants, and utility subroutines. Many of these definitions overlap for the C64 and Commander X16 targets so it is still possible to write programs that work on both targets without modifications. conv ---- Routines to convert strings to numbers or vice versa. - numbers to strings, in various formats (binary, hex, decimal) - strings in decimal, hex and binary format into numbers textio (txt.*) -------------- This will probably be the most used library module. It contains a whole lot of routines dealing with text-based input and output (to the screen). Such as - printing strings and numbers - reading text input from the user via the keyboard - filling or clearing the screen and colors - scrolling the text on the screen - placing individual characters on the screen diskio ------ Provides several routines that deal with disk drive I/O, such as: - show directory - display disk drive status - load and save data from and to the disk - delete and rename files on the disk floats ------ Provides definitions for the ROM/kernel subroutines and utility routines dealing with floating point variables. This includes ``print_f``, the routine used to print floating point numbers. graphics -------- High-res monochrome bitmap graphics routines: - clearing the screen - drawing lines - drawing circles and discs (filled circles) - plotting individual pixels math ---- Low level math routines. You should not normally have to bother with this directly. The compiler needs it to implement most of the math operations in your programs. cx16logo -------- A 'fun' module that contains the Commander X16 logo and that allows you to print it anywhere on the screen. prog8_lib --------- Low level language support. You should not normally have to bother with this directly. The compiler needs it for verious built-in system routines.