I must admit. I'm a bit confused about DBASIC. I downloaded the zip file that contains DBASIC, hoping to find the source code. I read dbasic.hex which does say that DBASIC source code starts from Sector 9 but I couldn't find the related assembly code (or probably, not skilled enough) in p1flst.txt.
But reading through the README.TXT, which actually is a DBASIC program, gave me some laughs. Here is one:
4480 DATA " THIS BRINGS US TO A MAJOR CONTROVERSY: AMIGA FOLK INSIST THAT THE ORIGINAL"
4490 DATA " AMIGA BASIC HAS TO BE THE WORLD'S WORST BASIC EVER, WHILE ST AFICIANDOS INSIST"
4500 DATA " THAT ST BASIC HOLDS PRIDE OF PLACE..."," "
Indeed, the author choice of language was often funny. It's just too bad the whole lot goes a long way towards being confusing.
It was actually the publisher business model: the software was freeware, and actually came with its self-replication tool, which was welcome due to the unusual format of the disk (usual Atari/MS-DOS 3.5" disks would have nine 512 bytes sectors per track, whereas "DTACK Grounded DOS" disk format entailed having five 1024 bytes sectors per track).
The money was supposed to come from the user manual. For some reason, it is also the main missing bit from the Dtack Grounded archive. A physical one was for sale on eBay some months ago (https://www.ebay.com/itm/335457799879 )... but with some regrets I passed one it.
I spent some time last year trying to make sense out of what appears to be the main legacy of Hal Hardenberg. I was really after what can be described as one of the early JIT-based interpreters, and an incremental one at that!
The short of this is I haven't yet found how to bootstrap a working DBasic disk from the zip file you refer to, but there's a working disk image available somewhere semi-publicly in Atari circles.
If you're curious about the disk image, here's an ephemeral link to it: https://file.io/LRmFUj6jqyS0
You should be able to run it in hatari version >= 2.4.1, provided you run it as an ST (and not as an STE).
Thanks. What really confused me was that I thought I would find structures such as a jump table for different keywords in BASIC, but instead I found a jump table for opcodes, starting from 0202A0: 000211B4.
You mentioned this is actually a JIT-based interpreter, so I figured this is actually a VM with an IR, which uses this jump table. Still, I'm wondering where is the code for the frontend? I have written a couple of simple dispatch interpreter myself so would love to see the asm code for the frontend (not that the backend is not interesting, but simply because I have never written one in C so do not have the skill to recognize the asm code).
But anyway, thanks for the link. I never used an ST before but will try it out. It is a bit sad that he never got enough $$ from this product and he said in a newsletter that "I don't have a business license or manuals -- most of them are in Santa Fe's municipal land fill".
Regarding the manual I also tried to search on z-lib and libgen but sadly did not find any. But I did find some posts on certain ST forums so I'm sure it is not as rare as I think -- and the manual is most likely just for DBASIC programming, not explaining the implementation of DBASIC, so I can just use the example programs as references.