When the Apple II was first introduced in April 1977, it couldn't do very much because there were few applications written for it. It was important to include some kind of programming language, so users, who were mostly hobbyists, could write their own programs. "Basic", which was designed for teaching introductory programming by two Dartmouth professors in the 1960s, became the language of choice for early microcomputers because it was interactive, simple and easy to use. The Apple II included a Basic interpreter known as "Integer Basic", written from scratch by Steve Wozniak, which was almost as idiosyncratically brilliant as his hardware design, stored in 5K bytes of ROM on the motherboard. It also came with Microsoft's Basic interpreter, dubbed "Applesoft Basic", on cassette tape. Sadly, Applesoft eventually displaced Integer Basic in ROM in the Apple II Plus because it had the floating point math routines that Woz never got around to finishing.

Donn Denman started working at Apple around the same time that I did, in the summer of 1979. His job was to work with Randy Wiggington on porting Applesoft Basic to the Apple III. They needed to rewrite parts of it to deal with the Apple III's tricky segmented memory addressing, as well as porting it to SOS, the new operating system designed for the Apple III. It was easy for me to track Donn's steady progress because he sat in the cubicle across from mine when we moved into Bandley III in the spring of 1980.

By the summer of 1981, the Macintosh project was beginning to hit its stride, and we started thinking about the applications that we wanted to have at launch to show off the unique character of the Macintosh. Besides a word processor and a drawing program, we thought that a Basic interpreter would be important, to allow users to write their own programs. We decided we should write it ourselves, instead of relying on a third party, because it was important for the Basic programs to be able to take advantage of the Macintosh UI, and we didn't trust a third party to "get it" enough to do it right.

I still had lunch with some of my friends in the Apple II group a couple of times a week, and I started trying to convince Donn to join the Mac team to implement our Basic. He was reluctant at first, since the Mac project was still small and risky, but he was pretty much finished with Apple III Basic and was full of ideas about how to do it better. He eventually couldn't resist and joined the Mac team in September 1981.

A Basic interpreter consists of a text editor for inputing your program, a parser to translate it into a series of byte codes, and an interpreter to execute the byte-coded instructions. Donn wrote the interpreter first, and then hand-coded some byte codes to test it. He implemented some graphics primitives early on, since they were nice to demo. In a few months, he had a pretty impressive demonstration program going that drew elaborate graphical trees recursively, in multiple windows simultaneously, showing off the interpreter's threading capabilities.

By the spring of 1982, it was apparent that Donn needed some help if we wanted Basic ready for the introduction, which at the time was supposed to be in January 1983. We decided to hire Bryan Stearns to help him, who Donn knew from the Apple II team. Bryan was only 18 years old, but he was excited about the project and Donn thought they worked well together, so we gave him a chance.

But Basic still had a hard time getting traction, especially since the system was evolving rapidly beneath it. After six months or so, I was surprised to hear that Bryan was quitting the project to work at a tiny start-up founded by Chuck Mauro, who I had helped with his 80 column card for the Apple II. I tried to talk him out of it but he left anyway. By the spring of 1983, it was so obvious that Basic wouldn't be ready for the introduction that the software manager, Jerome Coonen, pulled Donn off of it to work on other parts of the ROM and the system. Donn worked on desk accessories and wrote the alarm clock and notepad, as well as the math guts of the calculator (see Desk Ornaments).

After the Mac shipped in January 1984, Donn went back to work on Basic with renewed vigor, determined to get it finished. Apple brought in some free-lance writers to write books about it (including Scot Kamins, who was a co-founder of the first Apple users group in the Bay Area). But Microsoft surprised us, and released a Basic for the Macintosh that they didn't tell us they were developing. It was everything that we expected and feared, since it was essentially console-based - it didn't really use the Mac user interface. Donn was making good progress and looked to be on track to ship in early 1985; we were excited to show the world what Basic should really look like on the Macintosh.

