Comparison of Propeller Forth Implementations
MJB
Posts: 1,235
I am quite new to Prop, and thinking about starting with FORTH.
But I could not find a comparison of strength, weaknesses, features - so which Forth do I start with?
I searched and read many forum posts about different Forth implementations like
- PropForth - which seems to be around some time http://forums.parallax.com/showthread.php?138399-Propforth-5.0-is-available-for-download
- Tachyon - which has a vera active thread http://forums.parallax.com/showthread.php?141061-TACHYON-A-Fast-and-small-Forth-byte-code-VM-(source-code-available)-Web-pages
others ??
If the knowledgeable people could contribute their insights in one place and some links for forther reading this could be helpful for other newcomers as well.
Thanks MJB (Germany)
But I could not find a comparison of strength, weaknesses, features - so which Forth do I start with?
I searched and read many forum posts about different Forth implementations like
- PropForth - which seems to be around some time http://forums.parallax.com/showthread.php?138399-Propforth-5.0-is-available-for-download
- Tachyon - which has a vera active thread http://forums.parallax.com/showthread.php?141061-TACHYON-A-Fast-and-small-Forth-byte-code-VM-(source-code-available)-Web-pages
others ??
If the knowledgeable people could contribute their insights in one place and some links for forther reading this could be helpful for other newcomers as well.
Thanks MJB (Germany)
Comments
You might also notice that I have been doing up the source documents on-line along with Introductions and tutorials. This will probably end up as many different project pages, much like a series of project articles in a magazine complete with schematics and photos as well as videos. It's all fun.
Since you're in Germany, check out Hive-project.de
They have forth and variants, and the relatively large community has a lot of smart members. But they are doing their own specialization, so it think it would be a third separate option. I don't read German well (or google translated German for that matter) but I believe Hive forth (M?) is significantly different from both PF and Tachyon.
In the case of Propforth, my influence is to make a general purpose forth tailored to the prop, and accessible to the greatest number of folks. Since my goals generally coincide with Sal's goals, Sal accepts my interference in exchange for my testing, documentation, and administrative functions. Propforth is on its final iteration of kernel development (after something like 5 years) and we are moving on to bring all our previous extensions to the current release now that we have automated testing complete. We should have the JupiiterACE f(from v3.2) brought forward shortly, so you will have another option for VGA, keyboard, SD forth system on you demo board compatible hardware. We also support adding unlimited props (cog and I/O pin resources), and multiple high speed links to the PC/workstation (display/communication/storage/processing resources).
Any participation or contribution you chose will be welcome.
I can not easily see what is 'Peter's way --- or Sal's way'
that is why I started this thread.
so what are Peter's goals? compared to Sal's goals ??
EDIT: ok, so even without knowing any of the Forth implementations I started collecting what I found - please correct and extend appropriately
this is a living table !!!
feature
PropForth
Tachyon
Serial
Standard serial I/O
MCS: Multi-Channel Synchronous Serial mcs.f
13 kBaud 1 channel
11,5kBaud/channel for 8 channels
- Linux might be more than twice the throughput as windows
- the lowest linux box (OLPC 433MHz) throughput 32 channels
- the lowest linux box (OLPC 433MHz) throughput 32 channels
- the number of core has an impact
- using linux has a bigger impact
-- End 20120604 --(3400-4500 cps) was nearly quadruple throughput of the fastest
windows box (2 core 3.4Ghz) at 32 channels (855-891)
(3400-4500 cps) was higher than the biggest windows box
(4 core 2.54Ghz) at 8 channels (1741-3971)
up to 3+ Mbaud (depends on FTDI chip)
I2C
+
+
SPI
SD
Final SD support
- micro SD slot support for Spinneret, C3, etc
- Multiple partitions
- Multiple files per partition
- Any Cog may access any partition it has MOUNTED
- One Cog may access multiple files
- Multiple Cogs man access the same file
- NO BUFFERING FOR the FILE SYSTEM.
This method is nearly as fast as the speed of the SD card data transfer.- The last file referenced is the current file, regardless of cog or partition.
NOTE:We can't plug the SD into a windows box and read the files.
FAT on SD
EE-filesystem
+
+ (save running image to EE)
KBD
+
+
VGA
HiRes VGA Option
and bottom half is cog 4 forth prompt.
Serial terminal is now cog 5
32x15 VGA text support as extension' LowResVGA.f
+
speed
350ns minimum instruction cycle time (single bytecode)
Empty loops can execute in 550ns to 875ns (absolute worst case)
Two to one stack operations ( + * AND etc)
inc opcode fetch take 900ns to 1.087us (absolute worse case) *
size
n-cogs
nprops * 8
1 ? mult soon ?
mult props
+
Master with Dependent Propellers
Master with Independent Propellers
-
logic analyzer
LogicAnalyzer.f
La.f - a lighter version of La, missing the GUI but more power and easily usable
in other forth words. Can also sample every clock cycle.
Ethernet
Spinneret
Final Spinneret Code
PWM
PWM support:
FloatingPoint
float.f - ieee754 floating point routines added
CommandLine
can run loops while still in interactive mode
homepage
http://code.google.com/p/propforth/
https://docs.google.com/document/pub?id=1bEH0DfGmu99M1SqCbmlzl991Ssv2J5m6XWmkJX0XSl8
PropForth is very mature as others have already stated. It does have a lot of information on the Wiki pages and there are several threads discussing it as you've found out. There was a BIG change in PF between version 4 and version 5. Version 5 takes a bit of retraining if you were using an older version but starting at 5 should be pretty straight forward. The PF package is very complete and has a number of supporting functions for various hardware configurations (IP support, EEPROM file system, SD file system, servos, etc.). There are a few PF users around on the forums to help you get started and it's always good to get new user feedback because some day there will be more comprehensive documentation on getting started. PF has full support of the Propeller's multi-processor architecture and allows you to easily do a number of interesting things - multiple Props, high-speed Prop-to-Prop communication, multi-channel PC to Prop communication.
Tachyon is impressive in how fast Peter has gotten it up and running and the results he has shown. I haven't run it yet but I've been following along and am really excited to see what he's coming up with. He's added a number of interesting features in the way Tachyon operates and integrates to the Propeller. It's appearing to be a lean and fast implementation with a lot of his experience showing up in it.
I'm starting to envision the two being used together in a multi-Propeller configuration as both have features that are currently unique and very useful.
Either way, the Propeller and forth go together very well and it's a useful environment for hardware testing and general Propeller play!
Peter's stuff is newer, and more likely to be volatile, but is something you can take a hand in its development and direction; and you get the chance to work with the developer during its creation.
But in any case you are off to a good start. Eventually, both versions will begin to talk to each other, and plot take over the world, or at least a couple prop chips.
I would request that you take you post from #4 and start trying to fill it out. Noone else has tried that yet, and its interesting, but I'm too busy with other projects.
http://code.google.com/p/propellerforth/
http://www.jacobsdesign.com.au/software/jdforth/jdforth.php
Both are described here: http://propeller.wikispaces.com/Programming+in+Forth
Whether they are of any value is subjective.
daSilva said there were 2 more which I can't find.
that is a good idea. propforth is an example of a general purpose tool. tachyon is optimized for bit banging. . i would be interested in seeing another specialized version. Personally i favor the jupiterace-as-forth- terminal model, so i will be looking to make propforth even more generalized. effort to the other extreme provide a useful contrast.
Just curious, will you use the spin tool as part of your build cycle, or will pfth create itself directly? a "real" forth can create itself, propforth does not yet. (Does Tachyon?)
The thing with the Tachyon kernel is that I continually optimize it as I write applications on it. However in doing so I don't want to sacrifice the low-level aspects of it such as bit-banging etc as this a strength of embedded Forth and allows us to do things that would otherwise require assembler which on the Prop means a dedicated cog and a communications interface. Given the microcontroller nature of the Propeller I would never think to try and implement ANS Forth on it for instance. On a PC ANS Forth makes sense but a microcontroller has limited resources and certain strengths and weaknesses which need to be taken into account.
All in all, I probably will not go the path of PropForth with MCS and external processor support. I want to get the most out of the bare naked Prop chip (okay, with eeprom pants on) because when I want a high-end CPU with lots of memory I use one otherwise I try and use the Prop.
http://propeller.wikispaces.com/Programming+in+Forth
As a new leaner, I went with PropForth. TachyonForth maybe less conservative and more ambitious in achieving its goals. These attributes are appealing. But I have a hard time keeping up with something that is in earlier stages of development.
PropForth and TachyonForth just happen to be the most active on the Forums.
So, for somebody that is new to Forth, I'd vote for PropForth.
For somebody that really is a quick study of Forth and the Propeller chip, TachyonForth may offer the fast pace that you find fun.
But I have NOT looked at every Forth available.
http://code.google.com/p/propforth/wiki/PropForth
http://forums.parallax.com/showthread.php?141061-TACHYON-A-Fast-and-small-Forth-byte-code-VM-(source-code-available)-Web-pages
There are at least two other Forths that have been mentioned recently == PForth and psft --- but PropForth has gone the distance with a good tutorial in V 5.00 and Tachyon has a long, long thread to keep you interested.
pfth is likely the newest Propeller based Forth (so we are actually waiting for downloads from Dave Hein.) and PForth (is this aka PropellerForth? PropellerForth homepage) may have been one of the eldest (so it gets mentioned but I don't quite know what its status is).
Oh and excuse me - somewhere in the mix I forgot
SpinForth http://code.google.com/p/spinforth/
and
JDForth http://www.jacobsdesign.com.au/software/jdforth/jdforth.php
Apologies if I omitted anyone - this is really an eyeopener - lots of choices.
JDForth wants $$$$, but might really support FAT files on SDcards via a Parallax OBEX object.
"di Silva says" there may be two forgotten and lost Forthers in the fog of early Forth development on the Propeller. WE say thank you to those lost Forthers.