Forth BBS 2 (1985)
github.com
github.com
I was a teenager at the time and remember some of my friends went a dinner meetup for a BBS. They revealed it was super awkward afterwards, but I guess it was an older crowd.
Couple of takeaways.
First, all of the commands are Forth words, and they're using the text interpreter to do dispatch. It's like passing a string to Lisp EVAL (but vetting it first).
Second, they're using the Forth BLOCK system, which is a crude "virtual memory". But this makes things quite easy for them I/O wise. Everything is stored as absolute offsets, they MOD is by the block size, and say "give me a pointer to BLOCK N", and the system returns that. Side effects? Everything is just done "in memory". The BLOCK system does the rest (including caching and flushing change blocks back to disk). Instead of mmap, you wanted a miracle? I give you BLOCK.
Neat stuff, 600ish lines of code.
(If someone wants to read the pristine .SCR file, Emacs has a Forth Block major mode you can hunt down to make reading it easy.)
I used to dabble in Forth a long time ago and I always thought it would be interesting to see a Forth that people could telnet/ssh into and it would look & act like a MUD or BBS, but the prompt they're on could be the core Forth interpreter/REPL anyways - allowing optional live coding and more.
I originally discovered Forth through a MUD called TinyMUCKS that had a neat scripting language within it called MUF (short for Multi-User Forth). The MUD itself was unfortunately written in C.
I'm not a dev but can program. Having learned a little bit of the history of how forth was invent I feel like a dumber kindred spirit to its creator. I like that he didn't know you had to parse, tokenerise etc and just split on the white space and read left to right. It feels like the way I would do it.
After that, Jonesforth (https://rwmj.wordpress.com/2010/08/07/jonesforth-git-reposit...) is an excellent example of Literal Programming that starts with an Assembly listing and bootstraps into a complete usable Forth system. No better way to learn Forth than to actually implement one...