Back around the time of OS/2 2.0, I was told you absolutely COULD NOT write OS/2 programs in assembler... so I wrote Forth/2 as a result.[1] Direct threaded native code. Brian Matthewson wrote a great manual for it, and it had more than 50 users at one point in time. It requires OS/2 2.0, but it can run on the text mode boot floppy.
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.
I acquired a couple of computers from my dad's old work with Forth ROMs in them (Acorn Atom, Epson HX20) so presumably they wrote a data logging and analysis app in Forth without actually implementing Forth themselves.
You'd think the same thing if you looked at my professional Forth work, but that wouldn't make it true...
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'.
In college undersigned a CPU that was initially register based but I figured out I could write a nice stack-based ISA for it and use registers for storage. It was very FORTH-like to program. It had a “verb” bit that told it whether that word was data (to be stacked) or an operation, to be done.
There was a processor family called NOVIX, that was a hardware implementation of Forth - using a gate-array, I think.
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.
I worked with a company that used the New Micros 68HC11s with embedded Forth. Used it to control CD players using IR codes, to play canned messages for museum exhibits. Lots of fun.
I love Steve Ciarcia's "Build a Modem" project. Steve published plans for a project every month: usually at time it was a demo project for some new integrated circuit with a few 74xx or 54xx glue chips to interface it to a computer... But it always was reliable and really worked. A few years later he was using various kinds of CPLD instead of the x4xx chips and had also discovered microcontrollers so one month the project was a microcontroller board and then in later months the project would be something you did by the board.
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.
I'd say Byte was really falling apart around 1985 or so. Prior to that it was by hobbyists, for hobbyists, and it showed. After that it started to lurch towards being just another magazine for consoomers, with Steve being really the only vestige of the magazine's original purpose... until he jumped ship to create Circuit Cellar INK.
Byte was idiosyncratic compared to say PC Magazine (which still had things like assembly language listings into the 90s) but there was definitely a whole swizzling of hobbyist vis a vis corporate PC users going on from the late 80s. At some point Byte became just a hard to define muddle. Dr. Dobbs had a similar problem in a more software-oriented role.
ADDED: A lot of computer events were going through a similar problem. At some point you're about everything and nothing.
PC Magazine was very focused on PCs. You wouldn’t read about Suns, or NeXTs, Amigas, or even Macs. Byte did a nice review of the Archimedes, the first ARM-based desktop. The ecosystem was a lot more diverse back then than other publications would make you think.
That's true, but it was never with the breadth and depth of BYTE. They had in-depth issues about many different families of computers and operating systems. You wouldn't see articles about Transputers detailing experimental OSs for running on them. I remember the first time I read about Python was on BYTE.
PC Magazine was definitely trying to be a little bit of everything. They went in hard on hardware/software reviews clearly aimed at home office users, but then you'd have columns on nifty utilities in raw assembly, and then game reviews shoved in the back. Eventually they seemed to just junk everything except hardware/software reviews and basically became a glossier, smaller version of Computer Shopper, at which point I just tuned out.
I subscribed to Byte Magazine from 1985 to about 1988 or 89. My feeling was that by 1985, Byte had drifted away from the hobbyist market and was drifting more towards a computer science journal (kind of). By late 1987 it had shifted more towards a PC rag what with the rise of the 386 clones during that period.
It definitely wasn't worth reading once Robert Tinney stopped doing the covers.
There were some decent issues in the late 80s, but yeah, it had passed its prime. They relaunched as a website in... uh... 2009 maybe? I had a long conversation with the editor at that time about what I loved about Byte and Dr. Dobbs in the early days. I think it went over their heads and they sort of went back to "reviewing mice and computer monitors."
When I was in college in 1979 I bought a PCB and populated it to have a fully functional 300 baud DIRECT CONNECT modem, and was able to get to the university computers from home! How times have changed.
Ciarcia's the stuff of legend. Between him and the library I learned more about computers than from any other source until I actually got my hands on one.
In Germany we have „c‘t“ („Magazin für Computertechnik“) that started out as a kind of German language Byte (featuring projects such as building your own CPM driven PC) and became more a consumer oriented magazine. However, unlike Byte, they survived that transition quite well and gained so much traction that it is today still the leading journal on everything computer oriented and gets quoted in mainstream newspapers sometimes.
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.
For a while in the 2010s I read a magazine called CPU I picked up MicroCenter. It's glossy about all aspects of computing aimed at gamers. It was written at the Scientific American level- not too technical like ACM Communications and not too dumbed down like computers for specific computer brands.
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.
2600 is still in print, but they did have some major distribution issues during COVID. I believe they have worked them all out by now.
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.
I still like IEEEs Computer and ACMs Communications, but they aren’t market oriented at all. OTOH, print publications aren’t agile enough to do product reviews, as the shelf life of a magazine far exceeds most product runs.
But hackaday and the like seem to do just fine. Granted lots of puff pieces and reviews. But byte/DDJ/Radio Electronics, etc had lots of ad's too.
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.
My dad, who was a minister by day and Forth hacker by night, got me into programming when I was a teenager, and Forth and x86 assembly were my first languages. I wrote a small self-hosting Forth compiler for 8086 DOS (https://github.com/benhoyt/third), a tiny 32-bit Forth operating system for the 386 (I guess you'd call it "bare metal" today). Incidentally, my brother used my Third compiler at his work for a few years to write test scripts for embedded systems.
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.
"Threaded code" is not quite the same as bytecode. Usually it's a sequence of subroutine addresses that are then dispatched to, a bit similar to how vtables are implemented in high-level languages. Other implementations are possible, but tokenized systems ala bytecode are only one of many possibilities, and not usually the most common. https://en.wikipedia.org/wiki/Threaded_code
Yep, you're right, thanks for the clarification. I was simplifying (never a good idea for a highly technical audience :-) because most people haven't heard of threaded code but have heard of bytecode. My Third compiler used direct threading.
Oh I love FORTH. Good set of articles here called Moving FORTH by Brad Rodriguez discussing the implementation of FORTH on various legacy ISAs. Worth a read to understand the internals and beauty of the simplicity of it:
It should be noted that the Forth community lost an absolute pillar around the end of May (I don't have the exact date) when Dr. C. H. Ting passed away.
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.
If you are interested in Forth, the classic 'Thinking Forth'[1] is available for free online and generally considered a programming book worthy of reading even if you are not interested in learning Forth. And rightly so.
Although I am not a good Forth Hacker I greatly enjoyed this book. It’s actually a book about software architecture and applying good coding patterns predating the Gang of Four about a decade.
I fell in love with FORTH recently and wrote a bare-metal "OS" (barely!) for the IBM PC based on it. Funny how people are mostly implementing Forths rather than writing programs in Forth. Why is this?
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:
My guess as to why people write their own forths is:
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."
Good thoughts, thanks. This mirrors my own experience. The whole thing did seem very approachable to me. Pretty sure we had to implement a FORTH in a programming languages course I took back in college as well, so I had that basic familiarity with it.
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).
> It seems to require a very different kind of thinking than does programming in C
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.
Same reason people write Lisps instead of working with Lisp: It's fun, but not all that useful when you are finished. In the modern world, you can't really do much other than simple demos without encryption and networking and those things are much harder to write than a Forth system.
Forth is great fun to play around with. I love the way you can extend the language to create new constructs. They're like Lisp macros with the safety catch off. I found it difficult to reason about how immediate words will be executed and embed code the way I want it to.
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.
Oh hey. Anyone remember Loeliger's book "threaded interpretive languages" ? It came with examples in Z80 assembly, but I translated them to work on the 8086 system I had handy. I mean how cool is it that I had an es:si, ds:si AND ss:sp pointers!? And they were separate from the ax, bx and cx registers! Much nicer than ab, cd and hl.
I still have one - or most of one - that a friend of the family gave me after he bought it and couldn't figure it out and bought a ZX Spectrum instead. Sadly the vacuum-formed plastic case went all crumbly.
Sadly you've missed a recent opportunity with the Minstrel Forth https://www.thefuturewas8bit.com/shop/tynemouth-products/min... a modern clone of the original. There is a bit of cheating by having a micro controller do the video timing along with a dual port RAM for the video, but I'm happy enough with that.
Sadly, I missed the ace when it was released as hardware, but whiled away many hours with the xAce emulator. I was able to find most of the docs online as PDFs, and they were really pretty good.
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:
I got the Forth C64 cartridge[0], but my fascination with programming languages was, alas, at that age not yet equal to my — whoa is that a party?
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.
I had a TI-99/4a and had a Fourth implementation for it. I didn't have any manuals or guides for a beginner however. Whatever instructions it came with were like reading a foreign language. At that age I needed a progression of simple examples starting with "Hello, world" and of course there was no internet to easily find stuff like that.
Hah! I too had that TI FORTH setup. I remember you had to have both a memory expansion and a disk drive, so... thankfully I had them both. I had one of Leo Brodie's books, but it was slightly off from TI-FORTH.
I cut my teeth with Apple II GraFORTH in high school in 1981/1982, had a good time with a lot of audio/visual/animation stuff with that platform. A fellow student and I got paid for some demos we put together for some local guys selling the MicroEngenho (micro-sugar-mill) Apple II clone in Brasília. They were a hit at trade shows.
I have many fond memories of reading Byte magazine years ago. My University library had a complete collection. I would spend hours reading through them. Fun times!
Fuzzball and TinyMUCK feature MUF, multi user Forth as a way of programming within a MUD. As I think about it there’s a fascinating direct spiritual line from that to VRChat today, the idea of multiuser roleplaying where you can code within the game itself (just in vrc it’s done in Unity).
There was a programmable MUD back in the 80s called TinyMUCK[1] that used a Forth-like language called MUF for Multi-User Forth[2]. I learned to do a few simple things with it but there was another user who was an absolute whiz and lived and breathed stack-based programming. I don't know what happened to them. I like to think their out there whipping up good things. If I hand any idea of their IRL identity I'd love to chat.
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:
>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.
I saw "cat" as I was scrolling by and thought you were talking about the Canon Cat and got excited. But a FORTH controlled S100 video board also gets high marks. Cool story.
I've kind of always known about Forth, having had a Jupiter Ace when I was about 9, and many many years later I ported a version for the 6809 across to the Ensoniq Mirage sampler to let me poke at the hardware as an aid to disassembling the software.
Hello people I'm glad there are so many of us.
I work with FORTH also. For now under x86 Windows OS but plan to port it soon to other platforms and even run it bare-metal. It completely changed my working style because I now don't need to use stack overflow and internet connection to program. I use books mostly. If internet goes down in this uncertain age I can continue
to work.
I remember reading this back in the day. Later I implemented a Forth interpreter as a kind of embedded language for C programs, complete with a code scanner so that you could call selected C functions and access selected variables from Forth. Or, you know, corrupt memory accidentally.
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.