Boriel BASIC(zxbasic.readthedocs.io) |
Boriel BASIC(zxbasic.readthedocs.io) |
Inline assembly, which also hadn't been invented yet other than by embedding raw opcodes in DATA statements, is absolutely required to get the performance required for gaming: I still cherish my HiSoft Devpac tape (officially purchased and shipped from the UK at great expense and requiring extensive negotiations with the local customs people, for whom this entire 'software' thing was a bit new...) and Z80 assembly reference (pirated from a library with the school photocopier). So, in one sense, the limited BASIC was a blessing: it required you to really get to know your machine, which is probably the first and last time in my life that happened: I've not considered the timing implications of the CRT and optimized my code around that for a long time.
Nice to see people are still enjoying a 44-year-old platform!
- IF THEN
- FOR
- GOSUB / RETURN
- DEFN
- GOTO
- READ / DATA
That was the same thing that any 8 bit BASIC of the era.
I have yet my books of learning BASIC (for kids), and there for ZX Spectrum, Commodore, Apple 2, etc... And only had that. The only thing that I remeber lacking compared againts other BASICs, was the ON GOTO, ON GOSUB and ELSE . On the control of flow in BASIC... That is all.
I will not see something more advanced (and without numbering the lines), like while and do loops, or select case, proper subrutines and functions, until I touch Turbo BASIC (and QBASIC)
This is not surprising because the Microsoft Basic was intended for computers with 8 inch floppy disks (the much larger predecessors of the 5 1/4 inch floppy disks familiar to IBM PC users), while ZX Basic had to run from a ROM with only cassette storage. Thus the former was expected to be used for bigger programs that could also process much more data.
The Microsoft Basic for CP/M was very similar to the later GW-BASIC for MS-DOS.
The advantages of Microsoft Basic that mattered for me at that time were less about any improved program control structures, but about more powerful data types, for instance double-precision 64-bit floating-point numbers.
However, I got a structured BASIC for the Speccy in a MicroHobby or Micromania magazine (cannot remember exactly), with screen editor, but naturally had the problem it would make the 48 KB memory size even smaller.
It would work better on the 128 KB models, but those lucky ones to own a 128 +3A could get hold of CP/M, with support for Mallard BASIC, CBASIC and BASCOM.
This is probably a too-wild idea, but what I personally would love to see would be to adopt the extensions of Dr Andy White's BetaBASIC.
I wrote most of the Wikipedia article about BetaBASIC:
https://en.wikipedia.org/wiki/Beta_BASIC
Even 40+ years later, it remains one of my favourite ever BASIC dialects. I did badly miss integer variables, but it was IMHO the most thoughtful and considered extension of Sinclair BASIC ever made.
I am a little sad that the SAM Coupé's BASIC, which Wright also wrote, has never had a FOSS clone.
It's that you could LIST. Then move cursor up and edit and press enter. (Not found in ZX, but still ok).
Next, you could list, and draw CIRCLE over the program listing. It was live, like smalltalk, but simpler.
Reproducing language variants without immersion described above is not full story.
For a # of years I used a setup with all my favourite tools running from a RAMdisk. That's on MSX2/2+. Edit/assemble/debug cycles in <1 minute if so desired. There was also KUN BASIC on that platform: a JIT compiler for (a subset of) MSX-BASIC. Speedups of ~10..20x or more for many programs or -sections with near-zero effort.
And of course, all this could be freely mixed. Short snippets of machine code for speed/'heavy lifting', BASIC to glue everything together & make quick edits.
Sadly this seems to be lost on modern platforms. Despite >10,000 faster cpu's, ungodly amounts of RAM, storage etc.
Also one feature that 8 bit BASIC lost in the process due to their hardware limitations, was that originally Dartmouth BASIC wasn't interpreted, rather compiled into machine code before execution, a kind of primitive JIT.
Only 8 bit computers able to run CP/M got similar kinds of BASIC experience, like the original one.
https://github.com/skx/gobasic
And later still I wrote an adventure game in Z80:
https://github.com/skx/lighthouse-of-doom
The Spectrum was how I got into programming, and despite the limitations I have fond memories.
Also to note, the original Darthmond BASIC was much more powerful than the ones on 8 bit micros due to hardware restrictions, exception to those that were good enough to run CP/M.
I used to do window shopping at computer store that had them in display, but they weren't worth the investment, most of my friends were slowly moving into the Amiga already, and I eventually got a PC.
I would say a bit of its ideas lives on Spectrum Next.
You're right. I feel it should have had a much faster Z80 as stock, but it was probably too expensive at the time.
The very next year, the MSX Turbo R machines shipped with an R800 CPU that was twice the speed and could run 16-bit code:
https://www.msx.org/wiki/ASCII_R800
This is more or less a Z280:
https://en.wikipedia.org/wiki/Zilog_Z280
> I used to do window shopping at computer store that had them in display, but they weren't worth the investment
I had one. I sold it to a friend about 20Y ago for £30. I bitterly regret that; a decade later it was worth 10x that, and now, I could get £1000 easily. I had some addons and extras.
> I would say a bit of its ideas lives on Spectrum Next.
I have one of those too. :-)
In some ways more ambitious, in some ways less, but the SAM had a better BASIC and a better DOS, and felt more like a thoughtful considered extension, while the Next feels like a clone Spectrum with a fibreglass body kit stuck on with spoiler and airdam, turbocharger, nitrous oxide injection, and pulsing coloured lights underneath. ;-)
I wasn't aware of those systems.
If you still want to work on it, add sample code. I think that’s a must for a programming language page.
I see https://en.wikipedia.org/wiki/Sinclair_BASIC doesn’t, either but at least it has a list of commands. I still prefer sample code, though. It is the better way to present things, even though it will give an incomplete overview of capabilities.
Oh my word. I haven't played with it in some years. That doesn't make it impossible, just harder... And ideally, non-trivial examples...