The Original Macintosh
Anecdotes about the development of Apple's original Macintosh, and the people who made it (66 stories)
“Great software requires a fanatical devotion to beauty.” -- Paul Graham

Steve Jobs:  (66)
Page1 23 4 5 6 7 8 9 10 11 12 13 14

Steve inspires Bill by pointing out something about the real world
May 1981
Andy Hertzfeld
Software Design,Inspiration,QuickDraw

Bill Atkinson worked mostly at home, but whenever he made significant progress he rushed in to Apple to show it off to anyone who would appreciate it. This time, he visited the Macintosh offices at Texaco Towers to show off his brand new oval routines, which were implemented using a really clever algorithm.

Bill had added new code to QuickDraw (which was still called LisaGraf at this point) to draw circles and ovals very quickly. That was a bit hard to do on the Macintosh, since the math for circles usually involved taking square roots, and the 68000 processor in the Lisa and Macintosh didn't support floating point operations. But Bill had come up with a clever way to do the circle calculation that only used addition and subtraction, not even multiplication or division, which the 68000 could do, but was kind of slow at.

Bill's technique used the fact the sum of a sequence of odd numbers is always the next perfect square (For example, 1 + 3 = 4, 1 + 3 + 5 = 9, 1 + 3 + 5 + 7 = 16, etc). So he could figure out when to bump the dependent coordinate value by iterating in a loop until a threshold was exceeded. This allowed QuickDraw to draw ovals very quickly.

Bill fired up his demo and it quickly filled the Lisa screen with randomly-sized ovals, faster than you thought was possible. But something was bothering Steve Jobs. "Well, circles and ovals are good, but how about drawing rectangles with rounded corners? Can we do that now, too?"

"No, there's no way to do that. In fact it would be really hard to do, and I don't think we really need it". I think Bill was a little miffed that Steve wasn't raving over the fast ovals and still wanted more.

Steve suddenly got more intense. "Rectangles with rounded corners are everywhere! Just look around this room!". And sure enough, there were lots of them, like the whiteboard and some of the desks and tables. Then he pointed out the window. "And look outside, there's even more, practically everywhere you look!". He even persuaded Bill to take a quick walk around the block with him, pointing out every rectangle with rounded corners that he could find.

When Steve and Bill passed a no-parking sign with rounded corners, it did the trick. "OK, I give up", Bill pleaded. "I'll see if it's as hard as I thought." He went back home to work on it.

Bill returned to Texaco Towers the following afternoon, with a big smile on his face. His demo was now drawing rectangles with beautifully rounded corners blisteringly fast, almost at the speed of plain rectangles. When he added the code to LisaGraf, he named the new primitive "RoundRects". Over the next few months, roundrects worked their way into various parts of the user interface, and soon became indispensable.
We stay late to bring up the first printed circuit board
May 1981
Andy Hertzfeld

When I began working on the Mac project in February 1981, there was still only one single 68000-based Macintosh prototype in existence, the initial digital board that was wire-wrapped by Burrell himself. It was now sitting in the corner of Bud Tribble's office, on one of the empty desks, attached to a small, seven-inch monitor. When powered up, the code in the boot ROM filled the screen with the word 'hello', in lower case letters and a tiny font, rendered crisply on the distinctive black-on-white display.

Dan Kottke and Brian Howard were already busy wire-wrapping more prototype boards, carefully following Burrell's drawings. In a week or so, I received the second prototype for my office, so I could work on the low level I/O routines, interfacing the disk and keyboard, while Bud worked on the mouse driver and porting Bill's graphics routines.

The next big step for the hardware was to lay out a printed circuit board. We recruited Collette Askeland, the best PC board layout technician in the company, from the Apple II group. Burrell spent a week or two working intensely with Collette, who used a specialized CAD machine located in Bandley 3 to input the topology and route the signals, eventually outputting a tape containing all the information needed to fabricate the boards.

Burrell and Brian Howard checked and rechecked the layout, which was tediously expressed as thousands of node connections, and after a day or two they decided they were ready to send it out for fabrication. We were hoping to get the first sample boards back before the weekend, but it looked like they weren't going to make it. Finally, around 4:30pm on a Friday afternoon, they arrived.

