Programming in Forth on Commodore 64 [video]
youtube.com
youtube.com
Compilers for C, Pascal, and other languages of the time were hundreds of dollars, which was a lot for a (often young) hobbyist to pay. When I first heard about gcc in the early 90s, I was blown away because compilers in my head were something that only big corporations, universities, and the government could afford.
While there was no shortage of homebrew software in the 8-bit era, I have to wonder how much more there would have been if the major manufacturers of computers had made access to developer tools inexpensive and easy instead of letting the third-party market fill that role with small volume, high cost products.
64FORTH was relatively inexpensive ($40-$50) and might be another reason why the C64 had so much software developed for it.
Most 8-bit users had tapes, as disk drives were quite costly.
Having a compiler was even less than 64 KB available, and neither Z80 nor 6502 were/are stack friendly architectures.
So not only would one be swapping tapes all the time, there was much less memory available.
I think I never saw them on sale on my hometown, they had to be ordered from ads in computer magazines.
You can tell the difference between regions by watching retro computing YouTube channels. Those with North American creators generally use floppy drives or emulators with their retro equipment. European/UK creators are more likely to use tape or tape emulators and if they use floppies reference that they would have never been able to do so back in the day.
For me, tinkering with Forth on a C64 was attractive because I could interact quickly with the compiler, getting immediate feedback when I was toying with different concepts.
If you knew where to look, Tiny C was published in early Byte magazine (late 70's?) and Small-C published in Dr Dobbs, May 1980.
I get nostalgic and peruse the early Byte ...
And Forths and BASICs can be fast or slow, really depends how much time is spent optimising.
And hey, considerably more and even larger games have been written in assembly, compared to which Forth is definitely high level (arguably even to other programming languages, but let's not get into that unless Don Hopkins joins this thread)
Actually FORTH despite being so low level lends itself perfectly for writing complex software in it because it allows for a great bottom up style programming in a similar fashion as LISP does. You would start your application (or game) with higher level words abstracting all machine details and then write your game engine on top. Then you would go on defining a set of words allowing you to define levels and characters easily on top of the engine. So well written FORTH applications were just layers and layers of specialized DSLs working together to solve complex problems. With the right abstractions, the code was easy to read in the end and also easy to port across different architectures.
Unlike LISP, however, FORTH did not come with memory management or a complex run time. So it was way better suited for the small 8-bit micros back in the 80s. One of the British micros even came with a FORTH runtime instead of BASIC: https://en.wikipedia.org/wiki/Jupiter_Ace. But, unfortunately, BASIC turned out to be much more popular, although usually being too slow and inflexible.
I remember BASIC 2.0 -- which shipped with the C64 -- not providing any kind of abstractions around the particular hardware features the machine provided (like sound, graphics and sprites). It was very frustrating especially for beginners that just wanted to create their own little games. But that was almost impossible without embedded machine codes and the resulting BASIC programs much harder to read and understand than FORTH code.
It was the 8 bits that made it known as an interpreted language.
I remember trying this a handful of times with code examples I found in magazines or books, using arcane strings of seemingly arbitrary numbers manipulated by POKE and PEEK commands. I felt very limited in what I could do considering the amount of time required, and like I was doing data entry instead of learning something I could use in the future. So I gave up on that.
It's hard when you're the only person you know interested in coding and there's no internet.