Shop OBEX P1 Docs P2 Docs Learn Events
Catalina 3.16 is now available — Parallax Forums

Catalina 3.16 is now available

Catalina 3.16 is now available on sourceforge - https://sourceforge.net/projects/catalina-c

Catalina 3.16 is the latest release of Catalina supporting the Propeller 2. It replaces release 3.15.4, and is now validated on the P2 for all memory model, library, optimization level and floating point combinations. It is also validated for some P1 platforms. This release adds automated validation, as well as some clean up and many more bug fixes. Although it is primarily intended for those experimenting with or developing for the Propeller 2, it now also adds some significant Propeller 1 bug fixes - the first release since 3.13.2 to do so.

Catalina 3.16 includes both Windows and Linux releases.

If you have a Propeller 1, you might consider upgrading to thie release. This release will be supported for both the P1 and the P2.

Here is an extract from the README.WhatsNew file:
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.16

1. Added Lua scripting capabilities to the payload and blackbox programs.
This is primarily done to assist validation (see next point).

2. Added a new "validation" subdirectory, with scripts and programs that can
do automated validation of a Propeller platform. This feature makes heavy
of the new Lua scripting feature. See the README.Validation file in that
folder for more details.

3. Added two new environment variables - PAYLOAD_PORT and BLACKBOX_PORT - that
can be used to specify the port to use for the payload program loader and
the blackbox debugger. This is especially useful when validating.

4. Added the P2_EVAL platform to the "build_catalyst" script (this script is
primarily intended to be used from Code::Blocks), and also added the
ability to specify additional options when building catalyst. Also,
building Catalyst now first deletes any existing binaries from the
various Catalyst subdirectories - this prevents the possibility of
loading old P2 binaries after subsequently recompiling Catalyst for a P1.

5. Removed support for the Homespun spin compiler. The Spinnaker Spin
compiler has been the default for the P1 for many releases, and is now
the only Spin compiler supported for the P1 (p2asm is used for the P2).

6. The size of the programs that the Pascal Interpreter can load and run has
been reduced to 50,000 bytes to enable it to run on more P1 XMM platforms.
It is 100,000 bytes on the P2.

7. The library variants (libc, libci, libcx, libcix) have changed a little
in this release. Now, streams are fully implemented in libc, libcx and
libcix, but still only implemented for stdin, stdout and stderr in libci.
The reason for this is that some functions (such as vsprintf) did not
work in libc because they relied on streams internally. This limitation
saved a few hundred longs, but may have led to unexpected results. Now,
only libci has this limitation, in order to help reduce program sizes.

Note that the previous library characteristics can be reinstated by
editing the Makefile (Makefile.mgw in Windows) in the source\lib
subdirectory, and editing the lines that look like this:

libc: ALWAYSRUN
$(MAKE) -C stdio clean
$(MAKE) -C catalina clean
$(MAKE) -C catalina_io clean
$(MAKE) -B -C catalina CCFLAGS="$(CCFLAGS) -D__CATALINA_SIMPLE_IO=0 ..."
$(MAKE) -B -C catalina_io CCFLAGS="$(CCFLAGS) -D__CATALINA_SIMPLE_IO=0 ..."
$(MAKE) -B -C stdio CCFLAGS="$(CCFLAGS) -D__CATALINA_SIMPLE_IO=0 ..."
$(MAKE) -C libc all

Modify the lines to say "-D__CATALINA_SIMPLE_IO=1" instead of 0 and then
rebuild the libraries using the "build_all" script in that directory.

8. Fixed a bug in the floor() and ceil() functions when using libmb. The
functions worked ok when using libm or libma. This problem affected both
the Propeller 1 and the Propeller 2.

9. Fixed a problem in various floating point functions (e.g. sin(), cos(),
log(), log10(), exp() etc) when using libma or libmb. The functions worked
ok when using libm. This problem affected the Propeller 2 only.

10. Added "go" as a synonym for "continue" in the BlackBox debugger.

11. Allowed a pointer variable to be used as an address in the "read hub"
command in the BlackBox debugger - e.g. "read hub my_pointer".
Previously the value of such a pointer had to first be printed using a
"print" command, and the result manually entered in the "read hub"
command.

12. Fixed some problems when printing or updating variables in the BlackBox
debugger:

- Dereferencing pointers when printing variables did not always work,
especially when the pointer was within a structure. Now, BlackBox will
not attempt to print nested pointers to structures as structures - it
will only print the pointer value.

- Updating 1-byte and 2-byte variables did not always work (4-byte worked).

- Character arrays were only being printed if the type of the array element
was type "char" (i.e. not type "unsigned char" or type "uint8_t" etc).

- Only the first field of a local structure or union (i.e. one in the
current frame) was being printed correctly.

