All the Macintosh links you need!
Woz answers your letters
Conventions, past and present.
Friends of Woz
Some businesses
Festivals and Fun
See Woz, if he's home.
Letters-General Questions Answered  



Comment from E-mail:
I just though i'd drop you a line regarding your early Computer Language work.

I read that you developed not only all the Hardware for the first Apples but you wrote a BASIC as well. I was just really impressed, I'm a computing scientist and have been spoilt by Java and other Languages with a million and one short cuts for the lazy programmer. I have some idea how much work was involved with what you did involves and it was a good effort in my book.

If you do have five minutes I was wondering a couple of things.

How many hours did you put in back in the early days? I work loads (well quite a bit) and still can't get the GUI on my Information Filtering Agent to work properly.


My hardware design came easily. I'd start by scanning manuals of every chip available, keeping a good internal idea of which ones were expensive. I'd come up with a mental idea and follow tech notes to start putting the various pieces together on paper. Then I'd stare at my design and try to save chips. This sometimes just involved changing the exact gates used (from Nand to Xor, for example) in order to take fewer chips, each of which had a certain number of one specific type of gate. So a design with all NOR gates might take fewer packages than one with NAND and NOR gates mixed.

I'd also draw timing diagrams of signals and think of their properties and come up with clever changes to them on occasion. Once a signal needed a pulse that could come from one of two sources. I used an X-OR gate, which generated either a positive or negative pulse at the same time and was quite clever. I'd generally design in this mode, thinking up other ways to save lots of chips.