Burrell figured that it would take at least two or three hours to assemble a board, and then even longer to troubleshoot the inevitable mistakes, so it was too late to try to get one working that evening. Maybe they would come in on Saturday to get started, or maybe they'd wait until Monday morning. While they were discussing it, Steve Jobs strolled into the hardware lab, excited as usual.

"Hey, I heard that the PC boards finally arrived. Are they going to work? When will you have one working?"

Burrell explained that the boards had just arrived, and that it would take at least a couple of hours to assemble one, so they were thinking about whether to start tomorrow morning or wait until Monday.

"Monday? Are you kidding?", replied Steve, "It's your PC board, Burrell, don't you want to see if it works tonight? I'll tell you what, if you can get it to work this evening, I'll take you and anyone else who sticks around out for Pineapple Pizza."

Steve knew that Pineapple Pizzas had recently replaced Bulgarian Beef as Burrell's current food obsession (which, as a staunch vegetarian, he thought was a positive development) and that Burrell wanted a Pineapple Pizza pretty much every chance he could get. Burrell looked at Brian Howard and shrugged. "OK, we may as well give it a shot now. But I don't think we'll be able to get it working before the restaurants close."

So Burrell and Brian got busy, selecting a board and stuffing it with sockets, carefully soldering them in place, while five or six of the rest of us, including Steve, sat around and kibitzed. Burrell seemed a little tense and impatient, since he didn't like the pressure of bringing up a board in front of so many spectators. Every five minutes or so, he referred to the awaiting Pineapple Pizza, speculating about how good it was going to taste.

Finally, around 8pm or so, the board was assembled enough to try to power it on for the very first time. The prototype was hooked up to an Apple II power supply and a small monitor, and fired up as we held our breath. The screen should have been filled with 'hellos', but instead all that was there was a checkerboard pattern.

We were all disappointed, except for Burrell. "That's not too bad", he commented, "It means the RAM and the video generation are more or less working. The processor isn't resetting, but it looks like we're pretty close." He turned to look directly at Steve. "But I'm too hungry to keep working - I think it's time for some Pineapple Pizza."

Steve smiled and agreed that it was good enough for the first night, and it was time to celebrate. The seven or eight of us who stayed late drove in three cars to Burrell's favorite Italian restaurant, Frankie, Johnny and Luigi's in Mountain View, ordering three large Pineapple Pizzas, which tasted great.
We hooked up a mouse to the Apple II
June 1981
Andy Hertzfeld
Software Design,Apple Spirit,Prototypes,Technical,Apple II,Compensation

Burrell's Macintosh design was elegant and clever in many different ways, always using minimal hardware resources for maximal value. The mouse interface was a typical example, using just a fraction of the general purpose 6522 VIA chip that Burrell had incorporated. The mouse is hooked up to the 6522 so that it generates an interrupt each time the mouse moved a notch horizontally or vertically, with a one bit line to sense the mouse button. That was it - the rest was done in software.

Meanwhile, my good friend Bill Budge, who was an amazing Apple II games programmer, came up with an incredibly fast way to draw proportional text on the Apple II graphics screen, using seven pre-shifted tables. He also wrote a very fast BitBlit routine (BitBlit was the most important graphics primitive in GUIs). It was crying out for a way to interface the mouse, so you could have a complete graphical user interface on the Apple II.

Bud Tribble had written the initial code to drive the mouse on the Macintosh, but I had to maintain it, so I was familiar with how it worked. I had used a 6522 chip the previous year, since the Apple III had one, which I had programmed to shift bits out to the Silentype thermal printer. I realized that all that was required to interface a mouse to the Apple III was to make a simple connector to route the appropriate signals to the proper pins.

I asked Dan Kottke to wire up a connector. Once that was finished, it only took a few hours to write cursor routines and a driver. We had the beginnings of a full graphical user interface going on the Apple III, with no additional hardware required.

It was exciting enough that I started helping Bill Budge flesh out the program, careful to work on it only after regular hours. Pretty soon, we had pull-down menus going, and then a simple proportional text word processor. The only problem was that Apple IIIs weren't selling very well; we really needed to get it running on the Apple II somehow.

I talked to Burrell about the problem, which basically came down to making a peripheral card for the Apple II that included a 6522 VIA chip on it. Burrell came back the next day with a brilliant two chip design, just the VIA and a tiny dual flip-flop chip to synchronize it.

