On Fri, May 22, 2020 at 1:56 PM Fred Cisin via cctalk <cctalk@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.