From: Charles T. "Dr. Tom" Turley
Related FAQs Resources: R010APPLE1.GIF
(gif pic of Apple I)
003- How did Woz invent the Apple computer?
Following is a Steve Wozniak interview which appeared in the
Summer 1997 issue of II Alive.
Looking Back: Woz Tells: "How I Did It!"
Charles T. Turley, interviewer
The recent flurry of speculations
surrounding Apple Inc.'s future seems to
have stirred up questions concerning birth of the Apple
II. Some writers have
reported that coding of the first II ROMs was a fairly
simple affair since, "of
course", Steve Wozniak had access to an assembler and
terminal. Similar
"obvious" and "easy" comments have surfaced about the
decisions to use dynamic
RAM and include a BASIC interpreter. I decided to ask
Woz for all the facts.
C.T.: You've seen the report; how much is accurate?
Woz: The author of the report I
received from you is wrong when he says no ROM
of large size was assembled by
hand. I could never afford an assembler for the
6502 which I bought for $20.
First,
I connected the 6502 to Static RAM and a video terminal of my own
design. I then wrote a short "monitor"
program to watch the keyboard and
display characters, both under
interrupt and polled. We didn't have 256 byte
PROMS, just 256x4 PROMS at that
time. I used two of the ones we burned for
calculator development at HP. The
first hardware bringup had a few frustrating
hours but I got it working with
polled keyboard that night.
I then
wrote a 256 byte "Monitor" program which watched the keyboard for
hex data entry (address:data data
data) and hex display and program initiation
("Run"). I got very good at typing
in hex and very very good at checking data
entry carefully, character by character.
I still can't read a credit card
number without a high expectation
of mistake, but I have good habits to this
day.
C.T.: Even Commodore's Vic20, which appeared years
later, uses
easy-to-design-for static memory IC's. What was behind
the decision to use
dynamic RAM?
Woz: I switched to dynamic RAMs
when someone at our club sold some for a
couple of bucks each. After all,
in 1975 these were the first RAMS cheaper than
core memory, the 4K dynamics. I
bought some 22 pin AMI ones, there were three
vendors.
Virtually
none of the other hobby computers around that time used dynamic
RAMs, I decided it was because
of the hobbyist technician sense of most fans I
met, they weren't true engineers.
Also, they were familiar with low-cost routes
like surplus stores where the favorite
RAM was the 2102 static. But for me,
designing for the dynamic RAM was
a piece of cake and I had fun at that which I
excelled, combining MSI chips in
clever ways.
Steve Jobs
asked what did I think of the Intel dynamic RAMs. I told him I
felt they were the best. Although
they required more driving circuitry for Row
and Column addressing (not just
a wire from the CPU for each address line) they
were in a smaller package. I had
for some time measured the worth of my IC
designs in terms of how little
board space they took, not how few chips. So
these 16-pin Intel chips, plus
some row/column multiplexers and timing signals,
actually took less board space
than the 22-pin AMI RAMS. And saved some
transistor clock drivers as well.
I felt
we could never afford any Intel chip, having heard how the 8080 was
$370. But Steve got a rep to give
us 16 samples. So the Apple I started with
the best possible RAM choice, even
before it was certain how things would go
with RAMs. When the 16K dynamics
appeared in the Intel compatible format we
were luckily on the right track.
C.T.: How did BASIC come to be part of the first Apple computer?
Woz: The book "101 BASIC Games"
made me think that the right higher level
language for these low cost computers
was BASIC, even though I'd never used it.
I referred to an HP BASIC manual
to develop my syntax diagrams. Hoping to be
noted as the first with a 6502
BASIC, I left out floating point. But what I
wanted was games, logic simulations,
puzzle solving, etc. and integers are
fine. Most of my college programming
was numerics done with integer only
operations for large accuracy.
I wrote
the entire BASIC by hand with no assembler. I kept thousands of
pages of my hand-done work from
day 1. The final Apple II Rom code was
entirely done by hand and is in
a notebook. The Apple II was the first product to
ship with 2K Roms from Synertek.
4K total of code. I built in a disassembler and
wrote a mini-assembler (no symbols,
only absolute hex or decimal addresses and
constants) which shipped either
in the Apple II or in a later Rom addition.
C.T.: What about peripherals like the printer interface,
cassette, and disk? I
guess these were all coded using an assembler; right?
Woz: By the time the Printer card
was done with it's 256 byte ROM I may still
have been coding by hand or we
might have gotten our first assembler. It's
unusual to this day that you plugged
in a printer and it attached itself to the
op-sys by means of a driver in
ROM on the printer card. True plug'n play.
Possible to this day but rarely
done (I've heard of some Newton exception).
The ROM
op-sys of the Apple II could direct output and input to any of 7
slots. Mass media was read and
write an entire cassette file at once.
The floppy
brought a very tight hardware design, coupled very tightly to
the lowest level access subroutines
which I wrote without an assembler. Randy
Wiggington wrote the "Read Write
Tractor Sector" routines, a step higher. Randy
and I began a full op-sys but we
farmed it out to Shepardson associates.
Needless to say, none of that was
done by hand!