Why were BASIC interpreters incompatible on old machines?

Other Computers and Game Systems

Moderator: Moderators

Post Reply
RJBowman
Vic 20 Enthusiast
Posts: 198
Joined: Tue Oct 25, 2011 7:50 pm

Why were BASIC interpreters incompatible on old machines?

Post by RJBowman »

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?
User avatar
Mike
Herr VC
Posts: 4834
Joined: Wed Dec 01, 2004 1:57 pm
Location: Munich, Germany
Occupation: electrical engineer

Post by Mike »

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.
ravenxau
Vic 20 Devotee
Posts: 296
Joined: Fri May 28, 2004 10:03 pm

Post by ravenxau »

Mike 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.
correct, and hence why today's PC's are just 'vanilla' boxes
Android Tablet running Frodo 64 emulator running VIC 20 emulator....
RJBowman
Vic 20 Enthusiast
Posts: 198
Joined: Tue Oct 25, 2011 7:50 pm

Post by RJBowman »

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?
User avatar
akator
Vic 20 Afficionado
Posts: 328
Joined: Wed Apr 14, 2010 6:01 pm

Post by akator »

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?
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.

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 :D
User avatar
Mike
Herr VC
Posts: 4834
Joined: Wed Dec 01, 2004 1:57 pm
Location: Munich, Germany
Occupation: electrical engineer

Re:

Post by Mike »

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
You're talking bullshit here.

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.
groepaz
Vic 20 Scientist
Posts: 1185
Joined: Wed Aug 25, 2010 5:30 pm

Re: Why were BASIC interpreters incompatible on old machines

Post by groepaz »

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.
rhurst
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

Post by rhurst »

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. :P

Yes, it was a beginner's language, duh. :lol:

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. :roll: And you can attach your Atari joystick (maybe) and play bigger and badder games! :D Thus, the "toy" stigma. :idea:

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
Post Reply