BTW, Since the SPI instructions simple toggle the clock line you could try setting clock high prior to a read and see how that goes.
I've tried a bunch of things to mimic the arduino timings as best as possible except for the frequency being 4Mhz+ compared to 1 Mhz. Later today I'll rewrite the arduino code to see if I can get the chip to work near 5 Mhz. Sleepy
BTW, Since the SPI instructions simple toggle the clock line you could try setting clock high prior to a read and see how that goes.
I've tried a bunch of things to mimic the arduino timings as best as possible except for the frequency being 4Mhz+ compared to 1 Mhz. Later today I'll rewrite the arduino code to see if I can get the chip to work near 5 Mhz. Sleepy
Arduino code fails at 4Mhz, works great a 2Mhz and clock widths are between 240 and 280ns. Arduino SPI_CLOCK_DIV is in power of 2 so I can't get more granular for testing.
All better, got MAX31856 working correctly with current kernel using SPIWR, SPIRD 4+ MHz
Thanks
That's good as I kinda figured that it should really work at 4MHz plus I didn't want to slow down SPI although there are the ESPIO modules that can be used too. I've just been updating the WIZnet drivers including the W5500 so that it now accesses W5500 SPI registers in about half the time. Sprucing up and checking all these files and probably the W5100 too when I get to it. Like to have some ajax running.
BACKUP is down to around 1 second as well.
Saving the 64k EEPROM to an SD file takes around 3.3 seconds.
Files download at a rate of 125k bytes/second over FTP which is executing the protocol, the file read, and the WIZnet transfer all in the same Tachyon cog.
All better, got MAX31856 working correctly with current kernel using SPIWR, SPIRD 4+ MHz
Thanks
That's good as I kinda figured that it should really work at 4MHz plus I didn't want to slow down SPI although there are the ESPIO modules that can be used too. I've just been updating the WIZnet drivers including the W5500 so that it now accesses W5500 SPI registers in about half the time. Sprucing up and checking all these files and probably the W5100 too when I get to it. Like to have some ajax running.
BACKUP is down to around 1 second as well.
Saving the 64k EEPROM to an SD file takes around 3.3 seconds.
Files download at a rate of 125k bytes/second over FTP which is executing the protocol, the file read, and the WIZnet transfer all in the same Tachyon cog.
Wow, good stuff! Time for the mea culpa, I was testing the chip with the read of a factory register that was set to 0. Doh!!! Thought bubble: "Always admit your mistakes, dp." I really stuffed myself up on this one, spent time bit banging it with SHRINP and SHROUT before I found my obvious error. <-20/20
I do have a W5100 build and files (2.4 Kernel based) with self contained ajax gauge example running I could post it up here or send via PM?
All better, got MAX31856 working correctly with current kernel using SPIWR, SPIRD 4+ MHz
Thanks
That's good as I kinda figured that it should really work at 4MHz plus I didn't want to slow down SPI although there are the ESPIO modules that can be used too. I've just been updating the WIZnet drivers including the W5500 so that it now accesses W5500 SPI registers in about half the time. Sprucing up and checking all these files and probably the W5100 too when I get to it. Like to have some ajax running.
BACKUP is down to around 1 second as well.
Saving the 64k EEPROM to an SD file takes around 3.3 seconds.
Files download at a rate of 125k bytes/second over FTP which is executing the protocol, the file read, and the WIZnet transfer all in the same Tachyon cog.
You mention "ESPIO modules". Are they for interfacing to the ESP8266? Where can I find them?
All better, got MAX31856 working correctly with current kernel using SPIWR, SPIRD 4+ MHz
Thanks
That's good as I kinda figured that it should really work at 4MHz plus I didn't want to slow down SPI although there are the ESPIO modules that can be used too. I've just been updating the WIZnet drivers including the W5500 so that it now accesses W5500 SPI registers in about half the time. Sprucing up and checking all these files and probably the W5100 too when I get to it. Like to have some ajax running.
BACKUP is down to around 1 second as well.
Saving the 64k EEPROM to an SD file takes around 3.3 seconds.
Files download at a rate of 125k bytes/second over FTP which is executing the protocol, the file read, and the WIZnet transfer all in the same Tachyon cog.
You mention "ESPIO modules". Are they for interfacing to the ESP8266? Where can I find them?
Ah now, although ESPIO refers to the earlier Enhanced SPIO RUNMODs which have been mostly deprecated with the SPI instructions themselves I also have a need to interface to these ESP8266 modules. I have about 3 or 4 different types here some with external antenna, some pcb or chip etc. I might take a quick look at these shortly although I was right in the middle of writing a multi-channel virtual full-duplex driver over multi-dropped half-duplex lines But I might just take a break and hook up one of these chips and make sure I can talk to it okay and see what I can make it do.
All better, got MAX31856 working correctly with current kernel using SPIWR, SPIRD 4+ MHz
Thanks
That's good as I kinda figured that it should really work at 4MHz plus I didn't want to slow down SPI although there are the ESPIO modules that can be used too. I've just been updating the WIZnet drivers including the W5500 so that it now accesses W5500 SPI registers in about half the time. Sprucing up and checking all these files and probably the W5100 too when I get to it. Like to have some ajax running.
BACKUP is down to around 1 second as well.
Saving the 64k EEPROM to an SD file takes around 3.3 seconds.
Files download at a rate of 125k bytes/second over FTP which is executing the protocol, the file read, and the WIZnet transfer all in the same Tachyon cog.
You mention "ESPIO modules". Are they for interfacing to the ESP8266? Where can I find them?
Ah now, although ESPIO refers to the earlier Enhanced SPIO RUNMODs which have been mostly deprecated with the SPI instructions themselves I also have a need to interface to these ESP8266 modules. I have about 3 or 4 different types here some with external antenna, some pcb or chip etc. I might take a quick look at these shortly although I was right in the middle of writing a multi-channel virtual full-duplex driver over multi-dropped half-duplex lines But I might just take a break and hook up one of these chips and make sure I can talk to it okay and see what I can make it do.
Are you planning to use the stock AT+ firmware that comes programmed into the ESP8266 modules or will you write custom firmware for the ESP side as well?
Are you planning to use the stock AT+ firmware that comes programmed into the ESP8266 modules or will you write custom firmware for the ESP side as well?
I got sidetracked again on something else but did have a look at the ESP sites including the ESPlorer IDE. IIRC the stock AT+ firmware was a little buggy but then there was LUA and more now it seems. I think MJB did some work with these chips too. Anyway I will look at it tomorrow then.
Are you planning to use the stock AT+ firmware that comes programmed into the ESP8266 modules or will you write custom firmware for the ESP side as well?
I got sidetracked again on something else but did have a look at the ESP sites including the ESPlorer IDE. IIRC the stock AT+ firmware was a little buggy but then there was LUA and more now it seems. I think MJB did some work with these chips too. Anyway I will look at it tomorrow then.
I'm interested to know what you decide to run as ESP-side firmware because I'm working on firmware for a Parallax WiFi module based on the ESP8266.
Are you planning to use the stock AT+ firmware that comes programmed into the ESP8266 modules or will you write custom firmware for the ESP side as well?
I got sidetracked again on something else but did have a look at the ESP sites including the ESPlorer IDE. IIRC the stock AT+ firmware was a little buggy but then there was LUA and more now it seems. I think MJB did some work with these chips too. Anyway I will look at it tomorrow then.
I was using NodeMCU/LUA on the ESP side for a simple PING-based water tank level sensor running on Prop/Tachyon.
Since NodeMCU provides a read-eval-print loop I just definded some functions to send data to a web service thingspeak.com
since a few days - no weeks - i'm reading this thread with great respect and great interest.
Currently i'm reading in the range of page 51 - there's still a lot of reading.
Because i can not continuously work at this interesting tachyon thing (i would love to do it, but currently money has to be earned without it) i have the problem of forgetting faster than learning. So there is only one possibility for me: documentation.
Linux is my favourite environment and so i do documentation of using tachyon by means of linux with my favourite editor emacs and the so called orgmode babel.
Yet another person doing things that are already done? Yes, but the tachyon documentation could be improved. For example i have spent several time for doing the first steps with Tachyon and serial communication on my debian linux.
There is not yet much worth sharing, but if there is - i will do.
Now to the point why i wrote this post:
After compiling Tachyon V2.8.spin to my device (spinneret) there is a default baudrate of 115200. I wanted to change the baudrate and didn't remember how this change had to be done. I remembered there was a tachyon word but it was forgotten :-). Ok so i searched again and after some time ahh: CONBAUD but this is stored in EXTEND.FTH And that's the reason for this post. I would propose to move the fundamental word CONBAUD from EXTEND.FTH to TachyonXXX.spin. So there is the possibility to increase the baudrate after compiling and downloading the kernel and then downloading EXTEND.FTH and other modules.
Maybe someone can post a patch how this can be done.
I hope the time will come for me to give back something for the amount of knowledge offered here i already used and enjoyed.
I would propose to move the fundamental word CONBAUD from EXTEND.FTH to TachyonXXX.spin. So there is the possibility to increase the baudrate after compiling and downloading the kernel and then downloading EXTEND.FTH and other modules.
Just wondering why you would want to do this? Peter has stated he would like to expand serial connection "features" in a future release.
....
searched again and after some time ahh: CONBAUD but this is stored in EXTEND.FTH And that's the reason for this post. I would propose to move the fundamental word CONBAUD from EXTEND.FTH to TachyonXXX.spin. So there is the possibility to increase the baudrate after compiling and downloading the kernel and then downloading EXTEND.FTH and other modules.
Maybe someone can post a patch how this can be done.
I hope the time will come for me to give back something for the amount of knowledge offered here i already used and enjoyed.
Yours, proplem
TACHYON is very rudimentary without EXTEND.fth
So ALWAYS immediately load EXTEND and then you get an auto BACKUP into EEPROM
You may notice that the kernel is compiled with the "Spin" tool IDE which can only compile Spin and PASM yet there are only a handful of lines of Spin to boot the Prop. Of the remainder of the Tachyon source code there are a few k of PASM for the kernel, serial receive, VGA, and some small RUNMODs. The bulk of all the source though is "Forth" but painstakingly written in DAT sections as "byte" definitions with branch calculations and table setups and hand-crafted dictionary entries. WAP!
But it is the necessary step to booting something that resembles Forth, and because it is such a pain we do just the basics after which we can then let that Forth do the rest at run-time. Now the bulk and remainder of Tachyon source code can be written in pure Forth which is the whole point of having a Forth. Sensible don't you think?
Another PITA is trying to learn Tachyon by reading this long long thread instead of just loading Tachyon in one of its forms and following the intro or just plain interacting and playing with it even. The thread is a discussion and announcements etc and a lot of this is history in that while it may have applied back then it mightn't apply the same right now. Therefore start "in the moment" and learn what is and when you want to know why it is then that perhaps a search of the thread may prove to be elucidating.
Interestingly because the kernel uses bytecode instructions which represent the absolute address of the kernel PASM code in the cog it keeps the source mostly readable and makes it possible to keep the compilation process a simple one-step "F11" compile. Furthermore by using a vector table for high level calls to other bytecode functions we can even code the call address as a byte by name, even though the vector table is half wasted because we compile 16-bit "XCALL" vectors as a long, the other half is reused during runtime compilation. Plus because the dictionary is separate from code we can skip having the traditional link field addresses and having to specify and calculate them. So too even the count for the variable length names can be dummied as the Forth kernel calculates and sets them at boot time. All to make the source easier to read and maintain and life less a PITA. (BTW the Spin tool has this annoying 16-byte offset that I can mostly ignore too with the way I have implemented everything).
So always consider EXTEND.fth a necessary part of Tachyon but one which the hand-crafted precompiled kernel can take off our hands as pure Forth source code to compile and even use at compile time to then know how to backup to EEPROM. Whew, what a relief!
DYNAMIC WEB PAGES?
I've been playing with the network server software and adding a simple means to evaluate and execute Forth words from a url. So at present I can simply prepend the command with a @ to distinguish it from a file name and the output is directed to the socket so it comes across as a text page. This means that I can add @DEBUG for instance and the page displays what the console would normally show for DEBUG etc. I've got a bit more to do but the concept will allow me to embed Forth commands in pages and these may respond as if they were formatted html pages with dynamic content, very useful indeed.
PING PONG RS485
There's also a simple (reliable) but very useful half-duplex RS485 or even just a single I/O driver that simulates a point-to-point full-duplex connection to any Prop on the network as if it were connected as a normal serial terminal, in fact the slave Prop can't really tell the difference. So even over telnet I can connect not only to the master Prop but also to any slave Prop on the RS485 network as if I had gone over there and plugged a USB serial cable directly into P30 and P31 of the slave Prop. It's like PING PONG because it is constantly passing the ball backwards and forwards even if there is nothing to say with an extremely simple "lost ball" mechanism.
Then there are the ESP chips too. So many things to play with, so little time.....
DYNAMIC WEB PAGES?
I've been playing with the network server software and adding a simple means to evaluate and execute Forth words from a url. So at present I can simply prepend the command with a @ to distinguish it from a file name and the output is directed to the socket so it comes across as a text page. This means that I can add @DEBUG for instance and the page displays what the console would normally show for DEBUG etc. I've got a bit more to do but the concept will allow me to embed Forth commands in pages and these may respond as if they were formatted html pages with dynamic content, very useful indeed.
@Peter,
we had a much more powerful mechanism already running (you remember?)
where you can embed ^<fth> any forth command </fth> into the file and on transmit
on encountering ^ the file is redirected to the console can EMIT anything to the NW and on </fth> it does revert to CON ...
That's why we implemented the special character counter into the SD-read ...
At a change in TACHYON version the Spinneret version did no longer work
and I didn't find the problem and put it on hold.
It can not be much ... if you want to help we can have a look.
I also have a very flexible AJAX writer.
And both was used to run JS gauges - I sent the code to DP at the time and he kept an archive.
we had a much more powerful mechanism already running (you remember?)
Don't worry, it's not meant to replace any other enhancements but I am just playing with a way to execute Forth words from the url itself or a way to dynamically create a webpage rather than a preset webpage with embedded commands. There is a sample or two of the IoT5500 that ErNa will post to you this week from that "lost" shipment so once you get these maybe you would like to test your enhancements with these?
I'm trying to build a spinneret based tachyon from current sources but I'm not getting managed with it.
I found a similar advice here but am not familiar enough to transfer this to spinneret.
Could anyone give advice how to build a spinneret tachyon from current dropbox sources similar to th link above - this would help enough.
we had a much more powerful mechanism already running (you remember?)
Don't worry, it's not meant to replace any other enhancements but I am just playing with a way to execute Forth words from the url itself or a way to dynamically create a webpage rather than a preset webpage with embedded commands. There is a sample or two of the IoT5500 that ErNa will post to you this week from that "lost" shipment so once you get these maybe you would like to test your enhancements with these?
sounds great
executing commands from the URL was also part of the functionality ...
based on the EVAL$ and a URL->STR converter replacing the %.. stuff.
I'm trying to build a spinneret based tachyon from current sources but I'm not getting managed with it.
I found a similar advice here but am not familiar enough to transfer this to spinneret.
Could anyone give advice how to build a spinneret tachyon from current dropbox sources similar to th link above - this would help enough.
Thanks,
proplem
Taking those steps from that link and adjusting it for the Spinneret
(use files from my main Tachyon Dropbox folder)
1. Use Spin tool/BST to load the "Spin" kernel to bring the Prop to life.
2. Connect terminal at 115200 baud and check coms
3. Load (paste or send) NETSET.FTH to set the build required
4. Load EXTEND.FTH
5. Load EEWORDS.FTH (may be included in EXTEND later)
6. Load SPINNERET.H to define the hardware
7. Load SDCARD.FTH and EASYFILE.FTH
( at this point there isn't much memory left so the next step)
8. Run COMPACT and BACKUP
9. Load W5100.FTH and EASYNET.FTH
You now have a complete build that you can make automatically boot into a server with
AUTORUN EASYNET
I will try to check this out shortly on an actual Spinneret although all my work these days is on the W5500.
thanks for your support.
Step 1 ok
Step 2 ok
Step 3 ok
Step 4 fail
i tried it by pasting and by sending as mentioned in the attached document ... Sorry html attachment is not allowed
There is an error if i paste EXTEND.FTH:
0075
0076
0077 ok
0078 ok
0079 ok
0080 ok
0081 ok
2106 Structure mismatch! *error*RTINGtingOSE_REGISTERS
----------------------------------------------------------------
Ok I will wait for a better fitting EXTEND.FTH. There's enough stuff to learn, currently reading page 61. Very interesting about TIMERs with Tachyon.
thanks for your support.
Step 1 ok
Step 2 ok
Step 3 ok
Step 4 fail
i tried it by pasting and by sending as mentioned in the attached document ... Sorry html attachment is not allowed
There is an error if i paste EXTEND.FTH:
0075
0076
0077 ok
0078 ok
0079 ok
0080 ok
0081 ok
2106 Structure mismatch! *error*RTINGtingOSE_REGISTERS
----------------------------------------------------------------
Ok I will wait for a better fitting EXTEND.FTH. There's enough stuff to learn, currently reading page 61. Very interesting about TIMERs with Tachyon.
regards, proplem
Compile and load this archive in order by numbered file 1. 2. 3. ......
It is a early version 2.4 kernel I use for the spinnerete.
You need to have an sdcard and some pre-made files on it such as index.htm .....
Okay, I've just hooked up a Spinneret, loaded on 2.8, EXTEND, SPINNERET, SDCARD, EASYFILE, then EEWORDS. Then I ran COMPACT and BACKUP so it was ready for loading the network modules W5100 and EASYNET. Done! There were a couple of minor updates that I applied but I only used the Dropbox files so they are current.
If you have errors during load then it may be your serial handshaking so you can set it to 25ms/line to be safe although I run at 15ms on minicom etc.
Look in the Tachyon "binaries" Dropbox folder for the latest builds, there's even a SPINNER.ROM but that is the complete 64k image and unfortunately the Prop bootloader only handles 32k. However you can load SPINNERET-V2.8.binary with the Spin tool and that gets you to the stage where you run COMPACT, BACKUP, load W5100 and EASYNET.
I noticed that the SPINNERET.H needs to be updated as the RTC interface is still in BCD whereas I standardized my RTC interface to plain decimal quite a while ago. If you are not too worried about that at the moment then use it.
P.S. It is not recommended that anyone use an earlier kernel version as there is no way I can guarantee that everything will compile properly. Although tempting it is to use archives, on this path go not. If you use the current files from the Dropbox and there is a problem then I can do something about it and then we are all on the same page.
BTW: that Spinneret I've left running at tachyonforth.com for web and ftp with the telnet port on 10001
Just trying to be helpful. Item 8 in my zip is MJBs additions to EasyNet that has ajax enabled responses and <fth> </fth> replacement syntax, that's why I use this build for now, ajax enables me to use the full power of the browser for dynamic web responses.....
Note: there was a typo in Peters last message, it must be http://tachyonforth.com/
I will not leave the house today, as I expect to get my IoT5500.
Fixed the typo but the links are in my sig as well. Down the coast at the moment but I have double checked that the Spinneret is still working fine when accessing it from this location.
P.S. Just as well the shipment wasn't "urgent", that 2 to 4 day express international has taken two weeks with most of that doing laps here in Australia from what I hear about the post office's newer automated sorters.
Okay, I've just hooked up a Spinneret, loaded on 2.8, EXTEND, SPINNERET, SDCARD, EASYFILE, then EEWORDS. Then I ran COMPACT and BACKUP so it was ready for loading the network modules W5100 and EASYNET. Done! There were a couple of minor updates that I applied but I only used the Dropbox files so they are current.
Look in the Tachyon "binaries" Dropbox folder for the latest builds, there's even a SPINNER.ROM but that is the complete 64k image and unfortunately the Prop bootloader only handles 32k. However you can load SPINNERET-V2.8.binary with the Spin tool and that gets you to the stage where you run COMPACT, BACKUP, load W5100 and EASYNET.
thanks great
I see that I fire up my spinneret later with this version and try my webserver extensions/mods on top of it.
Maybe it works again ;-)
Comments
I've tried a bunch of things to mimic the arduino timings as best as possible except for the frequency being 4Mhz+ compared to 1 Mhz. Later today I'll rewrite the arduino code to see if I can get the chip to work near 5 Mhz. Sleepy
Arduino code fails at 4Mhz, works great a 2Mhz and clock widths are between 240 and 280ns. Arduino SPI_CLOCK_DIV is in power of 2 so I can't get more granular for testing.
Thanks
That's good as I kinda figured that it should really work at 4MHz plus I didn't want to slow down SPI although there are the ESPIO modules that can be used too. I've just been updating the WIZnet drivers including the W5500 so that it now accesses W5500 SPI registers in about half the time. Sprucing up and checking all these files and probably the W5100 too when I get to it. Like to have some ajax running.
BACKUP is down to around 1 second as well.
Saving the 64k EEPROM to an SD file takes around 3.3 seconds.
Files download at a rate of 125k bytes/second over FTP which is executing the protocol, the file read, and the WIZnet transfer all in the same Tachyon cog.
Wow, good stuff! Time for the mea culpa, I was testing the chip with the read of a factory register that was set to 0. Doh!!! Thought bubble: "Always admit your mistakes, dp." I really stuffed myself up on this one, spent time bit banging it with SHRINP and SHROUT before I found my obvious error. <-20/20
I do have a W5100 build and files (2.4 Kernel based) with self contained ajax gauge example running I could post it up here or send via PM?
Ah now, although ESPIO refers to the earlier Enhanced SPIO RUNMODs which have been mostly deprecated with the SPI instructions themselves I also have a need to interface to these ESP8266 modules. I have about 3 or 4 different types here some with external antenna, some pcb or chip etc. I might take a quick look at these shortly although I was right in the middle of writing a multi-channel virtual full-duplex driver over multi-dropped half-duplex lines
I got sidetracked again on something else but did have a look at the ESP sites including the ESPlorer IDE. IIRC the stock AT+ firmware was a little buggy but then there was LUA and more now it seems. I think MJB did some work with these chips too. Anyway I will look at it tomorrow then.
Since NodeMCU provides a read-eval-print loop I just definded some functions to send data to a web service thingspeak.com
edit: and I used ESPlorer as IDE - quite nice
PASM should be really fast.
I am just playing with a RUNMOD assembler based on Peter's runtime assembler.
Edit: found Beau Schwabe's CORDIC PASM module in OBEX.
And it is short enough to fit in a RUNMOD.
I am about to convert it ...
since a few days - no weeks - i'm reading this thread with great respect and great interest.
Currently i'm reading in the range of page 51 - there's still a lot of reading.
Because i can not continuously work at this interesting tachyon thing (i would love to do it, but currently money has to be earned without it) i have the problem of forgetting faster than learning. So there is only one possibility for me: documentation.
Linux is my favourite environment and so i do documentation of using tachyon by means of linux with my favourite editor emacs and the so called orgmode babel.
Yet another person doing things that are already done? Yes, but the tachyon documentation could be improved. For example i have spent several time for doing the first steps with Tachyon and serial communication on my debian linux.
There is not yet much worth sharing, but if there is - i will do.
Now to the point why i wrote this post:
After compiling Tachyon V2.8.spin to my device (spinneret) there is a default baudrate of 115200. I wanted to change the baudrate and didn't remember how this change had to be done. I remembered there was a tachyon word but it was forgotten :-). Ok so i searched again and after some time ahh: CONBAUD but this is stored in EXTEND.FTH And that's the reason for this post. I would propose to move the fundamental word CONBAUD from EXTEND.FTH to TachyonXXX.spin. So there is the possibility to increase the baudrate after compiling and downloading the kernel and then downloading EXTEND.FTH and other modules.
Maybe someone can post a patch how this can be done.
I hope the time will come for me to give back something for the amount of knowledge offered here i already used and enjoyed.
Yours, proplem
Just wondering why you would want to do this? Peter has stated he would like to expand serial connection "features" in a future release.
Also this is an excellent resource
The new Tachyon Forth Glossary of words (Kernel, Extend, Filesystem)
So ALWAYS immediately load EXTEND and then you get an auto BACKUP into EEPROM
also see the Tachyon encyclopedia in my footer.
or just load one of Peter's precompiled images like EXPLORER.bin
from the binaries folder in his dropbox. This is great for experimenting.
btw. I'd suggest you change your name into @Solution ;-)
You may notice that the kernel is compiled with the "Spin" tool IDE which can only compile Spin and PASM yet there are only a handful of lines of Spin to boot the Prop. Of the remainder of the Tachyon source code there are a few k of PASM for the kernel, serial receive, VGA, and some small RUNMODs. The bulk of all the source though is "Forth" but painstakingly written in DAT sections as "byte" definitions with branch calculations and table setups and hand-crafted dictionary entries. WAP!
But it is the necessary step to booting something that resembles Forth, and because it is such a pain we do just the basics after which we can then let that Forth do the rest at run-time. Now the bulk and remainder of Tachyon source code can be written in pure Forth which is the whole point of having a Forth. Sensible don't you think?
Another PITA is trying to learn Tachyon by reading this long long thread instead of just loading Tachyon in one of its forms and following the intro or just plain interacting and playing with it even. The thread is a discussion and announcements etc and a lot of this is history in that while it may have applied back then it mightn't apply the same right now. Therefore start "in the moment" and learn what is and when you want to know why it is then that perhaps a search of the thread may prove to be elucidating.
Interestingly because the kernel uses bytecode instructions which represent the absolute address of the kernel PASM code in the cog it keeps the source mostly readable and makes it possible to keep the compilation process a simple one-step "F11" compile. Furthermore by using a vector table for high level calls to other bytecode functions we can even code the call address as a byte by name, even though the vector table is half wasted because we compile 16-bit "XCALL" vectors as a long, the other half is reused during runtime compilation. Plus because the dictionary is separate from code we can skip having the traditional link field addresses and having to specify and calculate them. So too even the count for the variable length names can be dummied as the Forth kernel calculates and sets them at boot time. All to make the source easier to read and maintain and life less a PITA. (BTW the Spin tool has this annoying 16-byte offset that I can mostly ignore too with the way I have implemented everything).
So always consider EXTEND.fth a necessary part of Tachyon but one which the hand-crafted precompiled kernel can take off our hands as pure Forth source code to compile and even use at compile time to then know how to backup to EEPROM. Whew, what a relief!
I've been playing with the network server software and adding a simple means to evaluate and execute Forth words from a url. So at present I can simply prepend the command with a @ to distinguish it from a file name and the output is directed to the socket so it comes across as a text page. This means that I can add @DEBUG for instance and the page displays what the console would normally show for DEBUG etc. I've got a bit more to do but the concept will allow me to embed Forth commands in pages and these may respond as if they were formatted html pages with dynamic content, very useful indeed.
PING PONG RS485
There's also a simple (reliable) but very useful half-duplex RS485 or even just a single I/O driver that simulates a point-to-point full-duplex connection to any Prop on the network as if it were connected as a normal serial terminal, in fact the slave Prop can't really tell the difference. So even over telnet I can connect not only to the master Prop but also to any slave Prop on the RS485 network as if I had gone over there and plugged a USB serial cable directly into P30 and P31 of the slave Prop. It's like PING PONG because it is constantly passing the ball backwards and forwards even if there is nothing to say with an extremely simple "lost ball" mechanism.
Then there are the ESP chips too. So many things to play with, so little time.....
we had a much more powerful mechanism already running (you remember?)
where you can embed ^<fth> any forth command </fth> into the file and on transmit
on encountering ^ the file is redirected to the console can EMIT anything to the NW and on </fth> it does revert to CON ...
That's why we implemented the special character counter into the SD-read ...
At a change in TACHYON version the Spinneret version did no longer work
and I didn't find the problem and put it on hold.
It can not be much ... if you want to help we can have a look.
I also have a very flexible AJAX writer.
And both was used to run JS gauges - I sent the code to DP at the time and he kept an archive.
Don't worry, it's not meant to replace any other enhancements but I am just playing with a way to execute Forth words from the url itself or a way to dynamically create a webpage rather than a preset webpage with embedded commands. There is a sample or two of the IoT5500 that ErNa will post to you this week from that "lost" shipment so once you get these maybe you would like to test your enhancements with these?
I found a similar advice here but am not familiar enough to transfer this to spinneret.
Could anyone give advice how to build a spinneret tachyon from current dropbox sources similar to th link above - this would help enough.
Thanks,
proplem
executing commands from the URL was also part of the functionality ...
based on the EVAL$ and a URL->STR converter replacing the %.. stuff.
need to have a look again ..
Taking those steps from that link and adjusting it for the Spinneret
(use files from my main Tachyon Dropbox folder)
1. Use Spin tool/BST to load the "Spin" kernel to bring the Prop to life.
2. Connect terminal at 115200 baud and check coms
3. Load (paste or send) NETSET.FTH to set the build required
4. Load EXTEND.FTH
5. Load EEWORDS.FTH (may be included in EXTEND later)
6. Load SPINNERET.H to define the hardware
7. Load SDCARD.FTH and EASYFILE.FTH
( at this point there isn't much memory left so the next step)
8. Run COMPACT and BACKUP
9. Load W5100.FTH and EASYNET.FTH
You now have a complete build that you can make automatically boot into a server with
AUTORUN EASYNET
I will try to check this out shortly on an actual Spinneret although all my work these days is on the W5500.
thanks for your support.
Step 1 ok
Step 2 ok
Step 3 ok
Step 4 fail
i tried it by pasting and by sending as mentioned in the attached document ... Sorry html attachment is not allowed
There is an error if i paste EXTEND.FTH:
Ok I will wait for a better fitting EXTEND.FTH. There's enough stuff to learn, currently reading page 61. Very interesting about TIMERs with Tachyon.
regards, proplem
Compile and load this archive in order by numbered file 1. 2. 3. ......
It is a early version 2.4 kernel I use for the spinnerete.
You need to have an sdcard and some pre-made files on it such as index.htm .....
After everything is loaded, BACKUP and type GO
Enjoy
Okay, I've just hooked up a Spinneret, loaded on 2.8, EXTEND, SPINNERET, SDCARD, EASYFILE, then EEWORDS. Then I ran COMPACT and BACKUP so it was ready for loading the network modules W5100 and EASYNET. Done! There were a couple of minor updates that I applied but I only used the Dropbox files so they are current.
If you have errors during load then it may be your serial handshaking so you can set it to 25ms/line to be safe although I run at 15ms on minicom etc.
Look in the Tachyon "binaries" Dropbox folder for the latest builds, there's even a SPINNER.ROM but that is the complete 64k image and unfortunately the Prop bootloader only handles 32k. However you can load SPINNERET-V2.8.binary with the Spin tool and that gets you to the stage where you run COMPACT, BACKUP, load W5100 and EASYNET.
I noticed that the SPINNERET.H needs to be updated as the RTC interface is still in BCD whereas I standardized my RTC interface to plain decimal quite a while ago. If you are not too worried about that at the moment then use it.
P.S. It is not recommended that anyone use an earlier kernel version as there is no way I can guarantee that everything will compile properly. Although tempting it is to use archives, on this path go not. If you use the current files from the Dropbox and there is a problem then I can do something about it and then we are all on the same page.
BTW: that Spinneret I've left running at tachyonforth.com for web and ftp with the telnet port on 10001
I will not leave the house today, as I expect to get my IoT5500.
Fixed the typo but the links are in my sig as well. Down the coast at the moment but I have double checked that the Spinneret is still working fine when accessing it from this location.
P.S. Just as well the shipment wasn't "urgent", that 2 to 4 day express international has taken two weeks with most of that doing laps here in Australia from what I hear about the post office's newer automated sorters.
I see that I fire up my spinneret later with this version and try my webserver extensions/mods on top of it.
Maybe it works again ;-)