BASIC

Keep up the good things that you do

in
Comment from E-mail

I realize you're swamped with emails, but I had to send this...

I was first introduced to computers (Apple //+ at the time) when I was 12 years old, and began programming in BASIC on the Apple at age 13 (this was back around 1982/83)... Since that time, I've been hooked on personal computers, from the Apple //e, the Mac, the Amiga, and of course, the PC. I've used them all.

However, if not for the Apple //, and the opportunities that it opened for me, I don't know what job I would have today. The thought of not using computers, quite frankly, disturbs me...

Today, I too am a teacher. I teach a number of computer courses (computer graphics, design, video editing, etc), as well as media courses such as television production and broadcasting. It's a great and satisfying feeling to be able to share my computer knowledge and experience with my students - I truly enjoy it.

I'd like to thank you for opening that door for me by designing and building a computer that was affordable enough for my parents to buy, with an elegant design that allowed seemingly limitless experimenting and tinkering.

And here's a personal account for you. I still remember the first time that I ever saw an Apple //. The memory is still vivid, even from age 12. My father had brought me into a new college computer lab outfitted with Apples, and was typing in a BASIC program. When he backspaced over the text to type in a correction, I asked how he did it, and he showed me the backspace key. That was all it took - I was entering my own programs the next year.

I respect the fact that you're teaching children now. I respect that very greatly... You're opening doors for them in the same way that you opened a door for me some 18 years ago, and hopefully, many of them will find their own career path in the same way and return to thank you as well!

Woz

Your first Apple ][ memory is a good one. Those of us who were there can see what it means to have an outstanding memory from age 12. It's a very life shaping thing to see a program correction made for the first time ever. I remember the time I ran a wire up the block to a friend's house and we hooked up telegraph keys (we could both do Morse code, and I myself was a ham radio operator) and speakers. I heard my friend talking and was shocked. The speakers were also microphones. That took our neighborhood intercom to a new level and we got mikes and amplifiers from then on. Unexpected surprises are the best way to learn, because it means more.

It's this exact sort of experience that I've wanted to bring to young kids my whole life, and which is a major part of the reason that I like teaching. It doesn't happen every day but it's wonderful to see when students unexpectedly 'get' something.

Keep up the good things that you do.

You made a difference to a lot of people

in
Comment from E-mail

Woz, My dad bought an Apple //c back in 1982 (I think) after our Commodore 64 failed to impress him. We had a neighbor who had a //c as well, so we pirated software between us, based on what we could find on Bulletin Boards (with my 300 baud modem). Yes, we also made some purchases, but at the time, none of us had any real appreciation for what we had.

I used my //c to play a bunch of games, make posters and signs, and write school papers. I thought I was the coolest kid in school, because I had a "computer". At the time, I had no idea what Apple was about, and had someone mentioned the names Steve Wozniak, Steve Jobs, Bill Gates, or anyone else mentioned in "Pirates", I would have given a dumb, blank stare in response. To me, it was this cool toy that did just about anything I could imagine wanting to do.

I took a BASIC class in high school, and learned on IBM computers. When I discovered that I could write BASIC programs on my //c, I was ecstatic! I started writing simple programs to flash names of girls on the screen who I had crushes on, and so on. We're talking really simple here. But seeing these things work gave me such a feeling of happiness and confidence, I can't begin to express it.

When my dad decided it was time to get a newer, better computer in 1987(?), I figured "ok, something bigger and better than my //c". I had no clue what I was in for. He bought a Mac SE, and the first thing I remember saying to him when he showed me the interface was "Why do I have to click the mouse twice? Shouldn't it be once? That's stupid!" When I left for college in 1989, I took my //c and a handful of games (my favorite being "Below The Root", which I used to LOVE), along with AppleWorks (the original AppleWorks). I used it for two years, and then came back home to finish my degree.

In the next several years, living with my parents, I graduated with an MBA, and started using a 6100/60, and just before my parents moved to Florida (leaving me to pay rent in our house in Staten Island, NY), I bought a Mac Clone (PowerBase). I set up my //c on my desk right next to my PowerBase, and at one point in time, I even got the //c to call the Mac (using that old 300 baud modem). It stayed connected only long enough for me to write "Hi" to myself, and when I saw it appear on the Mac screen, I couldn't believe my eyes. Here was a 16-year-old computer talking to a 16-day-old computer. At the time, Steve Jobs was just returning to Apple, and I started to hear his name a lot more frequently. I researched him, found out a bit about his past, and discovered your name, and your involvement. Prior to this, I really didn't follow the computer industry much, except to know that I was using the better, less popular platform.

I now own a Yosemite G3/400, and my PowerBase is connected via Ethernet and sitting under my desk, but the //c sits proudly on the desk next to the Blue G3. I now know and appreciate who it was who created the //c, and who wrote the BASIC that I used to make Stacey and Laura's names appear flashing on my screen. I now understand who you are, and what you are about, and I feel foolish for calling Steve Jobs my "hero". Granted, as a current AAPL shareholder, and Mac user/evangelist, he is a hero of sorts, but when it comes to computers in general, my early involvement, and the joy I got when I was a kid, I now know that it is you I have to thank for putting in the blood, sweat and tears (not to mention putting up with Steve Jobs!).

I almost never use the //c anymore, but even at 17 years old, it still boots up, and still runs programs off those flimsy floppies. I even found a girl recently who had a //e and used to play Below The Root! Too bad, she was not interested in going out with me. Her loss :)

I have a "cool" Web site at http://www.stealth.net which you will find amusing, if not creative and cool, just for the navigation metaphor.

Thanks, Woz, for inventing the machine that made me love computers, and helping start the company that has shaped so many important details in my adult computing life. Whether you wanted it or not, whether you cared or not, you made a difference to a lot of people, and I, for one, will forever cherish that. You're my hero.

Woz

For quite a long time I laid quite low and had no idea that so many people were fans for the right reasons. I figured that many were fans just because they had the Apple Macintosh and loved it, as I do, and heard my name. But so many were touched the right way by the Apple ][. It truly had an impact that no modern computer can. In your own story I see that a couple of simple things (games, BBS, flashing names, etc.) that truly inspired you. I look back to my own such experiences in my youth, largely before computers but related to science and electronics, so emotionally that I know that those experiences truly shaped my life. Even my father, an engineer, is very important to me now, more so than when he was around. I'm even thankful for the 'right' books that I stumbled on that gave me direction here.

Before computers, many fewer of us typed. But I was a very good typist, even acing out the girls in typing 2 in HS. I'm not so fast anymore, because I switched to Dvorak and use a tiny PowerBook keyboard, but...Anyway, at one point in my life, my third year of college, the most important thing I owned was an IBM Selectric Typewriter. Steve Jobs and I got a couple for a blue box, The next year, my most important possession would be my HP-35 calculator. But when I got to designing what became the early Apple computers I had to have the circuitry complete and in front of me and usable like a typewriter. Being around HP calculators was a boon to seeing computers this way too. So I always liked computers that sat right in front of you, like a typewriter. I use only PowerBooks these days. The Apple ][c was truly my favorite Apple ][. It had to be plugged in, but with an LCD screen it was incredibly small in it's day. I'm always glad to be reminded of it by people like you.

Your web site is VERY cool and really grabbed me instantly. Instantly it seems a lot more negotiable than almost any others, even if you're a Windows user. If mine gets done in this style you won't sue me for violating your look and feel, will you? (kidding)

Good luck, and don't get fooled as to what is good and what is junk.

Betamax

in
Comment from E-mail

've started this letter twice and can never seem to get it right, but here goes. I was saved from swearing off computers entirely and going to Iowa to be a potato farmer by a Mac. I was working at as a tech support agent for a large technology distributor and the constant frustration of supporting Windows and folks who just didn't care, was draining all the fun out of computers. Then back in '97 I bought my first Mac, a G3/233 minitower. It was the most incredible experience ever. Things just seem to work the way they are supposed to. One thing led to another and here I am going back to school for a degree in Computer Science, I've already got one in Business Administration, and have found that a computer is just a tool to get stuff done. It should not be an end unto itself.

Also, I seem to have accumulated four other Macs, a Plus, an SE, a IIcx and a Quadra 950. I'll wrap up by saying thanks for starting Apple, they have really kept the personal in personal computer.

BTW, my first computer was not an Apple but a Timex Sinclair 1000 with a whopping 16K of RAM.

Woz

The way I see this tool vs. end-in-itself thing is that there are lots of different kinds of people. Some of us, like most of my students, will benefit from it as a tool. But a minority, those that are like me when I was young, really do get something from the computer itself, especially if they can build and add hardware. I'll never forget the hobbyists, even if they are mostly Windows types today, because that was the center of my own life.

A TV was to watch shows, but for myself it was a thing to open up and connect wires to put in my own signals, from VCR's (before Betamax, before channel 3 modulators) and from computers in the early days.

I remember once, in slightly later years, buying a Timex Sinclair computer. It was only $50 or $100 and had BASIC and actually worked very nicely by itself. Even today, a $50 computer on your own TV screen would be a hot item.

My hat is off to you sir

in
Comment from E-mail

I just wanted to say that I've been using Apple products @ school...@ work...@ home since the Apple ][.

Serious BASIC programming was on an Apple ][... (my first programming experience was on a BALLY Astrocade with the BASIC cartridge...I still have both...circa 1981.)

My term papers were written on Mac 128k & 512k computers...

I was one of the first in my design class @ college to use a Mac...a Mac II, I think...before they became an industry standard...

I currently own a PPC 7500 that's paid for itself 3 or 4 times (original value).

I just wanted to say...thank you for starting a wonderful computer company and being one hell of a nice guy. Anybody that gives away co. stock to employees that have none...well, my hat is off to you sir. This email is loooong overdue...rest assured I will always be a Apple-man...so will my kids...and anyone else I can influence.

Woz

It was a big deal to give the stock to people that were along for the incredible ride the first couple years of our company. It was rare and brave and right. I don't know why the definition of right and wrong change once you 'get there'.

The importance of Steve Jobs' role

in
Comment from E-mail

Thank you for the Apple. Regardless of where it started or where it has been I have it now and it does add to my enjoyment of life. I am somewhat puzzeled by your seemingly critical view of Steve Jobs. I know that you experienced it all first hand but the fact of the matter is that Mr Jobs has driven the car while you got off. I care not why but you seemingly respond in your answers to "Pirates" that you did it all and Mr. Jobs was basicilly a non-technical salesmen. Did he or did he not have anything to do with the Apple computer ? As I interput your reponses, he was just hanging around like a vulture. Thanks for your time. C. H.

Woz

I'm sorry. I probably misdirected others too. I made a lot of comment about having done a lot of hardware and software, including writing BASIC for the Apple I and Apple ][, in my "Pirates" replies because I did this design while Steve Jobs and Bill Gates and Paul Allen were not as great as engineers. As for the engineering, on the 'dark' side there was Ed Roberts with a computer (who designed it???) and Bill Gates and Paul Allen writing a BASIC. I did all of this and much more, singlehanded, while working a day job at Hewlett Packard too. Steve Jobs did not design the computer in hardware or software terms. He did what was needed to start a company. He found people and companies that could get us to a product (it was manufactured at a company in Santa Clara and we just put the final pieces together in the garage) and sell it and more. He also had product design contributions along the lines of the plastic case and low heat power supply. But almost every other unique 'first ever' feature was my own idea of what would make a good computer. In the spirit I had, of helping and not making money, I gave out schematics to anyone that wanted them in the Homebrew Computer Club. This is what led to the interest that led Steve to see a possibility of making a product for sale.

I've spoken many times in the past about the importance of Steve Jobs' role in the Apple computers. But I was the inventor and engineer, solely. Remember, the Apple I was the first small computer ever with a keyboard standard, and the Apple II had the first color graphics, the first hi-res graphics, the first BASIC in ROM, the first sound and paddles for games, and a host of very clever approaches. Plus, it was so understandable and versatile and usable that it inspired tons of people. I hear from these people all the time, everywhere I go.

In my speeches I go out of my way to make Steve Jobs' role, in non-engineering ways, seem more important. But in response to the movie, I'm trying to compare myself as the engineer to Gates and Allen as engineers and any perceived denigration of Steve Jobs is not intentional.

Thank you for the chance to explain.

How to make a personal operating system ?

in
Comment from E-mail

I have emailed you before, and i got so excited that a major player in the computer world awnsered me. So here goes my question. My friend and I want to make our own computer software, We bought an old computer and scraped it, and made a new computer, but we want to make our own operating system, You said you made basic for the Apple 1 and II. What did you us to make it? what type of software, if any would we need to make it with, and is there any hard ware we might need?

Woz

I don't know if these comments will apply, but here they are.

In high school I fell in love with minicomputers, which were basically small computers equivalent to the microprocessors once they came out. Well, I could never afford a minicomputer but I looked at the programming instructions for machine language and tried to write my own short routines. In college I started trying to figure out how compilers, like Fortran, were written. I knew that the compiler program had to read a line at a time and figure it out and convert it to code that the computer could run. So I started writing a routine in assembly language (machine language) that would analyze a line for correctness. But I never could afford a computer to try it on, nor an assembler to type it into. It was just a personal program that nobody else knew about.

After I'd designed a computer, before Apple was even conceived, I decided to write a BASIC for real. I'd never studied how to do this, but I had self trained myself a bit back in college as I described above. I'd never used BASIC but I knew that this was the popular language for games and that was too important to ignore. The first thing I did was get a BASIC manual at Hewlett Packard, where I was working. I read it and made notes and pretty much learned what commands it had. Of course this was Hewlett Packard BASIC. It differed from the Digital Equipment BASIC, that Bill Gates' first BASIC was based on, mostly in some string manipulation. This later turned out to be the greatest difference between my BASIC and theirs. I was tired of MID$, LEFT$, RIGHT$ type functions so I preferred the HP BASIC better (A$(5,7) meant the 5th through 7th characters of A$).

I'd never formally educated myself in the area of compilers and interpreters (compilers translate a program to machine code to run rapidly later, interpreters scan the program and figure it out as it's being run, which results in much slower execution--BASIC is an interpreted language). But I knew how Syntax charts defined the structure and words of a programming language, as you find these in programming manuals. I decided to write down a full Syntax description of my BASIC to begin. I'd never done such a thing, but it wasn't hard and was modeled after others that I could find.