13. Fixed a problem with the BlackBox debugger P2 NATIVE support - breakpoints
were being deleted after their first use.

14. Improved the reliability of reading and writing to SD Cards. Now, Catalina
will retry failed reads and writes up to 9 times. This can help prevent
SD card corruptions, especially on SD cards that falsely indicate a write
is complete but then will not respond correctly for some time afterwards
to a subsequent read requests.

15. There is a new "demos\dosfs" subdirectory that contains a test program for
the DOSFS file system. This test program has its own version of the DOSFS
file system, to allow both the test program and the DOSFS file system to
be debugged using the BlackBox debugger. A version of this test program
is also included in the validation suite.

16. Fixed a bug in sbrk() when programs were compiled in TINY mode on the P2.
The wrong version of sbrk() was being included in the library.

17. The "Reset_CodeBlocks" script, which copies the codeblocks "default.conf"
configuration file to the users directory, was erroneously copying a
Windows version of the file even on Linux. The Linux version of the script
now correctly copies a Linux version of the file.

18. Fixed a bug in the Catalina Optimizer under Linux, which had not been
updated for the new default location (/opt/catalina), so it would fail
unless the LCCDIR environment variable had been explicitly set.

19. Added a '-t' option to BlackBox, to allow a timeout to be specified when
attempting to open a comms port. The default timeout was 500ms, but Linux
sometimes seems to need a timeout of up to 1000ms to open a port
successfully.

Comments

  • jmgjmg Posts: 15,148
    Wow, rapid progress.
    automated validation sounds nice.

    You should change your tag line from "Catalina - a FREE ANSI C compiler for the Propeller" :)
    To include reference to Prop 1 , Prop 2 and any other languages..
  • Cluso99Cluso99 Posts: 18,069
    Excellent work Ross :)
  • RossHRossH Posts: 5,347
    jmg wrote: »
    Wow, rapid progress.
    automated validation sounds nice.

    You should change your tag line from "Catalina - a FREE ANSI C compiler for the Propeller" :)
    To include reference to Prop 1 , Prop 2 and any other languages..

    Yes, the automated validation is very useful ... but it also uncovered a rather embarrasing number of errors in the previous releases, which is why this one took so long! :)

    And yes, I intend to update the blurb, but I was intending to wait till I get a chance to do a major new P1/P2 release, which will include substantially updated documentation. This will be a new stream of releases starting with Catalina 4.0. There are a few things I still have to do before that release - full cordic maths, new standard libraries, more plugins etc etc.

    Ross.
  • cgraceycgracey Posts: 14,133
    Sounds really good, Ross!
  • RaymanRayman Posts: 13,900
    Ross, I'm trying to remember something...
    Does code generated with Catalina have to automatically have some kind of license?
  • RossHRossH Posts: 5,347
    Rayman wrote: »
    Ross, I'm trying to remember something...
    Does code generated with Catalina have to automatically have some kind of license?

    The short answer is "No".

    The slightly longer answer is that to just release a binary application built with Catalina, all you have to do is acknowledge the use of the Catalina Target Package. However, if you use the C Library components (you don't have to) you also need to acknowledge that. The C library is licensed under a permissive "Modified BSD License". Neither the Catalina Target Package nor the C libraries are licensed under the type of viral "copy-left" license that would require you to release your source code or impose other onerous licensing conditions on your application.

    Incorporating the following statement somewhere in your application documentation would satisfy all the requirements:
    "This application incorporates components provided as part of the Catalina C Compiler for the Parallax Propeller, and components provided as part of the Amsterdam Compiler Kit.

    The Amsterdam Compiler Kit is Copyright (c) 1987, 1990, 1993, 2005 Vrije Universiteit, Amsterdam, The Netherlands.
    All rights reserved.

    Redistribution and use of the Amsterdam Compiler Kit in source and
    binary forms, with or without modification, are permitted provided
    that the following conditions are met:

    * Redistributions of source code must retain the above copyright
    notice, this list of conditions and the following disclaimer.

    * Redistributions in binary form must reproduce the above
    copyright notice, this list of conditions and the following
    disclaimer in the documentation and/or other materials provided
    with the distribution.

    * Neither the name of Vrije Universiteit nor the names of the
    software authors or contributors may be used to endorse or
    promote products derived from this software without specific
    prior written permission.

    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS, AUTHORS, AND
    CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
    INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
    MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
    IN NO EVENT SHALL VRIJE UNIVERSITEIT OR ANY AUTHORS OR CONTRIBUTORS BE
    LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
    BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
    WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
    OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
  • RaymanRayman Posts: 13,900
    Thanks! That sounds good. I was afraid anything I compiled would be automatically GPL'd.
    This sounds all reasonable...
Sign In or Register to comment.