The long-awaited USB-CDC terminal driver for RP2040 Pi Pico is up and running and ready for initial testing before release: https://mecrisp.sourceforge.net/usb-rp2040.txt If you feel adventurous, please try it and report back. Matthias
Could it be because the serial_COM to usb dongle (ftdi in my case). Those work with such chunks/packets.
Could it be because the serial to usb dongle (ftdi in my case). Those work with such chunks/packets.
I initially just sent the buffer with no \n, but for some reason it then does miss several hundred characters. I think it is a flushing or buffering issue, I am not sure, but there is no flush option on the write. Go says that output to stdoout is non-buffered, so it maybe the readline library. I'll let you know if I can fix that. for now inserting a \n is the easiest solution.
I corrected my findings above - it does not miss but inserts newline as you wrote.. The full list you may find above in the jpg picture
words - here with the long list I have now - it starts ok, then it misses X words periodically after 1025bytes, finishes ok.. CORRECTION: it does not miss but inserts \n - so my bad..
They do not appear to be missing, they are split with a newline as I said I had to insert a newline at 1024 bytes. Can I see what the list looks like with your other terminal? Thanks
This is with my longest words list.. It periodically cuts making \n after aprox 1025 bytes (the yellow arrows show where ). It does not miss words. Your bin from 13:13..
This is with my longest words list.. It periodically cuts making \n after aprox 1025 bytes (the yellow arrows show where ) Your bin from 13:13..
This is with my longest words list.. It periodically cuts making \n after ~1025 bytes (the yellow arrows show where ) Your bin from 13:13..
words - here with the long list I have now - it starts ok, then it misses X words periodically after 1025bytes, finishes ok.. CORRECTION: it does not misses but inserts \n - so my bad..
words - here with the long list I have now - it starts ok, then it misses X words periodically after 1025bytes, finishes ok.. CORRECTION it does not musses but inserts \n so my bad..
This is with my longest words list.. It periodically cuts making \n after 1025 bytes (the yellow arrows show where ) Your bin from 13:13..
This is with my longest words list.. It periodically miss after 1025 bytes (the yellow arrows show where it stops printing out). Your bin from 13:13..
Did you try the latest version?
words - It shows first ~1019 bytes, then misses the following X, and then continues to show the last ~462bytes of the complete words list.. SO the full list misses around 1kbytes in the ~middle.. My list is ~2456bytes long (when I copy the "words" into notepad).
words - It shows first 1019 bytes, then misses the following X, and then continues to show the last 462bytes of the complete words list.. SO the full list misses around 1kbytes in the ~middle.. My list is 2456bytes long (when I copy the "words" into notepad).
words - It shows first 1019 bytes, then misses the following X, and then continues to show the last 462bytes of the complete words list.. SO the full list misses around 1kbytes in the ~middle.. My list is 2456bytes long (when I copy the list into notepad).
words - It shows first 1019 bytes, then misses the following X, and then continues to show the last 462bytes of the complete words list.. SO the full list misses around 1kbytes in the middle..
Ok I think I fixed it at the expense of adding a \n to a partial line that exceeds 1024 bytes. Now list seems to return all the words, albeit some are split by a newline. I think getting lines over 1024 is an edge case anyway and list is the only thing that seems to do it. Give it a try now.
Ok I found the error, it will take a while to fix it... it only happens if there are very long lines that are not terminated by \n. I'll update github when I have fixed it. Thanks for the help :)
Yes it is line based, it reads a line at a time a line being terminated by \n, if it does not have a \n it gets buffered until it either gets a \n or it gets 1024 bytes.
Another interesting observation - when printing out the mandelbrot demo (made of chars) it waits till the \n and then prints out the entire line. In TTerm I see the individual chars coming (there are large diffs in the speeds it prints out the individual chars because of math). So in the first moment I thought it got frozen.. :-)
Another interesting observation - when printing out the mandelbrot demo (made of chars) it waits till the \n and then prints out the entire line. In TTerm I see the individual chars coming (there are large diff in the speeds it prints out the individual chars because of math). So in the first moment I thought it got frozen.. :-)
Another interesting observation - when printing out the madelbrot demo (made of chars) it waits till the \n and then prints out the entire line. In TTerm I see the individual chars coming (there are large diff in the speeds it prints out the individual chars because of math). So in the first moment I thought it got frozen.. :-)
There is no buffer limit now it just prints what it gets. However if the line is not terminated with a \n then it may not get flushed, I'm looking into it. There does not appear to be a stdout flush in go, I'll look harder.
It is now 2456 bytes (incl. spaces between words), I think 4kB buffer/line would be ok.. Hmm, that is for 16kB mecrisp in fpga, people with large 32bit mcus might get it even bigger. So 64kB line would be perhaps ok.. :) :)
It is now 2456 bytes, I think 4kB buffer/line would be ok.. Hmm, that is for 16kB mecrisp in fpga, people with large 32bit mcus might get it even bigger. So 64kB line would be perhaps ok.. :) :)
It is now 2456 bytes, I think 4kB buffer would be ok.. Hmm, that is for 16kB mecrisp in fpga, people with large 32bit mcus might get it even bigger. So 64kB would be perhaps ok.. :) :)
It is now 2456 bytes, I think 4kB buffer would be ok..
The words shows more words now, but not all.. My words are 2456 bytes, and not all uploaded yet.. ok. words mandel mag next 2sq fsq nexty nextx ys! xs! zy zx y x falog fpow flog fln (log) fraction integer> >integer lbase epsilon fexp ^fraction ^integer (!) d>u d0< f** fatan2 facos fasin (fasin) fatan dom2|3 dom3 dom2 (fatan) (taylor2) 2degrees ftan fsincos fcos fsin >range -taylor +taylor (taylor) >taylor rad>deg deg>rad e pi F# (f#) _f# F.S fd abort" FVARIABLE FCONSTANT >FLOAT -trailing flfrac flexp...
ok I'll take a look... can you post the list word you are using?
The words shows more words now, but not all.. ok. words mandel mag next 2sq fsq nexty nextx ys! xs! zy zx y x falog fpow flog fln (log) fraction integer> >integer lbase epsilon fexp ^fraction ^integer (!) d>u d0< f** fatan2 facos fasin (fasin) fatan dom2|3 dom3 dom2 (fatan) (taylor2) 2degrees ftan fsincos fcos fsin >range -taylor +taylor (taylor) >taylor rad>deg deg>rad e pi F# (f#) _f# F.S fd abort" FVARIABLE FCONSTANT >FLOAT -trailing flfrac flexp flint fdigit? flgood fsign FSQRT d< FE. FS. (E.)...
I rebuilt my fpga and the 921600 upload works fine. The syncing with "ok" is/was the way to go, sure..
Ok I have fixed the "line too long" issue in forthcon, I just write out the long line. No need to fix the list word now :)
Yea color coding can be done, there is a mecrisp version that adds color to those prompts as well. In the case of \i it stops as soon as it gets an error anyway so it will be the last thing on the screen. \d however is really only for files you already know have no errors. Adding color coding to forthcon will be something I'll look into, the prompt is already color coded. The line delay is only really needed if the returned ok. is not checked for every line. This is what e4thcom does as well as the...
Hi Jim, one thing I always wanted to have is to assign a special char or char sequence or a special color when the mecrisp returns "?" (because of an error in words defs) as to find the returned "?" within a large upload is difficult.. I've been using TeraTerm in Win11 (my fpga wired over serial/ usb chip) and I need at least 15ms line delay there. Interestingly it uploaded with your terminal fine. Hopefully not matter of luck :) :)
Hi Jim, one thing I always wanted to have is to assign a special char or char sequence or a special color when the mecrisp returns "?" (because of an error) as to find the returned "?" within a large upload is difficult.. I've been using TeraTerm in Win11 (my fpga wired over serial/ usb chip) and I need at least 15ms line delay there. Interestingly it uploaded with your terminal fine. Hopefully not matter of luck :) :)
Hi Jim, one thing I always wanted is to assign a special char or char sequence or a special color when the mecrisp returns "?" (because of an error) as to find the "?" within a large upload is difficult.. I've been using TeraTerm in Win11 (my fpga wired over serial/ usb chip) and I need at least 15ms line delay there. Interestingly it uploaded with your terminal fine. Hopefully not matter of luck :) :)
Hi Jim, one thing I always wanted is to assign a special char or char sequence or a special color when the mecrisp returns "?" (because of an error) as to find the "?" within a large upload is difficult.. I've been using TeraTerm in Win11 and I need at least 15ms line delay there. Interestingly it uploaded with your terminal fine. Hopefully not matter of luck :) :)
Hi Jim, one thing I always wanted is to assign a special char or char sequence or a special color when the mecrisp returns "?" (because of an error) as to find it in a large upload is difficult.. I've been using TeraTerm in Win11 and I need at least 15ms line delay there. Interestingly it uploaded with your terminal fine. Hopefully not matter of luck :) :)
I have updated the forth/dl.fs words to not allocate the large download buffer, it basically uses as much free memory as it can between the top of the dictionary and the end of RAM (basically in the middle of that), it uses 1/4 of the unused amount, on the RP2350 that is about 50K, on smaller systems it will be less. This should work fine so long as the files you download with \d are within that size. The only way I was able to get fast downloads was to just stream the files as fast as they would...
Yea that is the only command that gives that error. There is a line length limit of 1024 characters, I modified my copy of list to break up the lines to that length. words4 works though. Thanks for testing on windows! There is no line delay for \d it just streams as fast as it can. \i also has no line delay it just waits for ok. or an error. The reason I did the \d was that there IS a delay in the USB drivers on most operating systems (windows and linux) that make the ping pong very slow, at least...
It seems it works in win11, it has uploaded a large file fine.. I wonder what is the line delay hardcoded in there (if any)? PS: with "words" I got the "line too long" PS C:\Users\user> C:\Users\user\Desktop\forthcon.exe -b 115200 -d "COM3" ok. ok. ok. » line too long, discarded 2! 2@ cmove> cmove fill sfind align aligned words link@ here tib init forth >in base state /string type count .x .x2 bl cr space c! c@ emit key key? emit? pause nop um/mod * um* d2* d0= m+ s>d dabs dnegate d- d+ depth io@...
It seems it work in win11, it has uploaded a large file fine.. I wonder what is the line delay hardcoded (if any)? PS: with "words" I got the "line too long" PS C:\Users\user> C:\Users\user\Desktop\forthcon.exe -b 115200 -d "COM3" ok. ok. ok. » line too long, discarded 2! 2@ cmove> cmove fill sfind align aligned words link@ here tib init forth >in base state /string type count .x .x2 bl cr space c! c@ emit key key? emit? pause nop um/mod * um* d2* d0= m+ s>d dabs dnegate d- d+ depth io@ io! nip over...
Hello, I have produced another forth console similar to e4thcon but written in go. It is here (with precompiled binaries for various platforms) https://github.com/wolfmanjm/forth-console It adds a bunch of convenience features over and above what e4thcon provides... persistent history fast download filename completion on \i (and \d) paste code from the clipboard It is written specifically for quintus, but should work with any mecrisp forth. The fast download (\d filename) is accomplished at the expense...
FYI - in case you want to play with the "48bit" floating point and the TEK graphics - here you may find the libs I made long time back: https://github.com/igor-m/UPduino-Mecrisp-Ice-15kB/tree/master The floating point runs on the 16bit j1a (ie. mecrisp-ice, or now mecrisp-XC6), therefore "48bit".. Mecrisp-XC6 2.7 ok. 6 set-precision ok. f# 2.43555434e-10 pi f* fe. 765.151959e-12 ok. f# 4.345345e356 flog fe. 356.638024e0 ok. The TeraTerm supports TEK graphics, so after switching into its VT-TEK window...
Here are the necessary files for building up the j1a with mecrisp. The ucf file is the constraints file with pin defines (might be different ext name and format in Radiant). As I wrote above the verilog files may need some finetuning/editing when using with different IDEs and fpgas.. PS: A decade++ back I started with mecrisp on stm32 and then moved to ice40UP5k. Tried various IDEs and environments (Yosys, IceCube2, Radiant, Apio). Here is the repo with my experiments, made for beginners .. Mind...
Here are the necessary files for building up the j1a with mecrisp. The ucf file is the constraints file with pin defines (might be different ext name and format in Radiant). As I wrote above the verilog files may need some finetuning/editing when using with different IDEs and fpgas..
Here are the necessary files for building up the j1a with mecrisp. The ucf file is the constraints file with pin defines (might be different ext name and format in Radiant). As I wrote above the verilog files may need some finetuning/editing when using in different IDEs..
Here are the necessary files for building up the j1a with mecrisp. The ucf file is the constraints file win pin defines (might be different name and format in Radiant). As I wrote above the verilog files may need some finetuning/editing when using in different IDEs..
Aaron, with Radiant IDE you do not need yosys suite. What you need is the gforth and fpc (freepascal). I've been playing with xilinx in ise14.7, so it is a similar situation. I installed the gforth and fpc into linux mint and while in the HX8k it will then compile the bram memory hex file fine (simply with ./compile). You will get errors with yosys but you do not need yosys. so ignore them simply. You need only 1 hex file from the built directory (iceimage.hex) with the bram memory content. Put it...
Aaron, with Radiant IDE you do not need yosys suite. What you need is the gforth and fpc (freepascal). I've been playing with xilinx in ise14.7, so it is a similar situation. I installed the gforth and fpc into linux mint and while in the HX8k it will then compile the bram memory hex file fine (simply with ./compile). You will get errors with yosys but you do not need yosys. so ignore them simply. You need only 1 hex file from the built directory (iceimage.hex) with the bram memory content. Put it...
Aaron, with Radiant IDE you do not need yosys suite. What you need is the gforth and fpc (freepascal). I've been playing with xilinx in ise14.7, so it is a similar situation. I installed the gforth and fpc into linux mint and while in the HX8k it will then compile the bram memory hex file fine (simply with ./compile). You will get errors with yosys but you do not need yosys. so ignore them simply. You need only 1 hex file from the built directory (iceimage.hex) with the bram memory content. Put it...
Aaron, with Radiant IDE you do not need yosys suite. What you need is the gforth and fpc (freepascal). I've been playing with xilinx in ise14.7, so it is a similar situation. I installed the gforth and fpc into linux mint and the HX8k will then compile the bram memory hex file fine. You will get errors with yosys but you do not need yosys. so ignore them simply. You need only 1 hex file from the built directory (iceimage.hex) with the bram memory content. Put it into your Radiant environment and...
Aaron, with Radiant IDE you do not need yosys suite. What you need is the gforth and fpc (freepascal). I've been playing with xilinx in ise14.7, so it is a similar situation. I installed the gforth and fpc into linux mint and the HX8k will then compile the bram memory hex file fine. You will get errors with yosys but you do not need yosys. so ignore them simply. You need only 1 hex file from the built directory (iceimage.hex) with the bram memory content. Put it into your Radiant environment and...
Aaron, with Radiant IDE you do not need yosys suite. What you need is the gforth and fpc (freepascal). I've been playing with xilinx in ise14.7, so it is a similar situation. I installed the gforth and fpc into linux mint and the HX8k will then compile the bram memory hex file fine. You will get errors with yosys but you do not need yosys. so ignore them simply. You need only 1 hex file from the built directory with the bram memory content. Put it into your Radiant environment and include into the...
Hi Matthias, thanks for the clarification! I've overlooked those mod and do-loop are heavier in the j1a! Perhaps I might try the dualport (it is supported in XC6), I've also found the "divide" IP generator for 2 types of divide in the ISE14.7.. If it does not fit in the small XC6 I have here a beefy virtex6 too.. So there is a space for experiments (like a 32core j1a in the virtex :) ). For time being I'll stay with it as-is as I need it for a simpler data transfer from my hw experiments in fpga....
They differ in their memory access capabilities. j1-universal-16kb.v: There are data paths for the two topmost elements of the data stack, so there is "memory write and one drop" + "another drop" necessary to do the effects of "!". j1-universal-16kb-quickstore.v: There are data paths for the three topmost elements of the data stack, allowing to do a memory write and two drops for "!" in one cycle. The first two differ in their stack implementations only. Their memory access model is fine for pseudo-dualport...
Hi Igor, division and modulo are tricky to do on the stack machine, involving a lot of stack shuffling, and that eats away cycles. Also the do ... loop needs more cycles than on ARM, because only the top of return stack is accessible directly, so running "j" and "loop" requires some shuffling also. Unfortunately, single-cycle division and modulo is quite heavy in logic, so its not included for default, but there are six to eight opcodes free (depending on core) which you can use to add these instructions....
With millis running in hw (none interrupts running) I get the same GCD elapsed time (1.821sec).. Weird, I would not expect the j1a 3x slower than a stm32 M0 in that GCD benchmark at almost identical clocks..
Hi, after a looong time I returned to the mecrisp - and I have a question to the experts here, if I may: what is the difference between the j1-universal-16kb-quickstore.v and j1-universal-16kb-dualport.v performance wise? What can I see there the quickstore is using a fetch, while dualport is not. I think I can use dualport on xilinx.. I've been currently using the quickstore, but the GCD benchmark running on my xilinx XC6 @50MHz (the modded HX8k) is 3x slower (1.8secs vs 0.6secs) than the 48MHz...
Hi, after a looong time I returned to the mecrisp - and I have a question to the experts here, if I may: what is the difference between the j1-universal-16kb-quickstore.v and j1-universal-16kb-dualport.v performance wise? What can I see there the quickstore is using a fetch, while dualport is not. I think I can use dualport on xilinx.. I've been currently using the quickstore, but the GCD benchmark running on my xilinx XC6 @50MHz (the modded HX8k) is 3x slower (1.8secs vs 0.6secs) than the 48MHz...
Hi, after a looong time I returned to the mecrisp - and I have a question to the experts here, if I may: what is the difference between the j1-universal-16kb-quickstore.v and j1-universal-16kb-dualport.v performance wise? What can I see there the quickstore is using a fetch, while dualport is not. I think I can use dualport on xilinx.. I've been currently using the quickstore, but the GCD benchmark running on my xilinx XC6 @50MHz (the modded HX8k) is 3x slower (1.8secs vs 0.6secs) than the 48MHz...
Hi, after a looong time I returned to the mecrisp - and I have a question to the experts here, if I may: what is the difference between the j1-universal-16kb-quickstore.v and j1-universal-16kb-dualport.v performance wise? What can I see there the quickstore is using a fetch, while dualport is not. I think I can use dualport on xilinx.. I've been currently using the quickstore, but the GCD benchmark running on my xilinx XC6 @50MHz (the modded HX8k) is 3x slower (1.8secs vs 0.6secs) than the 48MHz...
Hi, after a looong time I returned to the mecrisp - and I have a question to the experts here, if I may: what is the difference between the j1-universal-16kb-quickstore.v and j1-universal-16kb-dualport.v performance wise? What can I see there the quickstore is using a fetch, while dualport is not. I think I can use dualport on xilinx.. I've been currently using the quickstore, but the GCD benchmark running on my xilinx XC6 @50MHz (the modded HX8k) is 3x slower (1.8secs vs 0.6secs) than the 48MHz...
Hi, after a looong time I returned to the mecrisp - and I have a question to the experts here, if I may: what is the difference between the j1-universal-16kb-quickstore.v and j1-universal-16kb-dualport.v performance wise? What can I see there the quickstore is using a fetch, while dualport is not. I think I can use dualport on xilinx.. I've been currently using the quickstore, but the GCD benchmark running on my xilinx XC6 @50MHz (the modded HX8k) is 3x slower (1.8secs vs 0.6secs) than the 48MHz...
Hi, after a looong time I returned to the mecrisp - and I have a question to the experts here, if I may: what is the difference between the j1-universal-16kb-quickstore.v and j1-universal-16kb-dualport.v performance wise? What can I see there the quickstore is using a fetch, while dualport is not. I think I can use dualport on xilinx.. I've been currently using the quickstore, but the GCD test running on my xilinx XC6 @50MHz (the modded HX8k) is 3x slower (1.8secs vs 0.6secs) than the 48MHz stm32...
It's best that beginners know that SWDCOM works on all OS's except Windows. In other words SWDCOM works on the following OS's Linux FreeBSD OSX - Mac Fixing 'Stair Stepping ' and getting SWDCOM working is more like a beginners 'right of passage', when planning to use Mecrisp-Stellaris for embedded on STM32xx MCU's in my opinion. See: https://mecrisp-stellaris-folkdoc.sourceforge.io/stair-stepping.html to get started on the first challenge, and https://mecrisp-stellaris-folkdoc.sourceforge.io/swdcom-install.htm...
Thank you for that gentle reminder. I am no longer working with forth, but I did go ahead and fix these docs. https://mecrisp-ice.readthedocs.io/en/latest/e4thcom.html On 8 Nov 2025, at 07:46, Chan Siu Fung John jsfchan0316@users.sourceforge.net wrote: @m-atthias https://sourceforge.net/u/m-atthias/profile/ Hi please kindly arrange to update the various Mecrisp documetation sites to replace the linkage of e4thcom by: existing but not working: https://wiki.forth-ev.de/doku.php/en:projects:e4thcom...
I wrote for the beginners like me. There is no need to set a line end delay for swdcom but it is only for linux. I used minicom for linux (my distro is Pardus 21.5) and 100msec line end delay is enough. (Ctrl+A then Z then T then D) Minicom also solves the ladder problem in terminal. (add linefeed) And you may use teraterm 5.0 for windows 11. You need to set msec/line in setup > serial port to 100. You can download from sourceforge.
Hi Aaron, looks as if you are missing build dependencies. To compile and synthesise, Mecrisp-Ice needs GForth, the Freepascal Compiler, and the oss-cad-suite for the FPGA flow one can download from here: https://github.com/YosysHQ/oss-cad-suite-build/releases Matthias
I am experimenting with porting Mecrisp-Ice to larger FPGAs (e.g. Lattice Certus). The selected source folder is the mecrisp-ice-master/hx8k. Radiant is the FPGA IDE with nucleus.hex initialized dpram 8192x16 (just 2-port not true). Setting up the build environment in linux appears to be an issue. Running compile: atod2@H97M-VM:~/Documents/mecrisp-ice-master/hx8k$ compile Tidy up... Compile nucleus... tdp 101E tcp 0 Compile Ice Cream Machine... ./compile: line 12: fpc: command not found Compile additional...
I made a Mecrisp-Stellaris Language Server during my recent year and a half hiatus. I’ve tested it on the Helix editor and it works fine under Linux and FreeBSD. It should work fine with any LSP capable editor once it’s configured. View the UserDoc page here: https://mecrisp-stellaris-folkdoc.sourceforge.io/mecrisp-stellaris-lsp.html You can get the tarball here https://sourceforge.net/projects/mecrisp-stellaris-folkdoc/files/mecrisp-stellaris-LSP.tar.gz/download
Thank you Fantastic support, will have fin tomorrow. Topic closed John
Hi John, pin 2 should be the RX pin on the Pi Pico, and when unconnected, its ok for it to be stuck as it is not driven. Try swapping RX and TX wires! Thats one of the most common problems to encounter at the beginning. The pins are current-limited these days and survive being swapped. Matthias
All attempts to load fail with Tx pin(2) stuck at 0 Volts. I have downloaded tar file on both Windows10 and Linux Mint machines. Both machines produce UF2 files of same size I have used multiple proven Picos and USB cables without success. Please help as I really want to get back into forth, it is many years since I wrote a Forth79 application to control an experimental UK military radar experiment. John Knott
Hi David, good ideas, you are that close! Both UARTs share the same clock source, clk_peri, which is already up and running when using Forth, and all peripherals are out of reset after the clock init code, so you can focus on the UART registers, and the special functions for the pins. In terminal.s for the RP2040, thats these lines: UART_Baudrate: ldr r0, =UART0_BASE movs r1, #UART0_IBAUD str r1, [r0, #UARTIBRD] movs r1, #UART0_FBAUD str r1, [r0, #UARTFBRD] movs r1, #UART_8N1 | UART_FIFO str r1,...
Oh, hang on. I think I need to create all those UART related constants, cherry-pick setting up the pins I want and write some words to emulate all of uart-init. I guess I can cherry-pick the UART1 reset stuff - I don't need the rest Might that work?
Oh, hang on. I think I need to create all those UART related constants, cherry-pick the pins I want and write some words to emulate all of uart-init. I guess I can cherry-pick the UART1 reset stuff - I don't need the rest Might that work?
Oh, hang on. I think I need to create all those UART related constants, set the pins I want and write some words to emulate this stuff: UART_Baudrate: UART_Enable: UART_Function: Am I getting there? Resets?
Hi again, I've been poring over this for some hours, so, inevitably, I now have more questions! Terminal.s is (I presume) assembly code, which I'm not set up to use directly. So I am looking for the registers to set up as constants, and then some forth words I can use to make UART1 work concurrently but independently of UART0. Having adopted Jerry Petrey's SPI words already, that defines a lot of GPIO and other registers, so would ideally like to add the ones I need for UART1. I think I can make...
Following hardware failures at home about one and a half years ago, I had to build some new pc's and decided to take the opportunity to explore this new 'AI' thing and try out NixOS. I also finished my 6 year long development of 'FURS' which adds the same facility to Forth that 'header files' do for C. I'm now back on FreeBSD and was able to restore all my Userdoc files and start updating the site again, starting with : https://mecrisp-stellaris-folkdoc.sourceforge.io/new-projects.html#new-projects...
Many thanks. There's a lot to take in there! I have another question, but I think it deserves a post of it's own!
Hi David, nice to read that you and Forth found each other again! For a first quick idea, have a look at the file mecrisp-stellaris-3.0.1/mecrisp-stellaris-source/rp2040-ra/terminal.s which initialises the default UART. The pin configuration registers of the Pi Pico are a bit special. When something does not work, it is most of the time caused by a missing clock, or special functions of the pins not set to the peripheral ones wishes to see there. Good night, Matthias
I used Forth in about 1980 to make a simple 6809 based homebrew system do some quite hoopy stuff, so I am thoroughly enjoying reacquainting myself with doing everything in reverse!! I have got stuck with Mecrisp on the Pico though, and would appreciate help from any expert, as there are significant difference in hardware and software since those far off days! I am talking to the system through UART0, as expected, but would like to also use UART1 to communicate with an ESP doing other stuff. I have...
These devices (CH32x033/CH32x035) are inexpensive compared to CH32L103/V203/V307 and have 2 RISC cores (Qingke V4C RISC-V and RISC8B embedded CH537?) to work with and could be useful for experimental forth implementations.
Hi Peter, I am looking to use your port on a CH32x033/CH32x035 and as far as I can tell it should work as the ram/flash is basically the same . Are there any suggestions that I should look out for?
Which ever one you like, I'm more a FreeBSD guy, and E4thcom only works on Linux. I prefer SWDCOM over E4thcom
Hi, I created a port of Mecrisp-Stellaris for the GD32E230 MCU, using an LCSC GD32E230 dev board. The port can be found here: https://github.com/nochtli/mecrisp-stellaris/tree/gd32e230/gd32e230x8-ra https://github.com/nochtli/mecrisp-stellaris/tree/gd32e230/mecrisp-stellaris-source/gd32e230x8-ra Peter
Ok then which linux distro do you recommend to use e4thcom and st-flash ?
Hi Erol, The Forth way isn't easy, you have months/years of study ahead of you just for Forth, then years to master the STM32F103 which has many peripherals. The best way I know to learn is to actually make projects using Forth, the link below should help you avoid the usual pitfalls. https://mecrisp-stellaris-folkdoc.sourceforge.io/beginner.html You could flash my 'bluepill diags' which has many development apps and SWDCOM (with a hardware jumper). This will make project development a lot easier....
Hi Terry, Thank you for your answer. So my way is so easy :) I would like to ask your suggestions to learn usart and forth programming. For example, you may say "read the reference manual then study buffers" or you may say go to arduino ide :)
Hi Erol, There are tons of source code drivers, just see: https://mecrisp-stellaris-folkdoc.sourceforge.io/examples-from-therelease.html Cheers, Terry https://mecrisp-stellaris-folkdoc.sourceforge.io/index.html
Hello dear masters, I am a newbie for forth. I downloaded the firmware from https://sourceforge.net/projects/mecrisp-stellaris-folkdoc/files/bluepill-128kb-usb.tar.gz I use usb socket (uart3) of board for hyperterminal connection on Windows. Hyperterminal has end of line delay, so it is working. How can I use uart1 and uart2 in forth ? For example, I get some data from uart1 (barcode reader) then send some data to label printer on uart2. Is there any sample forth code ?
Hello, I think it would be handy to put a note on the Mecrisp Summary page to inform about the move to codeberg and a link to the place to start looking. Thank you. ---John