Catalina release 3.5 is a full release. You should delete any previous Catalina release before installing, or install this release to a different location. Note that for the first time in many releases, Catalina 3.5 includes some changes to the basic code generator - this means that programs and libraries compiled with previous versions of Catalina will have to be recompiled - you cannot mix code generated with Catalina 3.5 with code generated by prior releases of Catalina. If you are installing under Linux, you should execute the following command to set your permissions correctly after installing (this command is a script in the Catalina bin directory): Set_Linux_Permissions The following changes have been made since the previous release of Catalina. If you have not used a previous release of Catalina, you can ignore this list: RELEASE 3.5 1. Fixed some typos in the Catalina Reference manual - thanks to Ray Rodrick. 2. Added new library functions to access more of the Propeller special registers (frqa,frqb,ctra,ctrb,phsa,phsb,vscl,vcfg) and also fixed some of the existing functions (outa,outb,dira,dirb) to prevent toggling outputs while updating their value - thanks to Ted Stefanik. 3. A function to create a directory has been added (i.e. _create_directory(), documented in catalina_fs.h). The path to the new subdirectory must already exist - e.g. if you want to create "\dir1\dir2\dir3" then the directory "\dir1\dir2" must already exist. There is currently no way to delete a subdirectory. 4. A section on file system support, describing the various means of accessing SD Card based file systems (i.e. via the standard C "stdio" functions, or via managed or unmanaged Catalina file system functions) has been added to the Catalina Reference Manual. 5. The default platform (if none is specified on the command line) is now the CUSTOM platform, which comes preconfigured for a Propeller with a 5Mhz clock and not much else. The default HMI option for this platform is the PC HMI, so this platform is suitable for nearly ANY propeller with a 5Mhz crystal, including the Parallax QuickStart board or various Gadget Gangster boards. The CUSTOM platform is now preconfigured in ALL the target packages provided (i.e. target, basic and simple) and no longer requires any further editing for Propellers that use a 5Mhz clock, no XMM RAM, and only serial input and output capabilities. 6. Payload now has an interactive mode, enabled via a new "-i" switch. When enabled, the Payload program turns into an interactive terminal emulator immediately after the program has been loaded. Programs compiled with the PC HMI option will therefore be able to be more easily used, and no output will be lost while the user starts or enables their terminal emulator after downloading a new program. 7. Code::Blocks Tools menu has been updated to add a new tool called "Download to Hub RAM and Interact", which enables the new "interactive" mode of the Payload program, acting as a terminal emulator. 8. The Code::Blocks Catalina project wizard has been enhanced to also allow the HMI option to be selected. The defaults have now changed - the CUSTOM platform is now the default, and the PC HMI option is now the default. 9. The Catalina QuickStart guide now uses the PC HMI as the default HMI option when building the first demo, and the new "interactive" mode of Payload. This means the demo should work on nearly any Propeller platform. 10. Fixed a bug in the standard C function "ungetc" that occurred when using the normal non-extended libraries (-lc or -lci). This bug also affected scanf and may have affected other stdio library functions. It did not affect programs that used the extended libraries (-lcx or -lcix) 11. Catalina now generates less Homespun messages on each compile. Most of the messages were not useful, so it now only prints a message to indicate which Spin modules it is including in the final executable (this is quite useful in verifying that the command-line options have been correctly specified). To generate all the previous information messages, use the -v switch. 12. Several minor changes have been made to the Catalina virtual machine which reduces the code size and improves the performance of all kernels slightly. For programs that do not require floating point, the speed improvements in the ALTERNATE kernel are quite significant. Note that to use the ALTERNATE kernel for programs that don't need floating point support, the NO_FLOAT symbol should also be defined (to prevent Catalina including the floating point plugins that make up for the ALTERNATE kernel missing the "in-kernel" floating point capabilities). For example: catalina hello_world.c -lci -C ALTERNATE -C NO_FLOAT 13. Addition of the new "service-oriented" registry. A full set of registry manipulation functions provided for use from Spin programs has been added. Catalina provides Spin functions to access the three different registry layers, but by default only the "layer 1" functions are included in full. If you need access to the full "layer 2" registry functions (i.e. the "cog-based" registry) from Spin, define the symbol FULL_LAYER_2 on the command line. If you need access to the full "layer 3" registry functions from Spin (i.e. the new "service-based" registry), define the symbol FULL_LAYER_3 on the command line. Access from C to all layers is always included. 14. More tidying up and simplification in various target files. The addition of the new "service-oriented" registry (in particular the way memory is allocated during startup) has significantly simplified the way plugins are set up and loaded from Spin. 15. Added new service-oriented registry functions to catalina_plugin.h. Also, for more consistency between C programs and Spin programs, the names of the C plugin types has been prefixed with LMM_ (e.g. HMI -> LMM_HMI). Any C programs that use these names will need to be updated. 16. Renamed the 'simple' target to 'minimal', since this is more descriptive of its intent. 17. Fixed a bug when using the external floating point plugins from multiple kernels executing C programs concurrently. 18. The new "service-oriented" registry incorporates automatic management of access to plugins from multiple programs. This is enabled automatically if the multithreaded kernel is used. You can enable it manually by defining the symbol PROTECT_PLUGINS on the command line. This would be required (for example) if you were using the default single-threaded kernel, but planned to dynamically load additional kernel cogs. 19. Added a new command line option ('-C') to define 'Catalina' symbols (i.e. symbols that affect the Spin target files). Previously this was done using -D, but -D is now reserved for defining C language symbols. The same change has been made to catbind (but note that Homespun still uses -D). When you define a Catalina symbol "XXX", the compiler also defines the C symbol "__CATALINA_XXX" - this can be very handy for accessing the target configuration options from within C programs. So there are two ways to define symbols: -C is for 'Catalina' symbols (i.e. symbols that affect the Spin target) -D is for 'normal' symbols (i.e. that affect only the C program). For example catalina hello_world.c -lci -ltiny -C PC -D printf=tiny_printf This would define the symbol "PC" in the Spin target files, and the symbols "__CATALINA_PC" and "printf" in the C program. 20. Fixed a problem in the floating point plugins (Float32_A_Plugin.spin and Float32_B_Plugin.spin). There was an error in the _FCmp function - it worked ok internally, but was not returning the result correctly when called from outside the cog. This would not have caused a problem unless a program was manually invoking this request, since prior to Catalina 3.5, all kernels used a built-in version of _FCmp that worked correctly. 21. Added library libtiny, based on Ted Stefanik's amazing library. To use this library add -ltiny to your command line (in addition to the standard C library included by -lc, or -lci etc). For example: catalina hello_world.c -lc -ltiny The tiny library provides smaller versions of the stdio functions printf, scanf, sprintf and sscanf, which are generally compatible with their stdio equivalents, but much smaller. For even smaller programs, there is also a REALLY small version of printf, (called trivial_printf) which can be enabled by using a command similar to the following: catalina hello_world.c -lci -ltiny -C printf=trivial_printf See the header file tinyio.h for more details. Note that the libtiny library fixes a problem in libc and libci that does not support sscanf. 22. Added the 4 Port Serial plugin, and a new library to access it. To use this new plugin, simply add -lserial4 to the command line. For example: catalina test_serial4.c -lci -C NO_HMI -lserial4 See the file "catalina_serial4.h" for a definition of the functions provided to access the serial ports. To configure the serial ports, edit the Extras.spin file. A section on serial support has been added to the Catalina Reference manual. 23. It is no longer necessary to define the THREADED symbol on the command line to enable the use of the multithreading kernel. Instead, simply include the threads library - the multithreaded kernel will be selected automatically. For example: catalina test_multiple_threads.c -lci -lthreads 24. Made the PC keyboard buffer larger (and configurable!). Thanks to Ray Rodrick for this enhancement. 25. Several command line symbols have been eliminated, since Catalina can infer what is required by the inclusion of various libraries. Such "inferences" are implemented in the various target files, and can be modified if required. The following "inferences" already existed in previous versions: -lma => automatically includes the "Float A" plugin -lmb => automatically includes the "Float A" & "Float B" plugins -lmci => automatically includes the "SD Card" plugin -lmcix => automatically includes the "SD Card" plugins The following new "inferences" have been added: -lthreads => automatically selects the threaded kernel -ltiny => automatically renames printf, scanf, sprintf & sscanf -lserial4 => automatically includes the "4 port serial" plugin -lgraphics => automatically includes the "CGI" plugin This has eliminated the need for the old THREADED and GRAPHICS symbols. 26. Added mouse driver to the C version of the Parallax graphics demo. Also, the batch file now only builds one version at a time, as it became too cumbersome for the batch file to figure out all the possible combinations when building various versions, so it now only builds one and you have to explicitly tell it the options you want. 27. Added a DISABLE_REBOOT symbol, which prevents a C program from rebooting automatically should it ever exit the main function. Instead, it just enters an infinite loop. Use it by defining the symbol on the command line. For example: catalina hello_world.c -lc -C DISABLE_REBOOT 28. The CUSTOM platform in each of the target directories (target, basic, minimal) is now configured appropriately for a Parallax QuickStart board. 29. Updated the "basic" target package to include the new 4 port serial driver. Since the basic target package is intended for deeply embedded applications, it does not include any HMI plugins (including the normal serial PC HMI plugin) - but serial communications is quite a common requirement for embedded applications, and the 4 port serial driver is very appropriate. 30. The PC and PROPTERMINAL HMI options now use the value of SIO_BAUD defined in the platform definition file (e.g. HYDRA_DEF.inc) instead of being hardcoded at 115200 baud. All this does is make it simpler to change the baud rate if required, since it only needs to be changed in one place. 31. The default size for any XMM program is now 16Mb.