drogon wrote:
So I really think that differentiating between BASICs is essential here.
Not really, no. Through the mid 1980s, when ROM BASIC finally started going away, the vast majority of the installed base had a BASIC that did not have local variables or much else in the realm of structured programming features. You can point out the exceptions all you like, but they amount to almost nothing compared to the number of C64s, Spectrums, TRS-80s, Apple IIs, MSXs, PC-6/8/9001s, FM-7s, and on and on.
Quote:
...early 8-bit MS Basics don't have locals, but BBC Basic (c1981) does have locals...
And here we see that "early" versus "late" seems to make no difference as far as ROM BASICs are concerned. The new MSX2 machines coming out in 1985 had no locals, still had 2-character variable names, and so on.
Quote:
But if you do want to PUSH/POP variables - it's not hard in these old BASICs to do in a subroutine - just keep an array and a pointer....
Sure. And do you see how it suffers from the exact same problem that made me want some sort of local storage in the first place? (Answer: it still uses global variables and still goes terribly wrong if you ever accidentally combine it in the same program with a different subroutine that uses `SP` or whatever you chose for a different purpose.)
Quote:
Personally I think it's a shame that MS BASIC seems to be some sort of de-facto standard for BASICs, especially when we talk about the 8-bitter era microcomputers.
Ok, this next bit, though factually correct, tends to be taken as a massive personal insult by some people, so if you're going to reply to it I suggest you start a new thread. This is not an issue with MS BASIC. It's an issue with BASIC itself: it started out as a stripped-down FORTRAN for interactive use and, while the Dartmouth folks did something very good when they took the ideas of interactive use and automatic memory managemet from the LISP folks¹ they did something very crippling to programmers when they didn't also take the ideas of functions and local parameters. (I think that these, along with not needing line numbers, were both ideas that were in FORTRAN by that point, too, or at least arriving soon.) You can complain all you want that BASIC should be structured, but that's not what the people who wrote BASIC wanted nor was it what the people who chose BASIC in the 60s and early 70s were looking for; they had other interactive options with these features and went for BASIC instead. BASIC for most of its actively used life was exactly what it was designed to be: an unstructured language.
___________________
¹ Yes, Kurtz and Kemeny visited MIT in 1961, saw LISP and even talked to McCarthy, who was the one who gave them the sugestion that they use timesharing for their efforts to bring computing to the masses.