Unfortunately, there was another problem on the horizon. Apple's original deal with Microsoft for licensing Applesoft Basic had a term of eight years, and it was due to expire in September 1985. Apple still depended on the Apple II for the lion's share of its revenues, and it would be difficult to replace Microsoft Basic without fragmenting the software base. Bill Gates had Apple in a tight squeeze, and, in an early display of his ruthless business acumen, he exploited it to the hilt. He knew that Donn's Basic was way ahead of Microsoft's, so, as a condition for agreeing to renew Applesoft, he demanded that Apple abandon MacBasic, buying it from Apple for the price of $1, and then burying it. He also used the renewal of Applesoft, which would be obsolete in just a year or two as the Mac displaced the Apple II, to get a perpetual license to the Macintosh user interface, in what probably was the single worst deal in Apple's history, executed by John Sculley in November 1985.

When Donn found out that MacBasic had been cancelled, he was heart-broken. His manager told him "it's been put on hold indefinitely" and instructed him to destroy the source code and all copies, but refused to answer Donn's questions about what was going on. Later that day Donn went for a wild ride on his motor cycle and crashed it, returning home scraped up but with no real damage, except to his already battered ego.

Bill Atkinson was outraged that Apple could treat Donn and his users so callously, and let John Sculley know how he felt, but the deal was done and couldn't be reversed.

Donn quickly filed for a leave of absence, but eventually returned to Apple to work on various projects, including AppleScript.

The Beta version of MacBASIC had been released to interested parties, including Dartmouth University which used it in an introductory programming class. Apple tried to get back all the copies, but the Beta version was widely pirated, and two books on MacBASIC were published, and sold quite well for several years.

Andy, a few comments about this story:
1) Randy wasn't really part of Basic for the Apple ///, I think he might have still been working on BASIC 3 for the Apple II with Dick Huston. But I don't mind you leaving it the way you have it.
2) I heard it was Steve and Sculley that cut the deal together.
3) There's no mention of Brian's eventual replacement Marianne Hsiung.

from stevewoz on February 10, 2004 05:41:21

I had never programmed in BASIC but I sensed that due to books of games in BASIC, this was the right language to go with. I had never written a language, not even for a class. In fact, I'd never taken a class on interpreter or compiler writing. But back in early college days Allen Baum did send me some xeroxed notes from texts on such subjects and I bought books on it anyway in the colleges I'd attended. At one point I sat day after day in math classes trying to figure out how to write a FORTRAN compiler for a Data General Nova computer in assembly language.
The 6502 was the 'latest' microprocessor at this point in time (late 1975). I had a hunch that nobody had written a BASIC for it and I had a chance to be the first. I started by learning BASIC a little - studying HP BASIC from a manual in our [calculator division] lab. I decided to put a syntax chart right into memory and use it to scan input by the user.
I started generating my syntax diagrams with full floating point capabilities. But I had such a strong desire to be the first with a 6502 BASIC that I deleted the floating point parts to save maybe a month.
I was stong on integer operation for accuracy and speed. Even our HP scientific calculators did the calculations with integer algorithms, even for transcendental functions. An integer language would lead to fast games and would let me run logic simulations at work.
The BASIC took me 4 months to write, demonstrating it bi-weekly at the Homebrew Computer Club. It involved much more work for me than the Apple I and Apple ][ computer designs together. I was too shy to talk and had to do impressive things to get others to speak first, and this BASIC did help.
I had much floating point experience. In fact, my floating point math routines were included in the Apple ][ ROMS, although not incorporated into the BASIC.
A floating point BASIC was listed as one of the highes priorities for the Apple ][ in the same meeting that listed a floppy drive as the other one. Both were important for the Checkbook program that was shipping on cassette tape with Apple ]['s.
Randy Wigginton and I were working on defining a rather advanced BASIC with floating point and much more when Microsoft sent us their 6502 BASIC. There was little need to work on our own at that point.

from David Craig on February 20, 2004 03:27:20

Hi,
I was not an Apple employee or involved in MacBASIC's development but did use it a bit long long ago on my Mac 128 machine. I thought it was a really well done implementation of BASIC, far superior to any of Apple's or Microsoft's BASICs from that era.
Here are two pieces of information about MacBASIC that may interest others:
1) Marianne Hsiung previously worked on Apple's Lisa BASIC. This was an interpreted BASIC modeld after DEC's BASIC-Plus language which ran only in the Lisa Workshop environment. Not really sure how popular this BASIC was, suspect not that popular, but at least it gave Apple an excuse for saying they had BASIC for the Lisa.
2) Donn Denmann's previous BASIC language project, Business BASIC (written in 6502 assembly language) for the Apple /// computer, included the following funny 68000 processor comments in the version 1.3 source code listing from 1983:
JSR FIXSBC ; I WISH I WERE A MOTOROLA 68000,
STA HIMEM+1 ; YES THAT IS WHAT I'D TRUELY LIKE TO BE,
TYA ; CUZ IF I WERE A M. 68000.
SBC HEADER+1 ; EVERYONE WOULD LOVE TO PROGRAM ME!
-David T Craig

