WalterBright 8 hours ago

> 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.
  • jacquesm 6 hours ago

    That's hilarious. I wonder how many corners he cut on that. Is there a disassembly floating around somewhere?

  • bitwize 6 hours ago

    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".

kragen 10 hours ago

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.

nobody_special 5 hours ago

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!

le-mark 14 hours ago

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.

pjmlp 8 hours ago

Very interesting, this is kind of cool.

moron4hire 14 hours ago

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.

  • zahlman 10 hours ago

    > a suspect of BASIC

    subset?

    • moron4hire 9 hours ago

      Dialect. Didn't notice the auto-incorrect.

Razengan 19 hours ago

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.

  • zahlman 10 hours ago

    > 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...)

    • Razengan 6 hours ago

      Oh yes maybe typing, same thing to me ^^