Shop OBEX P1 Docs P2 Docs Learn Events
PropForth 4.0 is available for download — Parallax Forums

PropForth 4.0 is available for download

prof_brainoprof_braino Posts: 4,313
edited 2011-06-01 16:29 in Propeller 1
PropForth 4.0 is available for download

http://code.google.com/p/propforth/downloads/list

This release includes support for:

Spinneret (Wiznet5100) Ethernet controller
- IP server
- Telnet server

High-speed synchronous serial communication
(similar to "full clock speed serial" described by Beau Schwabe)
- supports master/slave configuration
- supports n-channels 1 per available cog
- tested at 6,000 application character per second

removed - incorrect
- supports N available cogs where N = (Number of Props) * 6

Multiple serial connection support

ROM-less boot slaves
- Master emulate EEPROM for slave (currently tested with 1 slave)
- Master provides clock for slaves
- needs only three resistors (no crystal, no EEPROM, no capacitor) per slave

standardized I/O for:
- serial
- Ethernet
- High Resolution VGA Kernel
- Low Resolution VGA extension
- cogs
these are all handled the same way now

EEPROM file system

Minimal default kernel (user extensible)

Forth development extension defined in forth (pick and chose what you use)

Regression test suite (in case you make a change and want to see if something broke)

PropForth 4.0 also include the features from previous releases:

Interactive development environment

User extensible function dictionary

High Resolution VGA kernel displaying two simultaneous interactive sessions -Two cogs on each half of the screen
-"Jupiter ACE" standalone operation (needs no PC)

Low resolution VGA extension support
- 16 colors
- giant character
- toggle between two interactive sessions
-"Jupiter ACE" standalone operation (needs no PC)

PropForth Assembler
-PropForth disassembler
-PropForth debugger

Runs on ANY propeller chip, needs no particular hardware
- default hardware is prop only
- VGA default is demo board, user configurable
- support for Hive configuration included
- easily ports to Morpheus or C3, but they haven't sent us boards yet and its too early for Christmas

supports any EEPROM (so far) 0K, 32K, 64K

floating point from the command line

Software Logic Analyzer

Software Forth Multi-tasker (pause round-robin)

Software Assembler Multi-tasker (next round-robin)

Ability to re-generate the spin source for the kernel
- user modifications encouraged

