On Fri, May 22, 2020 at 1:56 PM Fred Cisin via cctalk <cctalk at classiccmp.org>
wrote:
On Fri, 22 May 2020, Boris Gimbarzevsky wrote:
Thanks for posting the timeline of various Basic
interpreters. I wasn't
aware that Gates/Allen also wrote Basic for C64.
Microsoft did a BASIC for the Commodore PET. I wasn't aware that they did
the C64.
Microsoft wrote a 6502 BASIC that was used on many vendor's machines,
including Commodore, Ohio Scientific, and Apple, but I'm not sure whether
Microsoft did the work that was needed to adapt it to the PET; that could
have been done by either Microsoft or Commodore.
AFAICT, all later Commodore 6502 (etc.) based machines, including the
Commodore 64, reused the BASIC from the PET with additional hacks by
Commodore as needed to adapt to hardware changes, and I don't think
Microsoft was involved in any of that. In 1983 I studied a disassembly of
C64 BASIC, which was pretty much identical to VIC20 BASIC, and not much
different than later versions of PET BASIC. I compared it to an actual
listing of the early Microsoft 6502 BASIC source code, which can today be
readily found on the internet, but in 1983 was quite difficult to come by,
and at the time I couldn't publicly admit to having such a thing, and I
still won't publicly describe how I obtained it.
The changes that were added to C64 BASIC as compared to "standard' MS 6502
BASIC, e.g. having some routines vector through RAM, were clearly done by
someone who didn't have a good grasp of how Microsoft BASIC worked. For
example, some of those vectors were intended to allow adding statements and
functions, and they could in fact be used for that, but they didn't vector
the _optimal_ subroutines for that.