To move the mouse cursor without flickering, both the Mac and the Apple III code used a vertical blanking interrupt, which drew the cursor during the time interval when no video was being painted. Unlike the Mac and Apple III, the Apple II didn't have a vertical blanking interrupt. The most brilliant part of Burrell's design involved how it synchronized with the video, without running a wire to pick up the video signal.

The 6522 chip had a timer which could generate an interrupt at a specified interval. The problem was synchronizing it with the video, since the video generation was not accessible to the processor. Burrell solved the problem by wiring up the spare flip flop to the low bit of the data bus, using it to latch whatever data the video was displaying so the processor could read it.

To synchronize with the video, Burrell had me fill the Apple II's frame buffer so the low bit was on most of the time, but set off at the end of the last scan line. I wrote a routine to sit in a tight loop, reading the latch. When the low bit changed, we would know the vertical blanking interval had just begun.

The Apple II wasn't fast enough to keep up with its own frame buffer. A new byte of video data flew by every microsecond, which was only one processor cycle. It took at least 10 processor cycles to iterate through a loop, so we ran the risk of never seeing the low bit change. Burrell had a way around this, though - if the loop time was relatively prime to the display frequency, it eventually had to slip into place. I wrote a 17 microsecond loop that fit the bill, and we were delighted to see it work perfectly.

Bill Atkinson had told Steve that you couldn't pull off a decent graphical user interface on the Apple II because of the weakness of its 6502 processor and the complexity of Woz's convoluted frame buffer. But, after a little more work on the software, we had a cool little GUI for the Apple II, with a proportional text word processor, in the summer of 1981. We thought that we had had a potentially valuable product on our hands.

We were reluctant to show it to Steve, knowing that he would want to commandeer it, but he heard about it from someone and demanded to see it. We showed it to him, and, unfortunately, he loved it. But he also insisted that Apple owned all the rights to it, even though we had developed it in our spare time.

Steve couldn't insist that Apple owned all of it, because Bill Budge wasn't an Apple employee at the time. But Steve could claim complete ownership of the interface card, which he said was developed with Apple resources. Burrell and I were pretty upset, because we did it on our own time and thought that we should be compensated, but it's really hard to argue with Steve, especially about money.

We ended up turning over Burrell's design to the Apple II division, but they didn't think the Apple II could deal with interrupts properly (even though we had demonstrated that it could), so they added tons of hardware and ended up with more than a dozen chips. Steve made a deal with Bill Budge that eventually resulted in MousePaint, a MacPaint clone for the Apple II which was bundled with the mouse card. Burrell and I got over it quickly, but a bit of bitterness lingered, and the whole episode whetted our appetites for eventually working on our own.
The first time we demoed the Macintosh to Microsoft
July 1981
Andy Hertzfeld
3rd party developers,Microsoft,Prototypes

Apple had already learned the value of having a thriving third party software market with the Apple II, whose sales increased more than ten-fold when Visicalc, developed by a tiny company called Software Arts, caught on in the business market. The Macintosh intended to replicate the success of the Apple II as an industry standard platform, so it was very important to bring third party developers into the picture as soon as possible.

Microsoft was an obvious choice for one of the first companies for us to talk to. Both companies were started around the same time during the infancy of the personal computer industry, and they already had a business relationship, since Apple licensed Microsoft's Applesoft Basic for the Apple II. Bill Gates and Steve Jobs were born in the same year and shared a similar vision for the potential of personal computers. Each one thought he was smarter than the other one, but Steve generally treated Bill as someone who was slightly inferior, especially in matters of taste and style. Bill looked down on Steve because he couldn't actually program.

Steve had mentioned the Macintosh project to Bill at an industry conference in April, which led to a meeting in Seattle in June, where Steve spun an intriguing vision of pumping out Macintoshes by the millions in an automated factory. The plan was for Microsoft to develop a series of applications for the Macintosh, to be ready at launch. Things went well enough to schedule a meeting in Cupertino in July, where we promised a demo of the actual machine.

Unfortunately, there was one small snag. We were using the Lisa as the development machine for writing the software for Macintosh, and we hadn't yet reached the point where the Macintosh could run stand-alone. The Macintosh needed to be hooked up to a Lisa, in order to download software from it. But the Lisa group was writing all of its own applications for Lisa and didn't want Microsoft to see a Lisa. They made us promise that we wouldn't let Microsoft see the Lisa.