For example, on the Apple ][ I had designed gates and registers to generate the needed system and memory timing signals. I then came up with a small state machine approach, with a register and a 256 x 4 bit PROM. The PROM took the current state and generated the next state of the register on the next clock pulse. I used a synchronous register so that all the outputs were free from switching glitches that could arise from a gated approach. This state machine approach reduced perhaps 8 chips to 5. But even after this improvement I kept looking. The timing signals tend to come in sequences, signal A, then signal B, then C, and so on. This suggested a shift register which progresses a pattern from left to right. I played with the timing needed for the various RAM clocks and was able to have them occur at regular clocked intervals that were multiples of the computer clock timing, which had been pre-chosen based on color TV specs. Well, I wound up with this single shift register, with feedback to re-initialize it at the right time. The entire timing circuit now took only 1 chip.

I'd work in this fashion for 2 weeks to 4 weeks on projects like the Apple ][. Small improvements and changes would yet come over the next months, but not much significant. Once the design was on paper I'd go in and think out where all the chips would go on a breadboardin card that we had at HP. If extra pins were needed for longer chips than the breadboarding card was designed for I'd drill some holes. I layed out the chip positions tightly and orderly and in a pattern that made sense from the schematic (what needed to be near what other thing). I'd then solder each pin of all the chips in. This generally took a night, including soldering all the IC pins.

Then I'd come in for another night or two (or a weekend day) and wire up my circuit. You can see that the actual assembly was very little of the total time. It would generally take me just one more night to get things totally working, which sometimes involved changes to the circuit. Rarely I'd have to cut out a chip and solder a different one onto it's stubs. I used sockets for the expensive chips like the processor, and sometimes for all the chips. This was fortunate because my Apple ][ breadboard would work for a while and die. I determined that it was failure of the MOS Technology 6502's which were supposedly capable of 2 MHz operation but couldn't if they got a little static electricity jolt. I remember one time at the Homebrew Computer Club having to swap the processor with one that I had in my pocket. By the time we went into production we had processors that didn't have this problem.

That may sound like a lot, but the hardware was the easy part for me. The software that I wrote was very tight because ROMs were small and expensive back then. I'd work in all my free time, sleeping very little when things were hot, for about 2 years leading up to the Apple ][ shipment in 1977. Software is much more flexible than hardware, exhibiting many ways be which to shorten code. I'd use the same techniques for my machine language software that I used with hardware. That's why I included some hardware examples that you wouldn't necessarily have understood. I couldn't afford an assembler so I converted instructions to hexadecimal codes in memory myself. This made me extremely intimate with the programs and with the processor. I could carry around programs in my head and come up with ideas for improvements. I wrote the startup programs this way (the 'monitor' program of the Apple I) and the BASIC too. The BASIC was my hardest project of all, taking over 4 months and working day and night on it (besides my job at HP).

Of course I'd have program problems to debug. But I had no debugger. I wrote a few aids myself to help me out, so that I could type instructions in instead of hexadecimal codes, and so that I could see a disassembly without variable references, only addresses or offsets. I spent a long time trying to think my way through a piece of failing code and solved many problems this way. Sometimes I had to write example inputs down and work through the code and it's loops, keeping track of the variables on paper. This technique almost always found the oversight. In hard cases, I'd add code in the middle to stop at the correct point so that I could single step through some code. I remember having built a circuit for use with the Apple I that gave me a pushbutton to step instructions. I think that I had some debugging code to do this on the Apple ][. I might have to add code to my problematic routine to save some states in specific memory locations, and then I could examine these locations for clues as to what went wrong.

When worse came to worst I'd even have to hook up an oscilloscope and look at the signals on each address or data pin of the processor, writing them all down. I'd look at the signals and convert them to a sequence of binary numbers. This would tell me where in the program an unexpected address was being accessed, possibly by myself misunderstanding an addressing mode of the processor, possibly by using an index that should have been complemented.

Comment from E-mail:
What do you think of Java, have you ever programmed in it?

No time these days. The last programming language that I learned, one that has paid off very well for me, was AppleScript. I got the time to learn it during a week long stay in Hawaii with my family. I've bought Java books and started the first chapter, but as long as a phone or email is near, forget it. There's no time (family, home, tons of computers to keep running, WAN administration, classes, kids' activities, bills, but mainly email).

Comment from E-mail:
I worked at Apple during most of John Scully's reign as CEO. I think we lost so many loyalists because too many Mac verions were released in rapid succession. A person would pay big bucks for a current model only to have it made obsolete with another model introduction a couple of months later.

That's the story with computers for the last 40 years.

Comment from E-mail:
I've been forced to be a PC user at work for years, but I still have 2 Macs and an Apple ][c at home. Some of the best educational software ever developed was for the Apple ][.

Almost all of the educational software at one time was for the Macintosh. But PC's caught up here. How long do you think that good titles would be single platform once PC's had a large market share in schools?

Comment from E-mail:
It's a shame Apple didn't license the Mac for open production in 1984. Macs would have flooded the market and we would never have heard of a PC!

I agree that would have been the best for Apple. I believe that Apple would still have had plenty of control over the user experience. But they'd probably be in court with the Justice Department by now and owners wouldn't be so passionate. You have a strong purpose when you're a minority.

Comment from E-mail:
A friend of mine recently asked me about a quote of yours, in which you supposedly said that the reason you came up with a computer design before anyone else was, you took more LSD than anyone else. Is that an accurate quotation? If so, hat's off to you!

Sorry. I never took LSD or any other illegal drug. I just had a free thinking head, technically and in other ways.

Comment from E-mail:
Just a quick reply to the gentleman who thinks Microsoft did nothing wrong, took you off his hero list, and says he will never touch a Mac again. While he's entitled to his opinion, he obviously has no clue of anti-trust laws or why the exist. I find is hard to talk to people who so arrogantly talk about things they don't understand.

He might just have had a bad day. How do you feel when you press a button on a game or computer and the proper action isn't taken? Could you kill the person responsible sometimes? He's probably taking some inner frustration out against the wrong party. Psychologists call this an attribution error. The idea is that if you can't place the cause of a bad feeling, you blame it on other handy things.


to General Letters Contents Page

Home | WozCam | Education | WozScape | Unuson | MacLinks | Friends | Business | Conventions | Festivals

©Unuson Corp. 2002 | Los Gatos, California | v3.0 | Last Updated:February 13, 2000  
Design by Al Luckow

Made With macintosh