> a new BASIC interpreter for the 1983 Mattel ECS add-on for Intellivision
Fun fact: Hal Finney (yes, that Hal) wrote a BASIC interpreter for the Intellivision back in 1978 or so in a weekend. It was 2K of code. Mattel shipped it on a cartridge.
ROM space was so tight, the only error message it produced was:
EH?
Which Hal was very proud of. He showed it to me to make me laugh. At the time I was programming the Mattel Intellivision Roulette cartridge.
The Level I BASIC for the TRS-80 (which only shipped with 4 KiB of memory originally) had three error messages: WHAT? (syntax errors and the like); HOW? (illegal operations like divide by zero); and SORRY (out of memory).
BootOS, the 512-byte OS written by Oscar Toledo (author of this article), also has a single error message, "Oops".
Very impressive, as usual! I've never written a 100-page assembly program in my life, much less in one month. The string stack part reminded me of http://turboforth.net/downloads/docs/ANS_String_Lib.pdf, with the same motivation of handling string expressions in limited memory without needing a GC.
I wrote a BASIC interpreter that supported integers and strings circa 1979. Written in assembly, it used a simple precedence parser. I measured its CPU utilization under cpu-intensive loads: ~9.5% for lexical/token analysis, ~20% for the parser, and ~69.5% for semantic work.
It was a lot of fun. The assembler I used was really powerful; I used its macro facilities to create ‘rule’ macros that defined the BNF of the language.
This is a very impressive project a really informative post, thanks to the author! There used to be a lot of content like this on the internet, I miss those days.
Back in 2014, I stumbled on the original source code for the first version of Oregon Trail, which was written in a suspect of BASIC for a timeshare system used by the public schools in Minnesota (probably not the version you're thinking of https://en.wikipedia.org/wiki/The_Oregon_Trail_(1971_video_g...).
I was really into VR at the time and had been working on live-programmable VR environments, primarily through a text editor component that could render to a 3D object texture. As a demo of the component, I wrote a good-enough BASIC interpreter to ruin the Oregon Trail code.
Writing the interpreter was actually a lot of fun and not that hard, considering I already had a lot of code for processing code syntax for the syntax highlighting feature of the code editor.
Sadly, Web standards have changed a bit too much, I couldn't get traction on my project after Mozilla's AFrame released, so now it's some broken code sitting in a GitHub repo somewhere.
Ah the Aquarius :) My uncle got one as a donation to his private little "museum" and all I remember was how different it looked from the other machines of that era and a game that taught you spelling by shooting down letters Space Invaders style.
> a new BASIC interpreter for the 1983 Mattel ECS add-on for Intellivision
Fun fact: Hal Finney (yes, that Hal) wrote a BASIC interpreter for the Intellivision back in 1978 or so in a weekend. It was 2K of code. Mattel shipped it on a cartridge.
ROM space was so tight, the only error message it produced was:
Which Hal was very proud of. He showed it to me to make me laugh. At the time I was programming the Mattel Intellivision Roulette cartridge.
That's hilarious. I wonder how many corners he cut on that. Is there a disassembly floating around somewhere?
The Level I BASIC for the TRS-80 (which only shipped with 4 KiB of memory originally) had three error messages: WHAT? (syntax errors and the like); HOW? (illegal operations like divide by zero); and SORRY (out of memory).
BootOS, the 512-byte OS written by Oscar Toledo (author of this article), also has a single error message, "Oops".
Very impressive, as usual! I've never written a 100-page assembly program in my life, much less in one month. The string stack part reminded me of http://turboforth.net/downloads/docs/ANS_String_Lib.pdf, with the same motivation of handling string expressions in limited memory without needing a GC.
I wrote a BASIC interpreter that supported integers and strings circa 1979. Written in assembly, it used a simple precedence parser. I measured its CPU utilization under cpu-intensive loads: ~9.5% for lexical/token analysis, ~20% for the parser, and ~69.5% for semantic work.
It was a lot of fun. The assembler I used was really powerful; I used its macro facilities to create ‘rule’ macros that defined the BNF of the language.
Congrats on your own implementation!
This is a very impressive project a really informative post, thanks to the author! There used to be a lot of content like this on the internet, I miss those days.
Very interesting, this is kind of cool.
Back in 2014, I stumbled on the original source code for the first version of Oregon Trail, which was written in a suspect of BASIC for a timeshare system used by the public schools in Minnesota (probably not the version you're thinking of https://en.wikipedia.org/wiki/The_Oregon_Trail_(1971_video_g...).
I was really into VR at the time and had been working on live-programmable VR environments, primarily through a text editor component that could render to a 3D object texture. As a demo of the component, I wrote a good-enough BASIC interpreter to ruin the Oregon Trail code.
Writing the interpreter was actually a lot of fun and not that hard, considering I already had a lot of code for processing code syntax for the syntax highlighting feature of the code editor.
Sadly, Web standards have changed a bit too much, I couldn't get traction on my project after Mozilla's AFrame released, so now it's some broken code sitting in a GitHub repo somewhere.
> a suspect of BASIC
subset?
Dialect. Didn't notice the auto-incorrect.
Ah the Aquarius :) My uncle got one as a donation to his private little "museum" and all I remember was how different it looked from the other machines of that era and a game that taught you spelling by shooting down letters Space Invaders style.
> a game that taught you spelling by shooting down letters Space Invaders style.
Sure it wasn't meant to teach typing? (Maybe I'm thinking of a different game...)
Oh yes maybe typing, same thing to me ^^