Microsoft open sources GWBASIC

Jim Brain brain at
Mon May 25 13:53:22 CDT 2020

On 5/25/2020 11:44 AM, Liam Proven via cctalk wrote:
> On Sun, 24 May 2020 at 05:14, Jim Brain via cctalk
> <cctalk at> wrote:
>> The serial interface would have been fast enough, if the MOS folks had
>> talked to the design team about the bug and squashed it early. But, they
>> did not, and on the VIC-20, which did not expect to move many drives, no
>> one cared.  When the VIC-40 (c64) came out, by then the drive was more
>> important, but no one was going to redo the drive again (they tried to
>> put a new trace on the IEC bus to enable fast mode later, but it got
>> optimized out in final layout in Japan).
> I defer. I never owned one. I had a ZX Spectrum and longed for a BBC Micro.
Though Jim Butterfield got a few of the details wrong (as we've noticed 
from other parts of this thread, sometimes history gets modified a bit), 
the main portion is true.  PET had nice fast 8 bit IEEE-488 drives.  
Special cables, expensive, Jack not happy, really not happy when cables 
got in short supply and cost went up.  Edict: get off that IEEE bus.  
designers noted they they could use 6522 serial shift register to pump 
data at CLK/4, or byte/32 cycles = ~31K/sec.  After the ColorPET 
decision had been made (Jack: Hey, use those crappy 22 column game video 
ICs we designed that no one every bought in a color computer for the 
masses! Use that surplus of 1kB SRAM as well!), the bus went into the 
design.  Too late to fix silicon, the 6522 issue surfaced. Routines were 
rewritten to bit bang, going from 1bit/4us to ~1bit/40uS.  3125bytes/s.  
Oh well, only 5kB, few will buy a drive for the VIC anyway, done.  VIC 
has some success, need a 40 column version, enter 64.  The competition 
is touting 48kB and such, what can we do? "Well, DRAM comes in 16kB 
options (not enough to make a talking point) or 64kB (yep, do that!).  
Oh, and re-use all the VIC peripherals to save NRE costs! Hmmm, 40 
columns is too much data on screen to share the bus with the CPU.  Need 
to steal cycles from CPU. IEC bus cycle is too short (20uS) and we stall 
the CPU longer (50uS).  Hmmm, make the bit bang cycle even slower 
(120uS/bit), or 3 times slower (1000bytes/sec), on a 64kB machine.  
Ouch.  Put in a trace for the shift register on the new 6526 which fixed 
the bug and we'll ship an upgraded KERNAL later.  Done, except Japan 
didn't see any need for it, so they deleted it.  Argh!
> I personally never saw the appeal in the VIC-20: it was quite
> expensive, and 22 columns of text? Come on, you're making fun of me.
> What use is that?
As noted above, there was a famous meeting (at least for Commodore), 
where Peddle and others were talking about a color version of the PET.   
Remember, Jack did calculators and typewriters, Peddle had done a lot of 
the evangelizing for a computer.  But, Peddle was an engineer, and his 
machines we heavy, expensive, and complicated (dual CPUs in the drive, 
anyone!).  Others advocated for a cheaper option, somethin in plastic to 
compete with living room space.  A few folks hacked up a color PET 
proto, using a video IC that had been designed for game consoles but no 
one bought it, and pitched that it would work on a TV, was MOS IP, etc. 
Those folks won. Michael Tomczak(sp?) advocated for the better KB, 
seeing the ZX81 one and others of the time (the PET chicklet KB as 
well).  I think they were already thinking of a 40 col machine at that 
moment, but needed an entry point.  The VIC was it.
> Whereas the C64... well, I will quote you out of sequence:
>> I think you just don't agree with what they were doing.  Jack was
>> selling game machines that had enough computing power to satisfy Mom and
>> Dad's edict that the kids not just have a game console.  If you wanted
>> good use of video or audio, you bought from CBM or the third party.
>> BASIC was minimal, because you had to have something to load the game :-)
> That is my _point_ here.
> Good graphics, for 1982. Great sound, for the early '80s at all.
> Decent keyboard. Some expansion potential.
> But not balanced, because of a deeply crappy BASIC.
I guess your point is that you don't agree with Jack's priorities. The 
VIC was a rush job, costs had to be low.  BASIC v2 just fit in an 8kB 
ROM, and KERNAL fit in another 8kB.  8kB ROM was easy to make in house.  
Notice they used 2 ROMs instead of 1 16kB one.  It was all about low NRE 
costs, using stuff off the shelf.  Putting a third 8kB ROM in there for 
better BASIC was just an unneeded IC, plus someone would need to write 
the A/V code (CBM did not have a A/V capable BASIC at that time).  No 
time.  Need to hit CES and ship. Put it on a cart and sell it after the 
fact.  OK.  Plus putting a third ROM in there would have meant more glue 
logic to keep the VIC address range out of the way of ROM access 
(complicated, I'll share later if anyone cares).  THat means more 
chips.  NO!  :-)
> I do not expect a shitty half-assed effort at a BASIC for one and a
> half thousand bucks!
You and I had different youths.  I paid $332USD for one in 1982 or 
something, and BASIC was the last thing on my mind.
>> Oh, I think that's a stretch.  Because of the system's ubiquity, there
>> are plenty of BASIC upgrades available to add the requisite audio and
>> video options.  BASIC had other issues, Commodore can't take credit for
>> giving it a bad name.
> [...]
>> As a home user of the machine back int he day, I highly disagree. We all
>> had fixed the BAD BASIC and slow drive issues a few years after intro.
>> By 1984, everyone had fastload or JiffyDOS or SpeeDOS or similar, and
>> BASIC 4.0 or even better BASICs were always available.  It was a games
>> machine, with a rightly limited BASIC (you want more feature, buy the
>> add-in.  It was like the in app purchases of today's games)
> I really don't think that counts.
> 3rd party upgrades or replacements don't signify, because they just
> lead to market fragmentation. Book publishers wouldn't do books of
> programming tips for some niche BASIC extension that only 1% of the
> market has. Magazines wouldn't print tutorials and listings for it.
We know that now, but at the time, I don't think that was known. 
Regardless, you assume most early teens cared about the BASIC maturity, 
and I posit they did not.  C64 buyers bought for the games, and folks 
quickly moved to ML if they wanted A/V.  Maybe in your neck of the 
woods, things were different, but US buyers bought it to play.
> No. It's what's in the box that counts.
> It was a massive, egregious, outstanding corner that was cut on a
> fifteen hundred dollar machine, not just a detail to be swept under
> the rug.
> And yes, I think it really _did_ set the expectations of millions as
> to what BASIC was.
> Certainly when I was a spotty 13YO schoolboy, with friends learning
> programming, and the Commodore owners were surprised to learn that
> those of us with Sinclair or Oric machines, or a bit later Amstrads --
> you may well have never  seen or heard of any of those; look 'em up,
> they're interesting -- could do stuff like draw shapes and play tunes
> right in BASIC.
I remember it differently.  We oohed for a few minutes at the BASIC 
command, then we just copied an ML routine from COMPUTE's! Gazette into 
our app to get even fast circles and squares, and moved on. BASIC (and 
ML) was a means to an end.  We wanted our masterpiece to emerge, and we 
really didn't care how it materialized.  We even looked at the more 
complete BASICs as a crutch (which I actually think they were/are), 
since those programmers never dipped into ML to get the real speed! 
(Yeah, I know we vehemently will disagree on that point, but we all have 
our opinions)
>> Oh come on.  The Osborne had the same size screen and sold well. Dipping
>> their toe in that market to sell hardware doesn't seem such a stretch to me.
> It was, as you yourself say, a relatively cheap home/games computer,
> not a business one.
At the time, there was no distinction.  There were personal computers, 
and some people were using them for business.  Apple IIs were finding 
work, why not the Commodore?
> I got that.
> What I was trying to convey was that, ISTM, it's evidence that
> Commodore didn't really know to whom it was selling, what those
> customers wanted, or how to exploit its massive market share.
I'll partially concede, at least after Jack left.  I think Jack knew 
what people wanted.  He made, after all, one of the highest selling home 
computers of the day, if not for all time.  He wanted the own the rest 
of the market, which the 116 would do by kicking the remaining low cost 
entries to the curb.  BUt, once he started phoning it in, while secretly 
planning his departure, he did not have a protege to take the reins.
> But so few of them put the effort into a decent programming language.
> Not "let us help educate the children because they are our future".
> No, instead, "screw 'em, they're kids, we just have to bullshit their
> parents."
I don't think things were that malicious.  I see it more as "Hey! Market 
opportunity.  How fast can we enter this space?". And we, hungry teens 
with persuasion skills and our parent's concern that if their child 
didn't learn this emerging computer thing they'd be destined for poverty 
for all time made sales fly!
> The long-term result was tarnishing the name of one of the greatest
> educational languages ever written, and certainly by far the  most
> successful compared to Logo or Smalltalk or anything else.
I can appreciate your advocacy of BASIC.  I cannot agree with it, and I 
liked BASIC (on many machines) growing up.  Once I entered software 
development as a vocation, I found BASIC had set up bad habits that it 
took years to unwind.  I still have a fondness for the language, but I 
don't think it was all that educational.  It was brute force, overly 
verbose at times, hard to follow in programs of anything above trivial 
sizes, etc.  But, it must have it's sheering section, and so I defer to you.
> I am not so sure. I don't think a 64KB micro in 1982 was "bare
> minumum" of anything, TBH. It was a relatively high-end machine for
> its time.
As noted above, by the time the 64 came out, 16kB was somewhat the low 
end of memory (CoCo I think was 32kB, Apple II had 48kB, I think the 
Ataris were getting there, TI had 16kB (barely, but I digress), etc.  
So, 16kB (8 16kbx1 DRAMs) was not going to be a selling point.  64kb 
DRAMs were the next thing up, so it was the next hurdle to clear.  32kB 
would have been twice the ICs, hard to fit in the NRE-reused VIC-20 
case, and Jack was good at negotiating for volume.  Next.
> The Sinclairs were bare-minimum low-cost kit. Not Commodore.
Yes, I'll agree when I think of bare-minimum, my first thought is the 
Sinclair.  Maybe I should rephrase to be "the minimum to put in the 
machine that will offer selling points over competitors".  At the time, 
few really talked about CPU speed, and the whole 4MHz Z80/8080 versus 
1MHz 6502 argument had everyone confused, so memory size was the big 
advertisement draw.  40 columns was still respectable on a computer 
then, and not needing a special monitor was a big bonus.  I think people 
implicitly understood that 80 columns would not work on a TV, but not 
super sure.  Graphics and Sound were big selling points as well, but the 
marketing copy only had to note they existed, not that they were trivial 
to use on first boot :-)  So, Jack added what the competitors were 
> I still think it was a bad idea, TBH.

If you mean putting the Z80 in there? Bil agrees with you.  He hated the 
entire idea, and the engineering effort he expended to do it.  But, when 
Marketing has promised it, evidently at Commodore, you made it happen.  
Hats off the engineers at CSG/MOS/CBM.

Since I've sometimes had to do the bidding of the pointy haired boss, I 
admire the technical aspects of the decision.  But, I agree with you it 
was a bad idea, if only because Commodore didn't vertically integrate 
the Z80, so it had to be sourced from Zilog, and it was lots more 
expensive that the 6502.  So, instead of hanging this cart off the back 
for the few dozen folks who actually cared to do CP/M on the 128, and 
paid for the privilege of the Z80, CBM had to source one for each 128 
and keep the overall costs down in spite of it. Legend goes that CBM 
Europe threatened to rip the z80 out of every C128 they sold in Europe, 
I think because they had dissed it in competitor systems like the 
Sinclair, etc. (You can't actually do so, as the Z80 actually runs first 
in the C128, to work around an issue with another almost never used 
Commodore cartridge that had to work on Day 1: it's either Magic Voice 
or Super Expander, I forget which. Again, Commodore promised *ALL* 
Commodore released carts would be compatible [ except the CP/M cart, 
which they could ignore, on a technicality], and Bil had to use the Z80 
to boot the machine to accommodate that one cart!)

Jim Brain
brain at

More information about the cctech mailing list