from David Craig on March 25, 2004 01:50:32

Is the source for MacBASIC floating around somewhere?
If so, I would like to see it. If lost, that is a shame :-(
-David T Craig (shirlgato@cybermesa.com)

from Cathy Doser on March 30, 2004 09:23:11

I saw copies of MacBasic in 1984, I think, and have a copy hidden somewhere in my floppy disks for the 128/512/Plus machine. I loved the way it looked, and just was so anxious to work with it. I was sooo saddened when it disappeared. Obviously several books had made it out, and showed the elegance of Donn's work. It would have been the other part of the early Mac's programming muscle to have had it along side Hypercard.
I got and used Microsoft Basic for Macintosh (as part of the original Buy a Mac Get Two Apps Free deal), and constantly ran my head into the ceiling. It was inelegant, and rarely worked well. And, as noted, was so out of date, not using the graphical environment of the Mac.
A rumor I had heard was that Microsoft didn't exactly bury MacBasic, but used its structure of programming for Visual Basic for Windows. It wouldn't be the first or last time they used someone else's product and called it their own work.
If there are copies of the Beta or the source code around, it would be cool to see them surface. I'll try to do my part by looking for mine. Hope the old floppy diskette still reads!
p.s. Thanks Donn!
Cathy Doser cathy@doser.net
Mac user since 3/84

from D F on March 26, 2009 02:28:14

MacBASIC is still out there. I recently received a bunch of old Mac disks from the 1984-1986 era, and one of the disks had MacBASIC version 0.355 on it.

from Luca Severini on July 12, 2009 16:07:58

MacBasic would have been a breaktrough, at least for that language, like has been MS Visual Basic around 6 years later.
Would be great if somebody of who owns it (with the source code would be amazing) gives a copy to the Computer History Museum (www.computerhistory.org) like Apple did (or was Bill Atkinson personally) with MacPaint and QuickDraw sources.
Luca

from Arthur Luehrmann on June 13, 2012 22:04:52

Andy gets this sad tale right. My partner Herb Peckham and I were free-lance writers brought in to create a manual for Macintosh Basic, which we did. More about that later.
I first met Donn when we were both serving on the ANSI Basic Standards committee, whose goal was to set up specifications for a modern version of Basic that would contain loop structures, if-then blocks, and procedure calls, so the notorious GO TO statement could go away.
Tom Kurtz, co-inventor of Dartmouth Basic, was also active on the ANSI committee. I've known Tom since 1965, when I was teaching physics at Dartmouth, and I knew Tom was keen on implementing a modern, structured version of Basic, and getting beyond the old (and much-criticized) line-number-dependent language that was becoming ubiquitous on micros, thanks to Bill Gates's interpreter (which was mostly correct, except if you wrote FOR I = 1 TO 0, the loop would be executed once&#226;&#128;&#148;no pre-test).
I had added graphics primitives to Dartmouth Basic around 1976 and developed an X-Y pen-plotter to carry out graphics commands mixed in with the text being sent to Teletype terminals. My interest on the ANSI committee was to make sure the new Basic had a standard set of graphics statements.
It became clear that Donn also wanted Macintosh Basic to be a modern, structured language that would leave Applesoft Basic as a memory. I pressed for Mac Basic to also include the graphics statements we were standardizing on the committee, and Donn ultimately agreed.
That was around 1979. By that time I was at the Lawrence Hall of Science at UC Berkeley heading a program to teach kids about computers, both at LHS and remotely via Teletypes in Bay Area schools. We also had Commodore Pets, and we outfitted a van to take wheeled desks with mounted Apple IIs out to schools. Essentially, we taught programing in Basic on all systems.
I left the Hall in 1980 and, with Martha Luehrmann and Herb Peckham, started Computer Literacy Press. Our purpose was to serve the needs of all the new computer users that were suddenly appearing, thanks to micros. Our first book project was &#226;&#128;&#156;Apple Pascal&#226;&#128;&#148;A Hands-On Approach.&#226;&#128;&#157; Apple liked it and included a copy with each Pascal software package it sold. (If anyone is interested, I still have a dozen copies of the book.)
That brings us to Macintosh Basic. Apple invited us to create &#226;&#128;&#156;Macintosh Basic&#226;&#128;&#148;A Hands-On Approach&#226;&#128;&#157; and have it ready in time for shipping with the software, which was six or eight months away. Herb and I took up offices at Apple and met with Donn several times a week to review progress. And what a pleasure it was to work with Donn! He was good at explaining details we had questions about, and he was completely open to ideas we had about the graphics elements. The same was true of Marianne Hsiung.
So, as the months went by, it looked like Macintosh Basic would be the user-oriented language for the Mac&#226;&#128;&#148;and it would be great. Our book was finished and in page proof, ready for the press.
BUT . . .
Steve Jobs invited me into his office one morning. Our office was a few doors away, and we talked from time to time. Steve seemed uncertain about something. Then he handed me a disk and said, &#226;&#128;&#156;What do you think about this?&#226;&#128;&#157;
I took it to our Mac, loaded the software, and what I saw was Microsoft&#226;&#128;&#153;s version of Basic for the Mac. Against Donn&#226;&#128;&#153;s and Marianne&#226;&#128;&#153;s creation, it looked antique: no structured programming elements, line numbers essential for GO TOs, primitive graphics commands, limited data types&#226;&#128;&#148;a throwback, in a word.
So, the next day I went back to see Steve. He asked, &#226;&#128;&#156;What do you think?&#226;&#128;&#157; I said, &#226;&#128;&#156;Steve, it&#226;&#128;&#153;s a piece of shit.&#226;&#128;&#157; He didn&#226;&#128;&#153;t say anything, but looked grim.
A week or so later, we learned that Apple&#226;&#128;&#153;s Macintosh Basic project had been canceled. Andy Herzfeld explains the situation accurately. The Apple II was the cash cow at that time, and without Applesoft Basic it would be worthless. Gates played hardball, and Apple caved.
And so, sitting on a shelf in our basement are the page proofs of our book, &#226;&#128;&#156;Macintosh Basic&#226;&#128;&#148;A Hands-On Approach.&#226;&#128;&#157; It&#226;&#128;&#153;s the best of the 20 or 30 books we&#226;&#128;&#153;ve done.
But the saddest thing to me is that the Mac shipped with no user-level programming language. It was the beginning of the end of ordinary people writing their own programs. Computer buyers became customers of programs (now renamed &#226;&#128;&#156;applications&#226;&#128;&#157;) written by experts, not creators of their own, albeit modest, programs.
It didn&#226;&#128;&#153;t have to be that way.

from David Riley on July 07, 2014 18:07:11

Does anyone have a disk image of MacBasic? I had the book and floppy at my parents' house and was going to image it for posterity, but found to my dismay that they had given away both to a local used bookstore. Hopefully someone made some use of it, but I'm becoming worried that it'll be lost to the ages if someone doesn't put up an image somewhere.