Byte Magazine: The Forth Language (1980)
archive.org
archive.org
I've recently picked up a different Forth variant, and with some help for the HN community, got it to compile... then my retina detached and I've got to wait until I can see properly again to work on it. (It's really hard to program when you can't see more than a line or two at a time!)
It's called mStoical,[2] and is a variant of the STOIC language, which is Forth, with type checking, strings, hash tables, dictionaries, and even regex.
[1] - https://www.os2site.com/sw/dev/forth/forth040.zip
[2] - https://github.com/mikewarot/mstoicalAs an aside: I wonder if there is anybody that used Forth but that never implemented it.
The key is that implementing Forth is so ridiculously simple that you may as well do it as a training exercise. I even wrote one in C, appropriately titled 'the ultimate insult'.
Nowadays I suppose you could put 128 Forth processors on a chip 1/10th the size of a modern microcontroller. I don't know why people don't build Forth hardware; it should be cheap, efficient, and fast.
By 1988 or so Byte was really struggling and sometimes he seemed to be the only person keeping the lights on. He'd be answering letters to the editor, bailing people out of their WordStar problems, etc.
ADDED: A lot of computer events were going through a similar problem. At some point you're about everything and nothing.
https://books.google.com/books?id=MfbDrFwiARgC&pg=PA170&dq=p...
You'd also occasionally get them on other tests.
And Mac vs PC tests were common as well.
It definitely wasn't worth reading once Robert Tinney stopped doing the covers.
I often wanted to find a good magazine about computing.
They still have the occasional hobbyist oriented article but mostly they are famous for testing new hard- and software rigorously without assigning any kind of award. So you will never get a single recommendation from them but rather check the test result table which product got more A grades in the category that’s most important to you.
Now that is a blast from my childhood. Maybe I should pick up a subscription for it.
Another folksy magazine is 2600. Its hacking for both beginners and advanced experts. Often there were tutorial articles on broad principles of computing.
I have seen neither since covid reopening. Either they failed during covid or bookstores have shrunk magazine inventory. Also many magazines/journals have gone digital only. You cant really browse them at university libraries anyone unless you have an affiliation account at the university.
P.S. I remember when Byte was a mimeographed newsletter before it turned into a glossy.
They've been digitizing the collection as well, coming out the with annual digests.
If you still like paper a lifetime subscription is surprisingly reasonable. I subscribed about 20 years ago and have definitely gotten my money's worth.
So, where is the cost? People seem to be willing to submit quality articles just for the exposure it gives them. And surely its possible to set a price on a magazine that can play for printing+postage sufficiently to make a small profit too.
The problem I see with hackaday and similar is the lack of quality curation. Make magazine has this problem x100. AKA, no one older than 6 really enjoys an article on how to make snow cones, when they are looking for build plans for a 300 BPS modem. I learned a lot of my early programming skills reading Doctor Dobbs and Nibble back when they had articles on data compression, or whatever.
In a way its why I read hacker news too, the book recommendations, and articles like this one are a pretty good replacement, although again one has to filter the noise, and the temptation to post things rather than write code is much larger.
So, I return to the original premise, maybe what is needed is a good editor/curator who removes the useless noise and slims it down to articles on how to write compilers, JPEG decompressions, and the like.
I still love the simplicity of Forth, and the fact that you can get a full Forth system going in a few KB on a new microcontroller. I learned the basics of assemblers, bootstrapped compilers (though not parsers, because Forth doesn't need a "real" parser), recursion, how to implement control structures, various kinds of bytecode (called "threaded code" in the Forth world), linked lists, hash tables, and so on. I also dislike 3rd party dependencies to this day (Forth has a pretty extreme not-invented-here culture).
I was really intrigued by Factor when it came out (https://factorcode.org/), as a modern incarnation of Forth, but I never really used it. By that point I had a "real" programming job and was doing absurd things like writing CGI scripts in C, until I discovered Python in the early 2000's. I stuck with Python for many years and really liked it, though more recently I've moved to Go.
I learned a lot by playing with Forth as a teenager, and I'm really grateful for the language. It was an amazing way to start programming.
http://www.bradrodriguez.com/papers/moving1.htm
And then there's CollapseOS:
He was a prolific advocate and author from the very beginning up through recently.
If you ever wanted to know about Forth and how it worked, you've probably read his work.
While Leo Brodie is famous for this mass market book, Dr. Ting dug into the presented the internals. His most recent work was advancing eForth, which he created long ago. Promoting it for modern micro controllers such as the MP430.
But he came out with system guides both for early FIG Forths as well as for Forth-83, which is one of the more advanced Forths for the early PC.
I never met him, but appreciated his work, and it's a great loss to the community.
I looked to see what Chuck Moore was up to; he's in his 80s and still tinkering and chatting with fans of his work, as recently as late last year:
a. It's easy compared to writing a C complier (or even a half-way feature rich BASIC interpreter.)
b. The easiest way to understand some features of FORTH (like tick and var and colon) is to simply re-implement them.
So if you've already reimplemented half of the language, it's easier to reimplement the rest of it than to internalize how someone else's FORTH works.
I worked on a somewhat large FORTH project in the late 80s. My quip was: "The cool thing about FORTH is that it's so easy to extend the outer interpreter to make a DSL. The bad news is that someone on your project already has."
Actually writing FORTH programs, on the other hand, is for me a real brain-bender. It seems to require a very different kind of thinking than does programming in C (for example).
That's the beauty of it. The more exposure you get to these kinds of different paradigms, the further you advance your craft. It all transitions to whatever you're working on and helps you better speak the fundamental computer language.
In the hands of an expert, Forth can look like a Haiku. For anyone else: not so much (to put it politely). In the end, I just want a solid programming language like C.
Forth advocates can also sound a bit mystical in their utterances, and how they need only 1% of the code of everyone else. They're like Zen riddles: universal truths that no-one really understands. Um, OK, they're undoubtedly right from their point of view, but I doubt that the developers of the Linux kernel wrote 99% of the code for no real reason.
I played with colorforth a couple of times, but could never figure out what the living fark was going on. Sure, it works for Charles Moore, but I'm not Charles Moore. I did see a guy on YT that actually used colorforth. He seemed really happy and productive with it, although I couldn't help but walk away with the sense that it was a bit of a mystery to him too.
I don't think that Forth is that great for microcontrollers either. C's model of edit-compile-upload gets the job done.
I think that the difference between Forth and conventional languages is this: you can write specific solutions to specific problems in Forth, whereas conventional languages are better at generality and scale. Each has their place, but the reason you'll see more of the general-purpose language artefacts is because, well, they're more general-purpose.
Nice introduction to threaded interpreters.
https://github.com/nornagon/jonesforth/blob/master/jonesfort...
I'd love to build a homebrew one.
Alternatively you could go with Grant Searles schematic http://www.jupiter-ace.co.uk/hardware_diy_ace.html
https://www.youtube.com/watch?v=b8Wyvb9GotM
I've written lots more about Open Firmware on HN before (I was Mitch's summer intern at Sun in 1987):
https://news.ycombinator.com/item?id=21822840
>Here's the interview with Mitch Bradley saved on archive.org:
>https://web.archive.org/web/20120118132847/http://howsoftwar...
>[...lots more links and info...]
Mitch's programming and debugging process has to be seen to be believed. Open Firmware is definitely a highly polished work of love. Its well-commented and meticulously organized source code reads like fine literature or classical music! Stuff like the metacompiler and kernel, for example:
https://github.com/MitchBradley/openfirmware/blob/master/for...
https://github.com/MitchBradley/openfirmware/blob/master/for...
(lua support was recently added as well)
Now that I’m less easily distracted I often feel a vast nostalgia for those early-ish days of personal computing, specifically for how nobody knew which paradigm, if any, would gain traction.
I still peruse the Byte classifieds in a few old keeper issues whenever I visit $HOME.
Good times...
https://news.ycombinator.com/item?id=13082825
The result is here:
It's not real, but it was a pretty fun experiment regardless.
https://news.ycombinator.com/item?id=29261868
DonHopkins 8 months ago | parent | context | favorite | on: Forth vs Lisp
Coco Conn and Paul Rother wrote this up about what they did with FORTH at HOMER & Assoc, who made some really classic music videos including Atomic Dog, and hired Charles Moore himself! Here's what Coco Conn posted about it, and some discussion and links about it that I'm including with her permission:
Peter Conn:
Homer & Associates (1982):
http://leftbrain.us/rotherHistory/homer.html
Peter Conn Papers at Stanford:
https://library.stanford.edu/blogs/special-collections-unbou...
https://oac.cdlib.org/findaid/ark:/13030/c8n303pn/entire_tex...
George Clinton - Atomic Dog (Official Music Video) HD
https://www.youtube.com/watch?v=LMVZ36VA0wg
Steve Miller Band - Abracadabra
https://www.youtube.com/watch?v=tY8B0uQpwZs
Steve Miller Band - Bongo Bongo
https://www.youtube.com/watch?v=_NrsRZdMI-A
Flying Logos for 1989 Siggraph Electronic Theater:
https://www.youtube.com/watch?v=9hIOfEiy4lc
>First shown at the 1989 Siggraph Electronic Theater to a rave response, this 3 minute humourous film went on to win several top computer graphic awards that same year including Niccograph of Japan.
>Coco: This was a show favorite at the SIGGRAPH film show that year. The year before the conference committee decided that showing demos wasn't the way to go anymore. Peter wrote Flying Logos as a way to sneak our demo reel into the show by turning it into a story. It worked and we made it into the film show.
>Don: I truly believe that in some other alternate dimension, there is a Flying Logo Heaven where the souls of dead flying logos go, where they dramatically promenade and swoop and spin around each other in pomp and pageantry to bombastic theme music. It would make a great screen saver, at least! Somewhere the Sun Logo and the SGI Logo are still dancing together.
----
Peter Conn and I [Coco Conn] had a company called HOMER & Assoc. which was located at the Sunset Gower Studios from 1977 until we closed shop in 1997. We made music videos, commercials & computer graphics/special effects for feature films. One cool note, we worked with Paul Verhoven on both RoboCop in 1986 and the x-ray scene for Total Recall in '89.
HOMER was actually a real time visual mixing console that our in-house engineer spent 1978 - 1981 designing and building, from scratch. The name HOMER stood for "Hybrid Optical Montage Electronically Reproduced." I helped as well, soldering the LEDs on the console and running cables. Peter built his own optical printer and three years into the build we also bought an early computer paint system. Our engineer finished building the console and promptly decided to move to England. We hadn’t used it because we still hadn’t found the right software to run the system. Luckily that’s when Paul Rother joined the company.
The joy stick on our console would bump you to the next line of code (being a command or sequence of events: fade, cut, dissolve, etc.) The console had touch sensitive fader pads. There were no dials. I think they were made by Allison? Each channel (which controlled either a slide projector or a film projector) was touch sensitive. After recording a sequence we could then tweek the current version using additional effects the channels offered such as momentary, additive, on/off, etc. For instance if you wanted to crossfade two images, you could either program it or perform it. Of course everything you did was recorded and would play back on the next round. You literally performed a sequence of visual effects with your hands. Peter would do countless passes until everything was perfect. This performance would then be played back to IP film on the optical printer. Each slide tray or film real would be individually run, one by one, to IP film. Sometimes there would be 10-15 or more passes to get all the elements transferred. Once that was done we would then convert the IP film to video and do additional video editing and effects. A totally nuts analogue system. But it worked.
---------------
HOMER Explained by Paul Rother, in-house programmer, (1982):
The photo is Paul sitting in front of the Optical Printer 7-bit Paint system, Homer and Associates, circa 1982. Homer and Associates was really one of a kind kinda of company. Founded by Peter Conn, originally I got hired to program Homer II, a visual realtime mixing console. Homer I is another whole story, but before my time. Homer II consisted of 16 slide projectors, 4 movie projectors, a 4 track tape recorder, 24 visual channels (each with its own Z80) touch sensitive sliders, a master Z80 S100 bus system and featuring "the joy stick bumper " control, which looked liked the gear shift right out of a 1964 mustang convertible.
The idea was that you would program a visual sequence, then play the sequence in sync with the sound track on the joystick, including cascades, bumps, cuts, etc. The whole thing would be recorded, and if you wanted to, like an audio mixer, go back and do over dubs, making corrections. Then once you had the perfect "hero" recording, you take the 8" floppy disc with the hero recording and the trays of slides to the optical printer, and record it to IP motion picture film, making multiple passes, one tray at a time. Now that I think about it, it was a crazy idea. We actually got the whole thing to work. And it worked great!
Forth & Charles Moore
We hired Forth, Inc. and got Charles Moore, the inventor of FORTH to program the console host computer. I learned FORTH and worked with Charles. I programmed the 2K byte EPROM in each visual channel. On the Master Z80 system we ran PolyForth a multi tasking system in 32K bytes. We had an extra 16K RAM for buffers and things. If I remember right, the system ran four tasks, but that was 20 years ago, my memory may be hazy.
Anyway, I learn not only FORTH from Charles Moore, but also how to factor code in to small reusable routines, WORDs they're called in FORTH. I learned Object Oriented Programming without knowing it. Also a lot of use of vectors. Its a cool language. Charles Moore was a great inspiration to me, and really taught me a great deal that they never taught me in computer programming school.
CAT-700
After we got the basic Homer II working and were able to record on the optical printer, Peter had another idea. He wanted to be able to see the movement of the optical printer, and see a prior frame compared to the current frame. We already had a video assist on the Fries Mitchell 35mm. What we needed was a Frame Buffer. We heard of S100 video board called the CAT-100, which was 1-bit frame buffer, good enough for what we needed. Somehow we never found a 1-bit version, but we found 7-bit version in the recycler!
We flew to Reno, rented a car and drove to a log cabin up in the hills of Truckie California. We got a demo of the thing. The guys were super secret and didn't want us to see the controlling program. It worked, so we bought it, and then flew onto Palo-Alto and met the French guy who designed it. They checked it out and it was OK. This was the days before computer designed boards, and all the traces on the board were curvy, kinda like a Van Gogh painting. We learned that it was 7-bit (CAT-700) because it would have been an 8-bit, but they could not get the 8th bit to work. We spent the night in Palo Alto with a Stanford friend of Peters working on a crazy secret Apple project, the Lisa. 32KByte Paint System
So I got the CAT-700 frame buffer to work, programmed in FORTH. So in that 32K we had an optical printer control system, and a paint system, all in one. (Also the OS, compiler, debugger, etc.) We later hooked up a Summigraphic Bitpad (before the Watcom tablet) and were able to draw on top of digitized frames. It got to the point where we needed TWO optical printers, one to digitize from film, and the other to record to film. Rube Goldberg is not strong enough descriptive to describe the system, with the filter wheels and all on stepper motors, it made music. The first use of the system was effects for Steve Miller Music Video, Abracadabra. I also remember using it on the George Clinton Video, Atomic Dog.
This photo was taken right after we got the system to work. I had hooked up an analog slider box, which controlled things like color. There were 4 color maps we could switch between instantly We did a lot of work in planes, using 2 planes for the original image to be rotoscoped, and the other 5 planes to draw onto. This photo was taken for an article in Millimeter Magazine. The photo ended up being a two page color spread, and I think Peter was pissed, cause I got premier exposure.
TTL logic
At Homer and Assoc. I also learned TTL logic and designed a number of computer boards for the S100 bus. One that controlled stepper motors with a timer chip (Motorola 6840). Another to control the Slide Projectors also using the same Motorola timer chip to control the lamp triacs. My favorite thing, about the system, was the use of the cassette storage interface as a cheap timecode reader/writer.
https://www.forth.com/starting-forth/1-forth-stacks-dictiona...
I've always loved the illustrations.
Ep. 416 Udamonics/Scamp