I next decided that I'd actually put this syntax list into memory as part of my BASIC interpreter. It was stored character by character. I figured that I'd just scan the input line, after the user hit Return, character by character, tracing a path through the syntax table and backing and retrying things. If the line made it through the Syntax table then it was good, otherwise it was in error.

The unexplainable part is how I came up with the way my BASIC would actually do what it was supposed to. As BASIC elements were found in the Syntax Table, I generated tokens (codes) for these elements. For example, a left parenthesis might generate token #87. But in another usage, a left parenthesis might generate token #115. It depended on where it was encountered in my Syntax table in memory, the one I was traversing character by character and matching the input line. In an inefficient effort to make my BASIC very tiny and save every possible byte (even the minimal amount of memory for a computer language was very expensive in 1975) I actually counted how many BASIC symbols the 'matched' one was from the start of the syntax table, and used that count as it's token value.

After this step, I generated a line that didn't have to go through the Syntax evaluator again. The Syntax evaluator could be very tiny and run slowly, as it only ran once per line, which took only a fraction of a second for a typical line. When the program ran, it was already half in shape for speed.

Now comes a less explainable part. I had read and heard some things about compilers but I still don't know to this day if what I did was good or bad. As a line executed in a running program, it consisted of numbers (precompiled into constants I think) and variable names and grammar elements like a plus sign token or a left parenthesis token. When, during execution, the BASIC encountered a 'noun' (number or variable) it was pushed onto a noun stack, ready for retrieval. This was like our HP calculators where I worked.

