Microsoft open sources GWBASIC
brain at jbrain.com
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 classiccmp.org> 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
>> 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
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!)
brain at jbrain.com
More information about the cctech