Shop OBEX P1 Docs P2 Docs Learn Events
Catalina 3.2 — Parallax Forums

Catalina 3.2

RossHRossH Posts: 5,471
edited 2011-10-09 05:51 in Propeller 1
UPDATE: Catalina 3.3 has been released. See here.

All,

Release 3.2 of Catalina is now available on SourceForge (here!). Presently, only the Windows version is available. I will post the Linux versions (32 and 64 bit) in the next few days.

Release 3.2 is a full release of Catalina. It contains various new features, improvements and bug fixes. See the file README.WhatsNew (attached) for more details.

The main change in 3.2 is that the Windows "one touch" installer that installs both Catalina and Code::Blocks is now official! This will now be the only way Catalina is released on Windows ... and it makes installing both Catalina and Code::Blocks an absolute breeze!

Also, with this release Catalina is now fully integrated into Code::Blocks. There is now no need to ever resort to using the Catalina command line again (although it will of course remain available). Everything can now be done from within Code::Blocks, including building all utilities and demo programs (even Catalyst). Even confirmed IDE skeptics (like me) might change their minds once they see how easy it is to write, compile, download and debug C programs on the Propeller using Catalina and Code::Blocks!

New Code::Blocks workspaces and project files are provided for all the non-trivial Catalina demo programs, including the Catalyst demo programs such as the vi text editor, the lua scripting language, the jzip Infocom game interpreter, Super Star Trek etc.

Also, Catalina and Code::Blocks now form a completely stand-alone development environment for Propeller C programs! There is no need to install any other software (such as MinGW or MSYS or make) to build or run any C programs on the Propeller. While the existing build_all scripts and makefiles which used to be used to build some of the more complex demos remain, they are no longer required since everything can now be done using the Code::Blocks internal build system - which is much simpler than make to use (so simple that most people may never even realize they are using it!).

Here is a brief overview of the other significant changes:
  • Multi-cog programs and combined C/Spin programs are much simpler to create, since all the details have now been rolled up into two new library functions. In addition to the basic _coginit function, and the various thread functions (which were already fully integrated into the thread library) there are two new ways to start programs in another cog:
    • _coginit_C - start a C void function in a dynamic kernel cog
    • _coginit_Spin - start a Spin program in a spin interpreter cog
  • The Payload loader now auto-detects all the necessary ports automatically - even on the Hydra and Hybrid platforms where a special serial mouse cable is required to load programs into XMM RAM. It wasn't documented at the time, but a previous Catalina release (3.0.3) also added the capability for BlackBox to detect the debug port automatically - so now for most users there is never any need to mess about figuring out what serial ports to use!
  • The Windows installer now creates links to all Catalina documents and Code::Blocks work spaces in the Windows Start menu - so now all Catalina documents and demo programs are available at the click of a mouse!
Ross.
«134