We finally came up with a solution where we'd use a twenty-five foot cable and keep the Lisa in a different room that the Microsoft guys weren't allowed to enter. I would start up the programs on the Lisa in the other room, and Bud Tribble would operate the Macintosh. I would usually run into the main room to see their reaction.

Bill Gates showed up in the early afternoon with three other colleagues: Charles Simonyi, who had recently joined Microsoft from Xerox PARC, Jeff Harbers, who would manage the Macintosh development team, and Mark Matthews, who was to be the technical lead on the project. They crowded around the prototype, and we started to run our various demos for them, with Steve doing most of the talking.

You could tell that Bill Gates was not a very good listener - he couldn't bear to have anyone explain how something worked to him - he had to leap ahead instead and guess about how he thought it would work.

We showed him how the Macintosh mouse cursor moved smoothly, in a flicker-free fashion.

"What kind of hardware do you use to draw the cursor?", he asked. Many current personal computers had special hardware to draw small bitmaps called "sprites", and he thought we might be doing something similar.

Of course, the Macintosh didn't use any special hardware at all. It did everything in software, which was more flexible anyway, during the vertical blanking interval to eliminate the possibility of flicker. In fact, Burrell and I had recently gotten a mouse to run smoothly on an Apple II, using a similar technique (see Apple II Mouse Card).

"We don't have any special hardware for it!" I blurted out, probably with a proud sneer in my voice. "In fact..." I was about to mention that we got it running on an Apple II, which had one tenth the processing horsepower of a Macintosh, when Steve guessed what I was about to say.

"Shut up!", he yelled as loud as he could, looking directly at me. He yelled it again, possibly trying to drown me out in case I kept on going. But I understood what he wanted, changing what I was going to say, "In fact, doing it in software is better anyway".

The rest of the demo went pretty well, and both teams shared their excitement about how the Macintosh was going to take the industry to another level. We went out to dinner at a fancy restaurant in Los Gatos to celebrate working together, and we agreed to a framework of a deal where we would give them a stand-alone Mac prototype to develop with in the fall. We were very excited to be working with a third-party company that seemed to understand and appreciate what we were doing.
Steve is concerned with the esthetics of the PC board
July 1981
Andy Hertzfeld
Hardware Design,Personality

The first Mac prototypes were hand-made using a technique called "wire-wrapping", where each individual signal is routed by wrapping an individual wire around two pins. Burrell wire-wrapped the first prototype himself, and then others were done by Brian Howard and Dan Kottke. But wire-wrapping is time consuming and error prone.

By the spring of 1981, the Mac's hardware design was stable enough for us to make a printed circuit board, which would allow us to make prototypes much more quickly. We recruited Collete Askeland from the Apple II group to lay out the board, and after working with Burrell and Brian for a couple of weeks, she taped out the design and sent it off for a limited production run of a few dozen boards.

We started having weekly management meetings in June 1981, which were attended by most of the team, where we discussed the issues of the week. At the second or third meeting, Burrell presented an intricate blueprint of the PC board layout, which had already been used to build a few working prototypes, blown up to four times the actual size.

Steve started critiquing the layout on a purely esthetic basis. "That part's really pretty", he proclaimed. "But look at the memory chips. That's ugly. The lines are too close together".

George Crow, our recently hired analog engineer, interrupted Steve. "Who cares what the PC board looks like? The only thing that's important is how well that it works. Nobody is going to see the PC board."

Steve responded strongly. "I'm gonna see it! I want it to be as beautiful as possible, even if it's inside the box. A great carpenter isn't going to use lousy wood for the back of a cabinet, even though nobody's going to see it."

George started to argue with Steve, since he wasn't on the team long enough to know that it was a losing battle. Fortunately, Burrell interrupted him.

"Well, that was a difficult part to layout because of the memory bus.", Burrell responded. "If we change it, it might not work as well electrically".

"OK, I'll tell you what," said Steve. "Let's do another layout to make the board prettier, but if it doesn't work as well, we'll change it back."

So we invested another $5,000 or so to make a few boards with a new layout that routed the memory bus in a Steve-approved fashion. But sure enough, the new boards didn't work properly, as Burrell had predicted, so we switched back to the old design for the next run of prototypes.
Page1 23 4 5 6 7 8 9 10 11 12 13 14