thank you for the style tips. I really smashed code snippets together without thinking about readability. I like the "fall into it" in particular.
Regarding my "test" task (which istn't a task at all): I tried to free #P9 with PININP and PNCLR real quickly but then had to leave the Prop for other work. I'll do some tests later.
EDIT: Re Prop2Prop coms I would just use a single wire common to all Props as the communications "bus" Use a 220R resistor in series with the pin so there aren't any problems with more than one Prop trying to drive the line. The SERIN and SEROUT work just fine up to 250K baud for a really simple network without requiring any special drivers. In fact I might just demonstrate such an arrangement with basically a cog dedicated to listening to the line and working out if it has been selected and buffering the receive data. Serial data can be buffered and then transmitted normally once the bus signals it's ready. Since the cog is listening all the time it can timeout to say the bus is free after which if it has data to send it will send out an address character, if that is acknowledged correctly then any data can then be sent. I can't see why a specialized point-to-point high-speed object would be needed though especially with slow sensor data.
In this multi-master scheme using the single common pin it would mean that there would be no need to "interrogate" the "slaves" as the "slaves" would be sending their data when they need to. The "master" can receive these data broadcasts and determine the source and do what it needs to do with the data or just ignore it. [DATA BROADCAST ADDRESS] <ACK> [SOURCE ADDRESS] [DATA] [EOP]
The EOP is just a way of saying the packet is finished, no need to wait for a timeout as the bus is now free.
This is the first thing I tried to do. Did I miss a step?
Thanks,
Doug
I just checked that document and I did have a little bug in there with the "cntr" variable but the Dropbox version has also been updated I was in the middle of shuffling some of the "REG" task variables so that a task need only allocate the first 32 bytes if it needed it's own emit and key vectors etc. BTW, I'm using BST 0.19.4-pre12
1. Do I just compile and download the kernel to eeprom to start off?
2. How do I tell minicom which port to use?
Thanks for the handholding...
Doug
You can specify the comport on the command line as "minicom ttyUSB0" and then save the setup (^A,O,"Save setup..). Alternatively you can ^A,0,"Serial port setup" if you are already running minicom. Don;t forget to set the line delay to 20ms (^A,T,D) so that pasting without handshake will work. Once you have the PC compiled kernel loaded into EEPROM and assuming the correct clock has been configured then you should copy EXTEND.fth and paste it into the terminal which will complete the kernel build with the RAM image being written to EEPROM once the load is complete.
I noticed that the clock settings in the web document version is a bit hard to read as yellow on white so I've changed it to a red font, this is the section:
CON
_clkmode = xtal1 + pll8x ' <---------------- change to suit
_xinfreq = 10_000_000 ' <---------------- change to suit your crystal
baud = 230400 ' <-- change - tested from 300 baud to 3M baud
Thanks for the handholding.
Got the clock & baudrade fixed.
Got BST 0.19.4-pre12 so now I can use the serial terminal and connect that way. I get an Ok prompt
When I try to connect with minicom I get on the screen:
[code]
Welcome to minicom 2.4
OPTIONS: I18n
Compiled on Jan 25 2010, 07:02:36.
Port /dev/ttyUSB0
Press CTRL-A Z for help on special keys
Propeller .:.:--TACHYON--:.:. Forth V23131230.0000
Cold start - no user code - setting defaults
CTRL-A Z for help |230400 8N1 | NOR | Minicom 2.4 | VT102 | Offline
[\code]
It won't talk past that.
Why does it say "Offline"
I don't get an OK prompt like I do in bst terminal.
Thanks for the handholding.
Got the clock & baudrade fixed.
Got BST 0.19.4-pre12 so now I can use the serial terminal and connect that way. I get an Ok prompt
When I try to connect with minicom I get on the screen:
[code]
Welcome to minicom 2.4
OPTIONS: I18n
Compiled on Jan 25 2010, 07:02:36.
Port /dev/ttyUSB0
Press CTRL-A Z for help on special keys
Propeller .:.:--TACHYON--:.:. Forth V23131230.0000
Cold start - no user code - setting defaults
CTRL-A Z for help |230400 8N1 | NOR | Minicom 2.4 | VT102 | Offline
[\code]
It won't talk past that.
Why does it say "Offline"
I don't get an OK prompt like I do in bst terminal.
.
On my mac here the minicom command I use to connect to one of my boards on a specific USB port.
minicom -D /dev/tty.usbserial-A100PCDJ -b 230400
you need to plug in your "board" then check the /dev directory for the usb that is connected, each board/port combo will yield a unique device.
then start minicom as above with your parameters and don't forget to set the line delay as Peter has stated, I use 40 and no char delay.
Working with basic sockets and trying to connect to a server I can't seem to set some registers set with L! and LW!
Or I am using these words incorrectly?
\ other standard w5200 code, network.fth and IP initialization code not included in this snippet
pub sDIP $0C @SOCKET ; \ 4 byte dest IP address
pub sDPORT $10 @SOCKET ; \ 2 byte dest port
0 == MYSOC
MYSOC SOCKET
$10.10.1.210 sDIP L!
#80 sDPORT LW!
MYSOC SOCKET sCLOSE TCP #1099 PORT! sOPEN sCONNECT
Do you have an example of settting up a socket to connect to a server? The server examples are excellent in NETWORK.fth: FTP, TELNET, HTTP BTW
Working with basic sockets and trying to connect to a server I can't seem to set some registers set with L! and LW!
Or I am using these words incorrectly?
\ other standard w5200 code, network.fth and IP initialization code not included in this snippet
pub sDIP $0C @SOCKET ; \ 4 byte dest IP address
pub sDPORT $10 @SOCKET ; \ 2 byte dest port
0 == MYSOC
MYSOC SOCKET
$10.10.1.210 sDIP L!
#80 sDPORT LW!
MYSOC SOCKET sCLOSE TCP #1099 PORT! sOPEN sCONNECT
Do you have an example of settting up a socket to connect to a server? The server examples are excellent in NETWORK.fth: FTP, TELNET, HTTP BTW
I've only used this in server mode so far but I will have a look at client mode. The WIZnet chips are nice except they have lots of little idiosyncrasies such as not being able to write certain registers when you want to, only when the chip feels it's okay! Watch that IP notation as you are specifying it in hex so that it will end up as $10101210 rather than &10.10.1.210
If you create a register defintion such as sDPORT you might consider having it also perform the write to register operation. This looks cleaner IMO and you don't have to remember what width it is either.
I just checked that document and I did have a little bug in there with the "cntr" variable but the Dropbox version has also been updated I was in the middle of shuffling some of the "REG" task variables so that a task need only allocate the first 32 bytes if it needed it's own emit and key vectors etc. BTW, I'm using BST 0.19.4-pre12
I just checked the DropBox listings and the key files (Tachyon, EXTEND, QS, SDCARD, MULTIFAT, W5200 and NETWORK) are still showing "16 days old"
GO
NAMES: $54C1...74CB for 8202 (0532 bytes added)
CODE: $0000...524F for 12869 (2470 bytes added)
CALLS: 0161 vectors free
RAM: 0626 bytes free
AUTORUN BOOT
MODULES LOADED:
48A9: NETWORK.fth WIZNET NETWORK SERVERS 131211.1530
41ED: W5200.fth WIZNET W5200 driver 131211.1530
38E0: MULTIFILE.fth FAT32/16 MultiFile Layer V1.1 131207-0000
31A5: SDCARD.fth SD CARD Toolkit - 131114.0000
3003: QuickStart.fth QuickStart + W5200 HARDWARE DEFINITIONS 131204.1200
17C0: EXTEND.fth Primary extensions to TACHYON kernel - 131212-1200
*** Tachyon Forth Network and File Server ***
Mounted SD Card
Media mounted as 3C18.8F1F NO NAME FAT32 Cluster size = 32,768 Sectors = 15,269,888
Running this build, w/o AUTORUN, I get File-Zilla to connect, and it sends a list. Then I try to transfer ROM0.BIN to my iMac and the 5200 refuses the connection.. .WHY? See FileZilla screenshot below
I just installed Tachyon on one of my QuickStart boards and it seems to work fine! I'm wondering though if there is a way to remove the case sensitivity. It's kind of a pain to have to type "DUP" instead of "dup". Would that be contrary to the Forth philosophy?
I just installed Tachyon on one of my QuickStart boards and it seems to work fine! I'm wondering though if there is a way to remove the case sensitivity. It's kind of a pain to have to type "DUP" instead of "dup". Would that be contrary to the Forth philosophy?
I don't think it's against Forth "philosophy," and I do know that many (perhaps even most) Forths are not case sensitive. (I think the ANS Forth standard says something about systems having to support core words entered in upper-case, but that's about as far as it goes.)
I just installed Tachyon on one of my QuickStart boards and it seems to work fine! I'm wondering though if there is a way to remove the case sensitivity. It's kind of a pain to have to type "DUP" instead of "dup". Would that be contrary to the Forth philosophy?
What I could do to improve interactive typing is to implement an autocase feature. If a word was not found in the dictionary and it wasn't a number then either a conversion is performed to uppercase and the dictionary is searched again or else a non case-sensitive search is performed. Since this would really only be during console interaction rather than loading source code modules it shouldn't matter that the search is a bit slower.
GO
NAMES: $54C1...74CB for 8202 (0532 bytes added)
CODE: $0000...524F for 12869 (2470 bytes added)
CALLS: 0161 vectors free
RAM: 0626 bytes free
AUTORUN BOOT
MODULES LOADED:
48A9: NETWORK.fth WIZNET NETWORK SERVERS 131211.1530
41ED: W5200.fth WIZNET W5200 driver 131211.1530
38E0: MULTIFILE.fth FAT32/16 MultiFile Layer V1.1 131207-0000
31A5: SDCARD.fth SD CARD Toolkit - 131114.0000
3003: QuickStart.fth QuickStart + W5200 HARDWARE DEFINITIONS 131204.1200
17C0: EXTEND.fth Primary extensions to TACHYON kernel - 131212-1200
*** Tachyon Forth Network and File Server ***
Mounted SD Card
Media mounted as 3C18.8F1F NO NAME FAT32 Cluster size = 32,768 Sectors = 15,269,888
Running this build, w/o AUTORUN, I get File-Zilla to connect, and it sends a list. Then I try to transfer ROM0.BIN to my iMac and the 5200 refuses the connection.. .WHY? See FileZilla screenshot below
That passive port is all wrong, it should be a random port within a confined range. The directory listing requires the data port so the connection is refused because the port is way out of rnage. I will check my system and get back to you. Have updated the files in the meantime.
EDIT: Just checked mine and it worked fine although the port reported in decimal is incorrect although the port parameter is fine.
[FONT=courier new]
Command: PASV
Response: 227 Entering Passive Mode with port 2857207046(192,168,16,150,170,77)
Command: LIST
Response: 150 Here comes the directory listing
Response: 226 Directory send OK
Status: Directory listing successful[/FONT]
EDIT: The port it tried to use in your case was port 49599 but your firewall or router may be blocking that.
Either configure the firewall/router or adjust the range:
The reason the decimal version was wrong is because of a a simple @ vs W@
[FONT=courier new]pub PASV
ON LANLED
GETPAS \ pick a random port in the specified range
." 227 Entering Passive Mode with port " [B][COLOR=#ff0000]dataport W@ .DEC[/COLOR][/B] \ Response with msg and port
." (" @srcip E@ .IPD COMMA dataport 1+ C@ .BYTEDEC COMMA dataport C@ .BYTEDEC ." )" CR
FTPDAT SOCKET sCLOSE \ Prep the data port socket
TCP dataport W@ PORT! sOPEN sLISTEN .CONNECTED \ Set the port and open listen for connection
FTP SOCKET LAN \ switch back to FTP socket (precaution)
;
IMMEDIATE[/FONT]
What I could do to improve interactive typing is to implement an autocase feature. If a word was not found in the dictionary and it wasn't a number then either a conversion is performed to uppercase and the dictionary is searched again or else a non case-sensitive search is performed. Since this would really only be during console interaction rather than loading source code modules it shouldn't matter that the search is a bit slower.
As is obvious, I'm not a Forth expert but I think that having different behavior when using Forth interactively from what happens when you load a file is likely to be confusing. I'll just try to remember to typing DUP in uppercase. At first I thought I had installed Tachyon wrong since I got a series of question marks every time I entered "dup ". At least now I know that it was my typing error not a problem with my installation.
As is obvious, I'm not a Forth expert but I think that having different behavior when using Forth interactively from what happens when you load a file is likely to be confusing. I'll just try to remember to typing DUP in uppercase. At first I thought I had installed Tachyon wrong since I got a series of question marks every time I entered "dup ". At least now I know that it was my typing error not a problem with my installation.
Thanks,
David
I know that there is this tendency in the programming language world to make the language case insensitive but that seems like a waste to me and plus I like to know a bit about the word when I read code without having to resort to really_long_names_to_describe_it. If a word is in all capitals then it's normally an action word that does something. Mostly the constants and variables are in lower case as they simple leave something on the stack. This is my basic although not strict Forth "philosophy" if you like. I bend and break my own guidelines frequently but I do try to work with some guidelines anyway.
I know that there is this tendency in the programming language world to make the language case insensitive but that seems like a waste to me and plus I like to know a bit about the word when I read code without having to resort to really_long_names_to_describe_it. If a word is in all capitals then it's normally an action word that does something. Mostly the constants and variables are in lower case as they simple leave something on the stack. This is my basic although not strict Forth "philosophy" if you like. I bend and break my own guidelines frequently but I do try to work with some guidelines anyway.
Thanks for the explanation. I understand your philosophy since it matches the C philosophy at least with regards to case sensitivity. :-)
I've only used this in server mode so far but I will have a look at client mode. The WIZnet chips are nice except they have lots of little idiosyncrasies such as not being able to write certain registers when you want to, only when the chip feels it's okay! Watch that IP notation as you are specifying it in hex so that it will end up as $10101210 rather than &10.10.1.210
If you create a register defintion such as sDPORT you might consider having it also perform the write to register operation. This looks cleaner IMO and you don't have to remember what width it is either.
Delving throught the WizNet C, C++ files to find how to set these registers is such a PITA. What a mess that driver is, files everywhere with overloaded functions that only a Mother could love. Now that I see how elegant FORTH is for driver work I know why my mentor would only write drivers in FORTH, even if he had to build his own FORTH first which he did many times I guess. This was before my time with him and any experience with FORTH.
Still hunting for this elusive function definition in the source: writeSnDIPR() to unlock the writing of the magic registers, gads!
Update: Jewel from WizNet Forun: "You should be write socket register value before status register is init."
Well okay I'll just try that then!
Update: No joy writing these registers after a PWR cycle, RST cycle, socket stat = 0, socket stat = init or any other combination I tried, obviously not the right combo yet. WizNet says to check the reference code, gads x 2. Better go look at the pasm driver for a while.
************** HOT TIP ******************
Before attempting to write to the following destination registers: ip, port and mac do this why the socket status is not INIT.
: setwint ( intval -- ) sINTS LC! ;
$FF setwint
you will only be able to read the registers after sOPEN, sCONNECT so it seems
Hat tip to the W5200 spin and pasm driver writers! Moving on...
What would be the version of Tachyon that would be complete but not embellished as newer version are?
My purpose is to study and learn from the code and maybe extend it in a different direction as a new application.
What would be the version of Tachyon that would be complete but not embellished as newer version are?
My purpose is to study and learn from the code and maybe extend it in a different direction as a new application.
cheers,
rich
I would think you would start with lastest Tachyon Kernel. You can stripe out anything you don't need once you understand the structure. It's up to you to load the rest of the goodies via extend.fth.... which could be stripped down an well. The Kernel doesn't contain all the servers etc just core words and the Tachyon VM. I have been able to load everything and the sink and still have a bunch of room for a large embedded application. Get your "project" running then optimize/refactor. Peter took a timer task example I wrote and paired it down by 75%, ouch but I did learn a bunch. Recently I've been working with different chips, SPI and I2C and poking and peeking values to them has never been easier, if I2C and SPI was ever suppose to be easy in the first place.
Peter will have the last word here, this is my basic experience so far. Good luck.
I agree.
at every version it looks like Peter is stripping down the kernel to a very tight and basic tool.
Everything else is loaded afterward, so I guess the latest is the best starting point.
On the tachyon pages there still is a link to version 1, by the way..
Massimo
Does Tachyon support using libraries from OBEX? I'm a little lost looking at the dropbox repository but would love to tinker around with Forth and SIDcog.
I've got the client sockets working correctly now. I need to run some untethered tests i.e. don't have a USB cable attached to the BOE.
Everything "AUTORUN"s fine as long as the USB is plugged into the computer but the BOE doesn't "BOOT" elsewise?
What am I missing?
Tachyon does serial break detection to allow for remote resetting so depending upon your hookup then this may be the case. A check is made in case the receive line is simply floating which does not result in a reset, so it has to be a valid break.Easiest way to check is to disable the receive cog in your startup with "0 STOP". You can always get back into it to reenable by holding down the ^A key during reset which will abort an autorun.
Does Tachyon support using libraries from OBEX? I'm a little lost looking at the dropbox repository but would love to tinker around with Forth and SIDcog.
I have used the VGA bitmap object directly but since that is just PASM that runs in it's own cog there wasn't anything much to change whereas most of the objects available have Spin wrappers which can't be used. In many instances I find that much of this Spin code is redundant anyway. I will take a look at SIDcog though to see if there is a possibility or using it.
EDIT: Looks easy enough to convert the few Spin methods and load the binary straight into a cog. Here's a conversion of a Spin function:
[FONT=courier new]pub [B]setADSR[/B] ( attack, decay, sustain, release channel -- )
{
Sets the envelope values of a SID channel
- channel - The SID channel to use. (0 - 2)
- attack - The attack value. (0 - 15)
- decay - The decay value. (0 - 15)
- sustain - The sustain value. (0 - 15)
- release - The release value. (0 - 15)
}
3 SHL >L \ offs := channel<<3 (IX (top of loop stack) is the channel offset)
\ STACK = ( attack decay sustain release )
$0F AND SWAP $0F AND 4 SHL OR \ (release&$F) | ((sustain&$F)<<4)
ch1_sustainRelease IX + C! \ byte[@ch1_sustainRelease + offs] :=
\ STACK = ( attack decay )
$0F AND SWAP $0F AND 4 SHL OR \ (decay&$F) | ((attack&$F)<<4)
ch1_attackDecay IX + C! \ byte[@ch1_attackDecay + offs] :=
L> DROP \ discard offset
;
[/FONT]
Of course this will look even simpler once I factor out code:
[FONT=courier new]pub [B]setADSR[/B] ( attack, decay, sustain, release channel -- )
{
Sets the envelope values of a SID channel
- channel - The SID channel to use. (0 - 2)
- attack - The attack value. (0 - 15)
- decay - The decay value. (0 - 15)
- sustain - The sustain value. (0 - 15)
- release - The release value. (0 - 15)
}
3 SHL >L \ offs := channel<<3 (IX (top of loop stack) is the channel offset)
NIB>BYTE ch1_sustainRelease IX + C! \ byte[@ch1_sustainRelease + offs] :=
NIB>BYTE ch1_attackDecay IX + C! \ byte[@ch1_attackDecay + offs] :=
L> DROP \ discard offset
;
[/FONT]
Into my AUTORUN "word" and it still doesn't boot without the USB cable and as a bonus ^A doesn't abort the AUTORUN either so know I need to rebuild the world to get back in.
I've had this issue with everyboard I use, I could really use a simple example of a booting tachyon system that does not rely on a USB connection.
Comments
thank you for the style tips. I really smashed code snippets together without thinking about readability. I like the "fall into it" in particular.
Regarding my "test" task (which istn't a task at all): I tried to free #P9 with PININP and PNCLR real quickly but then had to leave the Prop for other work. I'll do some tests later.
Will do that later, thanks.
Untiled(2826,33)Error: Unresolved symbol - last
This is the first thing I tried to do. Did I miss a step?
Thanks,
Doug
I just checked that document and I did have a little bug in there with the "cntr" variable but the Dropbox version has also been updated I was in the middle of shuffling some of the "REG" task variables so that a task need only allocate the first 32 bytes if it needed it's own emit and key vectors etc. BTW, I'm using BST 0.19.4-pre12
It works now.
I got it to compile. Two questions:
1. Do I just compile and download the kernel to eeprom to start off?
Got it after fixing the clock and the baud!
2. How do I tell minicom which port to use?
Thanks for the handholding...
Doug
I noticed that the clock settings in the web document version is a bit hard to read as yellow on white so I've changed it to a red font, this is the section:
Got the clock & baudrade fixed.
Got BST 0.19.4-pre12 so now I can use the serial terminal and connect that way. I get an Ok prompt
When I try to connect with minicom I get on the screen:
[code]
Welcome to minicom 2.4
OPTIONS: I18n
Compiled on Jan 25 2010, 07:02:36.
Port /dev/ttyUSB0
Press CTRL-A Z for help on special keys
Propeller .:.:--TACHYON--:.:. Forth V23131230.0000
Cold start - no user code - setting defaults
CTRL-A Z for help |230400 8N1 | NOR | Minicom 2.4 | VT102 | Offline
[\code]
It won't talk past that.
Why does it say "Offline"
I don't get an OK prompt like I do in bst terminal.
On my mac here the minicom command I use to connect to one of my boards on a specific USB port.
minicom -D /dev/tty.usbserial-A100PCDJ -b 230400
you need to plug in your "board" then check the /dev directory for the usb that is connected, each board/port combo will yield a unique device.
then start minicom as above with your parameters and don't forget to set the line delay as Peter has stated, I use 40 and no char delay.
Working with basic sockets and trying to connect to a server I can't seem to set some registers set with L! and LW!
Or I am using these words incorrectly?
Do you have an example of settting up a socket to connect to a server? The server examples are excellent in NETWORK.fth: FTP, TELNET, HTTP BTW
I've only used this in server mode so far but I will have a look at client mode. The WIZnet chips are nice except they have lots of little idiosyncrasies such as not being able to write certain registers when you want to, only when the chip feels it's okay! Watch that IP notation as you are specifying it in hex so that it will end up as $10101210 rather than &10.10.1.210
If you create a register defintion such as sDPORT you might consider having it also perform the write to register operation. This looks cleaner IMO and you don't have to remember what width it is either.
I just checked the DropBox listings and the key files (Tachyon, EXTEND, QS, SDCARD, MULTIFAT, W5200 and NETWORK) are still showing "16 days old"
Running this build, w/o AUTORUN, I get File-Zilla to connect, and it sends a list. Then I try to transfer ROM0.BIN to my iMac and the 5200 refuses the connection.. .WHY? See FileZilla screenshot below
"And so Forth..." says that Forth is usually not case-sensitive.
Keep in mind, though -- I'm only a Forth neophyte.
What I could do to improve interactive typing is to implement an autocase feature. If a word was not found in the dictionary and it wasn't a number then either a conversion is performed to uppercase and the dictionary is searched again or else a non case-sensitive search is performed. Since this would really only be during console interaction rather than loading source code modules it shouldn't matter that the search is a bit slower.
That passive port is all wrong, it should be a random port within a confined range. The directory listing requires the data port so the connection is refused because the port is way out of rnage. I will check my system and get back to you. Have updated the files in the meantime.
EDIT: Just checked mine and it worked fine although the port reported in decimal is incorrect although the port parameter is fine.
EDIT: The port it tried to use in your case was port 49599 but your firewall or router may be blocking that.
Either configure the firewall/router or adjust the range:
The reason the decimal version was wrong is because of a a simple @ vs W@
Thanks,
David
I know that there is this tendency in the programming language world to make the language case insensitive but that seems like a waste to me and plus I like to know a bit about the word when I read code without having to resort to really_long_names_to_describe_it. If a word is in all capitals then it's normally an action word that does something. Mostly the constants and variables are in lower case as they simple leave something on the stack. This is my basic although not strict Forth "philosophy" if you like. I bend and break my own guidelines frequently but I do try to work with some guidelines anyway.
Delving throught the WizNet C, C++ files to find how to set these registers is such a PITA. What a mess that driver is, files everywhere with overloaded functions that only a Mother could love. Now that I see how elegant FORTH is for driver work I know why my mentor would only write drivers in FORTH, even if he had to build his own FORTH first which he did many times I guess. This was before my time with him and any experience with FORTH.
Still hunting for this elusive function definition in the source: writeSnDIPR() to unlock the writing of the magic registers, gads!
Update: Jewel from WizNet Forun: "You should be write socket register value before status register is init."
Well okay I'll just try that then!
Update: No joy writing these registers after a PWR cycle, RST cycle, socket stat = 0, socket stat = init or any other combination I tried, obviously not the right combo yet. WizNet says to check the reference code, gads x 2. Better go look at the pasm driver for a while.
************** HOT TIP ******************
Before attempting to write to the following destination registers: ip, port and mac do this why the socket status is not INIT. you will only be able to read the registers after sOPEN, sCONNECT so it seems
Hat tip to the W5200 spin and pasm driver writers! Moving on...
Does SimpleIDE compile Tachyon Forth correctly?
As i remember reading Tachyon takes advantage of some BST features so may it will not compile correctly in SimpleDE.
Has anyone tried yet since, obviously i have not?
cheers,
rich
Massimo
What would be the version of Tachyon that would be complete but not embellished as newer version are?
My purpose is to study and learn from the code and maybe extend it in a different direction as a new application.
cheers,
rich
I would think you would start with lastest Tachyon Kernel. You can stripe out anything you don't need once you understand the structure. It's up to you to load the rest of the goodies via extend.fth.... which could be stripped down an well. The Kernel doesn't contain all the servers etc just core words and the Tachyon VM. I have been able to load everything and the sink and still have a bunch of room for a large embedded application. Get your "project" running then optimize/refactor. Peter took a timer task example I wrote and paired it down by 75%, ouch but I did learn a bunch. Recently I've been working with different chips, SPI and I2C and poking and peeking values to them has never been easier, if I2C and SPI was ever suppose to be easy in the first place.
Peter will have the last word here, this is my basic experience so far. Good luck.
at every version it looks like Peter is stripping down the kernel to a very tight and basic tool.
Everything else is loaded afterward, so I guess the latest is the best starting point.
On the tachyon pages there still is a link to version 1, by the way..
Massimo
Everything "AUTORUN"s fine as long as the USB is plugged into the computer but the BOE doesn't "BOOT" elsewise?
What am I missing?
Thanks
EDIT: Looks easy enough to convert the few Spin methods and load the binary straight into a cog. Here's a conversion of a Spin function:
Of course this will look even simpler once I factor out code:
Well I put Into my AUTORUN "word" and it still doesn't boot without the USB cable and as a bonus ^A doesn't abort the AUTORUN either so know I need to rebuild the world to get back in.
I've had this issue with everyboard I use, I could really use a simple example of a booting tachyon system that does not rely on a USB connection.
I'm doing something wrong obviously.