When the BASIC encountered a 'verb' (a token that called for an operation) it would be evaluated in comparison to a verb stack. This was the way of reading a human-written expression from left to right, but doing the operations in a different order (2+3*4 does the multiplication first in most computer languages, even though the plus sign appears first). For each token I assigned 2 priorities. One was the priority to push preceding tokens off the stack for execution. For example, 3 + 7 * 5 would push 3 on the noun stack, + on the verb stack, then 7 on the noun stack (where it's ready to be the first element removed from this first-in last-out stack). When the * is encountered, it had a higher execution priority than + so it didn't pull the 7 and 3 off and add them yet. Instead it pushed the * onto the verb stack and then the 5 onto the noun stack. The end of line was a token with priority to push everything off.

So at this time the * is the 'topmost' token on the verb stack. It comes off and runs a prewritten multiply routine that pulls two items off the noun stack, adds them, and pushes the result back on that noun stack.

Any token that causes others to be executed immediately off the verb stack would keep looking at token priorities until it's own priority was such that it would merely be pushed onto the verb stack and await later execution.

Parentheses bring another factor into play. A left parenthesis is always pushed onto the top of a verb stack, hiding the execution priority of the preceding operator token until a right parenthesis, with extremely high execution priority, causes all tokens to be executed until the left parenthesis is encountered. At that time the right parenthesis has found it's mate and stops forcing ops (tokens) to execute. This is a sort of exception to the concept of a single priority. In addition, the left parenthesis forces no ops off the verb stack, acting as though it has extremely high priority. But no ops force it off, until the right parenthesis, as though it had an extremely low execution priority. So I actually had two priorities for each token, a 'push' tendency and a 'pull' tendency. A verb (token) would only push other verbs off the verb stack and execute them if it's push priority was greater than their pull priority.

I have no idea where these sorts of ideas came from. They just came to me as I needed an elegant solution.

A table held bites with 2 one of zixteen priorities for each token that might be in the interpreted BASIC program. Another table held an address pointer for each token, that pointed to the routine to run when that token was forced to execute. So for each of the dozens of tokens, I had to only write a short routine. This kept the program less complicated and easier to add new commands to.

I couldn't afford an assembler. I wrote the entire program on paper, assigning memory addresses for each program instruction. When I shortened a routine, it was too much trouble to re-write (by hand) a few K-Bytes of code just to shrink the space. So there were many cases of short empty spaces in my BASIC. When a routine needed to expand, I'd usually jump to a patch area where it's latter part was. None of this would have happened if I could have afforded an assembler, which would have packed things properly.

Fortran, Basic

in
Comment from E-mail

At the current age of 41, I remember that the first language I learned was FORTRAN via a paper tape teletype at my high school connected to a time share system...I later learned BASIC on the Apple as I recall...

I learned FORTRAN even though our HS had no computer. I just learned it on paper and then my electronics teacher arranged for me to go to Sylvania once a week to program an IBM 1370. My first program was the Knight's Tour of a chessboard. Nothing came out so I assumed that I had an infinite loop. The next week I determined that my program was fine. Then I calculated that I'd find a result, by standard backtracking, in about ten to the 25th years! A good algorithm is worth more than a machine that can do a million things a second.

Woz

I'd never programmed BASIC in my life when I developed the Apple I. But I could tell that BASIC was the way to go if you wanted to be able to buy books of computer games. Plus, the Altair, with Bill Gates' BASIC, had shown that this was the popular language among the crowd interested in hobby computers. I used a manual for HP Basic (that's where I worked) to learn it and develop my interpreter architecture and syntax diagrams. The major differences between HP BASIC (that mine was modeled on) and DEC BASIC (that Microsoft's is modeled on) is in the string functions and strings. HP's strings had to have a size dimensioned whereas DEC's could grow to whatever size if I remember correctly. But the LEFT$, MID$, and RIGHT$ functions of DEC BASIC were much nicer in HP's. You could specify STRING (5,8) for characters 5 through 8 of the string, for example.

Graphics

in
Comment from E-mail

Regarding Apple history...I remember a friend having a Apple ][ and the two of us using peek and poke to program graphics |-]

