Yes, I can understand why poking memory locations on different computers does not have the same effect, and I can understand why basic keywords that invoke a machines peculiar graphic modes could not be made to work on machines that don't have the same mode.
But why did computer makers, back in the day, make even the most vanilla parts of BASIC interpreters incompatible. So that even the tokens for the BASIC keywords were not the same.
And it was Microsoft that was writing most of the BASICs, so why wouldn't they have used the Altair BASIC as the standard, and rewritten it to interpret the same BASIC code on different machines.
Did the manufacturers of the machines demand incompatible BASICs?
Why were BASIC interpreters incompatible on old machines?
Moderator: Moderators
- Mike
- Herr VC
- Posts: 4834
- Joined: Wed Dec 01, 2004 1:57 pm
- Location: Munich, Germany
- Occupation: electrical engineer
They just didn't bother to make the BASIC compatible.
First of all, there had been no standard. Each manufactorer could try out in an experimenting mood his own idea of the 'optimal' BASIC implementation for the particular machine. For Commodore, and the VIC-20 and C64, that actually meant: fastest time to market with BASIC V2, without creating internal competition with the 'bigger' 80xx series by providing V4 for the low-end VIC-20 and C64.
Furthermore, the hardware of the systems on the market was different enough that there was no point in providing a unified BASIC language. Even if all BASICs had supplied graphics commands, for example, the different resolutions would have hindered 100% portability.
At last, there actually had been an attempt to promote a BASIC dialect across several manufactorers - MSX BASIC on the MSX machines. However, the hardware was also similar enough to exchange programs even on binary level, each manufactorer could only sell a fraction of what was the whole market for these machines, and so ultimately this attempt failed.
First of all, there had been no standard. Each manufactorer could try out in an experimenting mood his own idea of the 'optimal' BASIC implementation for the particular machine. For Commodore, and the VIC-20 and C64, that actually meant: fastest time to market with BASIC V2, without creating internal competition with the 'bigger' 80xx series by providing V4 for the low-end VIC-20 and C64.
Furthermore, the hardware of the systems on the market was different enough that there was no point in providing a unified BASIC language. Even if all BASICs had supplied graphics commands, for example, the different resolutions would have hindered 100% portability.
At last, there actually had been an attempt to promote a BASIC dialect across several manufactorers - MSX BASIC on the MSX machines. However, the hardware was also similar enough to exchange programs even on binary level, each manufactorer could only sell a fraction of what was the whole market for these machines, and so ultimately this attempt failed.
correct, and hence why today's PC's are just 'vanilla' boxesMike wrote:They just didn't bother to make the BASIC compatible.
First of all, there had been no standard. Each manufactorer could try out in an experimenting mood his own idea of the 'optimal' BASIC implementation for the particular machine. For Commodore, and the VIC-20 and C64, that actually meant: fastest time to market with BASIC V2, without creating internal competition with the 'bigger' 80xx series by providing V4 for the low-end VIC-20 and C64.
Furthermore, the hardware of the systems on the market was different enough that there was no point in providing a unified BASIC language. Even if all BASICs had supplied graphics commands, for example, the different resolutions would have hindered 100% portability.
At last, there actually had been an attempt to promote a BASIC dialect across several manufactorers - MSX BASIC on the MSX machines. However, the hardware was also similar enough to exchange programs even on binary level, each manufactorer could only sell a fraction of what was the whole market for these machines, and so ultimately this attempt failed.
Android Tablet running Frodo 64 emulator running VIC 20 emulator....
Yes, I can understand why things like system calls and memory pokes are not compatible, but when Microsoft was writing a tokenized abstract basic for just about every computer (Apple, Commodore, Tandy, MSX, IBM, even the friggin' Altair), why didn't they make the most generic parts of the BASIC language (write to the screen, read from the keyboard, add numbers, concatenate strings, etc.) compatible across different machines so that it would be possible for very simple BASIC programs to be shared?
I have also wondered this. Even back in the 80s I knew that Microsoft was responsible for creating BASIC on several different systems. In recent years I learned Microsoft created even more than I thought.RJBowman wrote:Yes, I can understand why things like system calls and memory pokes are not compatible, but when Microsoft was writing a tokenized abstract basic for just about every computer (Apple, Commodore, Tandy, MSX, IBM, even the friggin' Altair), why didn't they make the most generic parts of the BASIC language (write to the screen, read from the keyboard, add numbers, concatenate strings, etc.) compatible across different machines so that it would be possible for very simple BASIC programs to be shared?
It does seem a bit unlikely than Microsoft "accidentally" made almost every version of BASIC incompatible with one another, especially because it would have been easier and cheaper for the command syntax to be unchanged across platforms.
How nice would it have been to be able to enter a type-in from a magazine across multiple platforms... personally, I kept encountering Murphy's Law with type-ins. When I had access to Apple, the type-ins were TRS-80 specific. When I had access to TRS-80, they were Commodore. When I had Commodore, they were Apple. Regardless of what computer I sat down to, it was almost guaranteed the type-in had BASIC syntax that wasn't compatible
- Mike
- Herr VC
- Posts: 4834
- Joined: Wed Dec 01, 2004 1:57 pm
- Location: Munich, Germany
- Occupation: electrical engineer
Re:
You're talking bullshit here.RJBowman wrote:why didn't they make the most generic parts of the BASIC language (write to the screen, read from the keyboard, add numbers, concatenate strings, etc.) compatible across different machines
Of course these operations you cited worked source-code compatible across most platforms. PRINT, INPUT, LET <variable>=<expression> and use of '+' as string concatenation operator are present on nearly 100% of all BASICs.
Save quoting my entire post from Sep., 30th: it just didn't make any sense for the manufactorers to provide for more portability, when neither (minimal) amount of available memory, display hardware, sound hardware, storage media, keyboard, nor other I/O devices were standardized. So they pursued their own idea of a good BASIC for their hardware. Somehow 'harmonizing' the tokens for the common subset of the BASIC wouldn't have cut it, as any non-trivial program would have bombed out due to the hardware differences.
Re: Why were BASIC interpreters incompatible on old machines
imho another important aspect is that BASIC was mostly looked at as a "toy language". it was something beginners use to toy around with computer programming - no more no less. it was never ment as a platform for "serious" programs, where things like "portability" would matter.
I'm just a Software Guy who has no Idea how the Hardware works. Don't listen to me.
-
- Omega Star Commander
- Posts: 1371
- Joined: Thu Jan 31, 2008 2:12 pm
- Website: https://robert.hurst-ri.us
- Location: Providence, RI
- Occupation: Tech & Innovation
Re: Why were BASIC interpreters incompatible on old machines
To appreciate the answer to this silly question, you must be as old as the old machines. Thus, you have by now forgotten *why* things were they way they were. Fortunately for you, some of us still have (some) marbles left to attempt to supply an answer that will undoubtedly leave you more confused.
Yes, it was a beginner's language, duh.
Yes, BASIC was a big deal (not a toy) as a selling feature for home computing; OEMs at the time were competing in that commercial space, so no one was thinking of ANY language compatibility there, except the re-use of your home TV, audio cassettes, and the Atari joystick -- all were ample in supply and mostly cheap. Sell, sell, sell -- everyone NEEDS a home computer -- don't get left behind! OK, so what can I do with this newfangled thing when I got home? You programmed in friendly BASIC, which was far easier to learn than those "programmable" calculators of the time. And you can attach your Atari joystick (maybe) and play bigger and badder games! Thus, the "toy" stigma.
BASIC was taught at the college-level (not a toy), appealing to aspiring programmers; and it was used by programmers in many businesses (manufacturing, medical, and POS retail) at the time. Another reason to get it into the home computer, so by making it available on power up (ROM) was a desirable thing for the consumer: READY or OK was familiar and friendly.
Auto-booting into something else (GEOS, DOS, CP/M) was also a good thing. From there, those operating environments offered (gasp!) BASIC and other languages. There you could code in source format and compile. Just like on the mainframe at work or at college. Well, mostly, because DIGITAL BASIC Plus and BASIC Plus-2 for example were beasts to do record I/O, while Microsoft BASIC on Commodore and IBM leaned toward exploiting features of their "PC coolness" with GRAPHIC, COLOR, SOUND, PEEK, POKE, SYS which would never be found/used on big iron.
Hope this helps.
Yes, it was a beginner's language, duh.
Yes, BASIC was a big deal (not a toy) as a selling feature for home computing; OEMs at the time were competing in that commercial space, so no one was thinking of ANY language compatibility there, except the re-use of your home TV, audio cassettes, and the Atari joystick -- all were ample in supply and mostly cheap. Sell, sell, sell -- everyone NEEDS a home computer -- don't get left behind! OK, so what can I do with this newfangled thing when I got home? You programmed in friendly BASIC, which was far easier to learn than those "programmable" calculators of the time. And you can attach your Atari joystick (maybe) and play bigger and badder games! Thus, the "toy" stigma.
BASIC was taught at the college-level (not a toy), appealing to aspiring programmers; and it was used by programmers in many businesses (manufacturing, medical, and POS retail) at the time. Another reason to get it into the home computer, so by making it available on power up (ROM) was a desirable thing for the consumer: READY or OK was familiar and friendly.
Auto-booting into something else (GEOS, DOS, CP/M) was also a good thing. From there, those operating environments offered (gasp!) BASIC and other languages. There you could code in source format and compile. Just like on the mainframe at work or at college. Well, mostly, because DIGITAL BASIC Plus and BASIC Plus-2 for example were beasts to do record I/O, while Microsoft BASIC on Commodore and IBM leaned toward exploiting features of their "PC coolness" with GRAPHIC, COLOR, SOUND, PEEK, POKE, SYS which would never be found/used on big iron.
Hope this helps.
Any technology distinguishable from magic is insufficiently advanced.
https://robert.hurst-ri.us/rob/retrocomputing
https://robert.hurst-ri.us/rob/retrocomputing