Catalina release 3.12 is a full release. You can install this over an existing version of Catalina, but it is recommended that you instead uninstall any previous Catalina release before installing, or install this release to a different location. 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 the following list: RELEASE 3.12 1. At the request of the maintainers of the “openspin” open source compiler, Catalina's version has been renamed from openspin to spinnaker. Catalina's version will always be compatible with Catalina's other components, and is currently 100% compatible with openspin (the necessary Catalina extensions to the preprocessor are enabled only when the -a command-line option is specified) but this may not always remain so in future as openspin continues to develop, so the renaming has been done now to avoid confusing users who may also use openspin. 2. The Catalina cache operation has been speeded up significantly (in most cases the program execution speed has more than doubled) by re-querying the XMM RAM only when the Kernel knows the page currently loaded in Hub RAM changes - otherwise use the Hub RAM copy. The previous behavior was intended to allow for the possibility of more than one cog executing code from XMM RAM, but this makes the executing speed far to slow to be useful. 3. Catalina now differentiates between base platforms and XMM add-on boards. In previous versions of Catalina, only one platform symbol could be specified on the command line, and this specified both the base platform and the XMM API required to use the XMM RAM on that platform. With the advent of many new "add-on" XMM boards (such as the Propeller Memory Card) that can be added to multiple base platforms, Catalina now allows both a base platform and an XMM add-on board to be specified. The XMM add-on board API will take precedence over any native XMM API. For instance, if you have a C3, but want to use the PMC as XMM RAM instead of the built-in C3 XMM RAM, you can now do so. For example: catalina hello_world.c -lci -C LARGE -C C3 <-- use C3 XMM RAM catalina hello_world.c -lci -C LARGE -C C3 -C PMC <-- use PMC XMM RAM The Hydra Xtreme (HX512) is also now defined as an add-on board, but for historical reasons this does not need to be specified separately when the base platform is either the Hydra or the Hybrid (although there is no problem with doing so). To support this new flexibility, there are now several types of board support files in the Catalina target directory, depending on the type of board: For a base platform (XXX) that has no XMM RAM, there are three files: XXX_DEF.inc <-- specifies base pin and clock definitions XXX_CFG.inc <-- specifies #defines for configuring plugins XXX_HMI.inc <-- specifies HMI options supported For an XMM RAM add-on board (YYY), there are three different files: YYY_XMM.inc <-- specifies XMM API functions YYY_XMM_DEF.inc <-- specifies XMM pin and memory definitions YYY_XMM_CFG.inc <-- specifies #defines for configuring plugins For a base platform (ZZZ) that also has built-in XMM RAM, there will be six files: ZZZ_DEF.inc <-- specifies base pin and clock definitions ZZZ_CFG.inc <-- specifies #defines for configuring plugins ZZZ_HMI.inc <-- specifies HMI options supported ZZZ_XMM.inc <-- specifies XMM API functions ZZZ_XMM_DEF.inc <-- specifies XMM pin and memory definitions ZZZ_XMM_CFG.inc <-- specifies #defines for configuring plugins This mechanism, although slightly more complex, allows XMM add-on boards to be "mixed and matched" with various base platforms - although in general it will still be necessary to adjust the pin definitions when moving an add-on board from platform to platform. Also, some XMM add-on boards include SD card sockets which may be used in place of existing SD Card sockets on the base platform (in some cases this is NECESSARY, since the pins used on the base platform are used for other purposes on the XMM add-on board). In such cases, the pin definitions on the base platform may need to be edited as well, although this can easily be done in a manner that allows for both the base platform SD socket and the possible XMM add-on board SD sockets. For example, here is the code in the QuickStart_DEF.inc file, which knows the pins used for the SD Card sockets for various common add-on boards: #ifdef PMC SD_DO_PIN = 1 ' Propeller Memory Card (override) SD_CLK_PIN = 7 ' Propeller Memory Card (override) SD_DI_PIN = 0 ' Propeller Memory Card (override) SD_CS_PIN = 4 ' Propeller Memory Card (override) #elseifdef RP2 SD_DO_PIN = 12 ' RamPage2 (override) SD_CLK_PIN = 13 ' RamPage2 (override) SD_DI_PIN = 14 ' RamPage2 (override) SD_CS_PIN = 15 ' RamPage2 (override) #else SD_DO_PIN = 0 ' Human Interface Board SD_CLK_PIN = 1 ' Human Interface Board SD_DI_PIN = 2 ' Human Interface Board SD_CS_PIN = 3 ' Human Interface Board #endif More could be added if needed. 4. Support has been added for the RamBlade3. This is enabled via the RAMBLADE3 symbol. See the file RamBlade3_README.TXT in the Catalina target directory for more details. 5. Support has been added for the Propeller Memory Card. This is enabled via the PMC symbol. See the file PMC_README.TXT in the Catalina target directory for more details. 6. Explicit support has been added for the QuickStart. This is enabled via the QUICKSTART symbol. See the file QuickStart_README.TXT in the Catalina target directory for more details. Note that the QuickStart was already supported in previous versions, but via the CUSTOM symbol. Now, it has been allocated a symbol of its own. 7. The pin definitions for the SUPERQUAD and RAMPAGE have been modified to suit the Propeller Platform (PP) since it is more likely these boards will be used with that platform than the previous default (C3). 8. Fixed a problem with the SD Plugin introduced with Catalina 3.11, which was not correctly clocking the SD card after raising the Chip Select. This could lead to the SD card plugin not working with some XMM memory add-on boards. 9. Fixed a problems with the Catalina File System call _close_unmanaged(), which was not correctly clearing out the file handle. This meant that after a small number of file handles had been used (8 in total), no more files could be opened since it looked like all the available file handles were still in use. 10.Fixed a problems with the special register names (e.g. DIRA, OUTA, etc) which meant that if constant values were assigned to them, they could be interpreted as cog addresses rather than constants in some circumstances. For instance, OUTA = 0 might assign the value contained in cog address 0 to OUTA rather than the constant value 0. This did not affect inline PASM, or the library functions (e.g. _dira(), _outa() etc). 11.Fixed a problem under Windows with catdbgfilegen not being compiled as a "static" binary, which meant it would throw an error about a missing DLL when a program was compiled with the "-g" flag unless MinGW was included in the PATH environment variable. 12.Fixed a problem with the "tiny" library, which was including a copy of the stdio function "puts". This conflicted with the version of puts in the standard C library if puts was used in a program. 13.Added a new tutorial document called "Selecting Catalina Options" and two demo programs, written by Mike Arnautov (http://www.mipmip.org): sumeria.c chimaera.c The document describes how to compile these programs using various different Catalina memory models and load options. 14.The Propeller Memory Card (PMC) is also compatible with the DEMO board, so Demo_DEF.inc has been upgraded to know about the SD Card on the PMC. To use the PMC with the Demo board, just add BOTH symbols to the command line. For example: catalina program.c -lcx -C DEMO -C PMC 15.Fixed a bug in the TRIBLADEPROP XMM API, which resulted in XMM_IncAddr being undefined when programs were compiled for CPU_2.