Comments

  • Cluso99Cluso99 Posts: 18,069
    edited 2011-08-28 00:43
    Congratuations Ross. This is fantastic news for us windoze users who don't like command lines any more.
  • RsadeikaRsadeika Posts: 3,837
    edited 2011-08-28 02:55
    Now you have my attention! I just installed it, with no installation problems at all. I will read through some of the documentation, and try some programs before I start exposing my opinion of the product, which does not really amount to anything. So far it looks like the software might have some potential.

    Thanks

    Ray
  • RossHRossH Posts: 5,471
    edited 2011-08-28 02:59
    Thanks Cluso!

    All,

    Something I keep tripping up on ... Code::Blocks does not enable autocompletion for C library functions unless you explicitly set the include path. To do this, open Code::Blocks and select the menu item Settings -> Compiler and Debugger ... Then, in the dialog box that opens, make sure the selected compiler is the Catalina C Compiler, select the Search Directories tab, and add an entry for %LCCDIR%\include, as shown below:

    completion.png


    You only need to do this once. Next time you open a project, the auto-completion should include all C library functions. Very convenient!

    Ross.
    762 x 765 - 50K
  • TonyWaiteTonyWaite Posts: 219
    edited 2011-08-28 03:45
    Outstanding - actually *compelling*!
    Thank you,
    T o n y
  • SapiehaSapieha Posts: 2,964
    edited 2011-08-28 03:49
    Hi Ross.

    Today I started to see if I can compile anything --- And have problems FIND Catalina compiler on my installation.

    Look on attached picture



    Ps before I only tested if Installer install files but not tested functions (sorry)
    RossH wrote: »
    Thanks Cluso!

    All,

    Something I keep tripping up on ... Code::Blocks does not enable autocompletion for C library functions unless you explicitly set the include path. To do this, open Code::Blocks and select the menu item Settings -> Compiler and Debugger ... Then, in the dialog box that opens, make sure the selected compiler is the Catalina C Compiler, select the Search Directories tab, and add an entry for %LCCDIR%\include, as shown below:

    completion.png


    You only need to do this once. Next time you open a project, the auto-completion should include all C library functions. Very convenient!

    Ross.
  • RossHRossH Posts: 5,471
    edited 2011-08-28 04:04
    Sapieha wrote: »
    Hi Ross.

    Today I started to see if I can compile anything --- And have problems FIND Catalina compiler on my installation.

    Look on attached picture

    Ps before I only tested if Installer install files but not tested functions (sorry)

    Hi Sapieha,

    Can you tell me what version of Code::Blocks that is? From within Code::Blocks, select Help->About... Here is what I see:

    help_about.png


    I think you must be running a different version of Code::Blocks, since your compiler plugin does not even seem to contain the Catalina C compiler. Perhaps you have another version of Code::Blocks installed as well? Catalina will leave that version alone if you have - you have to start the one installed in the Catalina program group in the Start menu (or alternatively install the new Compiler plugin manually in your existing Code::Blocks installation).

    Also, you can try Help->Plugins->Compiler ... Here is what I see:
    help_plugin_compiler.png


    wPNspAzGi+RcgAAAABJRU5ErkJggg==

    wPNspAzGi+RcgAAAABJRU5ErkJggg==
    352 x 380 - 11K
    464 x 496 - 124K
  • SapiehaSapieha Posts: 2,964
    edited 2011-08-28 04:13
    Hi Ross.

    Thanks.

    With You question I found problem.
    In Catalina DIR I have 2 versions of CodeBlocks.

    I have NOT deleted old files in this DIR before installing Catalina by Installer - And Now in Catalina ROOT I have one CodeBloks that are older and in Catalina\Bin\CodeBloks other one that is correct and find Catalina compiler correctly.
  • RossHRossH Posts: 5,471
    edited 2011-08-28 04:17
    Sapieha wrote: »
    Hi Ross.

    Thanks.

    With You question I found problem.
    In Catalina DIR I have 2 versions of CodeBlocks.

    I have NOT deleted old files in this DIR before installing Catalina by Installer - And Now in Catalina ROOT I have one CodeBloks that are older and in Catalina\Bin\CodeBloks other one that is correct and find Catalina compiler correctly.

    Hi Sapieha,

    You can either delete the old version of Code::Blocks, or just ignore it - it won't cause any problems having two versions. However, if you have nothing in the Catalina directory you want to save, I'd recommend simply deleting the whole directory and then installing the new version again.

    Ross.
  • RsadeikaRsadeika Posts: 3,837
    edited 2011-08-28 05:13
    So, here is my first experience with GUI Catalina. I went through and did the "hello, world!" example. Everything went as expected until the very end. When I did the make, I did not see anything about release in there, and chose the 'Download to hub RAM' selection, there were no errors, but, where was I expected to see "hello, world!" being displayed? I was waiting for some kind of terminal screen to pop up, and display the printf statement, but that did not happen. What did I forget to do?

    In the docs, I did not find a listing of built in Propeller functions, i.e. pause, high, low, ..., etc, am I to assume those functions have to be built? I also noticed that you do not have a selection for the Gadget Gangster USB board, so I chose hybrid, should I have chosen something else? At the moment I am using the GG board that has the built in RTC module, and an SD card, I guess I am expecting a bit of trouble when I try to access the RTC, and SD card.

    So far the experience has been very positive, I expect to see some positive outcomes out of this software, in other words I have not run into any major stumbling blocks. Back to some programming in C...

    Ray
  • RossHRossH Posts: 5,471
    edited 2011-08-28 05:54
    Rsadeika wrote: »
    So, here is my first experience with GUI Catalina. I went through and did the "hello, world!" example. Everything went as expected until the very end. When I did the make, I did not see anything about release in there, and chose the 'Download to hub RAM' selection, there were no errors, but, where was I expected to see "hello, world!" being displayed? I was waiting for some kind of terminal screen to pop up, and display the printf statement, but that did not happen. What did I forget to do?

    In the docs, I did not find a listing of built in Propeller functions, i.e. pause, high, low, ..., etc, am I to assume those functions have to be built? I also noticed that you do not have a selection for the Gadget Gangster USB board, so I chose hybrid, should I have chosen something else? At the moment I am using the GG board that has the built in RTC module, and an SD card, I guess I am expecting a bit of trouble when I try to access the RTC, and SD card.

    So far the experience has been very positive, I expect to see some positive outcomes out of this software, in other words I have not run into any major stumbling blocks. Back to some programming in C...

    Ray

    Hi Ray,

    By default, the output will be displayed on the TV output. However, it is likely that the HYBRID board you chose does not have the same pinouts as the Gadget Gangster board. I don't know anything about that particular board (I don't own one) - but if you can point me to some documents about it (all I really need is its clock speed and pin configuration), then I willl post you configuration files suitable for it. Or you may find it is equivalent to one of the other supported boards (perhaps the DEMO board?)

    Or you can configure the CUSTOM platform yourself. The two files you may need to modify (Custom_DEF.inc and Custom_HMI.inc) are in the target directory - just open these files in Code::Blocks (or in any text editor) and it should all be self-explanatory. Actually, you can ignore the Custom_HMI.inc file, since by default this file just enables all possible HMI options - you only ever need to modify this if you have some unusual HMI drivers, or need to disable some of them.

    So really you only need to modify the Custom_DEF.inc file (the section you need to modify is quite small - I have attached it below). Then you should choose the CUSTOM board as your Propeller platform and recompile your project.
    '
    ' Comment out the following line when you have configured the Custom platform:
    '
      ERROR : CUSTOM PLATFORM HAS NOT BEEN CONFIGURED!
    '
    '===============================================================================
    '
    ' Custom platform General definitions:
    ' 
    '===============================================================================
    
    KBD_PIN    = -1                 ' BASE PIN  (Custom)
    MOUSE_PIN  = -1                 ' BASE PIN  (Custom)
    TV_PIN     = -1                 ' BASE PIN  (Custom)
    VGA_PIN    = -1                 ' BASE PIN  (Custom)
    SD_DO_PIN  = -1                 ' Custom has no SD Card
    SD_CLK_PIN = -1                 ' Custom has no SD Card 
    SD_DI_PIN  = -1                 ' Custom has no SD Card
    SD_CS_PIN  = -1                 ' Custom has no SD Card
    I2C_PIN    = 28                 ' I2C Boot EEPROM SCL Pin
    I2C_DEV    = $A0                ' I2C Boot EEPROM Device Address
    SI_PIN     = 31                 ' PIN (Custom)
    SO_PIN     = 30                 ' PIN (Custom)
    '
    ' Custom platform Clock definitions:
    ' 
    CLOCKMODE = xtal1 + pll16x      ' (Custom)
    XTALFREQ  = 5_000_000           ' (Custom)
    CLOCKFREQ = 80_000_000          ' (Custom) Nominal clock frequency
                                    ' (required by some drivers)
    
    If the Gadget Gangster board has no TV output at all, just leave the pin settings at -1, but change the Project->Build Options to use the VGA or PC HMI driver. All boards should support at least the PC option - the only problem is that by the time you open the serial terminal emulator, the standard "hello world" program will have already have sent it's message - in that case (just to see that the program works) change it to loop forever - e.g:
    /* Traditional first C program */
    
    #include <stdio.h>
    
    int main (void) {
       while (1) {
          printf("Hello, World!\n");
       }
       return 0;
    }
    
    You will find equivalents of all the Propeller functions described in the documentation. For example, for the keyboard, mouse and screen functions (e.g. k_read, m_button, t_print) see the Catalina Reference Manual starting around page 28. For cog functions (e.g. ina, dira, waitcnt etc) see page 42. You don't need to build any of these library functions.

    Ross.
  • RsadeikaRsadeika Posts: 3,837
    edited 2011-08-28 06:27
    Since the only boards that I have with TV output are the C3, and DEMO boards, but I do not have a TV for that purpose, and I do not plan on purchasing one. I guess I have to figure out some way of displaying the output to a terminal screen, either on p31 and p30, or the RS-232 module that I have setup with my GG board. You might want to mention, somewhere, that output will be displayed to an attached TV, I do not recall seeing it mentioned in your docs. Other than that, I think this is a very good piece of software, good work Ross!

    The standard Gadget Gangster USB board has a built in SD, which is accessible through pins p0,p1,p2, p3, and I had no trouble accessing it using fsrw. Other than that, it is sort like a proto board, which you also do not list as a selection. The actual board that I am using, is a discontinued GG board, that also has an RTC attached, which uses p28, and p29 if I am not mistaken. The GG USB board is being sold, and backed by Parallax, so you may want to include that as a choice.

    Now to figure out how to display output to a terminal screen ...

    Ray
  • BatangBatang Posts: 234
    edited 2011-08-28 06:29
    Hi Ross,

    Top effort.

    This is what ICCV7 should have been and what the Propeller GCC effort should aspire to be.

    Cheers.
  • RaymanRayman Posts: 14,721
    edited 2011-08-28 08:21
    This looks really cool! Great job Ross. I definitely want to check out those games...
  • RsadeikaRsadeika Posts: 3,837
    edited 2011-08-28 08:26
    Well I just came to a stumbling block, I can not figure out how to get the output to display to the terminal screen. I made some changes to project requirements, but I am still not getting anything positive. I guess if you do not have a board that is supported by Catalina, then you are SOL, as far as CODE::BLOCKS is concerned. I WILL NOT go the command line route, I am sure the problem could be resolved there.

    Ray
  • Bill HenningBill Henning Posts: 6,445
    edited 2011-08-28 13:47
    Geez, I don't look at the forum for a bit and look what happens :)

    Congratulations Ross, great work as always!
    RossH wrote: »
    All,

    Release 3.2 of Catalina is now available on SourceForge (here!). Presently, only the Windows version is available. I will post the Linux versions (32 and 64 bit) in the next few days.

    Release 3.2 is a full release of Catalina. It contains various new features, improvements and bug fixes. See the file README.WhatsNew (attached) for more details.

    The main change in 3.2 is that the Windows "one touch" installer that installs both Catalina and Code::Blocks is now official! This will now be the only way Catalina is released on Windows ... and it makes installing both Catalina and Code::Blocks an absolute breeze!

    Also, with this release Catalina is now fully integrated into Code::Blocks. There is now no need to ever resort to using the Catalina command line again (although it will of course remain available). Everything can now be done from within Code::Blocks, including building all utilities and demo programs (even Catalyst). Even confirmed IDE skeptics (like me) might change their minds once they see how easy it is to write, compile, download and debug C programs on the Propeller using Catalina and Code::Blocks!

    New Code::Blocks workspaces and project files are provided for all the non-trivial Catalina demo programs, including the Catalyst demo programs such as the vi text editor, the lua scripting language, the jzip Infocom game interpreter, Super Star Trek etc.

    Also, Catalina and Code::Blocks now form a completely stand-alone development environment for Propeller C programs! There is no need to install any other software (such as MinGW or MSYS or make) to build or run any C programs on the Propeller. While the existing build_all scripts and makefiles which used to be used to build some of the more complex demos remain, they are no longer required since everything can now be done using the Code::Blocks internal build system - which is much simpler than make to use (so simple that most people may never even realize they are using it!).

    Here is a brief overview of the other significant changes:
    • Multi-cog programs and combined C/Spin programs are much simpler to create, since all the details have now been rolled up into two new library functions. In addition to the basic _coginit function, and the various thread functions (which were already fully integrated into the thread library) there are two new ways to start programs in another cog:
      • _coginit_C - start a C void function in a dynamic kernel cog
      • _coginit_Spin - start a Spin program in a spin interpreter cog
    • The Payload loader now auto-detects all the necessary ports automatically - even on the Hydra and Hybrid platforms where a special serial mouse cable is required to load programs into XMM RAM. It wasn't documented at the time, but a previous Catalina release (3.0.3) also added the capability for BlackBox to detect the debug port automatically - so now for most users there is never any need to mess about figuring out what serial ports to use!
    • The Windows installer now creates links to all Catalina documents and Code::Blocks work spaces in the Windows Start menu - so now all Catalina documents and demo programs are available at the click of a mouse!
    Ross.
  • KMyersKMyers Posts: 433
    edited 2011-08-28 14:54
    Ross

    Works great on my C3 and 32 bit Vista laptop!! Nice and easy install also....
  • RossHRossH Posts: 5,471
    edited 2011-08-28 15:45
    Rsadeika wrote: »
    Well I just came to a stumbling block, I can not figure out how to get the output to display to the terminal screen. I made some changes to project requirements, but I am still not getting anything positive. I guess if you do not have a board that is supported by Catalina, then you are SOL, as far as CODE::BLOCKS is concerned. I WILL NOT go the command line route, I am sure the problem could be resolved there.

    Ray

    Hi Ray

    Good point about not specifying that the TV output is the default on all platforms (except those that don't have it, of course). This is mentioned in a few places in the documentation, but I should probably add it to the QuickStart guide as well.

    What do you mean by "terminal screen"? Do you mean VGA? Catalina supports VGA output on most boards (e.g. on the C3). In Project->Build Options, specify the C3 as your platform and select the VGA HMI option and everything should work. If not, please post me a copy of the build log and I will investigate.

    There are so many Propeller boards out there that I cannot possibly support them all - hence the CUSTOM option. You don't need to use the command line to set up that option - you can edit the Custom_DEF.inc file from within Code::Blocks. This is no different to what you have to do in Spin - you generally need to set up the pin configurations for various Spin drivers in each program - but in Catalina you only ever have to do it once for all drivers and all programs.

    Ross.
  • RossHRossH Posts: 5,471
    edited 2011-08-28 15:52
    Rayman wrote: »
    This looks really cool! Great job Ross. I definitely want to check out those games...

    Hi Rayman,

    Most of the games are so large they require XMM RAM (from memory. "othello" is the only one that doesn't).

    Fortunately, Catalina will soon support both your SuperQuad and RamPage memory boards! The SuperQuad should support the SMALL memory mode, and the RamPage should support both the SMALL and LARGE memory models.

    Ross.
  • RossHRossH Posts: 5,471
    edited 2011-08-28 18:30
    KMyers wrote: »
    Ross

    Works great on my C3 and 32 bit Vista laptop!! Nice and easy install also....

    Thanks, Ken. I don't actually have a copy of Vista, so this is good to hear.

    Ross.
  • KMyersKMyers Posts: 433
    edited 2011-08-29 09:12
    @Ross

    Now I can get even more dangerous with 'C" :lol:
  • RaymanRayman Posts: 14,721
    edited 2011-08-29 11:18
    Ross, Thanks!

    BTW: Can those XMM games also run from SD card?
  • Toby SeckshundToby Seckshund Posts: 2,027
    edited 2011-08-29 12:42
    It went in like a dream fo me too (XP SP3). I un-installed the previous C::B install to allow for this married one.

    It always makes me chuckle when a "hello world" uses 3/4 of the memory. Years ago I tried a Kiel C compiler for a 8052, and dismissed it because it used 90% of the Demo limit on a simular trial program. I should have stuck with it a bit more and so possibly be better at another language.

    I too gravitate to IDE fronted programs, out of ignorance and indolence on my part, so that is another case of past learnt opertunites lost.
  • RossHRossH Posts: 5,471
    edited 2011-08-29 14:19
    It went in like a dream fo me too (XP SP3). I un-installed the previous C::B install to allow for this married one.

    It always makes me chuckle when a "hello world" uses 3/4 of the memory. Years ago I tried a Kiel C compiler for a 8052, and dismissed it because it used 90% of the Demo limit on a simular trial program. I should have stuck with it a bit more and so possibly be better at another language.

    I too gravitate to IDE fronted programs, out of ignorance and indolence on my part, so that is another case of past learnt opertunites lost.

    Hi Toby,

    That's why there is also "hello_world_1, 2 and 3". A couple of simple changes reduces the size of hello world down to just a couple of hundred bytes - the initial version (which is the traditional C version) occupies so much memory because it pulls in most of the C standard library along with it - including all the floating point support!

    The Catalina Reference Guide also goes through this in detail.

    Still, maybe I should use another program as my example :smile:

    Ross.
  • RossHRossH Posts: 5,471
    edited 2011-08-29 14:20
    Rayman wrote: »
    Ross, Thanks!

    BTW: Can those XMM games also run from SD card?

    Hi Rayman,

    No, I can't use SD card as XMM. Although this is technically possible using the caching driver, the performance would be slooooooow!

    EDIT: Actuallly, just re-read your question - yes, they can be LOADED and RUN from the SD card, provided you have XMM RAM installed for them to execute in!

    Ross.
  • Toby SeckshundToby Seckshund Posts: 2,027
    edited 2011-08-29 14:38
    Ross

    Yes I now realize that. It just amused me that if the target has 8KB flash,or 32KB RAM, the compiler seemes to use all that is available.

    After I have to get my head around a "Cisco course" I'll get into this "C".


    Thanks for all your hard work on our behalf.

    Alan
  • RossHRossH Posts: 5,471
    edited 2011-08-29 20:50
    All,

    I have decided to reduce the price of the Catalina Optimizer to US$20 - the main reason being that this is the most common amount people seem to choose for a donation to Catalina, and I feel I should reward those generous contributors with something!

    For those who have already paid $25, don't feel miffed - as compensation I will be extending your support for an extra year. I have not had much time to work on the Optimizer recently, but I expect this extension to have real value - now that GCC appears to finally be gaining some traction, Catalina will have to sharpen it's propeller blades in response!

    Expect some improvements in both the standard code generator and the optimizer!

    Ross.
  • Martin HodgeMartin Hodge Posts: 1,246
    edited 2011-08-30 06:13
    Your hard work deserves some reward. Only regret not doing this sooner... DONATION SUBMITTED! ;)
  • RaymanRayman Posts: 14,721
    edited 2011-08-30 06:18
    Ross, I just downloaded 3.2 and it installed without any problems.

    I'm looking around for info on Star Trek, VI and JZIP... I found the startrek.c file. Is there no "project" file for these?
    Maybe because they're just one file?

    I just tried "build" on startrek.c, but nothing happens. Guess I'll have to do something crazy like read the manual...

    BTW: Do these programs expect an 80-column display?
    Are you outputting the display over serial port in these examples?
    Thanks.
  • jazzedjazzed Posts: 11,803
    edited 2011-08-30 11:52
    Ross can you please provide some Catalina performance updates for FIBO and heater's FFT using HUB memory for code and data and C3 using Flash for code and HUB for data? Thanks.

    I look forward to seeing what you do to add cache for the flashpoint boards. It is very easy for me to add new cache platform drivers the original cache model. Your cache driver doesn't seem to follow that model exactly. Catalina drivers have inter-dependencies and access methods that I don't understand just yet. I could just send you hardware, but am not really sure why I should need to do that. Maybe your update will help clear the fog.
  • RossHRossH Posts: 5,471
    edited 2011-08-30 17:34
    Your hard work deserves some reward. Only regret not doing this sooner... DONATION SUBMITTED! ;)

    Thanks, Martin!

    Optimizer will be sent when I get home tonight.

    Ross.
Sign In or Register to comment.