Glossary of Terms
Please raise an issue if there's any term you feel is missing here!
- Boot ROM
- Catalina
- Cog
- Colorspace Converter
- FastSpin
- FCACHE
- FIFO
- FlexSpin
- FlexProp
- Hub
- loadp2
- LUT
- LMM
- OBEX
- P2 / P1
- P2D2
- P2docs
- P2 EDGE
- P2 EVAL
- P2Hot
- P2STAMP
- PNut
- Propeller 1
- Propeller 2
- Propeller Tool
- PSRAM
- Silicon Doc
- Smart Pin
- Spin
- Spin Tools
- spin2cpp
- Streamer
- TAQOZ
- XBYTE
Boot ROM
The 16 KiB of mask ROM in the Propeller 2. This is not directly accessible, but when the chip starts up, it is copied into the last 16K of Hub RAM.
This contains:
- The serial boot loader
- The stage-0 flash boot loader
- The SD card boot loader
- The TAQOZ FORTH interpreter
- The monitor program
TODO: further information on boot methods and built-in code.
Catalina
Catalina is an ANSI C compiler (and much more) for the Propeller 1 and 2 by Ross Higson. It features limited self-hosting capability on the Propeller 2.
Check it out at its Forum thread.
Cog
Cogs are the independent parallel processing units of the Propeller chips.
Each Propeller 2 cog, of which there are eight, contains:
- a CPU
- a block of Cog RAM
- a block of LUT RAM
- a FIFO buffer
- a Streamer
- a Colorspace Converter
- an interface to the Hub and the I/O Pins.
Each cog is independent from the others. It's execution can only be disturbed by the special-purpose COGSTOP and COGBRK instructions or conflicts over shared resources such as Hub RAM or I/O Pins.
The Cog CPU's timing is fully deterministic and suitable for implementing hard real-time systems.
Cog RAM
Cog RAM (also sometimes referred to as "register RAM") is the main local memory area in each Cog. It is addressed as 512 x 32-bit longwords. The last 8 locations are used as I/O registers and another 8 are used as special-purpose locations (Interrupt vectors and returns, etc), leaving 496 regular Cog RAM locations.
Cog RAM locations can be used directly as D/S operands for instructions. Code can also be stored in Cog RAM.
COGEXEC
A Cog is in COGEXEC mode when it is executing code from Cog RAM or LUT RAM, as opposed to HUBEXEC. This is generally the faster and more flexible execution mode, but code size is limited.
A Cog can freely switch between COGEXEC and HUBEXEC using regular branch instructions.
Colorspace Converter
The colorspace converter is a hardware unit in each Cog that is designed to encode raw RGB data from the Streamer into various common video formats, including VGA, NTSC/PAL composite video, YPbPr, HDMI and more.
See also: CSC documentation
FastSpin
Historical name of FlexSpin before version 5.0.0
FCACHE
FCACHE is a technique employed by high-level language compilers (notably FlexSpin) to combine the benefits of COGEXEC and HUBEXEC/LMM modes by dynamically copying code loops from Hub RAM to Cog RAM for faster execution.
FIFO
TODO
See also: FIFO documentation
FlexSpin
FlexSpin is a Spin1/Spin2/C/BASIC multi-language compiler by Eric Smith for Propeller 1 and 2. It features a best-in-class optimizing PASM backend, multi-language interactions (e.g. call Spin code from C and vice versa) and many useful language extensions.
Check out the forum thread and GitHub.
(It shares most of it's codebase with spin2cpp, which came first, so that's what the Git repo is called)
FlexC
The C dialect used by FlexSpin is sometimes called "FlexC". There also exists a flexcc
alternative frontend to the compiler that attempts to be more CLI-compatible with other C compilers. But all frontends accept all languages.
FlexProp
FlexProp is the official GUI IDE for FlexSpin. However, you can also use the compiler as a standalone CLI tool.
Check out the forum thread and GitHub.
Hub
The Hub refers to all the resources that are shared between all cogs.
The Propeller 2's Hub contains: - 512 KiB of Hub RAM - 16 lock bits - a 64-bit global cycle counter - a free-running PRNG (see: GETRND) - The clock/PLL unit
(The Smart Pins are generally not consided part of the Hub, even though they are shared as well).
Generally when referring to doing something "in Hub", the Hub RAM is what's being referred to.
Hub RAM
TODO
HUBEXEC
A Cog is in HUBEXEC mode when it is executing code from Hub RAM, as opposed to COGEXEC. This mode allows larger code size, but disables certain features (most notably the FIFO) and branches execute very slowly.
A Cog can freely switch between COGEXEC and HUBEXEC using regular branch instructions.
loadp2
loadp2 is a command line tool for loading and flashing P2 code. TODO
The most updated version can be found on totalspectrum GitHub.
LUT
LUT is short for "Look-up Table". On the Propeller 2, each Cog has a block of "LUT RAM". This memory is organized as 512 x 32 bit longwords, similar to Cog RAM.
LUT RAM can be used in multiple ways:
- As a lookup table for XBYTE.
- As a lookup table for certain Streamer modes.
- As additional COGEXEC-mode code storage. (this is most common)
- Manually using RDLUT and WRLUT instructions.
LMM
LMM means "Large Memory Model". This is a technique used on the Propeller 1 to achieve something similar to HUBEXEC (which does not exist on the P1). On the P2 native HUBEXEC is available and the memory model is always "large".
OBEX
OBEX stands for "Object Exchange" and refers to a code sharing platform operated by Parallax.
Current OBEX
Previous Git-OBEX
Ancient OBEX
P2 / P1
Shorthand abbreviations for the Propeller 2 and the original Propeller chip.
P2D2
Early P2 board by Peter Jakacki. No longer in production.
TODO: maybe put a picure
P2docs
This very webpage (currently hosted at p2docs.github.io
) that you are reading right now. It is written and maintained by community member Wuerfel_21 and placed under the watchful guard of the bootleg Reimu plushie.
P2docs is open to your contributions on GitHub! Feel free to raise issues or contribute content!
(Imagine here, a standard-issue disclaimer here about how GitHub is owned by the generally odious, nasty and dispicable MicroSoft and our usage of the GitHub service is not an endorsement thereof)
P2 EDGE
Also known by it's part number "P2EC", TODO
TODO: maybe put a picure
P2 EVAL
The EVAL board... TODO
TODO: maybe put a picure
P2Hot
Retronym for an early Propeller 2 design that was ultimately scrapped due to having unacceptably high power draw and heat dissapation. This was around April 2014, so any Propeller 2 discussions prior to that most likely refer to this scrapped design.
Approximately no one calls the actual Propeller 2 "P2Cool", though it is very (figuratively) cool.
P2STAMP
P2SwAP
PNut
TODO: URL
Propeller 1
Retronym for the first Propeller chip from 2006. It is not directly compatible with the Propeller 2, but many of it's design principles have been carried over. It is still produced and well-supported. You can find it's excellent manual re-hosted here.
Propeller 2
The Propeller 2 chip from Parallax. This whole page is dedicated to documenting it's oddball architecture. TODO
There exist 3 revisions of the Propeller 2 chip:
- Rev.A is an obsolote preproduction sample. It is only found on Rev.A EVAL boards. All other boards (even if the board is Rev.A of its type) contain Rev.C (or very rarely Rev.B) chips.
- Rev.B is a full respin to fix bugs found in Rev. A and add some last-minute features.
- Rev.C is the final production chip. The only change from Rev. B is to disable/modify an ADC-related feature that was causing crosstalk issues.
Propeller Tool
TODO: URL
PSRAM
HyperRAM
Silicon Doc
The "Silicon Doc" is the official Propeller 2 Hardware documentation by Chip Gracey. It is considered to be rather heavy literature.
Read our mirror or the originals.
Smart Pin
Spin
Spin 1
Spin 2
Spin Tools
TODO: URL
spin2cpp
TODO: URL
Streamer
TODO
See also: Streamer documentation
TAQOZ
TAQOZ is a FORTH interpreter by Peter Jakacki that has been included into the Boot ROM.
TODO: Link to TAQOZ docs.
XBYTE
TODO
See also: XBYTE documentation