Тёмный
Silicon Valley Forth Interest Group
Silicon Valley Forth Interest Group
Silicon Valley Forth Interest Group
Подписаться
The Forth programming language was invented by Chuck Moore and debuted in the '70s.
SVFIG is the Silicon Valley Forth Interest Group.

This channel is dedicated to presentations from the monthly meetings which have evolved from live in-person in the San Francisco Bay Area to the current all-Zoom format.

Meetings are announced at www.meetup.com/SV-FIG/ and you can join us live on Zoom without any sign-ups.
More CoSy -- Bob Armstrong -- 2024-09-28
28:14
28 дней назад
CoSy -- Bob Armstrong -- 2024-08-24
14:51
2 месяца назад
Forth - Keep It Simple
2:26
4 месяца назад
Комментарии
@TheOfAndTo
@TheOfAndTo 18 минут назад
DP is a cursor on the memory heap, it grows forward. Could be useful have another cursor CP for scratch area from end-of-memory, it grows backward ?
@TheOfAndTo
@TheOfAndTo Час назад
Maybe use just RP and SP, instead of SP@ SP! RP@ RP!, could use @ and !, as used for comma with DP ? Will free two opcodes for use
@AI_Robotics
@AI_Robotics 16 дней назад
Great comments everyone who engaged in my talk!
@TheOfAndTo
@TheOfAndTo 21 день назад
great!
@HansBezemer
@HansBezemer 23 дня назад
If you want to write C, write C. Don't fake you're using Forth. The beauty of Forth is that all passing of parameters is done transparently and invisibly by the stack. E.g. if I want to uppercase a string I just place a word like S>UPPER between two words and it's done. I don't have to pass any parameters. If you're really good at Forth you don't need temporary variables - you just create them on the stack. Consequently, no sane Forth programmer would ever save a result in a variable. Why? It's on the stack and it's okay there. It all boils down on how you arrange your values on the stack, e.g. I would define ADD-MULT as _: ADD-MULT + * ;_ or (if I was really stubborn for some reason) _: ADD-MULT >R + R> * ;_ and change the way I call it accordingly in the rest of the program. Often the "natural" way to call a word will reveal itself in time. One of my favorite words is: _: break? ?do over i c@ = if 0= leave then loop nip ;_ which has the curious stack diagram of *character, flag, string start, string end.* I've used it numerous times in many different situations and it's just a perfect fit. It returns a flag indicating whether *character* was in *string* or not. And yes, in rare situations it's preferable to present an expression in an infix format. The last time I used it was to create a "Batman graph" (Google it to understand why). However, nine out of ten times it adds very little - at least not much more than a line of comment in the margin. Frankly, I see little added value for you to write Forth, so I'm wondering you bother at all.
@AI_Robotics
@AI_Robotics 15 дней назад
I have been programming using Forth since 1989. Forth has a steeper learning curve than most languages if you really want to become an expert. It is the most powerful language to date designed to build languages (Thinking Forth). We will always support basic Forth words as op-codes. You don't have to use named variables. Even as a Forth programmer, when someone presents their code with all of the stack manipulation Words, do you see their algorithm? No way! Sometimes you look at your own code many years down the road and don't remember the algo. Memory and processing power is so cheap today, we can make Forth the most readable language. The way we are implementing named local variables will execute in one clock cycle just like the primitive stack manipulation Words. The Outer Interpreter/Compiler will do all of the work. BTW, this is a separate processor running in parallel with the CORE I FPGA core. You won't believe how fast it will process and compile. Forth 2.0 will be the most modern day language with self documenting code. As an expert Forth programmer that you are, you can just use the Forth computer and still program in Forth 1.0. Cheers! Thanks for the comment...
@computercowboy666
@computercowboy666 3 дня назад
@@AI_Robotics Sincerely as a Forth developer ,promotor & educator with +50 years of experience selling high tech solutions with Forth I can´t see anything useful in your talk or in your answer to @HansBezemer . It shows me you have any clue what is Forth and any clue about where Forth shines. You are going in the opposite direction of the Forth language, maybe if you want to invent your toy language, call it Toy2.0 but don´t insult the Forth community with this nonsense ! Grow up and first learn what Forth means.
@yxyk-fr
@yxyk-fr 25 дней назад
Good job Don !
@gnuemacs1166
@gnuemacs1166 25 дней назад
Very interesting, it’s as if smalltalk and forth had a child, you can drill down to the forty level, gui built in forth as well
@w4gap
@w4gap 25 дней назад
Very cool, thanks for sharing!
@TooSlowTube
@TooSlowTube 27 дней назад
Could you post the link to the source code, please? YT is barely functional, lately, and I can't get it to reliably play at any useful resolution. Looking through all that again and squinting at it to try to read the address is too much of a challenge.
@RosieBaltazor-f6e
@RosieBaltazor-f6e Месяц назад
Citlalli Drive
@PhillipEaton
@PhillipEaton Месяц назад
FWIW, the serial terminal works with Microsoft Edge on Window 10, I just tried it.
@stephenadels6186
@stephenadels6186 2 месяца назад
Way to go, Brad! Excellent job!
@saf271828
@saf271828 2 месяца назад
28, 29, 30, and 31 are decimal ASCII values, not hexadecimal.
@AI_Robotics
@AI_Robotics 2 месяца назад
Very cool, I love the place!
@tgdeep5246
@tgdeep5246 2 месяца назад
thanks big fan
@matseriksson8177
@matseriksson8177 2 месяца назад
I remember when you could program your computer. 1978 I sat down in front of a "computer" for the first time. It had 24 LEDs, an octal keyboard, and an INTEL 8080 processor. After about 30 minutes and reading about 10 pages I was able to manually assemble, enter and run programs. One of the first things I did was to add a 5s delay loop, to make it more exciting to see if the exercises worked, since the computer was so fast. You could read everything there was to know about the 8080, both HW and SW, in the 50 page data sheet. Today just the "Intel 64 and IA-32 Architectures Software Developer’s Manual" is over 5000 pages. Full of errors, and not really worth opening.
@user-vs7cw2rg7r
@user-vs7cw2rg7r 2 месяца назад
Very well done.
@JobvanderZwan
@JobvanderZwan 2 месяца назад
Regarding accessible color schemes, have you come across "Ametameric" by Øyvind Kolås? (he is one of the developers of GEGL) Sample size one but it works well for my protanomalous eyes :) One specific feature about it is that it still comes pretty close to the standard CGA/ANSI palette a lot of people are used to. Anyway, thanks for the update!
2 месяца назад
Looks like a NAMBLA meeting.
@JamesNewton
@JamesNewton 2 месяца назад
I'm not even crazy about Forth, but Bill's presentations are so well done it's worth watching. Graphics, clear explanations, general methods. Really well done.
@brian_jackson
@brian_jackson 2 месяца назад
Very good explanation. Of course it does get more complicated when it's not ASCII. Say UTF_8 or EBCDIC. Then there can be a variety of date formats and so on. Such algorithms can never be perfect. There can always be some files that will confuse a CSV parse. Embedded raw binary data can be a real problem. This can really make a mess of CSV.
@waynemorellini2110
@waynemorellini2110 2 месяца назад
Dennis. Post Covid memory problems? Look up treatments for post covid dealt with spike protein clearance. Near/infrared light, nattokinase, nac, bromelin etc. Maybe alpha lipoic acid and I can't remember the name of the amino acid with this, might also be involved. But use the terms in the first group, to search for the protocols.
@LambdaJack
@LambdaJack 2 месяца назад
I am disgusted. Never seen such an awful presentation. It is worse than AI.
@latty_g
@latty_g 2 месяца назад
Informative and inspiring as always. Thank you Brad!
@HansBezemer
@HansBezemer 2 месяца назад
I did a different approach. I designed a word equivalent to *PARSE,* but geared at a .CSV field. Now, it doesn't do the _entire_ job - embedded double quotes are not resolved by this word. Another word *CSV>* does that job. There is also a parsing variant called *PARSE-CSV?* which leaves an additional flag, indicating *>IN* hasn't changed (which means the end of the line). That one is handy if you don't know you just parsed an empty field or there are just no more fields. I rarely use those words in isolation. It's often embedded in words like: : Field> delimiter PARSE-CSV -LEADING -TRAILING CSV> ; : Field>> Field> 2DROP ; : Fields>> 0 ?DO Field>> LOOP ; The only annoying thing about RFC 4180 is that " " can be embedded in a field - as a character. Fortunately, I rarely need it.
@TooSlowTube
@TooSlowTube 2 месяца назад
I've tried Mecrisp Forth on the Raspberry Pi Pico, but the lack of proper, up to date, documentation was a major obstacle, to me. Just documenting it adequately would be a big improvement. The main feature it was lacking, for me, was a way to send bytes / characters to a second UART. I'd also like to see standard implementation of I2C and SPI, for connecting peripherals. While that doesn't apply if Forth is to be used on a PC, it should be part of any version that's meant to run on a microcontroller, and the same would be useful on an FPGA - the FPGA should have code for those standard peripherals (ideally not as closed source "IP") and the Forth engine should have a simple way of using them.
@freeshooter3163
@freeshooter3163 3 месяца назад
WTF ???
@so-dang-cool
@so-dang-cool 3 месяца назад
❤‍🔥
@bennguyen1313
@bennguyen1313 3 месяца назад
Many FPGAs have a hard or soft CPU (Risc-V, Arm, Nios, Microblaze)... is the idea that you communicate to this CPU in order to exercise some FPGA logic? Any other tools that help in debugging Logic, without the tedious effort of manually creating testbenches? For example, Anything from SynaptiCAD, Active-HDL? Or thoughts on Amaranth-lang HDL (nMigen/Whitequark) vs Migen/LiteX (Enjoy-Digital)?
@stephentrier5569
@stephentrier5569 4 месяца назад
Wow, that was an excellent talk. I appreciate the advice on how to use vocabularies effectively, not just the theory of how they work. Thank you!
@cyberbiosecurity
@cyberbiosecurity 4 месяца назад
np++ mafia! 😎
@seancharles1595
@seancharles1595 4 месяца назад
Beautiful!
@TheOfAndTo
@TheOfAndTo 4 месяца назад
perfect.
@batlin
@batlin 4 месяца назад
Right on!!
@gnuemacs1166
@gnuemacs1166 4 месяца назад
Thank you very much, great video, good job
@ArtHampton
@ArtHampton 4 месяца назад
Well said. I miss SV Fig. And Ting.
@waynemorellini2110
@waynemorellini2110 4 месяца назад
Guys at SVFIG, thanks for all the videos. Here are some suggestions about videos. It might be good to ask past presenters to do a short dot summary of what they covered, wgst it was about, and to include links to project information presented, or their web or RU-vid page etc. So people can visit the latest on projects. Also to do a playlist of all their presentations, and lists by common topics. That the group can use these digitally transfered lists to then put all the ones with common topic into a master kist in that topic . Then all future updates go to presenter list, presenter major topic lists (if any) and general topic lists, as new videos come in. So X (Presenter), X (Presenter) "-" A (Topic), and "Topic -" A. Can I also suggest, to sell the videos compressed on to one or more high capacity bluray, mdisc archival options, and including the Chinese 100 Terabyte optical when released. This will slow the loss of the videos. I had also been told, that it is hard to find Jeff Fox's videos (or was that Tings), after I told them to look here. Are they still here. He did a lot of early videos, but I am interested in his, ITV, intelisys, Ting, Chucks (and anything forth processor related). Sorry such a long post. A lot more than I was planning to write about when I started.
@waynemorellini2110
@waynemorellini2110 4 месяца назад
Very good. But you can apply that philosophy to all the rest of the modern OS's out there. That's what I was trying tonachieve when well, and i can tell you it's 100% doable! Virtually one abstraction layer virtually, transperant to appear like hardware. Aim was: sub 1% wastage. Peoole can do it! People don't want to do it!
@waynemorellini2110
@waynemorellini2110 4 месяца назад
You sound, talk and present a lot like Nelson Waiters?
@deadmarshal
@deadmarshal 4 месяца назад
Thanks for the dark slides. 👍
@alvarogomessobralbarcellos7587
@alvarogomessobralbarcellos7587 5 месяцев назад
please explain why the ` ( backtick ?
@siliconvalleyforthinterest1736
@siliconvalleyforthinterest1736 4 месяца назад
From Brad: ` is used to mark the division between word extensions. Since each word is stored in 28-bit+4-bit tag, some words spill over into one or more extension. It's annoying looking in the file, but allows the converter to have 100% in/out consistency.
@alvarogomessobralbarcellos7587
@alvarogomessobralbarcellos7587 5 месяцев назад
the macro dictionary works as 'keep primitives in assembly here'. good.
@alvarogomessobralbarcellos7587
@alvarogomessobralbarcellos7587 5 месяцев назад
A data stack of 32 cells. good.
@alvarogomessobralbarcellos7587
@alvarogomessobralbarcellos7587 5 месяцев назад
someone must do one pannel for applications, real ones.
@PhillipEaton
@PhillipEaton 5 месяцев назад
Really interesting run-down, thanks Bill!
@davegoehrig7674
@davegoehrig7674 5 месяцев назад
Thanks Brad, this is a perfect example of why humans are still relevant, even though LLMs should exceed at this sort of LR reduction text they all shit the bed not having been trained on Forth. Chuck's use of recursive definitions still throws most LLMs for a loop, and I honestly think when LLMs can implement what you did, that is the literal definition of AGI
@HansBezemer
@HansBezemer 5 месяцев назад
Google "2 minutes with forth" - with quotes.
@marcpetremann3911
@marcpetremann3911 5 месяцев назад
To the question: “What is Forth for?” My answer: "To make practical applications".... With ESP32forth I make small edits. To program them, I use FORTH. Compared to C, I find lots of tips for having efficient and readable code.
@noahryan8672
@noahryan8672 5 месяцев назад
Interesting talk. It would definitely be nice to have more forth in space, and more flexibile, small systems in general. The systems that I have seen use a small bootloader to read and write the real image from flash. The bootloader may be loaded by jtag, but after that its just a matter of writing a blob to flash. One note: I dont know anyone who compiles code in space. The complexity of the toolchain is on the ground.
@AI_Robotics
@AI_Robotics 5 месяцев назад
We can compile code in space. I have asked dozens of people in the space industry, not a single person thinks it is possible. You would have to put Linux on the spacecraft with the toolset.
@noahryan8672
@noahryan8672 5 месяцев назад
Sorry, I should have clarified that I was talking about C/C++ systems. I can definitely see compiling forth in space as an advantage.
@marcpetremann3911
@marcpetremann3911 6 месяцев назад
Here my fist application of RECOGNIZERS for ESP32forth: ( Add recognizer for binary integers. ) internals also recognizers definitions : REC-BIN-NUM ( c-addr len -- f addr1 | addr2 ) over c@ [char] % = if 1- swap 1+ swap base @ >r BINARY s>number? if ['] aliteral RECTYPE-NUM else RECTYPE-NONE then r> base ! else RECTYPE-NONE then ; ' REC-BIN-NUM +RECOGNIZER previous definitions forth