Catalina 3.3 BETA

UPDATE: The non-beta version of Catalina 3.3 has been released. See here.
All,
A BETA release 3.3 of Catalina is now available on SourceForge (here). Presently, only the Windows version is available. I will post Linux versions (32 and 64 bit) when I have done some more testing and am ready to release the non-beta version.
Release 3.3 is a full release of Catalina. It is primarily intended for users who have a FlashPoint SuperQuad or FlashPoint RamPage module and want to use it with Catalina.
However, be aware that this release has not been extensively tested on other platforms (except for the C3, which is the platform what I used to develop and test the SuperQuad and Rampage support).
Here is a brief overview of the changes:
Ross.
All,
A BETA release 3.3 of Catalina is now available on SourceForge (here). Presently, only the Windows version is available. I will post Linux versions (32 and 64 bit) when I have done some more testing and am ready to release the non-beta version.
Release 3.3 is a full release of Catalina. It is primarily intended for users who have a FlashPoint SuperQuad or FlashPoint RamPage module and want to use it with Catalina.
However, be aware that this release has not been extensively tested on other platforms (except for the C3, which is the platform what I used to develop and test the SuperQuad and Rampage support).
Here is a brief overview of the changes:
- Support for the FlashPoint XMM boards (i.e. the SuperQuad and the RamPage). Although they are both XMM "add on" boards that must be connected to a suitable propeller platform, each has been assigned its own platform symbol (i.e. SUPERQUAD and RAMPAGE). However, if you don't want to use these names, the necessary details can easily be incorporated into the configuration files for another platform (e,g. CUSTOM). Since they are quite similar, the options for both boards are defined in the same configuration files (i.e. FlashPoint_DEF.inc, FlashPoint_CFG.inc, FlashPoint_HMI.inc and FlashPoint_XMM.inc). See FlashPoint_README.txt in the Catalina\target directory for more details on how these files can be used.
- Removed all platform-specific options from the plugins, and added a new CFG file for each platform (e.g. Hydra_CFG.inc) which contains all plugin configuration options for the platform. This makes it much easier to support new platforms without having to edit each plugin file.
- Included the RTC (CLOCK) functionality in the SD plugin now, if the SD plugin is loaded, the CLOCK plugin will not be loaded the CLOCK code embedded in the SD plugin will be used instead (if the SD plugin is not loaded, the CLOCK plugin will still be loaded as usual). This saves a cog in many cases on large complex programs. This is all automatic - no user intervention is required.
- Formalized the XMM API to include both Cache and Flash support. This was required since the quad-bit SPI Flash chips used by the FlashPoint modules could not be accommodated in the existing (but largely undocumented) Flash API, which could only cope with the type of single-bit SPI chips used by the C3 and Morpheus platforms. Now all platforms use a common XMM API, which is divided into three parts:
- the cached API, intended to be used only via the cache
- the direct API, intended for inclusion directly in the kernel
- the flash API, intended to be used when Flash support is required.
See the updated section on the XMM API in the Catalina Reference Manual for details on the individual functions required by each part of the API. Note that not all the parts are necessary - if you are happy to access the XMM RAM only via the cache, then the cached API can be used stand-alone. It requires only four simple PASM functions to be written (i.e. XMM_Activate, XMM_Tristate, XMM_ReadPage & XMM_WritePage). The direct API is just the existing XMM API (i.e. pre 3.3), and the flash API adds the functions required to erase and program Flash chips to allow them to be used as XMM RAM.
Any problems, questions (or bugs!) please let me know.Ross.
Comments
Found the first bug already ...
- Compiling Catalyst gives you an undefined symbol error on DEFAULT_CPU.
Ross.To fix this, copy the updated version of Catalyst_XMM_SD_Loader.spin (attached) to your Catalina target folder (e.g. C:\Program Files (x86)\Catalina\target).
Hopefully, my Rampage and Superquad modules will be useful to those who want to try out huge C programs like you "Super Star Trek" example,
without using a soldering iron. Should be able to just plug them in, even to a breadboard Prop setup, and be off...
I think with Rampage you should have the option of running from SRAM or Flash, right? How do you select between these two?
Because of the complexity of driving the Quad Flash chips, and also the speed of access, you need to use the cache for both boards. To do this via the command line you define one of the cache symbols - i.e. CACHED_1K, CACHED_2K, CACHED_4K, CACHED_8K (or just CACHED).
The SuperQuad only has Flash memory, but you still you need to define the symbol FLASH. Also, the SuperQuad only supports the SMALL memory model. So to compile "hello_world" to run out of the SuperQuad Flash you would use a command like:
With the RamPage you have more flexibility. You can elect to use the Flash or not, and since the RamPage has both Flash and SRAM, you can use either the SMALL or LARGE memory models. So all of the following should work:
To use only the Flash (i.e. SMALL mode):
To use both the Flash and the SRAM (i.e. LARGE mode):
To use only the SRAM (here you can use either SMALL or LARGE mode):
If you don't like using the command line, you can do exactly the same in Code::Blocks by just selecting the appropriate project build option. Also, you will notice that SUPERQUAD and RAMPAGE are now available choices in the Code::Blocks Catalina Project Wizard.
It is worth remembering that to load the programs successfully, you also have to build the appropriate loaders and other utilities - either use the Build XMM Utilities tool in Code::Blocks, or execute the build_utilities batch file from the command line, and answer the questions it asks.
Ross.
BTW: Do I need to uninstall my current version before installing this one?
BTW2: (I hate to keep asking for stuff but) How hard would it be to add Harrison's ethernet driver to a Catalina project?
I was just thinking that if I could use the ethernet port on my PropBox along with RamPage, that might open up some possible apps.
BTW3: I just remembered that my PropBox has a "real" RTC, the DS1307. Is there an easy way to use that instead of the synthetic one?
BTW4: Have you looked at all into getting a chess program, such as GNU chess, to compile?
Ross.
First bug fix already posted (well, I did say it was a beta ...!).
See here for details.
Ross.
Hmm. How odd. It should take you to post #2 in this thread.
Ross.
How do I tell Catalina which pins I'm using for Superquad or Rampage?
Hi Rayman,
See the file FlashPoint_DEF.inc. There is some general platform stuff at the beginning (which is currently configured for a C3) then near the end you will see the following section:
This contains all the RAMPAGE specific definitions, including the pin assigments. The only complex bit is that as well as specifying the pin numbers, you need to define (or undefine) the following symbols depending on what pins you use (as documented in the extract above):
- QUAD_BITS_REVERSED Define this if QSPI_SIO0 is the highest numbered pin amongst SIO0 .. SI03
- QUAD_POWER_PINS Define this to enable applying power to the QSPI_VDD & QSPI_VSS pins (i.e. if they are connected to Propeller pins, and not directly to the power rails).
- QUAD_LOWER_NIBBLE_LEFT Define this symbol if the lower nibble has to be shifted LEFT for output (i.e. lowest SIO pin is > 0)
- QUAD_UPPER_NIBBLE_LEFT Define this symbol the upper nibble has to be shifted LEFT for output (i.e. lowest SIO pin is > 4)
- QUAD_UPPER_NIBBLE_RIGHT Define this symbol if the upper nibble has to be shifted RIGHT for output (i.e. lowest SIO pin is < 4)
These symbols are used in the XMM API itself (which is in the file FlashPoint_XMM.inc).There is a similar section for the SUPERQUAD. In both cases, the files are correctly configured for use with the module plugged into the C3 expansion slot with Vdd connected to pin 0.
Ross.
One final question: Suppose I foolishly attempt to improve the XMM code speed...
Can you recommend a good test program for speed test?
You could use the XMM RAM test program. In the Catalina\utilities folder, type:
then any one of the following: This is an interactive program. It does a trivial test of the first few memory locations, then a complex test of ALL memory locations. The complex test is designed to "thrash" any memory paging techniques in use (including the paging used by the cache). Finally, it tests the Flash functions.
The complex test takes 5 - 10 seconds to run, so you can just use a stopwatch.
This also has the advantage of letting you know if your changes break the XMM code, since the memory test will fail.
Ross.
I had a quick attempt at compiling Crafty Chess. It could be made to compile (with a few minor tweaks) but it appears to have a in-build assumption that 64 bit integers are available - even on 32 bit machines.
If this assumption is deeply embedded in the internal algorithms (as it appears to be!) then it would require significant modification to get it to run.
Ross.
Suppose that's a real issue, unless there's some trick like defining "long" to be a structure of two ints and then somehow defining operators for that structure...
I think I want to make a chess program though for Catalina. I have my Spin code that I ported from Javascript that I could go from.
I also just found "picChess" on Instructables.com that uses a char[128] array for the board...
But, that engine doesn't look to be as strong as others because it does't use hash boards. Still, that's something that looks easy to port over here...
Can you please tell me exactly what options I should pick for XMM Utilities and the project to run on regular C3 with HighRes_VGA output?
I think I've tried every way I can think of and I still get that error like before. I think you decided it was using too many cogs.
But, isn't that all fixed now that the clock is part of the SD?
It's actually a nice utility, but the problem I have is that it is only 40 column display...
Star Trek (and I think a lot of things) need an 80 column display....
Also, I tried "PC" with Parallax's "Propeller Serial Terminal". But, that doesn't work very well either...
It seems the line feed doesnt' work exactly right.
What terminal emulator is "PC" designed for?
Any chance of modifying it to work with "Propeller Serial Terminal" (especially now that Windows doesn't include a Terminal Emulator).
It appears that Prop Terminal is outside your domain, so I suppose you can't ask them for an 80-column version...
PS: I hope I don't sound too critical.... I think Catalina is absolutely great, and I am very thankful that you've included FlashPoint support...
There's just a lot of moving parts here to get a handle on...
rayman, yes I agree and I have not used prop terminal much either because of the line feed problem. But there are many other free terminal programs around that can do 80 columns. Is that what you are looking for?
You really need to know a little about serial terminals to get this working correctly. While they are both great programs for their intended purposes, neither PropTerminal nor the Parallax Serial Terminal are very good as general-purpose terminal emulators - they are "Windows-only" programs, and cannot simulate the type of serial terminal expected by programs from other environments.
To get the best out of Catalina, you really need to use a proper terminal emulation program like "putty" (google it - it's free) .
Also (without trying to start an argument about which is correct, even though the answer is blindingly obvious
PST does have a few options you can try tweaking, and PropTerminal has a "normal terminal" mode (on the options menu) that you can select to get something approximating correct line termination behaviour. PropTerminal also has an 80 column mode - this must be specified in an "ini" file. Copy the following to a file called something like propterminal_80x25.ini and then select it as the settings file from within PropTerminal:
If you use PropTerminal or PST, and are still having trouble with line feeds and the like, try setting one or both of the following Catalina options (described on or about page 25 of the Catalina Reference Manual):
- CR_ON_LF Translate CR to CR LF on output
- NO_CR_TO_LF Disable translation of CR to LF on input
For instance you might try:I'm sorry if this seems complicated - it is.
Ross.
The non-beta version of Catalina 3.3 has been released. See here.
Ross.