New post on the motivation behind my vale8x64 project, and an overview of its technical details:

@daremo That's a very neat project. Have you considered writing or porting a Forth implementation instead of a hosted assembler? Forths usually include an assembler as well, but the assembler can be implemented in Forth. I guess you could also do the same thing with a BASIC, though I don't think I've ever seen an interpreted BASIC with the ability to do inline assembly.

@freakazoid I only really know Forth by name, although I started looking into it a bit recently.

I like the organization around the stack and postfix notation; I currently conceptualize forth as the smallest step higher than assembly.

Is it correct that implementing Forth should be a simple job relative to most other high-level languages?

@daremo Probably about on par with a BASIC, and there are some pretty good small and well-commented implementations to base one on. The hardest part is probably wrapping your brain around the language, since it has its own vocabulary for things that differs from most other programming languages.

One nice thing about a Forth is that you can completely punt on any kind of memory management if you use its block paradigm.

@daremo @freakazoid I would say that it's a relatively simple job if you don't care about complying with any kind of standards. My DX-Forth (for my Kestrel-2DX and eventually Kestrel-3) does not conform to any established standards, for example.

However, if you want to comply with any kind of standard, difficulty shoots up rapidly, in my experience. Remember that most of Forth involves learning its vocabulary, which is essentially no different from a standard library. :)

@freakazoid @daremo Acorn BBC BASIC. :) Never used it, but saw program listings.

@vertigo @daremo Wow! I had no idda. "The assembler was fully integrated into the BASIC interpreter and shared variables with it, which could be included between the [ and ] characters, saved via *SAVE and *LOAD, and called via the CALL or USR commands. This allowed developers to write not just assembly language code, but also BASIC code to emit assembly language, making it possible to use code-generation techniques and even write simple compilers in BASIC.'

@freakazoid @daremo I know, it is *amazing*. I wish I'd used a BBC now growing up. I'd've had so much more fun with it than I did with a Commodore 64, for no other reason than having a full-featured assembler embedded right into BASIC.

@vertigo @daremo Even the BASIC itself looks better. It has named procedures, for example. Far more powerful. I certainly would have done way more than I did if I had access to a real assembler and didn't have to hand-assemble everything.

@freakazoid @vertigo OK, I'm intrigued. I hadn't even heard of the BBC before last year, but I've seen it come up a few times.

How's the current scene around it? I found an emulator, but doesn't look like it's currently maintained for GNU/Linux

@freakazoid @vertigo I also found this BBC Micro emulator in the AUR:

While it unfortunately seems to be abandoned, it did build and run and I was able to find the double quote key.

@daremo @vertigo Abandoned? Or finished? ;-)

Procmail is abandoned, not finished as many people believe, because it has some unpatched critical vulnerabilities. So "finished" would mean no major known bugs or missing functionality but also not under active development.

@freakazoid @vertigo Abandoned, I presume, since the maintainer never followed up the plans to remove the "0.0.x" scheme when it was considered production ready.

Of course, it could just be the maintainer called it complete, changed those plans, and never updated the site. 🤷‍♂️

@daremo @vertigo I have a program that works perfectly well and has no known bugs, but I haven't yet bothered to move the most complete version out of the feature branch I developed it on.

I should probably do that. Maybe even make a tag and stick it in PyPI.

Didn't Emacs eventually drop the leading 0. from their version because nobody bothered to bump it?

@vertigo @freakazoid Don't know, but I'm sure it happens all the time. I think the major.minor.patch business makes sense for libraries and APIs, but not always for applications.

For applications, I like the year.whatever convention Jetbrains uses, and I've started experimenting with that. 2019.minor.patch, where the year is bumped for the first release of the year, minor is bumped and patch is reset for every release with a new feature, and minor is held while patch is bumped for bug fix.

@daremo @freakazoid Depends; applications can have breaking changes too, like file format changes, or different scripting language libraries, etc.

Relevant to this particular topic: versus

My homebrew #Kestrel3 processor has a CSR register called MIMPID, and it's formatted to hold YYYYMMDDPP in the upper-most bits (the lower 24 bits are 0). YYYYMMDD is the year/month/date that I started work on the new design. PP is the bug-fix patch number.

@daremo @freakazoid What's funny is that I remember my old Commodore 64 programs almost always using calendar versioning in some capacity. Most programs I used happened to be version "83", because they happened to be released in 1983, for example. :)

@freakazoid @vertigo The line where my masochism ends is right before hand-assembly.😅

@daremo @vertigo Well this is why I only ever assembled extremely short programs.

@daremo @freakazoid You could always do what Acorn did, and write an assembler, emulator, and eventually, circuit simulator in BASIC. (It's what they used to eventually develop the ARM-1 processor.)

@daremo I missed the whole conversation here, but I just wanted to stop by and say your progress is impressive. Also, I didn't know that GW-Basic was referred to as GeeWhiz Basic. I only used it a little bit. I mostly jumped to using Power C once I moved from my C64 to a PC.

@cstanhope I appreciate it. I'm actually trying to slow it down just a bit, to find that pace that's long-term sustainable. It's a great project.

Sign in to participate in the conversation

Fosstodon is an English speaking Mastodon instance that is open to anyone who is interested in technology; particularly free & open source software.