Tons of (weak) documentation on the Google code site
(send me a message I'll fix any error you spot)

If you like this stuff, then this is stuff you'll like!

Perfect for beginners, especially those with or wishing for a strong background in electronics hardware and stack based computing!
«134

Comments

  • lonesocklonesock Posts: 917
    edited 2010-11-30 23:30
    Cool stuff! I know absolutely nothing about Forth, but I'm enjoying looking over the kernel [8^).

    Two quick notes:
    * I had to find the link to the Google code page on the previous (v3.5?) post.
    * I find the notation "some_buffer long 0[256]" much easier to follow than a bunch of lines of "some_buffer long 0,0,0,0...etc" [8^)

    thanks for many future hours of poring over well-crafted Spin code!
    Jonathan
  • Andreas KAndreas K Posts: 2
    edited 2010-12-01 04:52
    Hi prof_braino,

    do you plan to add support for external SRAM memory? I use the dracblade board (see http://www.smarthome.viviti.com/propeller).

    Best regards,
    Andreas
  • prof_brainoprof_braino Posts: 4,313
    edited 2010-12-01 04:55
    lonesock wrote: »
    Two quick notes:
    * I had to find the link to the Google code page on the previous (v3.5?) post.
    * I find the notation "some_buffer long 0[256]" much easier to follow than a bunch of lines of "some_buffer long 0,0,0,0...etc" [8^)

    thanks for many future hours of poring over well-crafted Spin code!
    Jonathan

    I hope you enjoy it!

    Sal just did a major re-write to reorganize the kernel and make the I/O more consistent. I haven't figured it out yet, but apparently it no longer cares if its serial, Ethernet, VGA, or another cog; you plug in and go the same way with all of them.

    * Fixed
    * The unusual use of thing that look like lists are due to the interactive kernel. Some folks find the interactive nature worth the effort of learning the stack based methods

    The coma operators c, w, l, compile a byte, word or long to the dictionary; and initialize the location to whatever is on the stack
    decimal
    wvariable MyWordLAbel  64000 w, 64001 w,
    


    so the coma actual mean "compile that to the dictionary". Its a little bit different than the syntax you might be used to, but its only dark for a couple of days.

    If you happen to spend time on the wiki documentation, please send me messages on things you find that don't work or are wrong.
    Much is out of date, but I only have time and organization skilled to fix specific items. We're planning to go over everything after Christmas, but documentation always seems to come last after experimenting.

    Cheers!

    EDIT - There isn't a word for byte or longs by default. You can add them, but they are not in the default kernel. something about efficiency and code size
    not in default kernel:
    cvariable MyByteLabel 127 c, 126 c,
    lvariable MyLongLabel 4000000 l, 4000002 l,
  • prof_brainoprof_braino Posts: 4,313
    edited 2010-12-01 05:23
    [QUOTE=Andreas K
  • Andreas KAndreas K Posts: 2
    edited 2010-12-01 05:29
    The Hive board has 1 meg of sram, we have the hardware and I just have to read the data sheets and DO IT, but it has not been the biggest priority yet. (Sal gets along just fine with HUB ram, and he's the project leader). But SRAM is on the list, and I want it, so eventually we'll have it.

    caskaz is working on SD. With the release of 4.0, I think SD is the next priority. Its a lot of work and I haven't been much help lately, so its difficult to guess when it will be ready. But it seems SD will give us most of what we need in the shortest time, but thats a whole discussion

    That's fine. I'm relatively new to Forth. So I have enough time to learn the basics until those parts are finished.

    Andreas
  • caskazcaskaz Posts: 957
    edited 2010-12-01 05:41
    Hi prof_braino.

    I installed PropForth4.
    I have questions. I can't understand well because of much changing..

    Main prop's P11 connect to slave's XI in README.
    Slave Prop is no XTAL?

    13. reboot, fsload LogicAnalyzer.f
    I did. Prop reply-->Prop0 Cog6 ok

    14. c" hex a aaa60 setHza b 6ACF0 setHzb" 5 cogx
    I did. Prop reply-->Prop0 Cog6 ok
    start up 2 clocks on IO pins A & B, then run <---- I don't know. What's this?


    c" hex a aaa60 setHza b 6ACF0 setHzb" 5 cogx
    Prop0 Cog6 ok
    sampleNoTriger
    UNDEFINED WORD sampleNoTriger

    Prop0 Cog6 ok
  • prof_brainoprof_braino Posts: 4,313
    edited 2010-12-01 05:51
    [QUOTE=Andreas K
  • prof_brainoprof_braino Posts: 4,313
    edited 2010-12-01 05:57
    caskaz wrote: »
    Slave Prop is no XTAL?
    13. reboot, fsload LogicAnalyzer.f
    I did. Prop reply-->Prop0 Cog6 ok

    14. c" hex a aaa60 setHza b 6ACF0 setHzb" 5 cogx
    I did. Prop reply-->Prop0 Cog6 ok
    start up 2 clocks on IO pins A & B, then run <---- I don't know. What's this?


    c" hex a aaa60 setHza b 6ACF0 setHzb" 5 cogx
    Prop0 Cog6 ok
    sampleNoTriger
    UNDEFINED WORD sampleNoTriger

    Prop0 Cog6 ok

    caskaz always asks the hard questions!
    slave has no XTAL, it is driven by MASTER. I haven't fixed the docs, the new version info is in the comments; old version was
    http://code.google.com/p/propforth/wiki/HighSpeedSerialInterpropCommunications

    Search source for "sampleNoTriger", it might be "sampleNoTrigger" with two g's if that's a typo.

    I'll start on the update for this doc tonight

    EDIT 20101205
    Please see new tutorial link in post#35
  • caskazcaskaz Posts: 957
    edited 2010-12-01 06:31
    Hi prof_braino.

    I tested fs.f.

    fsls put out lists.
    End oflists display "-6C80 bytes free in file system".
    This "-6C80 bytes" is wrong?
  • caskazcaskaz Posts: 957
    edited 2010-12-01 06:46
    Search source for "sampleNoTriger", it might be "sampleNoTrigger" with two g's if that's a typo.

    Hi. It's type.
    Prop0 Cog6 ok
    
    fsload LogicAnalyzer.f
    
    
    Prop0 Cog6 ok
    
    c" hex a aaa60 setHza b 6ACFC0 setHzb" 5 cogx
    
    Prop0 Cog6 ok
    
    sampleNoTrigger
    
    UNDEFINED WORD sampleNoTrigger
    
    Prop0 Cog6 ok
    
  • prof_brainoprof_braino Posts: 4,313
    edited 2010-12-01 10:34
    caskaz wrote: »
    Hi prof_braino.

    I tested fs.f.

    fsls put out lists.
    End oflists display "-6C80 bytes free in file system".
    This "-6C80 bytes" is wrong?

    I don't know, I didn't test that yet, but
    If the last item in the list is a TOTAL then it might be a dash.
    Sal said the kernel uses 4 k, and 6c80 is around 27,776

    Does that fit what the code says?
  • prof_brainoprof_braino Posts: 4,313
    edited 2010-12-01 10:36
    caskaz wrote: »
    sampleNoTrigger

    I did see a word in the logic analyzer that is something like
    sampleNoTrigger

    Find that to determine the correct spelling and how to load it.

    ALSO - The logic analyzer is defined in ONLY ONE COG, not in the main hub dictionary.
    SO if you have logic analyser defined in COG 5, you won't see the cog 5 only parts in cog 6
    Switch to cog 5 and see if its there.

    Usage might be:
    c" sampleNoTrigger" 5 cogx
    

    Thanks for testing this stuff out. I won't be able to get to it until tonight.
  • caskazcaskaz Posts: 957
    edited 2010-12-01 23:01
    Hi prof_braino.

    In README.TXT there is below;
    IO 0 --> 220 ohm --> IO 30
    IO 1 --> 220 ohm --> IO 31

    In norom.f there is below;
    IO 0 --> --> IO 30
    IO 1 --> --> IO 31

    Which is correct?
    No pull-up-resister?

    In com.f P20&P21 are used. These are different another com?
  • caskazcaskaz Posts: 957
    edited 2010-12-02 04:13
    Hi prof_braino.

    I test procedures from 1. to read README.TXT.
    But I CANNOT go ahead from 14.
    I cannot understand what are these.

    I use protoboard as main.
    40pin propeller as slave.

    protpboard
    slave
    P8
    > 220ohm -> P28
    P9
    > 220ohm -> P29 -- 10kohm(pull-up resister) --> VDD
    P10
    > RESET
    P11
    > XI
    3.3V
    > VDD
    0V
    --> VSS

    Hardware is wrong?
  • HumanoidoHumanoido Posts: 5,770
    edited 2010-12-02 04:14
    How to enable TV output?
  • prof_brainoprof_braino Posts: 4,313
    edited 2010-12-02 04:56
    caskaz wrote: »
    Hi prof_braino.

    I test procedures from 1. to read README.TXT.
    But I CANNOT go ahead from 14.
    I cannot understand what are these.

    I use protoboard as main.
    40pin propeller as slave.

    protpboard
    slave
    P8
    > 220ohm -> P28
    P9
    > 220ohm -> P29 -- 10kohm(pull-up resister) --> VDD
    P10
    > RESET
    P11
    > XI
    3.3V
    > VDD
    0V
    --> VSS

    Hardware is wrong?

    No, it looks right.
    Is slave BOE also to VSS?

    I am really swamped here, I won't get to it till weekend. Apologies.
  • prof_brainoprof_braino Posts: 4,313
    edited 2010-12-02 05:01
    Humanoido wrote: »
    How to enable TV output?

    No TV yet. Sal doesn't use it, so he left that as an exercise for the user. Hi and LOW VGA have fit all needs (mostly) so far.

    If you look at the VGA kernel compared to the standard kernel, you should be able to determine what changed, and add the TV stuff the same way. At least thats what Sal says, but I haven't been able to figure it out yet. Its a little tough.

    Give it a shot, if you get TV to work, you will truly be a Jedi Master. Or just leave it until more people are asking for it, then we'll all do it as a group. We have other fish to fry right now.
  • caskazcaskaz Posts: 957
    edited 2010-12-02 05:19
    Hi prof_braino.

    Of course slave BOE conncted to VSS.

    I attached log from step 10 to step16.

    At step16 WORD"cominit" use 0x14/0x15 for com-port.
    master slave
    P20
    P20
    P21
    P21
    Above is correct?

    And "this starts a terminal, and connect to cog0 via the com interface,CTL-F exits" at step16
    What is this? How it do?

    Sorry, I cannot understand at all.
  • prof_brainoprof_braino Posts: 4,313
    edited 2010-12-02 05:59
    caskaz wrote: »
    What is this? How it do?
    Sorry, I cannot understand at all.

    Ok, there are a couple different methods for the connection, you might be mixing methods, which could be causing problem.

    When I first tried it it did not work either. The instructions were correct, but I made several assumptions that threw me in the wrong direction.

    Sal usually checks his stuff, so my guess it that the instructions should be right. Although sometimes only Sal can understand them. Sorry. I can't look at it just yet.

    Please try starting again, and moving slowly. I had to do this, and then DING! the light went on and it worked. But it took several tries before I could follow the instructions correctly.

    I will go through the material on the weekend and try to make a better instruction. Sorry for the delay, I really want to work on it too, please bear with me.
  • caskazcaskaz Posts: 957
    edited 2010-12-02 06:53
    Hi prof_braino.

    I done step by step In README.TXT.
    I'm wrong how to use TeraTerm?
  • prof_brainoprof_braino Posts: 4,313
    edited 2010-12-02 08:23
    caskaz wrote: »
    Hi prof_braino.

    I done step by step In README.TXT.
    I'm wrong how to use TeraTerm?

    If you get an UNDEFINED WORD response, it generally will not work.

    Where you followed the directions correctly or whether teraterm is incorrect cannot be determined.

    Figure out the UNDEFINED WORD message and proceed from there.

    Otherwise, please wait until I can look at it.
  • caskazcaskaz Posts: 957
    edited 2010-12-03 07:24
    Hi prof_braino.

    I see.
    LogicAnalyzer.f doesn't load at step13 of README.TXT.
    Why?
    no error messages.
    I'm reading WORD'(fsload)' in fs.f.
  • Brian RileyBrian Riley Posts: 626
    edited 2010-12-03 08:25
    prof ???

    various promo blurbs talk about multiple slaves. Questions ...

    - do they 'daisy chain' or what? I mean if I took your reference setup with a Proto board, 40 pin DIP PropChip, and Spinaret and built up a small board with another 40 pin Dip Prop would I simply make the same connections between the 1st DIP Prop and the 2nd DIP Prop as were made between the Master Prop on the Proto and the 1st DIP Prop and so on for each additional slave?

    - slaves??? Are they just for added CPU power, or can we address their I/O pins? If so, how?

    - slaves??? When we start spinning off processes to slave cogs do we have any knowledge and/or control of what cog in which slave we are going to?
  • mwalimumwalimu Posts: 44
    edited 2010-12-03 14:12
    OK. So how does one create a serial channel. I see serinit and cominit.
  • Brian RileyBrian Riley Posts: 626
    edited 2010-12-03 15:33
    I spent a couple of hours with ExpressPCBs schematic program and put together a schematic of the reference setup.

    I have checked it over for mistakes, found and fixed a couple, which isn't to say I didn't suffer an operator head space error or two. A critical look would be appreciated .... hope this is of some help.
    1024 x 773 - 86K
  • caskazcaskaz Posts: 957
    edited 2010-12-03 16:25
    Hi.
    I have question to everyone.
    I cannot test procedures of README.TXT.
    This problem is caused only me?
    You can test procedures of README.TXT?
    No problem?
  • caskazcaskaz Posts: 957
    edited 2010-12-04 07:31
    Hi prof_braino.

    WORD"st?" is deleted?

    And I made eeDump to see datas inside eeprom.
    Dump-list is not expected form.
    CarrigeReturn's line is inserted 1-line in Dump-list.
    Why?
  • prof_brainoprof_braino Posts: 4,313
    edited 2010-12-04 12:59
    caskaz wrote: »
    WORD"st?" is deleted?
    CarrigeReturn's line is inserted 1-line in Dump-list.
    Why?

    I noticed that too.

    The code for the kernel has been re-organized, so we don't have to always load the development code. (For example, when the target device is complete and you only want the application, and don't need the command line).

    So all the development material must be loaded from the XXX.f file. ButI didn't find that yet. I'll be talking to Sal tomorrow.
  • prof_brainoprof_braino Posts: 4,313
    edited 2010-12-04 13:05
    I spent a couple of hours with ExpressPCBs schematic program and put together a schematic of the reference setup.

    WOW. Your great.

    I only ran the demo on the development version 3.6 which was not posted ti the public.
    I was planning to start my testing today (intense week at work) but we had a small face-plant incident at Chuck E Cheese from which the Brainettes are still recovering.

    Plan is to get to test tonight and post asap

    I guess I should not post the releases early (before posting completed documentation), it seems to cause too much confusion. Sorry, I got too excited; I didn'twant my personal schedule to prevent you guys from playing.
  • hinvhinv Posts: 1,255
    edited 2010-12-04 13:44
    This is REALLY cool! That is quite a list of features. I was just thinking last night of what it might take to build an assembler in forth so that I could run it on my Zipit Z2 using gforth, but you did it on forth on the propeller, which is as good or better really. Do you think the assembler is gforth compatible?

    I can see now that I am going to have some fun playing with it.

    Another question: I see that the Spineret has a 4 bit buss for fast nibble transfers in addition to SPI. Does Sal have a driver in the kernel to drive it at 4bits?

    Thanks!
    Doug
Sign In or Register to comment.