Woz

Those are very touching things to remember! I managed to include lo-res commands in my BASIC, but not hi-res ones. Still, PEEK and POKE allowed BASIC to switch screen modes and the like.

Microsoft O.S.

in
Comment from E-mail

Much is made of the history behind apple hardware and Microsoft O.S.'s. Not much is told of the operating system behind the Apple II. Was there one? Was it just Basic?

Woz

There was a disk operating system when we came out with the floppy disk around 1978 or 1979. But the Apple ][ originally had only cassette tapes for storage. It was quite slow and there was no OS function other than to read a program in, which could then read it's own data in.

The level of the original Apple ][ 'Operating System' was that each slot could be assigned a device, which could be communicated with via BASIC. Each slot had a fixed address block assigned. Within those addresses you could include a Driver program, stored in ROM on the card that went with each device. This was true plug and play, with no separate step for driver installations.

A user could switch the printout function to any slot (and the input fuction). By switching the printout to a card that controlled AC power, for example, you could then print commands to the card which it would obey. You could also print to a card that then did other things, like change BASIC languages or switch the display to a card that could handle more characters per line.

5 Questions to Woz

in
Comment from E-mail

I have some questions for you. If you could answer them that would be great.

1. When you think about your time at Apple, what did you enjoy the best? What made you want to come to work each day?

2. What unique skills did the management team have that helped make Apple a success?

3. When you were a kid my age were there any classes or hobbies that you liked that let you know that you would be good in technology?

4. I understand you work with students. What skills, hobbies, or classes do you tell them to focus on, to prepare for the future?

5. Do you know any good technology camps for me?

Woz

1. I was motivated by several things. I was very independent. I could look at a problem and come up with my solution from any of a number of angles. I could work on a problem in the order and with the method that I chose. I was my own boss. I knew that what I did was good and that it impressed people. I had goals that guaranteed that I'd only do an A+ job that was better than anyone else would do. I got lots of praise for what I did. Also, I was free enough to include plenty of fun and humor and pranks in the worktime. For example, in writing Pong in BASIC, I put in a mode where the game would play itself, but jiggle the paddle enough that a player didn't know it. I actually got a friend to play, and win, an entire game and he thought that he did it himself.

2. We had a very unusual situation. Steve Jobs and myself had no such experience. I was very good at what I did and could take a project near to completion on my own because I was the designer, constructor, tester, coder, modifier, and more. Steve Jobs never let up in the pursuit for excellence, to have the best company ever. Mike Markkula had a lot of prior business success and he ran marketing in a professional way, while lots of other startups were very unprofessional. Mike Scott was our president. He could be rough when it came to getting the needed things done, like Steve Jobs is, but he could also joke a lot. I really liked Mike Scott a lot. Rod Holt was an older engineer with engineering management thinking and expertise outside of my fields. Without him we wouldn't have had many totally completed projects that a company could actually build.

3. By the time I was in 5th grade I was well on my way to an electronics future. I didn't know that electronics would lead to computers even. My 5th grade science fair project had 92 switches and lights to display the electron orbits for every atom. While this wasn't a computer, it did involve the sort of reasoning and complexity of computer logic. The electron orbits don't go in order. At some point, a switch has to swap one group for another. Some diode logic circuits were required. Also, in 5th grade I read a story where a ham radio operator was a hero and the book said that anyone of any age could get a ham radio license. This is different than driving licenses. I went to school that morning. On "Safety Patrol" (holding stop signs while students crossed the street) I told a friend that I was going to get my ham license and he surprised me by telling me of a class for such on my own block. I did get my license by 6th grade. It involved learning a lot of electronics and circuits and I even built my own transmitter and receiver.

I really advanced in computer logic circuits in 6th and 8th grades, and got the real concept of what a full computer was by 9th grade. We didn't have computers in our schools back in the 60's.

4. Teaching is getting harder and harder for me, with my tremendous email load. I prefer answering everyone individually (although one of my lists has hundreds of unanswered ones that came in after the "Pirates" movie) rather than have staff do it, or to publish it all. But I'm still human and can only do so much.

The primary focus of my classes for 5th through 8th graders is to show them ways to make their homework look exceptional, to impress teachers. The positive reactions of the teachers will lead to students thinking better of themselves and actually doing better work. At least that's the theory that I subscribe to. Also, just doing interesting, different, things helps motivate students and give them a good reason to spend more time on schoolwork than they might otherwise have spent.

I also focused on how networks work, including the types of data packets on the network and where they go and how they are handled. This helps the students debug network problems. This part of the class involves setting up servers with privileges as well as just accessing servers. It always included AOL accounts for my entire class, and I put heavy pressure on the parents to buy extra phone lines for the kids' computers. My real goal was to get the kids their own phones at an early age so that they could be independent but don't tell the parents I said that.

Nowdays, the online part of my class includes the internet.

The main time consuming part of my class was on how computers work, and on how to keep them maintained. I almost always had students take apart PowerBooks to exchange RAM and hard disks and modems. They had to have a good understanding of how the Operating System worked so that they could [sometimes] understand computer messages and take the right action. This part of the class is about having the skills to own and take care of your own computer.

My advanced students went into music recording, video editing, 3D graphics design and lots more..

5. Sorry, but I don't at this time. They change a bit, but I've seen or heard of them in recent times so you might do an internet search.