BTW, the author of this earlier created IntyBasic, a Basic compiler for the Mattel Intellivision (https://intellivisionrevolution.com/intybasic). And the famous "nanochess" tiny chess engine (hence his user name of nanochess)
The eyeball searing orange text on fluorescent teal background made me chuckle like an idiot. Did the web page designer troll me? I love it either way.
Getting an alpha version done in two days is a pretty mighty accomplishment. Congratulationa!
I have been working on a learning project to produce an interpreter of a sub set of Python written in Python (most arithmetic ops, assignment ops, if-elif-else, while-break, function calls) and it took me about 2 months to complete it in my free time.
Thanks! It was coded fast because I reused parts of my IntyBASIC compiler like the lexer, the expression analyzer, and the decision statements core (GOTO/GOSUB/WHILE/WEND etc). The first version of IntyBASIC took me almost two months to be ready.
The guy had the experience of another Basic compiler and it may even had previous experience from other compiler projects.
I once implemented an interpreter for a custom DSL that had only boolean logic (and, or) and parenthesis precedence. It took me one week but then again I was totally green in the field.
My interpreter? Oh it's just a simple frontend. My plan is to first convert it to an ast tree walker, and then add a backend for some vintage platform. I am also thinking about generating llvm IR as it makes it trivial for the backends.
I knew nothing about compiler theory so it took me way too much time to implement break and function call correctly.
Off topic but interesting:
Over in the TI-99 section of atariage.com the boys have ported GCC to a machine first designed in 1978. :-)
It's taken a while to get all the kinks out. First attempts were made in 2010.
Great progress has been made in the last several months as it now seems to compile most people's projects successfully.
I've debated making a game for the Coleco just because it was substantially less limited than the Atari 2600, but still old enough to be interesting. The fact that I'd have to do it in assembly was the big turn-off there, so playing with BASIC might be more fun.
I'd be super interested in trying a FORTH system as well, if anyone knows of something like that for the Coleco.
IIRC, there was a really neat looking FORTH for the C64 focused on game programming: White Lightning[0]. oh - it runs on Zx80 too... I always wanted to play with it as a kid, but never got around to it :-/
White Lightning is essentially a big library of graphics routines written in assembly that loads into RAM. They can be used from BASIC or from the included Forth. There are versions for the C64 and ZX Spectrum. It can handle up to 255 software sprites.
There were a few things written in Forth for the Atari 8-bits, most notably RAMbrandt and Omnitrend's Universe. I don't recall any action games in Forth.
Forth (according to sources I have not verified) powered the influential CRPG series of Stuart Smith: Fracas (1980), Ali Baba and the 40 Thieves (1981), Return of Heracles (1983), and Adventure Construction Set (1984). All were multi-platform releases. If true, Forth was a good fit for that, since it would function as the game's scripting environment as well as the engine, and it would additionally explain why those games feel like more developed scenarios than contemporary rivals.
Action games needed tighter main loops for gameplay so my understanding is that where Forth was used for those, it was primarily as a macroassembler system.
I am exploring Forth for Agon Light right now. Since the Agon is a modern 8-bit design swaggering around with an eZ80 at 20MHz, 512kB RAM, and a programmable VDP with functions resembling GPU shader programming, it can absorb all the interpreter overheads easily.
I am actually thinking these days about building a BASIC compiler for another Z80 retro machine (Galaksija). But I am a little bit afraid about the machine code generation part. How hard was it to target Z80?
Automatic generation of code for Z80 is kind of hard because some operations are forced to use a few registers.
For example, ADD only works with A or HL (and IX or IY), and the code generator requires register shuffling or using the stack for saving temporary values.
My current approach is building a node tree for expressions, generating code by detecting common patterns, and if there isn't a pattern it goes the complicated but simple way. For example, for add:
right expr. / push hl / left expr. / pop de / add hl,de
The ADAM's SmartBasic was interesting in that it was specifically designed to be as close as possible to Applesoft on the Apple II given how common the Apple was in US schools in the early-mid 1980s.
I got a virus warning and windows deleted the entire zip. Just a heads up. Maybe source or a signed file or something might go a long way to fixing that.
Regardless. Fun stuff. Looking forward to trying. Maybe in a vm.
Still pretty cool, and it's probably he first dedicate to and custom tailored to the Coleco! Come hang out with us BASIC folks over on discord if you use it https://discord.gg/jS6Jx8yJQP
We have a few BASIC creators (and of course users) over here including Marco who created ugBASIC.