Proceedings_of_the_First_West_Coast_Computer_Faire_1977 Proceedings Of The First West Coast Computer Faire 1977

Proceedings_of_the_First_West_Coast_Computer_Faire_1977 Proceedings_of_the_First_West_Coast_Computer_Faire_1977

User Manual: Proceedings_of_the_First_West_Coast_Computer_Faire_1977

Open the PDF directly: View PDF PDF.
Page Count: 356

DownloadProceedings_of_the_First_West_Coast_Computer_Faire_1977 Proceedings Of The First West Coast Computer Faire 1977
Open PDF In BrowserView PDF
$12.00
(or, if you
prefer : A
nickel more
than $11 .95)

CONFERENCE PROCEEDINGS
JIM C. WARRENj JR.
EDITOR

----·.... 115-17. 1977 · Sa.:n. £:ra.:n.cisco
.nmnlllH!r

Faire

of the largest convention ever held

Exclusively Devoted to Home & Hobby Computing

over 300 pages of conference papers, including:
(Topic heading. with approximate page counts)
Friday & Saturday Banquet Speeches (16)
Tutorials for the Computer Novice (16)
People & Computers (13)
Human Aspects of System Design (9)
Computers for Physically Disabled (7)
Legal Aspects of Personal Computing (6)
Heretical Proposals (11)
Computer Art Systems (2)
Music & Computers (43)
Electronic Mail (8)
Computer Networking for Everyone (14)
Personal Computers for Education (38)
Residential Energy & Computers (2)
Systems for Very Small Businesses (5)

Entrepreneurs (6)
Speech Recognition &
Speech Synthesis by Computer (14)
Tutorials on Software Syskems Design (11)
Implementation of
Software Systems and Modules (10)
High-Level Languages for Horne Computers (15)
Multi-Tasking on Horne Computers (10)
Homebrew Hardware (8)
Bus & Interface Standards (17)
Microprogrammable Microprocessors
for Hobbyists (18)
Amateur Radio & Computers (11)
Commercial Hardware (8)

plus ---Names & addresses of the 170+ exhibitors at the Computer Faire

Order now from:
Computer Faire
Box 1579
Palo Alto CA 94302
(415) 851-7664

Proceedings:
Shipping & Handling:

Inside Califo rni a:

An

~77 . 1.10b y Com p ut erl"aire

$12.00
~

($11.95, plus a nickel, if you prefer)
(Write for shipping charges ouside U.S.A.)
Pa ment must accom an
the order.
o a es ax
Paymen t m ust accom pany the order.

8~"xll" softbound book.

BOX 1579 , PALO ALTO CA 94302

000

(415) 851- 7664

The Digital Group comments on

DR. DOBB'S JOlJ'RNAL
(We were surprised and pleased recently to find these comments about Dr. Dobb's Journal
in the latest Digital Group Newsletter.)

po box 6528 denver, colorado 80206 (303) 777-7133

NUMBER 8

It is not very often that there is a journal/newsletter that the Digital Group
is able to recommend without some hesitation (and we get them all). However,
Dr. Dobb's Journal of Computer Calisthenics & Orthodontia is one pleasant
exception. Jim Warren, the editor, has put together a good concept and is
managing to follow through very well indeed. There is no advertising in the
Journal. It is supported solely on subscriptions. That also means that
manufacturers have zero leverage over the content of the magazine. The Journal's
primary purpose is to place significant software into the public domain and to
provide a communications medium for interested hobbyists. The approach is
professional and they are growing quickly.
(In case it might appear otherwise to some people, there·is no official link
whatsoever between the Digital Group and Dr. Dobb's Journal - we've taken our
lumps as appropriate just like everyone else when Jim felt they were justified.)
We think Dr. Dobb's Journal is here to stay and a publication that is a must
for everyone in the hobbyist world of computers. Don't miss it!

IN EVERY ISSUE
- UNIQUE SYSTEMS PROJECTS
"Realizable Fantasies" - details of
projects that have not yet been done,
but are within the limits of current
technology, hobbyists' expertise,
and the computer enthusiast's budget.
-INDEPENDENT PRODUCT
REVIEWS AND CONSUMER
ADVOCACY
DDJ staff now includes a three person
product & software evaluation group.
They perform independent evaluations
of products being marketed to hobbyists and publish their findings - good
or bad - in this subscriber-supported
Journal. Note that Dr. Dobb's carries
no paid advertising; it is responsible
only to its readers. It regularly publishes joyful praise and raging complaints about vendor's products and
services.

• COMPLETE SYSTEMS & APPLICATIONS SOFTWARE
User documentation, internal specifications, annotated source code. In
the first year of publication, DDJ
carried a large variety of interpreters,
editors, debuggers, monitors, graphics
games software, floating point routines
and software design articles.
• HOT NEWS AND RAGING RUMOR
Unusually fast turn-around on publisbing "hot stuff". Typically, an
issue will carry information and articles
received within two weeks of its
distribution. Also, we hear and print
lots of rumors belched forth by the
nearby "Silicon Valley" rumor mill.

Name:_______________________________________________________________________________

MORE REVIEWS
"THE software source for microcomputers. Highly recommended."
-Philadelphia Area Computer Society
The Data Bus. July. 1976.
"It looks as if it's going to be THE
forum of public domain hobbyist
software development.
Rating-* * *
Toronto Region Association of
Computer Enthusiasts (TRACE) •
Newsletter. July 9. 1976.

*.

"The best source for Tiny BASIC and
other good things. Should be on your
shelf."
- The Computer Hobbyist.
North Texas (Dallas) Newsletter.
May 1976

Addres~s______________--------------------------

Please start my one year SUbscription to
Dr. Dobb's Journal (10 issues) and bill me
for$12.

City/State'_ _ _ _ _ _ _ _ _ _ _ _ _ _..LJZip_ ___

In Canada add $4/year for postage.
European and Japanese rates are available
on request.

Mail to: Dr. Dobb's Journal- Dept.51-1263 El Camino Real - Box E - Menlo Park, CA 94025

Meet the most powerful
jJ,C system available for dedicated work.

Yet it's only $595:
·kit price

Here's the muscle you've been telling us. you wanted:
a powerful Cromemco microcomputer in a style and price
range ideal for your dedicated computer jobs-ideal for
industrial, business, instrumentation and similar applications.
It's the new Cromemco Z-2 Computer System. Here's
some of what you get in the Z-2 for only $595:
• The industry's fastest ,uP board (Cromemco's highly
regarded 4 MHz, 250-nanosecond cycle time board).
• The power and convenience of the well-known Z-80
,uP.
• A power supply you won't believe (+ 8V @ 30A,
+18V and -18V @ 15A - ample power for additional peripherals such as floppy disk drives).
• A full-length shielded motherboard with 21 card slots.
• Power-on-jump circuitry to begin automatic program
execution when power is turned on.
• S-100 bus.
• Standard rack-mount style construction.
• All-metal chassis and dust case.
• 110- or 220-volt operation.

DEDICATED APPLICATIONS
The new Z-2 is specifically designed as a powerful but
economical dedicated computer for systems work. Notice
that the front panel is entirely free of controls or switches
of any kind. That makes the Z-2 virtually tamper-proof. No accidental
program changes or surprise memory erasures.

widely regarded as the standard of the future. So you're
in the technical fore with the Z-2.

BROAD SOFTWARE/PERIPHERALS SUPPORT
Since the Z-2 uses the Z-80, your present 8080 software can be used with the Z-2. Also, Cromemco offers
broad software support including a monitor, assembler,
and a BASIC interpreter.
The Z-2 uses theS-100 bus which is supported by the
peripherals of dozens of manufacturers. Naturally, all
Cromemco peripherals such as our 7-channel AID and
DIA converter, our well-known BYTESAVER with its
built-in PROM programmer, our color graphics interface,
etc., will also plug into the S-100 bus.

LOW, LOW PRICE
You'll be impressed with the Z-2's low price, technical
excellence and quality. So see it right away at your
computer store--oi" order directly from the factory.
Z-2 COMPUTER SYSTEM KIT (MODEl Z-2K) (includes
4 MHz ,uP card, full-length 21-card-slot motherboard,
power supply, orie card socket and card-guide set,and
front panel; for rack mounting) .............. $595.
Z-2 COMPUTER SYSTEM ASSEMBLED (MODEL Z-2W)
(includes the above as well as all 21 sockets and card
guides and a cooling fan; for rack mounting) ... $.995.

FASTEST, MOST
POWERFUL ,uC
Cromemco's microcomputers are the fastest and
most powerful available.
They use the Z-80 microprocessor which is

Shown with
optional bench cabinet

Cromemeo·
inc 0
r p 0 rat e d
Specialists in computers and peripherals

2432 CHARLESTON RD., MQUNTAIN VIEW, CA 94043 • (415) 964-7400

Get updated •.. keep updated with

the leading .agazine in the
personal co.puter field

The personal
computer
age is here.

Home computers
.. . practical,
affordable.

Join Byte's 100 000 subscribers and caich up on
the latest developments
in the fast-growing field of microprocessors. Read
BYTE The Smalr Systems Journal tbat tells you
everything you want to know about personal computers, including how to construct and program
your own computer (30,000 BYTE readers have already built, or bought, their own systems and half
of these have 8K bytes or more).
You'll find our tutorials on hardware and software
invaluable reading, also our reports on home applications and evaluative reviews based on experiences with home computer products.

Large scale integration has
slashed prices of central
processors and other computer components. This has encouraged the development of new, low-cost peripherals resulting in more
hardware and software - more applications than you
could imagine, more opportunities for you. BYTE brings
it all to you. Every issue is packed with stimulating and
timely articles by professionals, computer scientists and
serious amateurs.
BYTE editorials explore the fun of using and applying
computers toward personally interesting problems such
as electronic music, video games and control of systems
for alarms to private information systems.

Please enter my subscription for:
One year U.S. - $12
0 Two years u.s.' $22
[-I Three years U.S.' $32
Canada or Mexico· $17.50
Europe (Air Delivered) - $25
[J Surface delivery to all other countries except Europe, Canada or Mexico· $25 (Air
delivery available on request)
[ I Check enclosed (Bonus: one extra issue)
Please remit in U.S. funds 1..1 Bill me.
[J Bill BankAmericard
[I Bill Master Charge

o

o

Card number _ _ _ _ _ _ _ _ _ _ __
Signature _ _ _ _ _ _ _ _ _ _,Name (please print)

n

Expiration date _ _ __
_ _ _ _ _ _ _ __

Address _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __

NOW-"
ONE comprehensive
reference
to microcomputersl

By Charles J. Sippi
IA PETROCELLI/CHARTER BOOK)

480 pages, 65 lIIus., $19.95

ORDER FORM
Hand screened quality tee-shirt. 50% polyester I 50%
cotton. Available in white, yellow, light blue and tan.
Microcomputer design in black and red.
Chest Size
1st Color 2nd Color
Price
Quan.
(Inches)
Choice
Choice
Each Package
y
5.90
22·24
plus
26-28
.85 postage
~ 30-32
per package.
34-36
A
In California:
38-40
please add state
42-44
$ 46-48
and local taxes.
Name ____________________ __________________

8

~

~

~

Addre" __________~--------------------CiW _____________ State _ _ _ _ _ _ Zip, _____
Mail your order to:
Applied Art, 852 Madonna Way, Los Altos, California 94022
Tel. (415) 948-0689
DCheck"
DMoney Order
Please allow 10 days for delivery.

L_____ ~-~----------------------~-----------

More than a detailed reference to every aspect of chip technology,
Microcomputer Handbook is also an important guide to decisionmaking about specific configurations (4-bit, 8-bit, 16-bit, or' even
64-bit "super machines"). Among its many down-to-earth features
is a first-rate glossary of terms that runs through every chapter and
spotlights everything from ACIA (asynchronous communications Interface adapter) to ROM simulator (a general-purpose debugging
tool). There's even a detailed analysis of the microcomputer as a
hobby item; problem solving;.game playing and kit assembling.
For the professional, hobbyist, and student, this book: • contains photos and diagrams providing easy introduction to techniques
and concepts • discusses read-only memories (ROM's and RAM's)
• examines the role of large-scale interation (LSI) in production-cost
reduction • presents cost-performance calculation for microcomputer systems • demonstrates the vast applicability of the microcomputer; its papacity for data storage, data coll~ction, and reducing operating time· ·and lists the latest "hobby type" microcomputers available, as wen as clubs, societies and manufacturers.
'-------10-DAy·FREE EXAMINATION - - - - - - -

InniI

VAN NOSTRAND REINHOLD

~ 7625 Empire Drive. Florence. Kentucky 41042

Please send me the MICROCOMPUTER HANDBOOK by Charles J. Sippi for 10 days'
free examination. At the end of that time I will either remit the amount of your
Invoice (including postage, handling, and my local sales tax) or return the book
and owe nothing. (Payment must accompany orders with 1'.0. box addresses.
Offer good in U.S.A. only, and subject to credit department approval.)
(PLEASE
PRINT)
Name
________________________________
_
Address ________________________~-------------City
State
Zip
SAVE! Enclose payment with order and publisher pays postage and handling. Same
return·refund guarantee. Your local sales tax must be Included with payment.

l
I

1
1
1
1
1

I'
I
I

-~~~~-----------------~~~

EXPLORE

INTERFACE AGE
* MONTH AFTER MONTH LOOK TO

INTERFACE AGE MAGAZINE FOR THE LATEST
INFORMATION ON THE DYNAMIC WORLD OF
PERSONAL COMPUTING.
• Use your personal computer for auto repair, work
bench controller, teaching machine, central infor~
mation bank and design test center.
READ INTERFACE AGE FOR THE LATEST ON NEW
• Control your small business with your own realPRODUCT INFORMATION AND TECHNICAL
time accounting and inventory control system.
BREAKTHROUGHS.
.
• Set your computer to turn sprinklers on and off,
• May's issue included inside the FLOPPY ROM™
manage a household security system, feed your
- a vinyl record which is played on a conventional
dog.
phonograph to enter tllis month's program in your
• Establish a recipe bank to plan daily meals and
computer.
generate its own shoppjnglist.
• Evaluate the stock market, set up r---~-------~------m
*ORjJER YOUR SUBSCRIPTION NOWI
•
~
gambling and probability programs.
12 Monthly Issues: $14 U.S., $16 CanadlilMexlco, $24 International .~I
Evaluate odds on sporting events and I
. horse racing. .
I Name
I

*

* ARTICLES
RANGE FROM THE
FUNDAMENTALS OF.COMPUTERS TO
LANGUAGES AND SYSTEM DESIGN.
APPLICATIONS INCLUDE BOTH PROFES$.IONAL AND NON-TECHNICAL.

I
I

~~

City
D Check or M.O.(U.S. Funds drawn on U.S. Bank)
Acct No.

State
ZIP'~.- - : _
D Visa Card n Master Charge
Exp. Dat....
e _ __

I
I

I
I
Signature
I
IL __________________
Make checks payable to: INTERFACE AGE MAGAZINE, P.O. Box 1234, Cerritos, CA 90701

~

choice line of
Personal Computing
80010--------NEW
CHOICES

CHOICES

MICROPROCESSOR BASICS (EIphick) Selection and application info
on 8 popular micro's, including the
8080,6860, F8, IMP, and 6100.
#5763-6, paper, $9.95

MICROPROCESSORS: New Directions for Designers (Torrero) " ... a
useful book for the electronics design engineer." BYTE MAGAZINE.
#5777-6, paper, $10.95

THE BASIC WORKBOOK: Creative
Techniques for Beginning Programmers (Schoman) "Hands-on" learning of problem-solving using a computer. #5104-2, paper, $4.25

FUNDAMENTALS & APPLICATIONS
OF DIGITAL LOGIC CIRCUITS
(Libes) "A great book for use as a
reference by people who are learning digital electronics." PEOPLE'S
COMPUTER COMPANY, #5505-6,
paper, $6.95

GAME PLAYING WITH BASIC
(Spencer) Over 50 easy-to-Iearn and
challenging games and puzzles for
your personal computer. #5109-3,
paper, $6.95

BASIC BASIC: An Introduction to
Computer Programming in BASIC
Language (Coan) " ... an excellent
introduction ... clearly written and
TELEPHONE ACCESSORIES YOU well-organized." COMPUTING RECAN BUILD (Gilder) Fully-illustrated, .VIEWS. #5872-1, paper, $7.95
step-by-step instruction on building
useful phone accessories at a frac- ADVANCED BASIC: Applications &
tion of the commercial cost. #5748-2, Problems (CoaA) "This one rates
paper, $3.95
well above average." DATA PROCESSING DIGEST. #5855-1, paper,
$6.95
:._.

-~

CHOICES
GAME PLAYING WITH COMPUTERS, Revised Second Edition
(Spencer) #5103-4, cloth, $16.95
COMPUTERS IN ACTION: How Computers Work (Spencer) #5861-6,
paper, $5.50
COMPUTERS IN SOCIETY: The
Wheres, Whys, & Hows of Computer
Use (Spencer) #5915-9, paper, $5.50
PROGRAMMING PROVERBS (Ledgard) #5522-6, paper, $6.50
PROGRAMMING PROVERBS FOR
FORTRAN PROGRAMMERS (Ledgard) #5820-9, paper, $6.50
COBOL WITH STYLE: Programming
Proverbs (Chmura & Ledgard)
#5781-4, paper, $5.45
MINICOMPUTERS: Structure & Programming (Lewis & Doerr) #5642-7,
cloth, $12.95
DIGITAL SIGNAL ANALYSIS
(Stearns) #5828-4, cloth, $19.95
FORTRAN FUNDAMENTALS: A
Short Course (Steingraber) #5860-8,
paper, $4.95

STANDARD DICTIONARY OF COMPUTERS AND INFORMATION PROCESSING, Revised Second Edition,
#5099-2, Available Oct. '77.
APPLIED COMPUTING: Putting Your
Computer to Work, #5761-X, Available Jan. '78.
PROGRAMMING THE PROGRAMMABLE CALCULATOR #5105-0,
Available Jan. '78

inpeJSonai
COmputing
bOoks!

AVAILABLE AT YOUR

DIGITAL TROUBLESHOOTING:
Practical Digital Theory and Troubleshooting Tips (Gasperini) #5708-3,
paper, $9.95
DIGITAL EXPERIMENTS: Workbook
of IC Experiments (GaS'perini)-#5713-X, paper, $8.95
COMPUTER MATHEMATICS (Conrad, Conrad, & Higley) #5095-X,
cloth, $13.95

HAYDEN BOOK la COMPUTER STIlE!
COMPANY• INC•• 50 Essex Street, Rochelle Park, New Jersey 07662

WE'RE DIFFEREII., ,
110 Ads
110 Fr~lls

Alleomem

,

6502 ASSEMBLY
PROGRAMMING

I

I!8r~G'm':~.rsERS

l

People's Computers is for anybody and everybody who wants to learn more about computers, how they work, and how to
use them. We aren't padded with color advertisements either; we're wall to wall with articles, listings, reviews, games. letters,
and interviews.
Read the whys and wherefors of different computer languages. Discover what a 'chip' is, how a 'gate' works, and what new
products are available. Learn to program from our series on easy-to-use computer languages. Find out about the uses of
computers and calculators in education. Each issue also contains useful programs, with extensive comments, that you can use
on your computer at home, at school, or at work.
There's lots more, and all for only $8 a year! To subscribe write: People's Computers, Dept 52,1263 EI Camino Real,
Menlo Park CA 94025.
.

people's computers
CONVERT YOUR IBM
SELECTRIC INTO A HARD
COpy OUTPUT TERMINAL!

5-100
COMPATIBLE

[ID[L£~~

BOARDS
Z-80 CPU
$35.00
2708/16 EPROM $25.00
PROTO BOARD $25.00
8k STATIC
$25.00
16/64 DYNAMIC
RAM $35.00
PLEASE ADD $2.00 SHIPPING PER ORDER.

ta

IThoco
PO BOX 91

cud 10

27~-~~71

ITHACA, N.Y. 14850

WITH OUR KIT, YOU CAN
ACTUALLY ADD A FULL SIZE
IMPACT PRINTER TO YOUR
COMPUTER - AT A PRICE
YOU CAN EASILY LIVE WITH!
NO MODIFICATIONS TO YOUR
TYPEWRITER ARE NECESSARY AND IF YOU DON'T HAVE ONE,
WE'·lL GET IT FOR YOUI

PLEASE CONTACT US AT...

ESCDN
1235 TENTH STREET
415/524-8664

BERKELEY
DEPT. J

Now There Are Three
• northern california
electronics news
published bi-weekly

• southern california
electronics news
published bi-weekly

• southwest
electronics news
published quarterly

Covering the States of
C.ALIFORNIA
TEXAS
OKLAHOMA
NEW MEXICO
ARKANSAS
LOUISIANA
No Other Publication Emphasizes Local and Regional
News in the above Six (6) States
Each paper Has its own News of People and Events in its own Area
plus National Product News, thus guaranteeing High Readership

published by

BENDER PUBLICATIONS INC.
LOS ANGELES PALO ALTO 1
DALLAS
HOUSTON
. P.o. Box 3631
260 Sheridan
.
6115 Denton Dr.
2990 Richmond
L.A. Ca. 90019

Palo Alto, CA. 94306 _

Dallas, TX 75235

Houston, Tx 77006

(213) 737-6820 (415) 326-8877 .. (214) 358-2311 (713)526-5381

Computer Music
Journal

Devoted to High Quality Musical
Applications of Digital Electronics.

The following topics are covered:
* design of real time playable instruments with controllers like organ keyboards, pressure sensitive
surfaces, joysticks, and new designs; * production of natural sounding quality of tone or timbre by
Fourier series like synthesis (with periodic or nonperiodic sine wave summation) or FM synthesis and
new methods; * circuit design of digital oscillators (any waveshape - up to 256 ultra low distortion
sine waves with independent control of amplitude and frequency - all from one digital oscillator)
controlled by a small computer; * high speed, high resolution multiplication; * review of hardware
components; * cost of hardware / quality of sound tradeoffs; * control of analog s~/nthesizers with a
small computer; * envelope generators (not just exponential or linear attack, susta i 11, and decay, but
any shape); * digital filtering; * high resolution, high speed digital to analog cOI1YL'rters; *.digital
reverberation and movement of spacial location with Doppler shifting; * analysis of acoustic instruments; * psychoacoustics; * generation of different musical scales including meantone, just, and equal
tempered (with 5, 7,12,19,22,29,31, or43 notes in each octave) tunings; * reviews of books about
computer music, acoustics of musical instruments, psychoacoustics, music theory and composition,
computer design, and electronics.
Computer Music Journal is published every other month by People's Computer Company, a non-profit,
educational corporation. For a one year subscription (6 issues) send $14 to Computer Music Journal,
PCC, Dept 51, Box E, Menlo Park, CA 94025.

~~1Y~
®lA\~® oorn

FREE!
and

with your
business
card or send
$1.00 (refundable on
1st order)

Dept. CF

MORE
Fairchild Tech. KitsTM
Clocks - Counters
Power Supply
Micro Computer
Function Generator
Send for our brochure TODAY

~ Vfr®OOOll

Box 321
Issaquah, WA 98027

68 pages of News about
the Amazing Technological
Breakthroughs in the
Mini-Micro Computer Field.
Catalog Includes:

Catalog offers items like:

• Reproductions of manufac• $279 ,Complete Computer Systure(s complete catalogs, intem for home use. Not a kit!
cluding Imsai's - normally
• Low cost new and used
$1.00.
peripherals
• Articles and news about Minimicro Computers.
• $2.00 Discount Certificate.
LARGEST CATALOG IN ITS
• Discounts up to 90% on Used
FIELD
Equipment.

A veritable revolution of new ideas about programming, new languages, hardware design, robots, video games, analog interfaces and new memory technology (just to name a few) presents the computer experimenter with a pleasant (if sometimes
frustrating) dilemma: How do I choose the best books? Where do I get them? What is available?
BYTE's BITS (BYTE Interface Technical Services, Inc) may be the answer. Bookselling is our main business: With the help
of BYTE magazine's editors, we screen the scores of computer books that come out every week and offer you only the best.
Books like:
Microcomputer Handbook by Charles Sippi
What To Do After You Hit Return ••. -PCC's First Book of Computer Games
Computer Lib·Dream Machines by Ted Nelson
Best of BYTE, Vol. 1
APL-An Interactive Approach, second edition, revised, by Gilman and Rose
Instant BASIC by Jerald Brown
How to Buy & Use Minicomputers & Microcomputers by William Barden
Practical M!crocomputer Programming: The Intel SOSO by Weller, Shatzel, Nice
The Acoustical Foundations of Music by John Backus
Computer Power and Human Reason by Joseph Weisenbaum
Fundamentals and Applications of Digital Logic Circuits by Sol Libes
A Dictionary of Microcomputing by Philip E Burton
Understanding Microcomputers and Small Computer Systems from Scelbi
Scelbi's "SOSO" and "6S00" Software Gourmet Guide & Cookbooks
The Don Lancaster Series: TTL Cookbook, Active Filter CB
TV Typewriter, CB,
CMOS Cookbook
Fingertip Math from Texas Instruments
Build Your Own Working Robot by David L Heiserman
101 BASIC Computer Garnes by David Ahl
Chess Skill in Man and Machine by Peter W Frey
Electronic Projects for Musicians by Craig Anderton
Digital Computer Fundamentals by Jefferson C Boyce
The Art of Computer Programming, Volumes 1, 2, & 3 by Donald E Knuth
An Introduction to Microcomputers, Volumes 1 & 2 by Adam Osborne
Some Common BASIC Programs by Poole & Borchers
Plus most of the reference DATA books from Texas Instruments

The computer
information
explosion
is here!

If you would like our catalog (a reference book in itself) crammed with information and descriptions of these books, plus many
many more, just fill out the coupon below and send it along with $1 (which incidentally will be applied to your first order) to
BITS, Inc, 70 Main St, Peterborough NH 03458.

•

Send to: BITS Catalog
BITS,lnc.
70 Main Street
Peterborough NH 0345S

III

Check Payment method:
_ _ My check is enclosed
_ _ Bill my Me No. _ _ _ _ _ _ _ _ _ _ Exp. date _ _ _ __
__ Bill my BAC No.

Exp. date _ _ _ __
_ _ BITS Catalog $1.00

Name
Address
City

Signature

State

Zip Code

In unusual cases. processing may exceed 30 days.

------------------------------------------------------ ------------------------------~

MINI-MICRO SYSTEMS is the
only monthly publication
devoted exclusively to the
fast-paced world of mini
and microcomputers:
• TECHNOLOGY AND PRODUCTS
• APPLICATIONS AND SYSTEMS
• PERIPHERALS AND SOFTWARE
• INDUSTRY AND CORPORATE
• BUSINESS AND FINANCIAL

If you are not currently receiving MINI-MICRO SYSTEMS magazine, write today
for a sample issue and a qualifying form to receive a FREE subscription.
MINI-MICRO SYSTEMS / 5 Kane Industrial Drive / Hudson, MA 01749

CAREER AND SPECIAL ASSIGNMENT OPPORTUNITIES
Rapid growth has opened up editorial opportunities at Mini-Micro Systems magazine - full time staff positions,
regional correspondents, and specialized subject assignments. If you are interested in any of this work, please send
a resume, along with a brief statement on how you would like to associate with Mini-Micro Systems, to:
Stanley Klein, Editor-in-Chiej, Mini-Micro Systems, 5 Kane Industrial Drive, Hudson, MA 01749

AND DON'T FORGET THESE ...
My Computer Likes Me - Albrecht.
BASIC to young

or old.

In an easY'going, conversational style, this 64 page workbook introduces

This classroom favorite is desiglJed for people with no previous computer experience

or knowledge of programming.

1972, $2.00.

Games With the Pocket Calculator - Thiagarajan and Stolovitch.
This book features interactive "group"
games to be played by small groups of young or old. An entertaining book for use at home; an educational
book to introduce students to the calculator and to build computational skills.
1976, $2.00.
Games, Tricks, and Puzzles For A Hand Calculator - Judd.
An entertaining and useful book for anyone with

PUBLISHER

P.O. Box 310, Dept. 15
Menlo Park, CA 94025

a hand calculator. The author covers many of your favorite mathematical games and recreations. Learn how
to perform calculator tricks.

1974, $2.95.

CALCULATORS/COMPUTERS Magazine This new magazine contains creative articles and materials
that will teach you about calculators anct computers. Each issue inclu:..•..:':".":.~
",.:l'~..'~.",,,",,
":)(\" ..:.t..
.:~...~....

.~....

....

:(?~~~Y?~i;i<'~:(~;
"ti" ~~

\\'/

l'

'r;

3,

\\"1
.... ,:

\\

:>::.~:::~;:~~:~~:.~~:~~:~~
.-..
.. . .-!t\..
¥.~.--~- ~

;

'.'

.i'i~~·:,;~r

~:

.

..

/.I,ii. \\~)'l',,\::..-

i("':':I;

~~¢}./~~~~~

i'()'; !\()~ !"V)~ iY)~

"}/',\:.. , .. '.'"", ,:.1.'.'."'.

. . . "so"1z~~;:;;1f}i:'~~i;i~

,'::',

";r~t'ir'~t

. '

It should be of particular interest to realize that
computer graphics-this 15-year-old infant-is
.:.' ".:.~.,::::,:: :'.':;::f'./ :'. ~.....: . ... ....
patently capable of bringing forth a totally
"fa"
.:~';~;;;,,,,i'::;;,,,,,:;~,;:;;~·;>~·.~;:;;:
different kind of visual experience as unique and
:'. ~ .. ~ ~ ~H~.:· .. :{~! ~ ~.' ~: {~~}.:.:".~.~.~~r:
riotously enjoyable-much cheaper-more .'~N:~~{f~~r~<{~~:,~:
.:::~;> ..':::.>
..:.......
'{'/ :": }{:, ':::\
energy/materials intensive than the Chinese, preChristian invention of fireworks.
.)h. . . .
'\i~:

.Jh. . . . ;,·

;~~.;l/ ;~J:iji~~

· .. .' .... ,.

.

i.;~:;~·>L.~;·s,;~gl<,}~,i;,;
::·;:~:::~::::~::?::7::~::~~:~.~~:::~.:~~·;:~?::;:.~.·?:::;
'.~.

.' ". '.

· .'... ~. " .
· .

'.~:
~

..

.~'

'.

'

..

.
..:;.' . ~

~'...'

>: :~: : ~ :;i.: L;.;i;:.: : ;:,~:;:i: :

BIOGRAPHICAL SKETCH
John Whitney's growing reputation as a pioneer with
\T!'!:;:~?1'!::::;i:~l!l::1i~!!!
applications of the computer in visual art was advanced --:)ff~'Wr
another step with the completion of his film Arabesque
o
:~.,:.,!.:•,.,._
.
y;
"me" ':H:"
..::
last year. The film has received high honors in the U.S.,
'.. '.'
:?\
.... ..: .. ::... "':::/': \;;/:' \::.:'
and abroad; including Iran where its relation to the -'/)J\\\,~~jJJj"-\~
.,..~:: :.' ,.,.: ::::<..',;., •..~~:~~(.:.;~;j~::.::;. . .
traditions ofIslamic pattern was acknowledged. John's
thirty-seven year "obsession" with the role of time and
::~;>.:~?o:~:~;,:J"(\,~.~:.~,:.?
movement in visual art led to computer graphics long
:~:~~.
:: '.
'~;.
'
.:.'
before that technology was accessible, or practical.
: ' . . ~; t :~;:
What for years was only an obscure experimental study
:::
.;;
.:::.:
.: ...... :.....
is just now evolving into an accepted and recognizable
......,: ... :.:........ .. :....::. ...: ......:.-.
"re" ······:.:..:;;,:··:::.:.u;.~.... ·::,.w:~::··~?o:~
fine art attracting many young artists. It is a field ......
which is of growing interest to the personal computing
'y ::{ :~:'
. experimenter. John Whitney's part in bringing about
t ~i ~:
these developments is well known.

;1;?!'.,%:

'

)~.

.";-

:.:

"

...

"

~)

.......

'

:::::;,. ,;

........ ..

".

;:~ :;: ,;:; ; : ;:.:~:; ;:~;

.~.···,:~:t(:,:::··,~~.:If::.:~··;:.:~::.::·~::x·

y

FIGURE 1.
Each of these frames might represent samples
approximately one second apart out of 8
smooth continuous action sequence totaling twelve or more seconds in length. Read
from bottom to top.

"do"

'\

X'

~

1.

i

"

...

::

':::;

'.'
":.,'.:::

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 17

THE 1940'S: THE FIRST 'PERSONAL
COMPUTING ERA
Henry S. Tropp
Professor, Mathematics
Humboldt State University
Arcata, California 95521
ABSTRACT
The beginning of the modern computing era (generations
-1, 0 and 1, c. 1935-c. 1955) is best chronicled by observing
the efforts and determination of certain key individuals. One
of the workers in the immediate post-WW II period characterized the machine architecture with a comment that he could
look at the design of a new machine and identify its geographic area of birth and, in many cases, the individuals involved.
Nelson Blachman's 1953 ONR "Survey of Automatic Digital
Computers," listed 98 'machines' which had been completed
or were under construction by 75 different companies, universities, or governmental agencies. The majority of them were
one of a kind, although in many cases the designers indicated a
willingness to make plans and drawings available. This stamp
of individual philosophies and the willingness to share information pervades this early environment where few could see
the future explosion of information processing (the 'computer
revolution') that we are still experiencing. In this talk, I will attempt to describe some of the efforts, frustrations, and achievments of a few of these individuals.
Anyone who looks up the word "computer" in a dictionary
published before 1955 will discover that it refers to a human
being. That is, "one who performs a computation." Indeed
this is an accurate characterization of the term up to the early
1950's. The early electronic devices were generally called Calculating Engines or Giant Brains.) Computing was primarily an
individual, or occasionally a team effort. The development of
mechanical devices by Schickard, Pascal, and Leibniz paved
the way for desk-size calculating devices, but they didn't substantively alter the computational environment. The construction of tables to facilitate astronomical, astrological, navigational, or mathematical calculations can be traced back at
least to the early Babylonian cuneiform tablets. Babbage's
19th Century efforts to construct calculating engines, is well
known, as is his inspiration from the Jacquard Loom for
punched-card input and Lady Lovelace's concept of what we
now call programming. Due to his failure to complete a working model, however, his ideas had no effect on the computing
scene.
One of the early efforts that had a major impact on the
20th Century computational environment was Herman Hollerith's construction of a tabulating device, which he developed
for use in the 1890 census. This punch-card tabulator led to a
variety of mechanical accounting machines and some individuals conceived of ways to use them as computational aids. For
example, in the early1920's, Henry Wallace gave a course at
Iowa State College, using an IBM key-driven machine to calculate correlation coefficients. In the same decade, L.J. Corie (in
England) used accounting machines for scientific calculation,
and the construction of mathematical tables. In the latter part
of the 1920's, Ben Wood established a statistical laboratory at
Columbia University, using IBM donated equipment. Out of
of the 1920's, Ben Wood established a statistical laboratory at
Columbia University, using IBM donated equipment. Out of
Ben Wood's experience, and again with donated IBM punched~

card equipment, Wallace J. Eckert established an. astronomical
computational facility, also at Columbia. Another computational development, in the 1920's, was Vannevar Bush's first
analog computer. These developments, along with a growing
electronic technology that included the development of radar
and television prior to WW II, established a technological basis
for what· is now called the computer revolution. By the mid1930's, the capability was there, but some of the key ingredients were still dormant.
Prior to WW II, there was no widespread interest in developing a capability to do large scale computation. A few individuals may have felt a personal need for such a capability, but
there is no evidence that governments or commercial firms saw
any value in generating the time and funds necessary for such
developments. At NCR and IBM, for example, devices were
built shortly before WW II which performed arithmetic operations at electronic speed, but management of both companies
showed little interest in pursuing this avenue. Two specific
examples will illustrate this attitude in two different environments: a research laboratory and a major university.
At Bell Laboratories, George Stibitz was employed in 1930
as a research mathematician. One evening, in 1937, in the kitchen of his home, he arranged a few relays on a small piece of
plywood in order to demonstrate a mechanical procedure for
adding one-digit binary numbers. At the time, Stibitz was
concerned with switching network problems. At Bell Labs,
computers were available to perform necessary calculations,
which consisted in great part of adding, subtracting, multiplying and dividing complex numbers. These computers
consisted primarily of about a dozen women using pencil,
paper and desk calculators. When a fellow employee suggested to Stibitz that the computations might be accelerated if one could figure out someway to hook two or three
desk calculators together, he proceeded, instead, to use his
binary relay device to design a circuit that could multiply and
divide complex numbers. This generated enough interest so
that a group of Western Electric engineers, headed by Sam
Alexander, completed construction of the Complex Calcula- .
tor in 1939, capable of all four arithmetic operations.
The Complex Calculator (later renamed the Bell Mod I),
had some unusual features. When it went into operation in the
Bell Labs Building at 463 West Street, N.Y.C., it became the
first remote access computing system in existence. The
calculator was kept in a locked room, with keys available only
to maintenance people and custodians. Access was by means
of one of three teletype keyboards in the building. (Not
time-sharing- -only one at a time.) This was dramatically
demonstrated at the summer meeting of the Mathematical
Association of America, when, in September, 1940, Dr.
Stibitz described the device and attendees were able to
put problems on the keyboard located in a hallway outside of the lecture hall which was connected to the calculator in New York. That is, access over a long distance data
link. Its speed is almost embarrassing today, 30 seconds to
find the quotient of two 9-digit complex numbers, a factor
of about 3:1 over desk calculators. But is has a few more
important advantages: The excess-3 checking code made errors
impossible. If a relay failed, it stopped; also, continuous,
fatigue-less operation.
- With-the completion of this Calculator, Stibitz approached
management with the suggestion that an investment of

FIRST COMPUTER fAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

$50,000 would most likely produce a large-scale general purpose device using the same ideas and technology. The proposal
was turned down essentially with the response "who wants to
spend $50,000 just to be able to do ordinary computations a
bit faster and easier?"
World War II provided a response to this question, particularly with the need for ballistics computations. The computation of one ballistics trajectory requires about 750 multiplications. For one trajectory, this will require about seven hours
of human desk calculator time. The time factor is not significan until you have to do large batches of 100 or so. Here, the
relay calculator was capable of a speed factor of about 10:1. A
survey of 100 trajectories could be calculated in about 24
hours, as opposed to 700 human hours, with built-in checking
reliability and 24 hour-a-day, 7 days a week performance. During the war, Bell Labs constructed the Mod II (Relay Interpolation, 1943), the Mod III (the Ballistic Interpolator, 1944),
the Mod IV (Mark 22 Error Detector, 1945); and after the
war, the general purpose Mod V (one for NASA, 1946, the
other for Aberdeen, 1947), and the Mod VI (Bell Labs, 1950).
These calculators had not only error detecting codes, but some
had error-correcting codes, floating point, check signals, and
many features which enabled it to run unattended for many
hours. Although I tend to classify these electro-mechanical
relay computers as generation -1, many of their features didn't
appear in electronic machines until generation 2.
A second development in the U.S. occurred at the same
time that Stibitz suggested using relays to perform calculations in a binary mode. It occurred at an institution where, unlike Bell Labs, one would expect, and indeed find, little interest" in computational capability: Harvard University. In 1937,
Howard Aiken was completing his doctorate at Harvard where
his thesis on the laws of space charge had involved him in 18
months of laborious hand calculations of nonlinear differential equations. In response to a query after his oral examination about his future plans, he said he hoped to make it possible for future scientists to avoid his grueling computational
experience. In fact, he had already written a first draft of a
proposal to perform sequential computations in an electromechanical mode. His efforts to bring his proposed device
into being resulted in a good deal of hostility among the
Harvard faculty and administration. But with his natural
stubborness, Aiken persisted until, with the aid of colleagues
Harlow Shapley (Astronomy) and Ted Brown (Business),
he was able to see the president of IBM, Thomas Watson, Sr.
Watson agreed to have IBM assume the costs and assigned
engineers Claire Lake, Frank Hamilton and Ben Durfee to
collaborate with Aiken. Despite delays caused by WW II,
the Automatic Sequence Controlled Calculator (Harvard
Mark I) was installed and running at Harvard in 1944. From
then until it was dismantled in 1959, the Mark I performed
needed calculations for the defense department, the atomic
energy group, as well as the computation of many volumes
of Bessel functions. From the standpoint of speed, it was in
a class with the Bell relay calculators, both soon to be hopelessly outclassed by the electronic machines. From the standpoint of reliability, accuracy and negligible down-time, it had
no electronic rivals until the electronic 2nd generation machines. The technology used in the Mark I was not new, most
of it had been used and tested through at least a decade of
various applications. From an architectural standpoint, it
was designed to do operations in a sequential manner in much
the same way that Howard Aiken would have solved his problems with pencil and paper. Its 60 foot rotating shaft, translating horizontal rotation to vertical, was reminiscent of a
power plant generator. Not too surprising when one knows
that Aiken was a power engineer for the Wisconsin Gas Company from 1923 to 1935.

PAGE 18

However, ,the most significant impact of the ASCC is more
subtle than 'the machine itself. Howard Aiken felt that it was
his duty to spread the word. The visitors log of the Mark I installation shows the wide range of scientific,. technical and gov·
ernmental individuals who came to view and learn. The Harvard computational facility became a center for people interested in machine-oriented computation. Many graduate students who used Mark I at Harvard are recognizecl leaders in the
computer environment today. Aiken organized two conferences (1947 and 1949) in which hemade it possible for everyone
interested in automatic computation to present papers or to
come to learn what was going on. The atmosphere w'as an open
one of sharing ideas and disseminating the experiences of
everyone interested in assisted computation. Aiken also traveled extensively to Western Europe, and his approach and
philosophy are evident in early European machines. The Mark
I was followed by the electromechanical Mark II and the electronic Marks III and IV. Aiken was a strong-willed individualist with tremendous vision. But even he had his visionary limitations. When one of his colleagues suggested improving
the speed of the printer, he replied: ''Why would we want to
print faster than someone can read.?"
There were other computational devices suggested or constructed in the late 1930's. Konrad Zuse's Model Z1 was completed in 1938, and his fully operational relay calculator, the
Z3, was completed in Germany in 1943. At Iowa State College in Ames, John Atanosoff attempted to build an electronic device that would solve a system of 28 equations and 28
unknowns by Gaussian elimination at electronic speeds. Although this device was never operational, recent litigation has
revived the details of the effort.
The operational beginning of the electronic digital computer began with ENJAC. (Colossus, an electronic cryptanalytic
device built in England in 1943 was classified information
then and is still primarily classified today.) The literature
is full of this event and the role played by John Mauchly,
who conceived of it, J. Presper Eckert, who was associated
with him in its design and implementation, Herman Goldstine, who played an important role in getting the project
funded by Aberdeen, and other individuals like John Brainerd, Arthur Burks, etc. Instead of repeating this part of the
chronology, I would like to focus on the summer of 1946.
The event: A summer course at the University of Pennsylvania's Moore School of Electrical Engineering. Subjects: ENIAC
and the proposed EDVAC. Here, as at Aiken's later Harvard
conferences, an attempt was made to provide a forum to
present all known information on electronic computers,
using the only one known to exist and to discuss the design,
operation and architecture of EDVAC, the first machine
into which was to be incorporated the capability of modifying its instruction. The goal of this program was to share
all that the builders and designers of ENJAC and EDVAC
knew, and to help others who might want to construct
their own devices. One of the invited participants was Maurice Wilkes, from Cambridge University. Although he arrived
a couple of weeks late, due to difficulty in getting a ship from
England, by the return voyage, Wilkes was already designing a
scaled down version of EDVAC, a machine which became operational in 1949, with the acronym EDSAC. Information
(and people) in this period seemed to flow freely. The most
general directional patterns were from the U.S. to England
and England to U.S.; the eastern U.S. to western U.S. and
to western Europe. John von Neumann's project at the Institute for Advanced Study sparked parallel projects at Oak
Ridge, Argonne, the University of Illinois, Rand Corporation
and Los Alamos (to name only a few). In fact, some of lAS
Projeny may have gone on the air before Von Neumann's
machine at Princeton.

FIRST COMPUTER FAIRE PROCEEDINGS

The U.S. west coast computational environment is an interesting illustration of this phenomena to sharei'nformation. The
decisicn by IBM to manufacture the defense calculator in
1951 (the IBM 701), led to a group of individuals at places like
Rand, Northrup, Hughes, etc., to informally organize in order
to be able to share information and to avoid duplication of
effort in the use of the 701. The informal gathering led to a
slightly more formal one, DCA, (DCA = Digital Computer As~
sociation) and later, with the announcement of the IBM 704,
to SHARE. As, one of the key organizers of SHARE put it:
"Isn't it disgraceful thai on the 701 there were 18 machines,
and there were 18 assemblers. Let's invite every person who
has an order in for a 704 to come and talk about, number one,
how can we reduce from 18 assembly programs to one, and,
second, anything else of interest."
These brief sketches of the role of the individual in successfully achieving a desired goal in a hostile environment, the
general enthusiasm of a small group of early practitioners to
spread the word and the open exchange of ideas characterize
generations -1, 0 and 1 of what is now called the computer revolution. But the growth of im industry from non-existence
three decades ago to one where the number of computers
(excluding pocket calculators) has grown to 350,000 or
400,000 has to have exerted a change on this environment.
The small number of individuals involved from 1947 to 1954,
their constant dialogue with each other, visitations, mutual
help gatherings, enthusiastic participation by everyone from
the project head to the people on the benches, characterized
the era of the birth of the electronic information processing
era. Many of the one-of-a-kind machines of this early period
carried some architectural signature of its builders' attitude
toward computational design. One of the pioneers claimed
that he could look at a new machine and identify in what
geographic locale it was built, and often even identify some of
the people involved in its design. Jim Warren, in a recent issue
of Dr. Dobb's Journal characterized this in the following way:
"The sharing of ideas is useful in that it allows us to stand on
one another's shoulders, instead of standing on one another's
feet. But, there is something else shared that is of at least equal
value: the enthusiasm and intellectual excitement." The computer hobbyists in their enthusiasm and excitement appear to
have re-introduced those elements which were prevalent before 1954 back into the computer environment. Who knows
what the spin-off of this rebirth will be?

BOX 1579, PALO ALTO CA 94302

PAGE 19

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

THOSE UNFORGETTABLE NEXT TWO YEARS
TED NELSON
Here we are, at the brink of a new world. Small computers
are about to remake our society, and you know it. I am supposed to tell you what is about to happen in the near future.
But to understand the future we must understand the
past: most people don't realize what has happened. What is
astonishing to me is not SO much the future as the past, and
the things that are going to surprise people - - the sudden appearance of little helpful interactive computers everywhere - should be less surprising than the past circumstances that
have delayed all this till now. .
We have inherited some silly myths about the nature of
the computer; and these myths are miraculously shared by
both computer-lovers and computer-haters. They are the
silly and cruel myth of depersonalization - - that computers
demand impersonal behavior and rigid unpleasant rules, not
to mention punch cards; the myth of efficiency , that using
computers to depersonalize ways is somehow good; and the
myth of technicality, that to criticize or try to appreciate
computer systems is beyond the competence of the laymen. These vicious myths, and more, imprison us all.
Many computer people seem content with these myths
and -- intentionally or not -- keep them going, dealing with
non-computer people ominously and unhelpfully, with hardheartedness, scientific pretension and scary lingo.
We all know that there are those in the computer profession who enjoy pushing other people around, who hide
behind the computer and say the pushing around is the computer's fault. The computer is functioning as a mask. There
are even those with long hair who teach computer science
and talk about computer liberation, who yet enjoy mystifying and confusing people and leaving them helpless. Worst,
I regret to report that there are actually people who enjoy
pushing people around, and intimidating them, in the amateur
computer field.
C.P. Snow, the English author, has spoken of what he calls
"the two cultures" of educated people, one being those
scientifically trained and the other being the humanists.
Ordinarily these two factions do not speak to each other,
each regarding the other side with distrust and disgust. Computer people continue this tradition. Many computer people,
indeed, seem to half-desire some kind of a showdown fight,
where they are going to rub the humanists' nose in computer jargon, possibly to get even for having had their spelling
corrected.
Do you think it's not as bad as that? Consider the problem of lower-case lettering for display and printout on computer terminals. Some computer people feel there is no need
, for lower case. This is a slap to all lovers of the written word.
If you have no lower case on your terminal, it assures that no
person with a literary background will ever use your text
editor.
Or consider an argument that recently occurred in one of
my seminars. A student of mine is planning to implement a
text system along certain lines I advocate. But he insists that
the user, typing in text, and each typed sentence with a special character, such as the caret. When I pointed out that standard practice for both stenographers and authors is to delimit
a sentence with two spaces, he was indignant. "I don't want
to have to type two spaces after a sentence!" he declared, preferring instead his caret; it did not matter to him that literary
people would hate the caret more than he himself hated the
two spaces, and so they wouldn't use his system.
. -With-thesepoints'-have intended to highlight several problems. Computer people are not all of them prepared to honor

PAGE 20

or appreciate the wants and needs of others, especially those
with different points of view. And this has had, and will continue to have, curious repercussions. Old style computers are
about to collide with new style computers, and many people
will get caught in the middle.
Here is what has happened so far. In January of 1975,
MITS announced the Altair computer kit for $400. That
seems a long time ago: in the two years since then, so much
has happened. To the surprise of some people, the Altair
computer took off like a rocket. Certain other people, who
had been almost ready to do the same thing (they say), were
galvanized into action. More brands appeared.
The next major event was Lois and Dick Heiser's opening
of their Computer Store in Los Angeles. "Now why didn't I
think of that?" was everybody's first reaction, followed instantly by, "I still could."
So here we are. Perhpas twenty thousand dinky computers, perhaps more, are in the hands of small businesses and
hobbyists, too, have visions of becoming small businesses.)
Some three to five hundred computer stores are open, or on
the verge of opening, or in some other stage of near-existence.
And throughout the country are the cottage computer industries: people making accessories, software, teeny mainframes.
Catering to these mad folk are half a dozen -- probably a dozen by the time this comes out -- counterculture and hobbyist
computer magazines.
Now, as far as I am concerned these developments are no
surprise at all. The surprise is that it took so long to get
started.
Certainly the computer-on-a-chip could be seen coming
ten or twelve years ago. Now some people call them "microcomputers," But nothing could be more absurd than calling
them "microcomputers:" a radio is still a radio if it is built
from integrated circuits, not a "micro-radio;" a tape recorder
or a hearing aid or a telephone is not a "micro-tape-recorder"
or "micro-hearing-aid" or "micro-telephone" even if it is
built from integrated circuits; and a computer is a computer
whether or not it is built from integrated circuits. The rea}
meaning of calling it a "microcomputer" is this: the word
is a face-saving device for people who did not see any of this
coming, who had their heads in the sand. Calling these things
"microcomputers" implies that they are something new under the sun, a technological surprise which could not possibly
have been predicted, so the term absolves the speakers of
having been fatheaded in expecting the status quo to continue. The surprise is all in their minds.
The dinky computers, as I prefer to call them, are widely
belittled in the regular computer industry. But our fundamental 8080 chip, suitably supported, is approximately comparable to the 1401, which was the workhorse computer of
American business in the early sixties. For many purposes
the 8080 is more than adequate. It's always nice to have
more computing power, but then it's always nice to have
more computing power. There will come a day when the
power of a big PDP-10 will seem inadequate for a personal
computer.
- For now, though, the dinky computers are working magic
enough. They will bring about changes in the society as radical
as those brought about by the telephone or the automobile.
The little computers are here, you can buy them on your plastic charge card, and the available accessories include disk storage, graphic displays, interactive games, programmable turtles,
that draw pictures on butcher paper, and goodness knows
what else. Here we have all the makings of a fad, it is fast
blossoming into a cult, and soon it will mature into a fullblown consumer market.
FAD! CULT! CONSUMER MARKETI The rush will be
on. The American manufacturing industry will go ape. The

FIRST COMPUTER FAIRE PROCEEDINGS

American publicity machine will go ape. American society
will go out of its gourd. And the next two years will be unforgettable.
SCENARIO
The exact sequence of events is of course hard to predict.
The general outline, however, is not mysterious. Let me
try to fill in some of the basic things I think are going to
happen.
In 1977, tens of thousands of computers will be sold to
individuals; the current demand level, with machines sold
as fast as they come into stock, will probably continue for
some time, possibly several years for the better machines.
The sales of the S-100 machines, like Altair, Imsai, SOL
and Polymorphic will continue strongly. If you've followed
the computer field for any length of time, you know that
standardization is generally established on a defacto basis
by whoever gets someplace first. it should have surprised
no one that the original Altair system of interconnection
at once bacame a standard. Many engineers have said, "Aw,
I could do better," and proceeded to try, but that has been
quite beside the point. When there is a standard way to do
something, the possibility of a better way is often academic.
So we have seen a mass movement: Processor Technology,
Cromemco, et al. have built boards for the Altair, and then
their own computers on the same system of interconnection.
Whereas little computers like the Sphere, the Jupiter Wave
Mate, the Digital Group, indeed MITS' own 6800 machine and conceivably the Heathkit computer that is to come -have ignored this standard at their peril, attempting to create a non-interchangeable market.
So far these little computers, from little manufacturers,
comprise the "amateur" market. But next we will see the
bigger manufacturers come rolling. Large-scale manufacturers will enter the game; some are already talking about
building millions of units. And already there are "video
games" actually containing a computer, such as the Fairchild for $150.
Soon the media will hear about it, especially magazines
and TV news. They will go out of their minds, and give
home computers the full-scale "mysterious phenomenon"
treatment. They will make all those incredibly stupid jokes
over and over, about "thinking machines", and about 1984.
But few of the journalists will bother to find out what computers are really about until everybody else knows already.
The funniest aspect of the press coverage will be, of
course, that everyone they talk to will have a different story;
it will be impossible for reporters to converge or focus. Some
of the people interviewed will tell the press that home computers are an extension of ham radio (this has actually happened); others will seem to say it is an outgrowth of the
space program or of video games, or of the New Math, or
of pocket calculators, or who knows what. And they'll all
be wrong because they didn't see that computers were for
people in the first place.
After the m·edia, of course, the stock market will react. Wall
Street will behave as Wall Street always behaves in the face of
a new consumer fad, and public corporations involved in home
computing will lurch upward in price.
About this time it will become clear that home computers
are actually as important as people thought video disks would
be. Many people will try to get on the little-computer bandwagon in inappropriate ways. The cable TV operators, for instance, will blunderingly keep trying to set up some sort of
a connection to home computers. There isn't any -- except
that they could use dinky machines to generate little animated cartoons and logos.

BOX 1579, PALO ALTO CA 94302

PAGE 21

Now the really big manufacturers will come in. Philco and
Zenith, Sylvania and Magnavox and the Japanese TV ccmcerns
will bring out their home computers. Then will come the metoo electronics packagers, with a dazzling array· of brand
names offering small silly variations.
One problem for the larger organizations is that their decision processes are perilously slow: since the home computer
market will change drastically every six months, the big slow
companies may never get off the ground. They will be continually deliberating over how to compete with last month's
product, and being dumfounded by the next development.
However, some big manufacturers will swallow the little companies that are off to a good start, paying lots of money for
the privilege.
While there will be many more small accessory and software houses, it will be much harder for the second generation
to make it big; their best strategy will be to target and specialize.
Certainly the maturing markets for dinky computers will
become ever more differentiated. Beginners' systems, whatever the chip, will usually come with Basic and game cassettes.
Office-standard systems will probably become stabilized on
the computer-with-screen, like the SOL, Sphere or Intecolor;
but interchangeability will be an important feature, possibly
favoring S-100 machines. Graphic systems will become popular among artists and doodlers and playful people, and indeed among the well-to-do these may become a sort of animated decoration. (We will see themturning up all over retail stores, with sales messages and animated cartoons.)
Literary systems for readers and writers will include disk,
high-capacity display, and high-power text manipulation and
filing programs -- of a type, I believe, that nobody has seen
yet. Baroque and snazzy systems will come out for technical
showoffs: like the computers that have one of every processor chip, or multiple Z80's: some with lights and switches
by the yard, others with lots of "computerish" lettering,
military styling, futuristic spheroidal boxes and so on. Finally, perhaps most important, we will see the "nothing is too
good for my kid" configuration, with graphics, extensive
text handling, programmability and large memory; possibly
musical input and output as well. (Kay's Dynabook, at Xerox
Palo Alto Research Center, is the exemplar of this class -even though it may never appear commericially.)
As to manner of interconnection, alas, there will be all
too many separate hardware worlds. There· will be the evergrowing S-100 world, of Altair, Imsai and so on. There will
be the nonstandard world. Some individuals will actually
buy high-class hardware out of the professional computer
world, which will be nonstandard as far as the hobby world
is concerned. (In the next two years it is not clear the entrenched minicomputer manufacturers can lower their prices, or adjust their· thinking, enough to compete.) Then
there will be the other chip computers, packaged with incompatible accessories, such as the Intecolor. Then there
will be the discount packaging world, probably with more
systems of incompatible accessories. The incompatibilities
will be regrettable, but the marketplace will eventually
punish this approach.
There willot Course be a variety of other oddly-interconnected computer configurations. Certainly we may soon expect the TV with built-in computer. We may see the "smart
hi-fi," a multi·room, mUlti-ttuner, bus-oriented programmable.
system. And don't rule out the computer-in-a-van, with one
monthly payment for both transporationand hobby.
Though it would be a good thing, it is doubtful whether
any later and better chip computer will attain, in the next
two years, the universitality that the 8080 (and the Altair
bus) have enjoyed. ,We ought
to have a. 16-bit amateur ma..
'

".

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579. PALO ALTO CA 94302

chine, at least one allowing relocatable programs, the LSI-11,
chip Nova and TI 990. But the central positiotl'M ttle'SOSO
will be hard indeed for another unit to capture.
In the software area, meanwhile, we will 'go from confusion to chaos: but perhaps after about two years it will begin to straighten out.
Utterly disparate software packages will' appear, all proclaiming themselves to be Everything You Need. (There is
one advocate of Tiny Basic who says numerical input is
sufficient for "all software".) Programs will appear embodying the greatest possible variety of viewpoints.
There are many ways of thinking of software, and in
the hobby world some of them are weirdly simpleminded.
Many hobbists come out of electronics, and insist on thinking of a computer as Ita collection of switches." This is
true in the same sense that a human being is Ita bag of chemicals." But some hobbyists think, on the basis of this impression, that programs are little things, like ten or fifty lines
long; like a binary-to-clecimal conversion routine. From that
follows the hobbyists' mystification by, and in some cases
objection to, the copyrighting of programs.
It would seem peculiar that people who claim to have
compunctions about shoplifting, or the looting of parked
cars, nevertheless proclaim - as some computer hobbyists
do -- that they have a perfect right to violate others' property rights in respect to copyrighted software. But we can
understand this view slightly better if we consider that many
electronics-oriented amateurs think programs are small and
insignificant -- of the level of complexity, say, of a limerick.
Many programs are short and simple. And many enjoyable
computer games run in less than a hundred lines of BASIC.
But tomorrow's home programs are not going to be just
little programs. The important software of tomorrow will
be immense turnkey systems of programs, comprehensive
and interactive, for a broad spectrum of business and personal uses.
New business systems will wholly reverse the computer
business systems of the past. The business systems of old,
based on batch processing, created strange .work procedures:
transactions had to be keypunched and sent into the computer in long trains, to be processed one at a time by the
same program. This created dehumanizing job definitions,
such as keypuncher. Now, however, clerks will be able to
process business paper one piece at a time, in the order of
its arrival, and businessmen will discover themselves in control of their firms once again. But the programs will be big.
There will also be large-scale programs for gaming and
simulation and animation will likewise be swapped and overlaid from disk.
The new big software packages will have to do a lot of
storage management - overlays, swapping and housekeeping.
Once such a system is started, it will not need reloading, it
will roll and undulate from one function to another at the
user's whim, swapping and storing (fail-safe) and displaying
interactively. These features do not come easy; they involve
a lot of programming.
Now not everybody may want or need such extensive services. Some hobbyists, indeed, may also enjoy the ritual of
"running separate programs" -. toggling in bootstraps and running in loaders and programs for each new activity in an anachronistic and playful simulation of batch processin~.
But the big and sophisticated software will be to the little
toy programs as War and Peace is to the limerick. The really
good systems.will be unique and distinguished, even works of
art. People Will devote months and years to th,eir creation and
they will have considerable commercial value ~- being lea~d to
businesses, say, for hundreds of dollars a month.
Speaking as a prospective supplier of such advanced soft-

ware, the' amateur market tends to interest me not at all. 'I
see little reason to sell to hobbyists, and considerab1e reason
not to. For the revenue of, one well-behaved business customer, it might be necessary to deal with ten belligerent and disrespectful amateurs, some of whom have given notice of their
intention to break any software contract.
In the ordinary computer world, the most emotional issue
is people's preferences with regard to computing languages;
copyright is accepted as an ordinary part of life. In the amateur world the most emotional issue is that of copyright, with
languages second. My own feelings about copyright are very
strong: copyright is one of the only ways the little guy can get
a leg up -- you will excuse me for oversimplifying -- against the
Big Guys and the Bad Guys. I publish my own book, Computer Lib, and receive a modest income from it. Now if there
were no copyright protection, anyo", could print Computer
Lib in Taiwan, and sell it for ,less than I get, and I would get no
benefit for the years of work I've put into it. But the law of
copyright, a Federal law, says the book is mine, and that
people can only make copies with my permission; I like it like
that. The same law, now, is extended to computer programs
as a form of writing; and the same protection is available to
you, practically free of charge, for the work that you put in on
programming.
Anyone is of course free to give away a program he has
made, since the copyright presumably belongs to him. And
people to whom software means small programs of their own
concoction will be happily giving them away. '
But people who are working on big programs -- programs
involving tens of thousands of lines of code, programs that
take months or years to create, will be very concerned for
their copyright protection. To further this protection, we will
begin to see software disguised as plug-in hardware, software
coming on mystery tapes in unknown formats, software disguised in every possible way. This cloak-and-dagger approach is
quite regrettable, but may be the only way to create an orderly market. I think there will be a period during which the good
software, the big and serious systems, are held off the amateur
market and made available only to commercial customers. But
e,,:entually, perhaps at about the end of the next two years, we
Will see bargains struck up with well-behaved individual users,
and a system of safeguards hammered out to make an orderly
market possible. These safeguards may even include programreadable hardware serial numbers, just as used in the bigger
systems.
Languages. Just as in the big computer world, in the dinky
world we hear hotheaded arguments about programming languages. Computer people always become very pugnacious
about their favorite,programming languages -- especialiy if they
only know one or two .. But the dinky-world arguments about
language are a travesty on those same arguments in the straight
computer world. The same honors are here attributed to
BASIC that more knowledgeable computer professionals attribute to Algol, or SNOBOL, or PASCAL. (In the hobby world,
one actually hears people with Ph.D.'s, who certainly ought to
know better, arguing very angrily that Basic is the ultimate.)
By two years from now, after a lot of frustrated effort
and experience with big systems shoehorned into little computers, people will have realized that for powerful software we
need good and powerful languages. They will also have found
out that these must be structured languages, in the Dijkstra
sense, which make programming so much more manageable;
and they must be extensible, allowing the rapid creation of
new commands for particular ranges of purpose. This means
that interpretive languages like LOGO, TRAC language*
*TRAC is a registered trade and service mark of Rockford Research, Inc., Cambridge, Massachusetts.

FIRST COMPUTER FAIRE PROCEEDINGS

and SMALLTALK will assume new importance, as will such
compiling languages as FORTH and "C".
One of the great strengths of the extensible interpretive
languages is the degree to which they simplify big programs.
My colleague William Barus and I recently created an animation program for the VDM board using TRAC language; the
program is about 16K in size. TRAC is not as easy to learn
as Basic, and for small programs may seem rather clumsy.
But as programs grow larger, its intrinsic orderliness keeps programs manageable. (The 16K program was written in about
three weeks, and seems to work quite nicely, allowing both
frame-by-frame animation and subpicture overlays.) With unstructured languages like Basic, programming becomes exponentially more difficult as the size of the program grows; with
structured languages, the growth in difficulty seems to be logarithmic.
Basic will remain the language for beginners, unfortunately; no standard Dijkstra-structured upgrade is presently defined for it, although a "structured Basic" has been under design where Basic began, at Dartmouth. (But for those who
want to sell language processors, there is a simple secret; hobbyists want any language as long as it's called Basic.)
It is a great pity that hobbyists are so insistent on talking
about the physical box of the computer, and so resistant to
learning about the issues and depths of programming languages
-- even though all their programming difficulties stem from
these issues and depths. Meeting frequently with computer
hobbyists, it is astonishing, and depressing, how often one
must repeatedly answer such questions as ''What is a computer
language, anyway?" and "What is structured programming?"
and "1 don't see why it can't all be done in Basic." There has
got to be some form of general consciousness-raising in this
area.
··In any case, when the smoke clears, about two years from
now, hobbyists will begin to realize that the more advanced
languages -- at least the ones that fit on the dinkies -- make
programming, much, much easier.
Such languages -- like LOGO and SMALLTALK and
TRAC Language -- will gradually assume primacy. But we may
hope that their being "advanced" languages will not make people think they are unsuited to beginners. On the contrary,
structured extensible languages are the right way to learn programming. For instance, at MIT's LOGO project, they tried
teaching programming to kids two ways: with BASIC and with
LOGO. After a few weeks, I have been told, the kids who had
started on LOGO were hopelessly far ahead, and, it is said, did
not want to speak to the BASIC-trained kids because they
thought the latter so ignorant and incapable.
No one who is really interested in computing languages
would claim that the "ultimate" language exists; but there is
a new generation of languages shaping up now, the "actor"
and "agent" languages, whose proponents expect them to be
as far ahead of LOGO, TRAC Language and SMALLTALK
as these are ahead of Basic. Which of these advanced languages
will fit on little machines is another question.
The merchandising of little computerswill gradually break
out into a number of separate sales apprathes, much like the
merchandising of anything else. The mass-market computer
will of course be sold by the corner electronics discount house,
in a fancy package. You'll get the instruction book and an impatient rundown, but no personal help. In the box you'll find
the computer, an instruction book, warranty card, and list of
repair centers. p'erhaps also one free game cassette.
This mass-market apprach will probably go two ways:
toward the non-compatible, as with the Fairchild, computergame tapes, which will be a dead end; and toward compatibility, as with systems offering Basic and a standard cassette
interface.

BOX 1579. PALO ALTO CA 94302

PAGE 23

For more serious users, and for the S-100 world, the
computer stores will continue; but they will become a cross
between the hi-fi store, camera rental house and laundromat.
A viable take-home rental market will develop, presumably as a part of the computer stores. There you will be able to
rent simple standard units (as you might rent a standard car),
or, later, more esoteric units (in the way that professional
motion-picture equipment is rented).
Repair set-ups will blossom. Th.ere may appear franchised
computer-repair chains, similar to the automobile-transmission
repair centers. But these will be walk-in centers; cheap computers will not be eligible for house calls. (Many computer-center
people, who are used to repairmen coming in, cannot visualize
throwing the computer on the front seat of the car and driving
it to a repair center, as you do with an amplifier. But that's
how it'll be.)
The amateur used-computer market will come into full
swing. We will see the more fanatical hobbyists buying not
just used Altairs but commercial minis and old "big" machines
-- real 360s and 7090s -- and real antiques and fond replicas,
such as Eniac and TX-2. (We may yet see a fully-loaded Imsai
go for more than a small 360, just the way in 1974 you saw
small used cars selling for more than big ones.)
A variety of personal services will appear, probably in
conjuntion with the expanded computer store. Such services
will include program storage and printout; soon, time-sharing
parlors, having clusters of terminals which may be rented by
the hour. (This is the laundromat analogy -- renting a terminal
by the hour is not unlike renting a washing machine.) In the
next two years,. we should see services grow from the simple
ones to a dazznng variety of new ones, such as advanced text
services and retrieval, digital music synthesis and movie-making, and great libraries you can reach through your home
screen.*
.
The prospect of great on-line libraries raises great questions
about truth and'freedom -- for which there is no room in the
present talk, but about which much more will be heard.
I have elsewhere predicted that there will be ten million
computers in American homes by 1980. This may be a considerable underestimate, in the light of American consumer contagion. It will not be long, in my opinion, before the home
computer field becomes most of the computer field in absolute dollar volume. This will take longer than two years. But
I would predict a hundred dollars per capita per year within
'
a depade.
Pretty good so far, right? But I'm afraid it will not be all
sweetness and light. We can expect the dinky revolution to
have a convulsive effect on the computer industry, and on the
society as well. First let us consider the industry.
IBM will be in disarray. Fine-tuned to a captive market
having certain kinds of submissiveness, it is hard to suppose
that their kind of sales, let alone their kind of computer
product, will give them a ready entrance to the kinds of
markets now opening. (Supposedly as a personal computer,
they will push the 5100, actually a 360 in disguise; but they
will probably not know what to do if someone puts out the
S-1OO adapter for the 5100, effectively offering a 360 with
Altair accessories.) The jolt to IBM's product line of all these
developments will be considerable. A loss of revenue for
IBM, or at the very least a slowing of its growth rate, seems to
me inevitable. This could be traumatic to the stock market and
to other true believers.

* See T. Nelson, "Personal Digital Services," IEEE Computer
Magazine, March 1977, and "Design of a Transcendental
Literary Network," to appear in proceedings of the 1977
National Computer Conference.

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

Most of commercial time-sharing will be down the drain,
being priced at the top-managerial level but only usable by
technicians.
Organizations will be in internal turmoil, as they see kids
doing with computers what their programming teams can't.
And as the new availabilitites reverberate, many intemal goals
and budgets will be shot to hell.
There will be mass layoffs in programming staffs, and
this will be only a beginning. The skills involved in programming are comparable to those involved in automobile mechanics, and as the number of capable individuals increases, the pay
levels will go down, because systems will need less and less
tinkering to be made to do what you want. It will gradually be
revealed that most programming has been make-work around
iII-clesigned systems.
Between laymen and the old-style computer people there
will be a lot of questions asked. "Why weren't computers easy
to Use before? Why couldn't I have had this sooner?" These
are not pleasant questions to answer.
For computer professionals will be the last to see this coming. Professional programmers have lived in a world of account
numbers and job submissions, core declarations and runs
aborted by the operating system - silly complications that evaporate as soon as everybody has his own computer. Theirs is
an awkward and inhospitable world that bears as much relation to the real nature of computers as a string of frankfurters
bears to a living cow. The "Nature of the Computer," for
many who have worked with it, has really been the system of
bizarre bureaucratic project management under conditions of
monopolistic mystification. And so it may come to be revealed
that the people who have worked with computers most have
understood them least.
In some areas of the society there will be pandemonium, as
the personal lives of a vast number of people -- especially
computer people, who thought change w satheir friend -- are
uprooted and retrenched. These more general effects are hardest to predict. I suspect that the main public reaction to little
computers will be a mixture of delight and anger -- delight at
the new fun and facilitation, anger that computers were ever
allowed to create the harm and inconvenience that they have
till now.
Here is the fin aI surprise. We the computer folk are not going to be converting the non-computer world to be like us, as
some of you may have been hoping. Quite the contrary. We
are going to be repudiating the computer past, resolving not
to push people around any more, and finding out how to make
computers easy and helpful to everybody.
MUSINGS

The future use of computers is, and should long ago have
been, personal. Misled and perhaps occasionally malicious,
the industry has ignored this as a possibility for thirty years;
computers have been held back from a personal market for
perhaps thirteen. But the movement cannot now be stopped.
Why has individual" computer use been so retarded? Partly
because of the nature of our society, and partly because of the
trickery by which computers have been sold: not because of
the nature of the beasties themselves.
For instance, I believe that the point of the 360 computer
was to lock out the other manufacturers, especially those of
minicomputers, and postpone highly interactive systems -- the
kind of computers uses that would be good for, among other
things, personal use. The 360 drastically postponed personal
usability. And in an unholy alliance with the big manufacturer, the computer centers long ago became entrencned power
units especially concerned with preventing maverick applications, and with preventing any other departments -- let alone

PAGE 24

individuals-- from getting a computer. Underhanded methods
have been used, it is sometimes said, to get rid of people who
advocated interactive systems. The computer field was structured to lock out both the interactive applications and the .
people who wanted them, or might have.
Now the computer centers are on the defensive, publishing
articles saying there is still a place for the centralized computer facility. They may be right, but they have an increasing
burde.n of proof. As dinky computers and interactive styles
of use take over more and more, little sympathy is due to
those who strove to hold them back.
But let us lift our eyes from the past, from the limitations
and trappings of how you've had to do it. Rather than being
obsessed with the styles of computers as they have been used,
we need to consider, and design, the environments that we
really want. I call this the Higher Virtuality. By virtuality I
mean the effective environment we create with the computer,
as distinct from the computer's "reality", the physical parts
and program techniques that make things come out that way.
The higher virtuality, then, is the computer environment we
should strive to create. It is hard to make the choices and designs that this .entails.
The virtuality that calls to us now, I think, is the new world
of highly interactive systems. Cursors and panels, lightbuttons
and menuplexes, maps and graphs and fast-changing screen layouts, are the pieces from which we will construct our new experience-spaces. Now, we tend to think of highly interactive
computer systems -- for text editing or re~rieval or movie-making or whatever -- as the ones with fancyscreens and light-pens.
But this brings up an interesting general point. The fancier
super hardware isn't as important as the imaginative and artistic use of whatever we have.
Let's consider just the problem of pointing at things and
controlling What's on the screen. Most of us don't have a
light-pen or Englebart mouse on our home computers; but if
we are clever we can make systems highly interactive even
if we just use keyboards. We can zip cursors around with the
keys to select from menus. We can even whiz between environments. Suppose the interactive program can change the
meanings of the separate keys dynamically: at one instant,
specific keys can be arrow keys, to move a cursor about the
screen; "at another instant, they can type musical notes, or
special picture-symbols; or anything.
This is not an unimportant matter. Some of the snazziest
research setups have highly interactive keyboards of this type.
Bitzer's PLATO system, for instance -- a large special-purpose
graphics time-sharing network run out of the University of
Illinois. The main program can react to every key-press, and
the keys can be automatically redefined under program control. The letter "D" on the keyboard can be an arrow when
pressed at one instant, create a whole picture of a dog when
pressed in the next. This feature makes PLATO one of the
most dramatic introductions to interactive computer graphics.
Kay's Dynabook system, at Xerox, likewise allows a key-bykey dynamic reaction to what the user does. There is even a
research setup with a "phantom keyboard" -- its key tops have
colored changing labels that you can read right through your
fingertips. (This is done with a color video display and a semisilvered mirror.)
Such dynamic keyboard capabilitie~, together with our
screens, make highly interactive systems easy and exciting to
create. (It is regrettable that most if not all IBM systems do
not allow this dynamic key-by-key redefinability. IBM systems will not ordinarily respond to single arbitrary key presses;
you have to hit either the Carriage Return or an "Attention"
button to make the systems respond. Again, the interdiction
of highly interactive systems. Was this malicious design?)
This key-by-key arbitrary response leads us, as do many

FIRST COMPUTER FAIRE PROCEEDINGS

other paths, to the real question. Given that we can make
each key have any effect, then what? How should our systems
behave? How do we make the interactive system make sense?
On the interactive screen we deal with a special new virtuality: architecture in virtual space, where anything can happen
based on anything you do. The space has to be invented. This
architecture of conceptual space, this conceptual architecture
of screen-space -- is a new realm where we are combining feelings and effects, as in a movie, and the need to be clear, as on
a map.
The problem really becomes, I think, giving the system
conceptual unity, which is just a more general example of the
problem of giving conceptual unity to the interactive keyboard. How do we give the key assignments, and how do we
give the larger system, conceptual unity? "Conceptual unity"
is an extremely pliable concept. What many programmers
think is conceptual unity, clear and simple, is not necessarily
conceptual unity to the non-computer people.
The problem is very like architecture. Now, I'm no architect, but I have spent some time in buildings -- indeed lived in
them! -- and I think there are several clear criteria for what
makes buildings good. It's nice for them to look good, sure.
It's nice for them to have good cost ratios for their builders.
BUT I submit that one of the most desirable things about
good buildings is for people to be able to get from place to
place simply, and know where they are.
.
I recently taught at a great urban campus filled with grand
pretentious buildings. The architect game no mind to helping
people find their way around. The buildings looked very Futuristic, but were incredibly confusing and inconvenient.
One evening, in the depths of one of the incomprehensible
buildings, I had to mail a letter and make sure it went out in
the morning. I went to the mailbox on the main floor, and
there was a sign on it saying that after hours one was to use
the mailbox on the first floor. (This was my first inkling that
I was not already on the first floor.) Diagonally to my right
was an elevator. I stepped in, pressed "1", and prepared to
retrace my steps, walking diagonally back to my left to the
first floor mailbox.
I was faced with a cinder-block wall.
I walked around to the right, then finally found a back corridor going in the direction the mailbox should have been in.
But now there was a succession of cinder-block cubicles and
rooms. In none did I see the mailbox.
Eventually I was able to find the mailbox by a system of
triangulation. By counting paces, and making a map marked
with paces marked and a combination of ninety-degree angles
(of which the architect was fond), at last I found the mailbox
in one of the rooms of the cinderblock environment.
Here is an example where an architecture of real space was
created with no concern for personal clarity or orientation.
The problem is the same for creating interactive systems.
Creating interactive systems, and their virtual spaces, should be
an art. And the real kicker, I believe, is this: all computer systems should be highly interactive.
The confusions and oppressions of yesterday's computer
systems vanish where the user can see his alternative on a
screen, get quick explanations, see maps of what he is doing,
and get all the other helps that the interactive screens can provide. This means the continuing oppressions of yesterday's
computer systems -- even today's -- are the opposite of the
way computers ought to have been used all along.
We shall see. Time, and the marketplace, will decide. When
people get to use interactive systems, they will be much less
interested in eithe r manual methods or batch.
But the central concern of highly interactive systems will be
making things clear and simple. Now, making things clear and
simple and easy to us iS,l'm afraid, the opposite of what some

BOX 1579, PALO ALTO CA 94302

PAGE 25

computer people, perhaps some of you, want to do. So in an
important sense, it is not the laymen who have to learn Computerese; in the greater sense, WE MUST ALL LEARN COMPUTER EASE.
The next two years will wreak extraordinary changes, and
we will "computerize" society for fair. But it may not be
what you computer-smart people expect.
What some of you have been considering "the new era" of
home computers may correspond to the tin-can and crystal
era of radio; and the convivial hobby you are part of right now
may vanish like the crowd that welcomed Lindberg at Orly.
They don't come out to meet the planes anymore. Today's
summer-camp camaraderie won't last forever, and the computer will probably become a home appliance, as glamorous as
a canopener, within a couple of short years.
What then is there left to believe in .•• ? To hope for ••• ?
I suggest that we look to simplicity and clarity (to make
people's lives easier) and to truth and freedom, for their own
sake.
Thank you.
BIO: TED NELSON
Ted Nelson holds degrees in philosophy from Swarthmore
College and sociology from Harvard, but since a fateful computer course he took in 1960, his principal labor has been the
design of computer systems for writing, moviemaking and general personal use. Not so much for the rest of mankin~,. at
least originally, but for his own general personal use, writing
and movie-making.
Nobody would hire him for this sort of thing in the early
sixties, so after obtaining his master's he has been a dolphin
researcher, folk singer, junior executive in publishing, con~ul­
tant to the antiballistic missile system, and yellow cab driver
in Manhattan in that order. He has also taught at five different colleges a~d universities, in departments of economics, sociology, anthropology, art and mathematics. He
presently
visiting lecturer at Swarthmore College, teaching courses
entitled "Art and Animation with the Computer" and "literary Machines." His students use the SOL computer and
LlNCtape drive now in his living room.
Ted's book, Computer Lib, is now in its fifth printing,
and has been widely adopted at colleges throughout the
country.
He is a co-founder of a computer store in Evanston, Illinois, the Itty Bitty Machine CO.,lnc., and is chairman of
the board of its software arm, Sophystems, Ltd.
Ted Nelson insists on being called a generalist. This
befits the immense library system on his drawing board,
the Xanadu (trade mark) hypertext network. Through
the Xanadu system Ted claims, people all over the world
should be able to 'have instantaneous access to everything
that has been written -- adding their own marginal notes,
or multidimensional "hypertext" writings, as they see fit.
Ted's glibness, showmanship and mischievous intellectual
precocity are found either endearing or infuriating, depending
on the listener. His emphasis on interactive computers as a
form of movie-making and show business stems from a unique
bias: both his parents are prominent in the theater and films.
His mother is Academy Award-winning actress Celeste Holm,
his father is film director Ralph Nelson, perhaps best known
for "Lilies of the Field" and "Charly."
Nobody is quite sure whether Ted's most recently announced project, a feature film based on his Computer Lib,
is a gag ornot.

!S

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 26

AN INTRODUCTION TO COMPUTING TO ALLOW YOU TO APPEAR INTELLIGENT AT THE FAIRE
James S. White
1202 Riverview Lane
Watertown WI 53094

ABSTRACT
The following is an introduction to computing and
presumes no prior technical knowledge.
The purpose
of this discussion is to provide the novice enough
basic knowledge so he or she can learn from, and
enjoy, other Faire activities.
This presentation
includes some very basic, non-technical ideas about
computers, especially home microcomputers, their
characteristics and construction, and how you can
choose and use your own home computer. Fi na II y, some
of the types of computers exhibited at this Faire
are discussed.
INTRODUCTION
Welcome to home computing! The great interest
in this Faire dramatically demonstrates that the
time has arrived for a computer in the house of
everyone who wants.
During the past few years, expensive, complex
computers in industry and commerce have he I ped, you
by cutting costs and raising the qual ity of many
products and services you use.
Now, computers have
been designed for home use and their prices have
been drastica Ily cut.
Persona I computers are
avai lable, here, today, at prices simi lar to other
major household purchases.
Thousands of Americans are enjoying their own
computers now.
You can select a computer for your
home, a computer that wi I I be easy for you to use,
even if you have no technical experience. That's
what this presentation and this Faire are al I aboutlearning how you can benefit from your own computer.
Learning about computers can be a I ittle confusing
because many different kinds of things are sometimes
called computers. A computer can not be consistently
identified by its size, appearance, construction, or
use.
None of these features are characteristics of
computers in general.
Computers are electronic
devices built according to certain technical rules,
which we won't discuss here.
However, al I types of computers do have some
common characteristics that make them different and
much more powerfu I and he I pfu I than many other
things we use.
We wi I I discuss some common characteristics of today's popular types of home computer0
characteristics that are important to computer users
and that make computers especially helpful to us.
COMPUTERS ARE TOOLS
We use too I s to ext.end our capab iii ti es and to
multiply our natural powers. We use tools to help
us do things we can't alone, or so we can do jobs
easier, quicker, or better than we can alone.
Computers help us in al I these ways.
MENTAL TOOLS
Computers help our minds.
Rather than helping
our muscles, as most tools do, computers multiply
our intellectual power and capabi I ities. Computers
are exten~ions of our minds.
Computers are tools we
can use for greatly increased mental achievement and
enjoyment.
Because our mental activities are much
less I imited in potential benefits than our physical
activities, the helping potential of computers is
much greater than the potential of other tools.
FROGRAMMABLE TOOLS
Computers follow people's instructions and do
nothing unless instructed to do so.
Computers are
useful as extensions of our minds primari Iy because
they faithfully do just as we instruct. Your computer wi II follow your instructions. Your computer's
abi I ity to follow a complex set of instructions and
thus do just what you specify gives it power far
beyond any other kind of tooi. We don't know the
I imits of the ultimate potential of computers
because we don't know the I imits of the ultimate
potential of men and women.

If you examine a computer in de·tail, you see
that it recognizes only a few Instructions that can
do only certain I imited things. These instructIons
allow a computer to, for example:
1. Perform mathematical calculations
2. Store a large
amount of information, and
select a particular piece of information to
meet a specific need
3. Evaluate a vast number of alternatives to
determine the best solution to a question,
even a question unrelated to mathematics.
However, the instructions a computer recognizes are
so powerful and so varied that a person can combine
them to instruct his computer to do almost anything
as an end result.
A set of instructions you give to your computer
is a program.
When you instruct your computer, you
are programming it.
A computer's program can be changed eas i I Y and
quickly.
A complete program can be changed in as
I ittle as a fraction of a second.
However, the work
or play of composing a program the first time
usually takes a person several hours or longer.
CONTROL TOOLS
Computers can help us by controlling other tools
and machines.
A computer can cause a much larger
tool to do something in a certain way and at certain
times, as programmed. This capability extends the
power of a computer far beyond the things it can do
direct I y.
Our minds are control devices which control our
muscles.
We thereby control the most powerful of
mach i nes and many natura I events.
Computers are
devices which control electricity, and thereby can
control the most powerful of machines,the generation
and use of power, and many natural events.
So, although computers function intellectually,
their direct benefits extend far beyond the intellectual.
By helping us to "work smarter", computers
can be a way to physical accompl ishment that is
better than just working harder.
MACH I NE (TOOL)
A computer is a machine.
A machine is generally
a tool that can operate by itself, doing a desired
job, without always needing the personal control or
constant attention of a person. A computer can
follow its assigned program with I ittle or no need
for the further assistance of a person.
A machine used in a home is generally called an
appliance.
A computer can be a home appliance, a
machine that can continue working to help us while
we do things that are more useful or enjoyable.
VERSATILE TOOLS
Computers can be extremely versati Ie. One
computer can do, and be, many different things. A
computer's versatility results from two other characteristics. The first is a computer's previously
discussed programmabi I ity, the fact that you may
instruct your computer to do whatever you want.
The second reason a computer is versati lei s that
it is a system.
A system consists of various parts,
each doing its own job. All of.a system's parts
operate together, supporting each other as do the
various organs in our body.
A computer can be composed of a few or many
different types of parts; each can have widely
varying characteristics. The parts you choose to
assemble your computer are those parts that together
wi II give the resultant system the capabi I ities to
best do what you want it to do, at a price you can
afford. You can change these parts as you want your
computer's capabi I ities to change.
The wide range of possible computer characteristics also results from the fact that a computer,
as a control device, is often combined with other
devices.
A large variety of devices may be combine4
so the resulting system can have a wide variety of
characteristics. A computer generally remains the
key part of the resulting combination, so al I these
types of systems a re often ca I I ed computers.
Computers are so versati I e that a computer Can
do, or control, any rational or mechanical process,

FIRST COMPUTER FAIRE PROCEEDINGS

activity, or happening.
What a computer can do is
essentially I imited only by the skill and imagination
of the person(s) who bui Id and program the computer.
A particular computer must be equipped with the
power and accessories appropriate for the job it
wi II do.
Power usually isn't a serious constraint;
a computer that is half as powe.rful may just take
twice as long to do a given Job.
Even computer
accessories are usua II y versati I
and many can be
used for a wide variety of different kinds of jobs.

e,

PRECISE TOOLS
Computers can be perfect.
A properly programmed
and operated computer makes so few errors in end
results that a computer mistake may never occur
during years of doing a particular job. Computers
do occasionally make mistakes, typically one in many
mi II ions of operations.
However, computers can, and
many do, check their own work so that a mistake 'is
not given to a human user.
Most "computer mistakes" occur because computers
do exactly as they are instructed.
Many people find
it difficult to give exactly correct instructions to
handle complex problems.
The computer that follows
incorrect instructions wi I I produce an incorrect
result, and is often incorrectly blamed.
FAST TOOLS
Computers are extremely fast.
A typical home
computer can do 500,000 of its basic operations per
second.
Home computers often move information as
fast as physically possible--at the speed of light.
This great speed also gives computers great
power.
Because computers are so fast, they are very
useful even for those jobs that they can't do efficiently. Computers just go ahead in their roundabout
way, doing many, many operations to provide a useful
result.
A typical computer that must do a mi II ion
operations to cdmpletea particular job may be done
in two seconds, which is often sooner than any
alternative.
How powerful are computers? A computer can be
a mi II ion times as powerful as a man. That's almost
beyond comprehension, so let's consider an example.
The great pyrami d of Egypt is genera II y accepted
as the world's most costly single structure, in
terms of man years.
According to the, most commonly
accepted estimates, 100,000 men worked 20 years.
In
total, two mi I I ion man years was required to do this
job.
Building pyramids is out of style tOday. Our
world is oriented towards numbers, such as dollars.
So let's th i nk about two mil I i on man years of work i ng
with numbers or calculations.
The first common home computers were delivered
about two years ago. One of these computers, working
for these two years, could have done calculations
that would take one mi'll ion men working with penci I
and paper 24 hours per day, 365 days per year, for 2
years.
You can buy such a computer here, today, or
one much faster.
PERSONAL TOOLS
Despite their great power, computers can be
personal tools.
You can select your own computer to
help you, and to expand your own capabi I ities. More
than 10,000 Americans have their own computers; many
are here today for you to meet and I earn from.
More
than 100,000 Americans are using computers as
personal tools, to make their work easier and their
play more fun.
We should consider a couple of philosophical
points here.
Despite its great power, a computer
can no more do anything by itself than can any other
machine. Computers are constructed, and instructed,
by man, as tools.
A computer is and does only what
it is made to be and do by man.
Further, as we plan to use computers, we should
consider their strong and weak points, just as we do
for other tools.
For some tasks, computers can be a
mi I I ion ti mes as powerfu I as man.
I n other of the
many ways we can use computers, they wi I I be much
I ess than a mi I I ion ti mes a's powerfu I as we are'
alone.
A COMPUTER IS:
Having reviewed outstanding characteristics of

BOX 1579, PALO ALTO CA 94302

PAGE 27

computers as they appear to users, we are now ready
for a gl impse of some technical detai Is. We have
come to a fundamental question: What is a computer?
A computer is a programmable electronic data
process i ng system. Computers have been ca II ed many
other names, but this definition gives us a good
start towards understanding computers techn ically.
We'l I consider the significant meaning of each word,
except "programmable and "system", which are
discussed elsewhere.
Because a home computer Is electronic, it Is
powered by electricity, generally from a 110 volt
wall outlet, just as other electronic appliances
are.
Computers are solid-state electronic, so need
relatively I ittle power and are not I ikely to wear
out soon or to need many repairs.
Many parts of a
computer are less Ii kely to fail after they have
been used for several months or years than when they
are new.
However, computers are very complex and
some parts are not sol id-stafe, so the avai labi I ity
of repairs should be considered when selecting a
computer.
A computer works with data, or information. This
characteristic is similar to the fact that our minds
work with ideas, rather than the physical things our
bodies work with.
However, as previously mentioned,
a computer can control almost any physical activity.
The data a computer works with must be objective
a~d precisely expressed.
Computers can't work with
feel ings or subjective ideas unless they are
expressed objectively.
Neither computer data nor
computer results are ambiguous, despite the fact
that their meanings aren't always obvious to al I
people.
All computer data is expressed in a very simple
numeric code.
Knowledge of this coding is necessary
for the user who wants to understand the internal
operations of a computer.
However, a computer can
translate its codes into words or numbers that you
are fami I iar with, so computer codes need not be of
concern to you. You can use computers here today
without consciously learning any codes.
A computer processes data.
Processing means,
changing, generally into a more useful form.
A
computer changes data it has been given into data
that is more useful, or more fun, for its individual
user.
The processing a computer does is whatever
its program directs it to do.
MI CROCOMPUTE RS
The type of computer genera II y used in homes is
called a microcomputer.
Most of the computers here
today are microcomputers.
A microcomputer is a computer that is small in
size and price.
A microcomputer need not be smal I
in power or capabi I ity. There is no exact definition
that precisely distinguishes microcomputers from
other types of computers, just as there is no
commonly accepted rule that distinguishes a microskirt from a skirt. This paper discusses computers
in general and emphasizes the characteristics of
home microcomputers.
A COMPUTER'S PARTS
In addition to having certain characteristics in
common, most home computers have certain types of
parts in common.
Next I isted are some of the types
of parts which are usually combined to form home
computers and the computers here today.
INPUT
To start a computer working you give it a
program and data.
Communicating these things to a
computer is ca I led i nputti ng. The computer parts
you use are called input devices.
You often communicate to a home computer in ways
simi lar to some you use to communicate information
and instructions to people. You can communicate to
a computer by pressing keys, or buttons, on a keyboard that is very simi lar to that of an electric
typewriter. Some lower cost computers have keyboards
that are much I ike the keyboard of an electric calculator. All computer keys are electrical switches.
Other types of switches used for computer input
are similar to the on-off light switches in your
home.
Computers with many switches of this type are
best suited for the user who wants to know much

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

about computers and work with them in intimate detai
deta i I •
A variety of other types of input devices are
used with home computers. Some computers can
understand spoken words, but this capabi I ity is not
yet common for home computers.
PROCESSOR
The key part of a computer is a processor.
A
processor is a group of electronic circuits which
actually performs the calculating and the logic
operations comprising a program.
A processor performs the same functions for a computer that a brain
(less its memory function) does for an animal.
The processor of a microcomputer is a microprocessor.
This is a smal I electronic component,
one kind of the wide variety of components called
chips.
A microprocessor is a small form of a
processor.
Microprocessors are widely used as
control devices, in many kinds of machines besides
microcomputers.
You may hear a microprocessor called a microcomputer or a processor called a computer.
However,
there are cri t i ca I differences for the user.
A processor is a control element, a part of a
machine that directs, by following a program, the
rest of the machine to do whatever it is supposed t-o
do.
A microprocessor can be part of a calculator,
part of a microwave oven, or part of a sewing
machine.
In none of these uses is a microprocessor
a computer.
Nor is the calculator or the microwave
oven a computer just because it is controlled by a
microprocessor.
A computer, or a microcomputer, is a complete
machine, including all the parts and accessories
needed to do whatever it is used for.
A computer
can operate entirely on its own, needing only a
source of energy and, at the start, directions from
a person.
A computer is bu i I t so you can input
your instructions to it, and so it can communicate
the results of its processing to you.
MEMORY
A computer uses parts called memory to store, or
remember, the programs and data that have been input
and the results that have been computed.
Some of
the parts that perform the memory function are chip~
simi lar to microprocessor chi'ps.
I n many computers,
memory chips are physically part of the processor.
A home computer can also remember information by
storing it on a magnetic tape cassette, such as the
type you use on a cassette recorder to record, and
thus remember, music or words.
A cassette recorder
can a I so be an input dev i ce because you can use it to
read into your computer programs that other people
have written and recorded on their computers.
Another type of home computer memory device is a
relatively expensive and powerful device called a
floppy disc drive.
This is a recording and playback
device that uses a rapidly spinning disc about the
size of a phonograph record.
OUTPUT
The f i na I common functiona I part of a computer
is an output device, which a computer uses to
communicate to you.
The most common home computer
output device is one you are quite fami liar with--a
TV screen, on which the computer displays words,
numbers, and sometimes pictures. This screen can
be that of a standard home TV, or of a speci a II y
designed device.
Computers can also display their output by using
I ights that form numbers and letters, as do the output I ights on an electronic calculator. Computers
can also use individual I ights that are either off
or on, and thus communicate to you the status of
various processes and coded data.
Computers can
also communicate to you by printing on paper and,
less commonly today, by "speaking" words.
INTERFACE
Many computers have several groups of electronic
components, ca II ed interfaces, to a II ow the computer
to communicate with devices not normally compatible
wi th the computer. An interface is 'II ke a trans I ator;
You

can,

for examp I e,.

buy an

interface

so

your home

computer can display data on a TV set you now have.

PAGE 28

Often some interfaces are bu i I t as part of a
computer, wh i lei nterf aces for I ess common input
output, and memory devices are options.
POWER SUPPLY
Computers have one other part which the potential
buyer should consider.
A computer. uses electrical
power, but of a low voltage, simi lar to that used by
electronic calculaTors and simi lar devices. This low
voltage is supplied by a group of electronic components called a power supply. This has the same
function as the group of components ca lied an "AC
adaptor" when used to supply power to devices which
normally use batteries.
A power supply is sometimes included as a standard part of a computer, is sometimes an extra cost
item, and is sometimes not even available from some
vendors.
Also, a large microcomputer system with
many accessories needs a more powerful supply than a
smal I system, and perhaps more power than can be
suppl ied by a computer as sold.
Check before you
buy.
PROGRAMS
A program is not usually considered a part of a
computer because it doesn't exist physically, just
as an idea doesn't.
Programs are often ca I I ed software, whi Ie the physically existant computer and
accessories are called hardware.
Software is
essential to the use of a computer, and some types
of programs are commonly purchased with the computer
or as accessories.
The availability of software
should be a key computer selection factor for most
potential users.
The mo s tim p 0 r tan tty Pe 0 f pro g ram g e n era I I y
furnished by a computer manufacturer is a language
translator.
This program translates between your
Engl ish language and the computer's machine language
so your computer can understand the programs of
instructions you communicate to it.
This translator
program may be ca I I ed an interpreter, an assemb I er,
or a compiler.
The most common Eng Ii sh-I ike I anguage used to
program home computers is called BASIC. This is one
of several languages, called high level languages,
that are easy for casu~1 programmers to use.
BASIC
interpreters are avai lable for many computers. For
some computers, more than one BASIC interpreter is
available.
Different BASIC interpreters vary in the
number and the power of the instruction words they
recognize and in the accessories and capabi I ities
they require of the computers on which they operate.
Lower cost computers have no language translator
programs, so you must communicate with them in
machine language~
Although such communication is
educational for the user who wishes to understand
how a computer works in detail, it isn't in an easy
language for a person to use.
The other major category of home computer programs
includes those that give a computer the capabi I ity
to do whatever its owner wants.
Some sources of
programs of this type include:
1. The manufacturer and vendor of your computer
2. Other vendors, including many at this Faire
3. Program libraries, which loan or give copies
of programs, at I ittle or no charge
4. Friends and computer club acquaintances
5. Your own ideas--this is the type of program
you can write yourself.
Although some programs wi I I be easy for you to
write, others could take several months of hard wor~
A discussion of the many factors affecting program
procurement decisions and the decisions of which
programs you should write yourself is beyond the
scope of this paper.
A brief summary is that there
are many ways you can get programs and many unexpected options and decision factors that may be
involved.
The avai labi I ity of programs for doing
specific jobs certainly can be a major compute~
selection decision factor.
USES OF HOME COMPUTERS
Having now covered the tec~nical characteristics
of computers, we are ready to consider some of the
things they can do for us.
Even though many people
understand the immense potenti a I computers have for
he I ping in our homes, they st i I I ask: What are home

FIRST COMPUTER FAIRE PROCEEDINGS

computers used for today? This is a reasonable
question, and probably the" most common one for a
home computing newcomer.
The answer is:
Mostly for
fun.
Although computers have proven that they have
many other potential uses, the reason relatively few
people are using computers for serious purposes is
that most people can't seem to quit playing with
their computer.
I see nothing wrong with that. Wor~
for many people, should be done at work.
Those who
can spend most of their time at home for enjoyment
seem to have achieved an important measure of life's
success.

The most common type of home computer owner
today is the bui Ider, a craftsman or craftswoman.
For these many peop Ie, understand i ng, bu i I ding, or
otherwise developing computers is an end in itself.
These computer hobby i sts are s i mil ar to the pa inter
or woodworker whose enjoyment comes from creating,
rather than using or possessing.
Computers are the world's most pliable media-you can make more things of a computer than you can
make of clay, paint,or wood. Creating with computers
can be extremely Challenging, and success extremely
rewarding, because the potential for creativity,
mental and physical, is almost infinite.
Other people enjoy using computers for playing
games.
When used for games, computers are often
somewhat I ike TV games, today's hottest comsumer
item.
Unlike today's common games, which are very
I imited and rather quickly become boring,the variety
of computer games can be almost infinite.
People with home computers can keep getting new
games, sometimes for less than $1 each.
Better yet,
they can design and use games they create themselve~
And these aren't just bouncing bal I games.
Home
computer owners program and use their computers to
play cards, space war, chess, and many other games.
The rea I I Y fun games are ones you never heard of
because they can only be played with the help of the
immense power of a computer.
But computers can be very practically useful, as
proven by their use in, and great benefits to,almost
all of commerce, industry, and medicine.
Easi Iy
affordable home computers can be at least as powerful as many of those that are doing thousands of
different jobs in business today.
Fami I ies use computers in home offices to keep
records and to handle accounting chores.
Some also
plan stock and commodity futures buying and sel ling.
Home businessmen use computers in many occupations.
Computers control heat and other environmental
factors so an entire bui Iding, such as a home, is
more comfortable and so erergy is used more efficiently.
Home security is another service, meeting
an unfortunately increasing need, that computers are
being developed to help supply.
,Education is another of today's uses of home
computers.
As educational tools, computers are
helping to teach subjects ranging from first grade
addition to financial and engineering math, and a
wide range of other subjects.
Also, many people are
using computers to teach themselves about computing,
a field with considerable employment potential.
In
addition to vocational benefits, learning about
computers is both enjoyable and practical because of
the rapidly increasing role computers are coming to
play in the everyday lives of each of us.
Many computer owners have talked of the great
potential of computers for keeping track of kitchen
suppl ies, planning menus and recipes, and for many
similar household chores.
For some reason, these
uses seem to be I ike most household chores the American man is as.ked to do. They end up in a "tomorrow,
dear" category, even though their long range benefit
can include considerable work savings.
Returning to fun appl ications, computers are used
to catalog and control the playing of musical
recordings.
Computers are also used to make music.
There is even a magazine devoted to the topic of
computer music.
Electronic hobbies are another home computer
application.
When electric train layouts are so
complex that father and son together can't control
them, computers keep the home ra i I road runn i ng
smoothly.
Some amateur radio hams make extensive
use of computers in the i r hobby and have genera I I Y

BOX 1579, PALO ALTO CA 94302

PAGE 29

been the pioneers in home computing.
The I ist of what computers can do, of what you
can do with your computer, Can go on and on.
Aside
from hopefully giving you some more reasons for
getting involved in computing,the preceding examples
of computer uses should further support the idea
that a computer can do almost anything.
HOME COMPUTERS TODAY
But a computer in your home?
Lots of people have
computers in their homes already.
As you go to some
of the more advanced sessions today and tomorrow,
and as you go around the exhibit hall, talk to some
of the other people there. Many of these people have
computers in their homes.
They can tell you what it
is like.
But keep in mind that these people are the
pioneers. They didn't have to cut down logs with an
axe to bui Id their own cabin.
But some of them have
done as much pioneering in other ways.
They have
done the hard work.
You can buy a prefabricated,
ready bu i I t computer, ready to move in.
However,
there is plenty of wilderness left in computing. If
you want to be a pioneer, there are many opportuni~
ties for you to go ahead into the unknown and
develop techniques and products.
And there are lots
of people who wi II follow and much appreciate any
real

discoveries or progress

you make.

This is one of the choices you can make as you
look at the computers here today, and as you decide
how you wi II become involved in computing.
You can
buy the equ i va I ent of 40 acres of wi I derness, or a
prefab in a subdivision, or many things in between.
You can tota I I Y des i gn and bu i I d your own computer.
Or you can get one that you can plug in and have
start immediately to work for you.
There are many
avai lable options between these extremes.
Your home
computer can be what you want it to be.
ELEMENTARY COMPUTERS
You can get a very basic type of computer.
This
will be relatively inexpensive, costing between $100
and $250, generally less power supply.
It won't
have a fancy cover, and probably wi I I have no cover
at a II.
AI I the parts of th i s type of computer may
be on one piece of plastic-like material called a
printed circuit board, or just "board ll or "card".

You wi I I have to do lots of deta i I ed work to
program and use such a computer, especially because
programming generally must be done in machine language.
The power of this type of computer is
limited--you can't easily add many accessories, nor
can you eas i I Y connect such a computer to other
devices to control them.
This type of computer is a good training device,
an educational tool.
The lack of fancy accessories
means that you work directly with your computer,with
I ittle interference.
Therefore, you can learn, by
doing, much about the detai I s of how a computer wo
works.
EASY-TO-USE COMPUTERS
Some people don't want to work closely with a
computer.
They would rather have their computer
follow their general instructions.
Such people
aren't especially interested in knowing the details
of how a computer work~ They would rather learn how
to use a computer to solve a particular type of
problem, control a particular process, or help them
in a field unrelated to computing.
Computers designed for this type of user are
avai lable.
One key characteristic of this type of
computer is that you program it by using a high
level language.
As we discussed earl ier, a high
level language is easy for people to use.
These computers are genera II y bu i I t on severa I
printed circuit boards which plug into guides and
connectors mounted on the computer frame.
Computer
capabi I ities are changed by plugging new boards into
appropriate spaces, as long as there is room avai 1able.
For some computers of this type, especially
"Altair bus compatible" or "5-100 bus" computers,
many accessories are avaiable that can be added.
For other types of computers, only a few accessories are avai lable.
Consider what you may need and
want.
Prices of computers in this category generally

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 30

start at about $500.
A system with enough power and
accessories to use a high level language may cost
$1000.
The price of a full system, such as might be
used for a business appl ication, can easi Iy reach
$5000.
KITS?
Another primary choice when selecting your home
computer is whether to purchase a kit of parts, or
an already assembled computer.
A kit, like the
traditional model airplane, requires your work and
time to put it together.
A computer kit often takes
from 50 to 200 ho~rs to assemble; accessory kits
generally require less time. Time requirements vary
depend i ng on your sk ill, the ease of assemb I y of the
kit, and your luck in (not) encountering problems
which can take many hours to diagnose and repair.
The major benefit of a kit is that it saves
money.
An assembled computing product genera II y
costs from 30% to 50% more than a kit.
Another benefit of a kit is the experience that assembly gives.
However, the person who has so I ittle experience
that he would benefit probably would encounter considerable problem in assembling a working computer.
Most computing kits require ski I I and knowledge
in electronics work, sometimes a considerable amount
The decision whether to build a computer kit is not
one to be made I ightly.
Anyone, after he has enough
ski II, equipment, time, and expert help avai lable,
can bu i I d a kit.
The amount of these resou rces
required for assembly and successful use varies
widely among kits.
The quality of instructions
provided also varies ~onsiderably. These are al
factors to consider when selecting your computer.
HELP!
Although good instructions and the avai labi I ity
of expert help are essential to the novi~e kit
bui Ider, these aids are important to every computer
user.
Computers today are too complex to be understood completely by most people.
Because computers
have so much potential, appropriate understanding is
very important for using a computer well.
Because
ski I I reqUirements vary
widely among types of
computers, a solution to the need for ski I I is to
choose a computer which needs the amount and types
of ski I I you have or plan to have.
A special resource to consider when evaluating
sources of computer ski II s is the dea ler from whom
you buy your computer. This is the person from whom
you wi II a I so probab I y get the severa I types of
support you wi I I need to use your computer and to
keep it operational.
A dealer who is knowledgable
about the equipment he sells, and is wi II ing to
share this knowledge, can be a great help in using
a computer. So the decision of whether to buy from
a dealer, and the selection of your dealer are both
important home computing decisions.
A novice may be
wei I advised to use this Faire as a terrific way to
learn about home computing and to compare computing
products so he can intell igently make the actual
purchase of a computer through his home town computer dealer.
CONCLUSION
After this quick overview, you probably are more
confused than when you started because you have
learned a I ittle and can better see how much there
is to I earn.
At I east you have some understand i ng
of the fact that many of the things at this Faire
are new, even to the most knowledgable and experienced persons.
The knowledge you now have is greater than many
of the other people at this Faire. So go ahead to
the other talks, and visit with the exhibiting
vendors, confident that you can benefit from these
discussions.
Most of al I, have fun as you plan and
learn about your new helper, your own home computer.
BIOGRAPHY
James S. White is the author of Your Home
Computer, an introduction to personar-Gomputing.
As an active member of 3 amateur computing
organizations, he has worked with a variety of
newcomers to microcomputing.
He is also Data and
Systems Manager for Durant Digital I~~truments, a
manufacturer of counting and control systems and
components.

A TYRO LOOKS BACK
Fred Waters
1601 Provincetown Drive

San Jose CA 95129

Some of you are curious, interested, and perhaps actively
1nvestigating this idea of microcomputers for fun. About a
year ,:;.go I was where YOLl are today. I had jLlst had my eyes
opened to tl~s new hobby, and was in a tLlrmoil aboLlt which
way to go. "Ire YOLl asking YOLlrself, "Is this hobby for me?"
or, "I tbink I w;mt to get into this, but which way do I go?"
Or, "I'va made a start, but what do I do with the limited
lli,rdware I've got?" i.iaybe my own experience and points of
view will help guide you, Dr give you Some ideas on choices
'md directions.
I speak as a tyro. There is no part of this hobby in
wbich I 3.JJl not 11 beginner, except perhaps for a prior interest
in ",,'theJ;;aticOlI g"mes and recreations. I speak only to those
ivho f.Il.10w 11;e. A,s i'0r the ma.n who r. .13 a more advanced system,
",'.ith lot:: of '~'~!e:nory :md peripLeral devices, '..vith r:rm~ess in

,lest r(;yint, Klingons using his favorite version of startrek,
'uc nitil i37 of i~s wife's favorite recipes stored for quick
ree:,i :l--he I s a ;"an I want to listdn to, not tell my tale to.
!.i'ter findi:lE out by :wcicient

W~qt

a microcomputer was,

':in::! th':lt a rudiIIlI::mti;.t,r'lJ system could be aCt1uired for not much
!LOre tf",n <1 good hi-fi system, I started investigating.
This

me,lnt attending club meetings,visiting shops, finding and
reading the right library books, subscribing to magazines,
writing for cOlrunercial brochures, and asking questions of
anyone wno would stand still long enough to give answers.
Then I picked a system, bought it, assembled it, checked
it out, :md started doing things with it. I made some mistakes that you can avoid. It was necessary to keep on studying, reading, learning. I started out with the simplest possible uses for
systerh. Then variations became evident. As
one progresses in the various Skills, and adds peripheral
e,-{uipment to the system, one finds more and more interesting
pursuits in an ever-widening range of activities. &~d you
gliJlIpse more to come. Learning and playing with these machines
is like reaching and exploring an unending series of plateaus,
each one more or less faSCinating, and each one pointing to
more beyond.

IT"

,'lhere are you in this hobby? If you are looking at something entirely new, or already launched into the first few
stages, you may get some useful ideas from what I did when I
was there. I hope my own enthusiasm has ignited a spark, or
helped fan the existing spark into a growlllg flame of interest

and excitement.
Fred B Waters, Jr
1601 Provincetown
San Jose, CA 95129
US Army Corps of Engineers, retired
M.S. in C.E., Cal Tech
Former assistant protessor of engineeriny,
U 5 Mil i tary Academy
Former instructor in public speaking,
International Speakers Bureau,
Santa Clara
Member of Mensa
Member ot Speakers Bureau, San Jose
Bicentennial Commission
Occasional I"cturer on mathematical games
and recreations: "Fun With Math"

PAGE 31

BOX 1579, PALO ALTO CA 94302

FIRST COMPUTER FAIRE PROCEEDINGS

mE SHIRT POCKET COMPUTER
Richard J. Nelson
2541 W. Camden Place
Santa Ana CA 92704

INTRODUCTION
The shirt pocket computer exists today in the form of the personal programmable calculator. No matter how you may define a
computer. machines like the Hewlett-Packard HP-67 and HP-97. and
the Texas Instruments SR-52 probably qualify. The small gap be~
tween the personal programmable calculator. PPC. and the microcomputer will be bridged completely this year with the introduction of the National NS-7l00 in late spring. and the still unknown model number from Texas Instruments at about the same
time. There are nearly 300.000 PPC's and less than 30 000 micros in use today. The micros get most 'of the publicity, while
the PPC's quietly serve their owners as a portable. extremely
powerful. and economical computational tool.
This paper will provide a general review of the PPC. its characteristics and capabilities. and what can be expected in the
near future. In addition. this paper will cover sources of information on software, hardware modification. accessories. and
users groups.

COMPUTER OR CALCULATOR?
The basic architecture of the top-of-the-line PPC's on the mark~t today makes them cal cul ators primarily because they are deslgned for numerical computation oriented to a base-ten world.
There are many characteristics that are attributed to a computer
which differentiates it from a calculator. A few of these are:
a) ability to modify its own program. b) ability to handle al;lbanuneric 'strings'. c) high speed operation. d) multiple in?ut/output ports, e) large mass memory in the form of 'core'
solid state RAM, or disc, f) multi-node operation. batch ti~eshari ng, etc.
•
Certain~y the PPC cannot measure up to the performance of the
above 11sted computer capabilities. but when each one is broken
down into basic capability, it is astounding how close the PPC
comes in.scaled-down capability. The upcoming NS-7l00, for example, \"/111 be able to talk to many different devices, but it
~s n?t ~ossible to have them all in one pocket.
The PPC, with
1tS 1nd1rect addressing. multi-logic compare instructions. multi-flags, full editing. and external memory makes it as close
to a computer as you can get and not call it a computer. The
next generation of machines available this summer will add features that bridges the gap completely. There are sound marketing reasons for calling these microprocessor-based systems calculators. and as long as they are primarily intended for numeric computation, they are best called calculators.

~IHAT

DO I NEEn?

If you are an engineer who is interested in computers because
you must keep up with technology. then the microcomputer is
w~at you ne~d.
You will buy ~nd ~uild one, and will spend conslderable t1me and money gett1ng.1t to do something practical.
If you a~e interested in a machine to control a process or a
model ra1lroad layout. you should consider a microcomputer. If
~ou are a businessman who needs lots of mass storage to handle
1nventory or data acquisition. you need a microcomputer.

CALCULATORS AVAILABLE TODAY
The personal programmable calculators are those machines that
have an extensive instruction set that includes full scientific
fu~c~ions. logic c?mpares, flags. full branching. and program
ed1t1ng. The mach1nes that qualify also have some form of external program and/or data storage. They are the SR-52. from
Texas Instruments, and the HP-67 and HP-97. from Hewlett-Packard. Table 1 is a brief summary of the major features of these
'machi nes.

MODEL

SR-52

HP-67

HP-97

Size
Cost
Printer
Program Steps
Data Registers
Program Storage
Merged Codes

Handheld
$300
Separate(PC-100)
224
22
Magnetic Card
Partial

Shirtpocket
$450
None
224
26
Magnetic Card
Fully Merged

Desktop
$750
Yes
224
26
Magnetic Card
Fully Merged

TABLE 1. MAJOR FEATURES OF PPCs AVAILABLE TODAY
The ease with which these machines are programmed. and the personal nature of a battery-operated, go anywhere, calculator has
stimulated considerable programming effort from their owner~.
The abil ity. to provi de ~mmedi ate answers to "what if" questi ons.
and the ded1cated funct10ns of the keys. make programming an
easily-learned skill. Studies have shown that students who have
had preliminary programming experience on a PPC do much better
in their Fortran. Basic. or APL classes. The extensive programming techniques that PPC users have developed allows these memo~y limited and slow machines to perform astounding tasks. Techn1ques that use a keyboard overlay even allow alphabetic inputs
and outputs. Today, increasing amounts of literature, rapidly
growing users clubs. and growing software support from the manufacturers is encouraging. Several years ago the situation was
not as bright.

THE HP-65 AND SOME HISTORY
On January 17, 1974. Hewlett-Packard announced the HP-65 - the
worlds' first pocket 'computer'. The $795 technological wonder
had external memory in the form of a magnetiC card.' One-hundred
program steps could be programmed and recorded for future use.
The mic~ominiature card reader made convenient the reading of
user-\"!r1 tten or factory programs. The 100-step 1imitation of only partially merged program steps proved to be one of the machines' greatest assets. Intuitively the HP-65 users knew that if
the right approach was used, the program could be made to run in
100 steps. The wonder of the HP-65 created a group of dedicated
users who formed the first Programmable Calculator Users Club in
June 1974 -- the HP-65 Users Club. The small size and very personal nature of this machine set the stage for todays' machines.
The dedication of HP-65 users resulted in an astounding body of
kn?wle~ge of pro~ram techniques, hardware modifications. and appl1cat10ns. Dur1ng the nearly three years of product life. the
HP-65 was never reduced in price. despite fierce competition by
the SR-52. Only in the closing days of clearance sales did the
price.for a new HP-65 drop. Now replaced by the HP-67. the HP65 st111 offers the user a capability that was never fully explored. The full power of the HP-65 may never be known. for the
excitement of a newer. better. and many times more powerful machine diluted the investigative efforts that were once exclusively the domain of the HP-65. One of the most interesting aspects
of the HP-65. and later the SR-52. was the discoveries of machine
behavior that was not intentionally designed into the calculator.
These anomalies at first terrified the manufacturers. They were
so engrossed with the business of making and selling calculators
t~at they couldn't take time to answer a lot of 'foolish' quest10ns by the calculator enthusiast who was usually associated
with one of the Users Clubs. The unusual behavior resulted in
what has become known to calculator users as 'unsupported features'

If, however, you are a problem solver, or want to learn program[,ling, want to have fun. and not spend $2.000, $3.000. and up to
$10.000 for a real. up and running system, the personal programmable calculator with external memory may be just what you need.
.If you want to: play Startrek. The Game of Lif~, Bagels. Hexapawn, or a truly Cybernetic game; solve five (or more) simultaneous equations; curve fit data to just about any curve up to
order 4 or more; design circuits. bridges, etc .• on an interactive basis; do extended numerical operations to 50 diqit accuracy or greater; perform card tricks; convert your calculator into a clo~k or timer; or just plain balance the family checkbook.
the PPC 1S made to order. Besides. you can have the very best
for less than $400. The software support for the PPC's is far
more extensive than any microcomputer. It is easier to deterUNSUPPORTED FEATURES
mine if a program has been written to solve a specific problem
on a PPC than it is on most microcomputers. Numerous libraries
Reference
1 lists unsupported features of the HP-65 and SR-52.
are maintained by the manufacturers and users clubs throughout
The Users Club Newsletters. I'eferences 2-5. document all known
the world.

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 32

unsupported features. The following examples will illustrate
"unsupported features".
HP-65 Lampman Split Logic - The microcoding of the
had a few undefined conditions. Dean Lampman,
Cincinnati, Ohio, discovered that certain 2-part instructions could be separated by any number of logic
compares, or stack manipulations. Using this knowledge reduces program steps. For example, a single
STORE + n instruction can apply to five or more registers. Using the Lampman split logic saves eight
steps, \'/hich on a lOO-step machine is significant.

HP-65

"Non-normalized" numbers - may be generated in registers 8 and 9 and utilized to provide decrementing
counters (timers), generate pseudo random numbers, and
most useful, a programmed pause, not included as a
design feature.
The term 'unsupported' is very descriptive because Hew1ettPackard never publicized the advantages of the Lampman split
logic, and users outside the small world of the HP-65 Users
Club never knew of the technique. rlon-normal ized number generation and applications were eventually published by Hew1ettPackard and probably represents the turning point in the change
of attitude of Hewlett-Packard in viewing the super enthusiast.
This subject has been discussed in a paper given at WESCON (see
Reference 6).

THE HP-65 SHO\"ED THE

\~r.y

The accomplishments of HP-65 users have been previously summarized in Reference 7. A brief list will be included here because these application experiences served as a training ground
for the increasingly sophisticated calculator users to quickly
advance to even greater heights on the next machine, the HP-67.
~,

an ever popular 'computer' pastime were developed to a high level on the HP-65; 21, NI~1B, TIC-TACTOE, FOOTBALL, and BAGELS, are only a few. Two outstanding, truly cybernetic games -- Hexapawn and Cybernimb -- were also written for the HP-65.
'
Keyboard Overlays - Especially the design of John
Rausch, Dayton, Ohio, provided a convenient means for
inputting alphabetic data. The use of the Rausch
overlay facilitated word games and convenient encoding and decoding of english text

Figure 1. HP-65 "Pocket Computer" was announced by Hewl ettPackard in January 1974.

Magnetic Cards Analyzed - David Kemper, ~Iorthridge,
California, and others, examined the recorded instruction bit patterns of HP-65 program cards. Knowledge
of these codes caused caused a search for four missing (bit patterns possible, but not used) codes which
were eventually isolated, and used to perform unusual,
unsupported features, functions such as partitioning
memory so labels could be duplicated. David's famous
table of codes proved a useful tool, not only in ex~laining the behavior of the caucu1ator, but also in
providing insight into the next generation machine.
Unusual Programs - Applications of the HP-65 went beyond the owners manual. A program which, when run
with the calculator near an AM radio, could transmit
the number in the display with an audio code. Programs that provide a 45-digit by N digit product, infinite division, or compute the factorial of 10 6 fully
exploit the HP-65's firmware and programming capability.
Display control was always an area of "research" by
HP-65 owners. Fun displays were produced by unusual
loops, or "special" instructions in the endless search
to expand on the only human output interface the machine provided - the display.
Few practical applications resulted, but the experience gained provided
practical tools to use to analyze the HP-67. Pseudo
alphanumeric displays are possible on the HP-67 as a
direct result of work done on the HP-65.
Adding a printer was always the dream of the HP-65
owner. Heinrich Schnept, Koln, West Germany, built
the first printer for the HP-65. His concept of
plugging the shirtpocket PPC into a "home base" chassis which contains a printer served as'a concept for
manufacturers to apply in future calculator "systems".

Figure 2. Keyboard Overlay for the HP-65 and HP-76 allows
alphabetic inputs and outputs for word games; message encoding.
The HP-G5 was the first PPC and was the first generation of
machines which followed. The three major machines beinq offered
today represent 1~ generations of technological achievement.

FIRST COMPUTER FAIRE PROCEEDINGS

TODAYS' PPC'S

BOX 1579. PALO ALTO CA94302

PAGE 33

reasons for T.I. recognizing user-discovered features.

Following the HP-65 came the Texas Instruments SR-52 and the
HP-67/97. The HP-97 and HP-67 are functionally identical and
can run each other's programs. The HP-97 has a battery-operated printer and is a small desktop machine.

Figure 6. Printer manufacturered by Compucalc for HP-65. Modification of the calculator is not required, simply replace
the back with one supplied with the printer. Interfaces for
other calculators are on the drawing board. Reference 19.
Figure 3. Tape and label method of making magnetic program
cards. Stress relieved computer tape (A) is 'labeled' with
file folder label (B) as shown at (C). Thickness is 6-7 mills.
(0) shows card trimmed to dimensions. Rubber stamped key
locations (E). Standard Hewlett-Packard card at bottom (F).

Figure 7. SR-52 announced by Texas Instruments in September
1975 added indirect addressing to the Personal Programmable
Calculator.
Figure 4. Cutting desk top.calculator magnetic cards is also
a popular method of making magnetic cards for calculators.
This photo by O. Machen shows how four cards are cut from one.
The introduction of the SR-52 added some ne~features and functions to the PPC. In addition to the designed features the
SR-52 had an unusually large number of unsupported features.

Many of the contributions that the SR-52 made,. such as indirect addressing, the ability to store data on magnetic cards
(unsupported) and the ability to read a program card under program control (unsupported) are designed and supported features
of the HP-67/97. The SR-52 also pioneered the concept of adding a printer to a handheld calculator. The added printout
capability of the quiet PC-100 was a delight to users who soon
grew tired of handwriting 224-step programs. The SR-S2 was
T.I.'s first effort in this product area and the company has
come a long way in realizing that, as the machines get more
sophisticated and have greater capability, factory software
support is a vital aspect of calculator sales. Consult manufacturers literature for full product details.
F.~CTORY

SUPPORT

The consumer who buys a PPC doesn't always realize that he may'
get far more from his machine if he doesn't have to write all
his own programs. When Hewlett-Packard announced the HP-65
they also announced a contributors library and a free owners
newsletter to keep the user updated on manufacturer and user
activities. In addition, groups of programs were made available in the form of Program PACs. Fourteen PACs were written
by HP for the HP-65 which providesthe application expertise
of profess i ona 1 programmers. tlany PPC users do not have the
time or ability to write their own programs. The manuals and
magnetic cards that made up the PACs provided practical information in addition to instructions and program listings.
.
.
.
"
Figure 5. HP-65 prlnter deslgned and bUl1t by Helnrlch Schnepf.
The many unsupported features were discovered in rapid fire
fashion by experienced PPC users in late 1975 and early 1976.
T.I. has now recognized nearly all of these unsupported features and has now made them supported features. Competition
in the marketplace, and realizing that the logic of an introduced PPC would cause software chaos if changed, are probable

T.I. continued the practice of offering program PACs, and a
users program exchange with newsletter, in support of the SR-52.
Unfortunately, major software support for the SR-52 did not
come until a year after the machine was available. The HP-67/97,
like the HP-55, was software supported from the date of announcement. Software support is only one factor the potential PPC customer must consider. The prospective computer customer who considers the PPC as an addition, or alternative, to a microcomputer should also consider convenience, quality, cost, service,

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 34

and logic operating system.

Figure 10. Large display for class room use is manufacturered
by Educa1c. The calculator is hard wired .to the display chassis. Several models of calculators are available. The display
can be seen from 60 feet. See reference 20.

LOGIC SYSTEMS
Of the five considerations listed above, the first and last
ones, convenience and logic system, are the most controversial.
Comparing the products of the two companies, T.I. and H-P, is
like comparing Fords and Cadi11acs. Both provide transportation, each with its own advantages. More fundamental than purchase price is the difference between T.I.'s Algebraic Opera--tf~s (AOS) and H-P's Reverse Polish Notation (RPN).
Oiscussing~is subject is often like arguing that brunettes
are prettier than blondes. Objective conclusions as to the
best system ar~ difficult. Subjective factors will usually tip
the scales one direction or the other.

Figure 8. HP-67 introduced by Hewlett-Packard in July 1976.

Keystroke counting as a comparison of the two systems is not
valid. Both systems usually require identical numbers of keystrokes to instruct the machine what to do and in what sequence.
Both systems take getting used to. A strong argument for AOS
is that it most closely resembles the conventional algebraic
representations learned in school and practiced by the be~t
minds of the last 2,000 years. AOS uses parentheses to retain
numbers for operations\that must be performed after other operations. There is no implied operation of multiplication if a
parenthesis follows a number. RPN does not use parentheses,
but rather uses the concept of a four memory stack, entering
numbers into the stack with an enter key, and preSSing the operation key afterwards. Using RPN requires a little practice,
but owners who use it swear by it. The advantages of the HP
system is not RPN in itself, but rather the combination of the
stack, and the last X register which always saves the last number entry after an operation is performed. This allows recovery
of operator errors which is very convenient in any problem situation. To investigate the relative merits of each system would
require more space than allowed here, but the topic is important
enough that the new user should try both systems before deciding. The saying "different strokes for different folks" applies.
In addition to normal keyboard use of the "operating system",
the differences the logic system has on programming structure
should also be considered. If you are a complete novice in this
area, seek out friends and associates who have machines to give
you their viewpOints.

PPC APPLICATIONS
The typical applications that follow can be implemented by any
of the three calculators described above. The convenience,
,ease, and practicability of one machine over the other may make
it a better choice in certain applications •. The SR-S2 was not
designed to store data on cards, but it can be done. The purpose of describing these applications is not to provide explicit detail or analysis, but rather to show how the PPC may supplement or even replace a microcomputer in many practical applications.
.

Figure 9. HP-97 Introduced by Hewlett-Packard in July 1976.
Programs written for the HP-97 will run on the HP-67 and vi seversa. This arrangement allows nearly full power in your
pocket with the abH ity to print programs and listings on a
machine at the "home base"'.

The small, stick of gum-sized, magnetic cards used with todays'
machines allow the storage of program instructions and/or data.
The machine has a limited amount of internal memory for programs
and registers for data. Using appropriate programming techniques magnetic cards can be cascaded to extend program memory
and/or data registers. The SR-S2 can be programmed to use data
registers for program memory and vice versa if the proper techniques are applied 7- unsupported.
Accounting. A small business may keep the salary, taxes, insurance, etc., data on each employee on a magnetic card. The

FIRST COMPUTER FAIRE PROCEEDINGS

card is read, the weekly hours keyed, and
All the calculations required are done in
yearly cumulative totals kept in memory.
the pay records and the card is read once
new cumulative totals.

the program executed.
seconds and the new
The data is entered on
again to record the

Taxes. Income tax consultants have been able to develop algorithms to put complete tax tables on a magnetic card. Running
their sophisticated programs saves considerable time and, for
their business, adds to their income. Naturally the circulation of these programs is limited.
Conversions. Currency, pricing, and engineering conversions
can be programmed for convenient daily use that obsoletes tables because any unit can be chain converted to any other.
24 or more conversions can be placed on one card. The limitation is primarily the writing space on the card, not the number of conversions.
Eliminate Tables. Using clever curve fitting and other number
generating algorithms, thousands of pages of tables may be reduced to a few cards. The Star Almanac, all scientific function tables, etc., are practical everyday uses of the PPC.
Design Interactively. Iterative design equations can be programmed to resolve for desired parameters when one or more
parameters are changed. This interactive design capability becomes a powerful engineering aid; especially when printed results can be added to the engineers' log.
Reduce Production Errors. The use of the PPC on the production
line, or nurses' station in a hospital can save considerable
time by allowing complex programs to be run by unskilled personnel. Programs properly written can check and look for errors
in situations involving large digit quantities. One quartz
crystal manufacturer justified $800 worth of calculators on his
line the first week because a self-checking program caught a
digit reversal error made by an order clerk. Ilaving standard,
self-checking, and easily entered verification problems available for verifying program performance adds to the confidence
which non-skilled users have in the machine.
Finance Calculations. The PPC may be converted into a financial wizard that will rival most computers. The high numerical accuracy built into these machines allows individuals to
have an independent check on interest calculations. In fact,
the program may also include the legal rounding rules that
banks and savings and loan companies use. In 15 minutes all
the truth in lending statements on one page of newspaper ads
can be verified. 0ften there are two or three errors on one
page. Want to check your 239th house payment to determine how
much of it is interest? This type of problem can be done in
less than 30 seconds including the time to find and load the
magnetic program card and key in the data.
Cost Estimating. This type of problem is a natural for a small
bl!siness. Usually each business has its own guidelines and

Fig. II Ref. 1 ~11". 15 pp, 3
papers "bound".
.

BOX 1579. PALO ALTO CA 94302

PAGE 35

rule of thumb. Consider a fabricated part produced from sheet
metal. The material, size, and number of holes are keyed in
as the customer gives the data. A quoted price is given in
seconds. The program knows the size of the material and determines the optimum number of pieces. Fabrication costs, overhead, and profit are calculated without human error. Complex
products that require 20, 3D, or more inputs can be handled
easily.
Research. Computer time is expensive, and usually a microcomputer is not on your own desk. A simple program can be keyed in
to search for answers while you go on with your work. The slow
PPC may take hours or days, but it can find answers that would
take a big machine, restrictive availability, and a professional
programmer to solve. If the program is still running when it's
time to go home, simply unplug it, slip into your pocket, and
let it continue. Plug it in again when you reach home and get
the first solution while watching your favorite TV show. Start
a new problem and have another solution at breakfast.
Games. Games are just as popular on PPC's as on larger computers. Startrek, Life, Golf, Football, Baseball, and most of
the classics can be played on the PPC. Both T.I. and H-P even
offer a Games PAC. A recent·BASIC listing of the game Hexapawn
appeared in a popular computing magazine. The 2/3 column listing was the equivalent of one magnetic card program. ON THE
HP-65! True, rJachine-learning games have been programmed on'
the PPC. IIhen the "computer" is available at the personal convenience of the owner, his creative skills· are enhanced because
the machine is available whenever and wherever needed.
The above applications are not an exhaustive listing, but only
serve to illustrate the high level of programming achievement
that exists in the software for PPCs. The small size of the
machine and the external storage media makes the PPC a problem
solver, a teacher, and an entertainer. Literature on PPC app1ications has increased dramatically in the last year. The
technical literature and Users Clubs provide the bulk of high
quality software and applications information.

SOURCES OF INFORMATION
The basic body of knowledge suitable for PPC users has been in
the technical literature for many years. Only recently, however, has mathematical concepts, algorithmic techniques, and
iterative and recursive techniques been available in a form di~
rectly applicable to PPC use. Textbooks, magazines, users club
newsletters, and engineering papers have been contributing to
the general body of knowledge. The references at the end of
this paper list many of the major works related to the PPC. The
list is more complete in the Sources from Engineering and Science fields and lacking in references from the Academic community. One of the richest sources for applications information,
programs, and programming techniques is the monthly users club
newsletter.

Fig. 12 Ref. 2 8~1l", 2000 word per
page format, typical issue 12-14 pp.

Fig. 13 Ref. 3 ~11~", In German,
very difficult to translate •

- .-.----------- - - - - - - " _..•-----_. ,.

. .... ----:--:---------;---...

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

USERS CLUBS
The Council of Personal Progralllllilble Calculator Users Organizations lists three U.S. and one German club as members. Several smaller groups at major U.S. corporations are getting
large enough to qualify for membership. Approximatel't1% of
the total PPC user population belongs to a Users C1ub-. One
primary objective of these groups is to produce the highest
level of programming techniques and applications information
possible. As a result, these super calculator enthusiasts
enjoy a knowledge of the state of the programming art that
leads the technical literature by nine months to a year. Almost without exception, programs or programming techniques,
especially machine anomalies and unsupported features, that are
published today in national magazines have appeared a year earlier in a Users Club newsletter.

PAGE 36

panies, scientists, engineers, or college and high school students. The growth, history, character, and activities of these
clubs is a phenomenon-as unique as the high technology PPC
itself.
B~IDGING

TilE GAP

-TI~E

FUTURE

As previously mentioned, two new PPCs are expected by early
summer. The advanced capability of these machines will qualify them to represent t~e second generation of PPCs.They will
have 1/0 ports with handshaking capability to interface with
the rest of the computer world. Their internal program memory
will be 20 times that of the present machines on the market.
The NS-7100, for example, will have a solid state p1ugin Library that has a capacity to hold 4,096 program steps, each of
which may consist of up to three keystrokes. The Library cartridge contains the equivalent of 12,288 keystrokes! All memory of the second generation machines is non-volatile. ExecuThese clubs operate along similar lines. They are all nonprofit, independent, volunteer groups who have found that their tion speed is not much faster than todays' machines and a significant increase in speed is not expected until Silicone on
PPC forms a unique bond to share technical information. Club
Sapphire (SOS)techno10gy is imp1~mented for the integrated
activities include publishing monthly newsletters, holding
circuits.
Data registers and program steps will approximately
meetings, making group purchases, sharing programs, and maindouble. Alphanumeric displays are not expected on the handheld
taining a program data base, and even maintaining calculator
machines.
hot lines for the latest bulletins on what's happening in the
calculator world. In terms of free software alone, membership
The
details of the known machines coming from National Semi conin one of the clubs makes the membership contribution a bargain.
ducto'r and Texas Instruments in early summer are unknown.
Membership is world-wide and the machines the clubs support
Enough is known about them to see that they will bridge the gap
range from a single manufacturer to all manufacturers. There
between the calculator and the computer because of the literare no restrictions in membership except an interest in PPCs
ally infinite capability that exists for "talking" to compuand a willingness to contribute to the general goals of the
ters, printers, modems, CRTs, TV sets, and each other through
group. 11embership in these clubs include users who may be
their 1/0 port.
Presidential advisors"Vice-Presidents of Fortune, 500 com-

Fig. 14 Ref. 4 8~11", 6 pages per
issue. primar1y advanced topics.

Fig. 15 Ref. 7 8~11". 24 pages, 4
papers "bound".

Fig. 17 Ref. 9 7x9". 254 pages
spi ra 1 Lound.

Fig. 16 Ref. 8 7x9" , 380 pages
hard,. bound.

Fig. 18 Ref. 10
soft bound.

~.x10".

427 pages

FIRST COMPUTER FAIRE PROCEEDINGS

13

6!ox9~",

BOX 1579, PALO ALTO CA 94302

176 pages

PAGE 37

Fig. 21 Ref. 14 6!ox9\", 317 pages
hard bound.

Fig. 19 Ref. 11 6!oxl0", soft bound,
in press, available early summer.

Fig. 22 Ref. 15
soft bound.

Fig.
. Programming Workbook makes
user discovered features "supported".

Fig. 24 Ref. 17' Free to all HP-65/
67/97 owners who send in their registration card to get on mailing list.

8xl~",

75 pages

Fig. 25 Ref. 18 Only selected issues
of interest to PPC users.

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

SUMMARY
The personal programmable calculator (PPC) with external memory
is indeed a shirtpocket computer. The new machines to be announced in early summer 1977, with their full I/O capability,
bridges the gap between calculator and computer. The term "personal computing" has a special meaning to the PPC user. "Personal" means "on ones person", available any time, anywhere. .
The applications and programming technique state of the art has
kept up with the hardware advances because of the activities of
the manufacturers software support and the Users Clubs. The
PPC offers the computer user a powerful, low cost, accessory
and, in applications where numerical solutions satisfy the major
needs, may replace the microcomputer completely. The PPC of
today is not just a calculator; inside it is a microprocessor
with control ROMs that give it a calculator personality. The
shirtpocket computer is here to stay.

ACKNOI'ILEDGMENTS
I would like to thank the members of all the PPC USERS CLUBS
who, through their thousands of letters and phone calls over
the past 2~ years have provided the material used to prepare
this overview. I would also like to thank Jim Warren for letting "the other computing users" have a chance to share the
calculator viewpoint. Compuca1c, Educa1c, lIew1ett-Packard,
Matrix, and Texas Instruments
provided photos of
their products.
~EFERENCES

1.

2.
3.

4.
5.

6.

7.
8.

9.

10.
11.
12.
13.
14.
15.

Electro '76 Professional Program, "Advanced Pocket
Calculators", 32/4 May 11, 1976.
"65 NOTES", published monthly by the HP-fi5 USERS CLUB,
2541 W. Camden Place, Santa Ana, California 92704.
~, published bi-month1y by the Mikro-(Taschen)Computer Anwender-C1ub. Buschenwe~ 24. D5noo K61n 40.
West Germany.
52 Notes, published monthly by the SR-52 Users Club.
9459 Taylorsville Road, Dayton. Ohio 45424.
Recreational Programmers' Notes, l)ub1ished monthly by the
New Zealand RPN Club, P.O.Box 21067, Edgeware. New Zealand.
WESCON Professional Program, "Pocket Calculator Update",
7/3 September 14, 1976.
WESCON Professional Program, "Present and future of
Sophisticated Pocket Calculators", 29/4 September 19. '75.
Smith, Jon M., "Scientific Analysis on the Pocket Calculator", New York, John Wiley &Sons, 1975.
McCarty, George, "Calculator Calculus", California,
Page-Ficklin, 1975.
Sipp1, Charles J., "Calculator Users Guide and Dictionary",
Champaign, Illinois, Matrix Publishers, 1975.
Sipp1, Charles J., "Programmable Calculators", Champaign,
Illinois, Matrix Publishers, 1977.
Fowler, P.obert W., "A Collection of HP-25 Routines",
12104 Arbie Road, Silver Spring, Maryland 209Q4, 1976.
Eisberg, Robert M., "Applied Mathematical Physics with
Programmable Pocket Calculators", McGraw-Hill, 1976.
Smith, Jon M., "Financial Analysis and Business Decisions
on the Pocket Calculator", :lew York. John Wiley & Sons,'77.
Blazie, Dean B., "A Compiler for Pocket Calculators",
Technical Memorandum 1-76. U.S. Army Human Engineering
Laboratory. /\berdeen Provi ng Ground, Maryl and.

16. PBX Exchange. Dated periodical from Texas Instruments,
Inc., PBX-52, P.O.BOX 22283. Dallas, Texas 75222.
17. HP Ke~ Notes, published quarterly by Hewlett-Packard,
100D.E. Circle Boulevard, Corvallis. Oregon 97330.
18. Hewlett-Packard Journal, ~ublished monthly by Hew1ettPackard, 1501 Page· Mil' Road, Palo Alto, California
943Q4, November 1976 issue.
19. Compucalc, Inc., 201 E. Main, Silverton, Oregon 97781.
20. Educalc,Educational Calculator Devices, P. O. Box 974,
Laguna Beach, California 92652.

PAGE 38

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579. PALO ALTO CA 94302

PAGE 39

THE SIDELOBES OF INDUSTRIAL DISTRmUTION ARE FOCUSED ON THE HOME MICRO·
COMPUTER HOBBYIST
f.
In-circuit emulator and/or simulator
Lowell Smilen. Ph.D.
AlmallStroum Electronics
5811 Sixth Avenue South
Seattle WA 98108

ABSTRACT
The emerging microprocessor technology is having and will
continue to have a strong impact on the way electronic design
is carried out on existing electronic prOducts and the countless
number of new ones yet to appear on the market. The microprocessor hobbyist is in the forefront of this exciting revolution; both as a consumer and a contributor. This paper will
explore how the hobbyist can benefit from the engineering
programs in effect at some electronic distributors, who in
turn are working closely with the, semiconductor manufacturers.
The broad array of microprocessor kits, system development
tools and learning products which are now available will also
be discussed.
I.

Introduction
The role of the industrial electronics distributor has been
evolving over the past few years. Whereas previously,
the distributor was concerned mainly with supplying single
function components, i. e. resistors, transistors, wire;
the current trend towards multifunction components and
pre-wired subsystem boards such as microprocessors,
single board computers and microprocessor development
systems has caused the distributor to become more technically oriented.
The intent of this paper is to describe the wide range of
microprocessor products and services available through
some segments of industrial electronics distribution and
to suggest that this mode of operation, perhaps with variations, will be increasingly followed in many parts of the
country.

g.

Software for program editing, assembly and in
some cases software for high-level language

The function of these units will be discussed in the section on Microprocessor Products.
The visitor to the Center recei~es a demonstration on one
or more of these systems with a discussion of their capabilities. (The Center at Almac contains the development
systems from Intel, Motorola, National and Texas Instruments).
Of significance to the hobbyist is the fact that time on
these systems can be purchased on a daily basis.
As a means of keeping the designer current with the
latest developments in microprocessor products, the
distributor sponsors a series of technical seminars
usually presented by field application engineers from the
semiconductor manufacturers. The distributor also presents technical seminars at universities, local microcomputer clubs and trade shows.
There are other engineering programs in existence at
distributors which are pertinent to the hobbyist. A
PROM programming facility provides ,the means for
entering the debugged program into a field programmable ROM, either erasable or not, from a variety of
media such as paper tapes and mark sense cards.
A distributor often provides electrical assembly capabilities for customizing such items as switches, connectors, terminals and flat ribbon cable to the user's specs.
Where the distributor maintains a retail store in conjunction with his stocking warehouse, the hobbyist has
easy access to the wide variety of products and services
which the distributor provides to his industrial
customers.

The major effort or mainlobe energy of the distributor is
Ill. Microprocessor Products
directed at the OEM (original equipment manufacturer),
however, the home hobbyist market is growing at a suffiA. LSI Chips
ciently rapid rate that the side lobe energy directed in that
direction is still considerable. This is particularly true
The range of microprocessor products is so extenfor microprocessor hobbyists since electronic system
sive that they can be be st treated by breaking them
development using these products lends itself well to the
into categories: First, there are the LSI chips
home laboratory. The home hobbyist ranges from the
which constitute the microprocessor chip set, the
person who is developing a system mainly for fun and games
RAM and (P) ROM memories; serial and parallel
to the experimenter who is prototyping a system from
I/O chips and the newer peripheral chips such as,
which a profit is ultimately to be realized. The nature of
the programmable DMA controller, interrupt
the microprocessor products on the market allows both
controller and interval timer. Examples of some
goals to be realized.
of these chips are the:
II.

Engineering Services
Perhaps the biggest problem associated with moving into
microprocessors is determining where to start. A
Microprocessor Development Center with a resident
technical specialist provides the ideal starting point.
The beginner then has the opportunity to come in and
discuss his goals, budget and future plans. The
designer at every experience level gains exposure to
new products. The Center contains the development
systems from a variety of semiconductor manufacturers
with an assortInent of peripheral devices; typically a
development syste~ consists of:
a.

b.

The processor console with between 16K and 64K
memory; resident firmware for controlling the
peripheral devices; and resident firmware for
program operations and debugging
Teletype or sirriilar units, possibya high speed
printer

c.

Disc operating system and/or paper tape reader
and punch

d.

CRT console

e.

PROM Programmer

1.

Intel 8080A - an NMOS 8-bit parallel CPU with
6 registers and an accumulator, separate 16bit address and 8-bit data bi-directional data
busses.

2.

Intel 8048 - an 8-bit NMOS LSI chip whiCh
contains the CPU, memory in either ROM or
PROM structure, RAM, internal clock, programmable I/O parts and interrupt control
logic.
The 8048 illustrates the trend of integrating
peripheral chips and memory onto the CPU
chip to form a more tightly integrated system.

3.

Motorola 6800 - an 8-bit NMOS microprocessor
with an 8-bit bi-directional bus and a l6-bit
address bus, 6 internal registers using a 5-volt
power supply.

4.

Motorola 6802 - an 8-bit NMOS microprocessor
that contains the registers present on the 6800
but also includes an internal clock oscillator
and driver and 128 bytes of RAM. It uses the
same language as the 6800.
This chip also illustrates the availability more
highly integrated LSI chips.

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

The trend towards microprocessors· witf>. greater
data processing capabilities is sho~ in the:
5.

Texas Instruments TMS9900 - a single chip
l6-bit NMOS CPU having 16 general registers
and on-chip instructions for multiply and
divide. It is supported by the TMS 9901 a
programmable systems interfac.e chip, the
TMS 990Z asynchronous communications
controller, the TMS 9903 synchronous
communications controller and 'the TMS
9904 clock generator.

£6,r teletype communications and program
debugging and a PC board with an expansion
capability. The keyboard kit was introduced to
obviate the need for the teletype and uses the
blank portion on the PC card of the first kit..
The ROM included with this kit allows the user
to enter, debug and execute his program by
using the calculator-style keyboard.
C.

National SC/MP - 8-bit microprocessor
which is available either as an NMOS chip
or a slower ·PMOS one. In addition to its use
dn equipment controllers it finds applications
as a peripheral interface unit in distributed
processor systems.-

Intel's SBC 80/10 probably was the first of the single
board computers followed by Motorola's micromodule
the M68MMOl. Intel has now introduced its expanded
version of the 80/10, the SBC 80/Z0 and Texas
Instruments, the. T. I. 990/4.

There are many factors to be considered in
choosing a microprocessor chip. Among
these are speed (relative to the application),
power dissipation, supply voltages, data
. handling capability, availability of peripheral
chips, need to minimize chips, cost and
second sourcing. There is another factor,
which will be discussed further later on,
hardware and software support provided by
the semiconductor manufacturer.
B.

The single board computers are prewired circuit
boards that have been tested and contain a CPU,
RAM, 1/0 chips, clock circuits, terminal interfaces
and sockets for ROM and I/O expansion. Their
Significance is enhanced by the fact that they are
members of a family of boards and cardcages that
may include RAM and PROM socket cards, I/O
cards, A/D and D/A cards and more recently a
general-purpose-interface-bus card. The cost of
the microcomputer card and associated modules,
in single unit quantities, is in the $500 and $800
range.

Microprocessor Kits
The next product grouping to be discussed, and
possibly of greatest interest to the house hobbyist,
comes under the heading of microprocessor kits.
Historically, kits have always been popular with
hobbyists ranging from test equipment kits to high
fidelity and stereo subsystems. The semiconductor
manufacturers have made a strong effort to capture
a wide following among microcomputer beginners
by putting on the market kits which are excellent
values, both in electronic parts and documentation
for self-learning programs. They provide an ideal
starting point for novices and .those who wish to
become familiar with a second or third chip family.
The first microprocessor kits were merely an assort.ment of LSI chips. When the kits were expanded to
include a printed circuit board, their popularity
grew and with the introduction of LED displays and
hexadecimal keyboards into the kits sales advanced
more rapidly. With the inclusion of a means of
entering and receiving data the need for an expensive
terminal was minimized.

Computers on a Board
Next in the hierarchy of microprocessor products
would come the .families of Single-board computers.
This famUy of products probably has its greatest
significance for industrial users but the hobbyist
should be aware of this potential storehouse of
products.

A chip which is applicable to controller type
systems which require a lower degree of
computer complexity at a low cost is the:
6.

PAGE 40

The beauty of these micrC?computer cards and their
support modules is that they provide for a wide
variety applications without the need to stuff and
wire each PC board, they minimize inventory and
spare part inventories and they are compatable with
the microprocessor development system associated
with the particular semiconductor manufacturer.
This brings us to the last grouping of microprocessor associated products - the microprocessor
development systems.
D.

Development Systems

Examples of the more popular kits ranging in price
from under $100 to $Z50 are:

By their very nature, microprocessor systems are
complex, in that they require both hardware and
software design, with trade-offs between the two.
Digital test equipment existed for hardware checkout and large computers could serve for software
development and simulation. However, there was
a need for a new class of test equipment which
combined both functions - what resulted was_the
microprocessor development system which is itself
a general purpose microcomputer system. The.
key components of these systems are:

1.

Intel SDK-80 which contains the 8080A, RAM
and ROM memory, I/O chips, a crystal, TTL
logic, passive components and a PC board.
The monitor firmware allows communication
with various terminals, program debugging and
execution. There is space provided on the board
for the user to expand the system for his particular application.

1.

Z.

Motorola MEIC 6800DZ Kit contains a Z4 key
keyboard and a 6-digit seven segment display
in addition to the M6800, RAM and ROM serial
parallel I/O chips, TTL logic, Z PC boards,
and all passive components needed to complete
the kit. There is a monitor program which
permits communication with an audio cassette
and program entry and debug from the key
board. This kit can also be expanded by the
user,

Microprocessor con solEI. This unit contains a
microprocessor and associated circuitry for
interfacing to the resident RAM memory which
can range from 8K to 64K; firmware in the
form of a monitor program in ROM for serial
and/or parallel communication ·with one or
more terminals, for program loading, debugging
and copying; a card for interfacing tne system
to external hardware; additional sockets for
special function cards and a heavy duty power
supply.

Z.

Peripherals

3.

National ISP-8K/ZOO SC/MP kit and ISP-8K/400
SC/MP keyboard kit. The SC/MP kit was
available initially and contains the SC /MP chip,
RAM, a clock crystal, buffering chips, a ROM

The disc operating system, often with two drives,
holds the system software and provides a rapid
means of loading and storing programs.
Where paper tape is used, in conjunction with a
teletype, a high speed paper tape reader, ZOO
characters per second, is· desirable ~o perform
the loading fUnction.
Other perpherals include the ASR. 733 twin

FIRST COMPUTER FAIRE PROCEEDINGS

cassette, data terminal, an alphanumeric keyboard cathode ray tube display console and 165
character per second line printers.
3.

In-circuit Emulators
The utility of the development systems was
greatly enhanced by the introduction of cards
which plugged into the main console's motherboard to allow the development system to be
used to check I)Ut the hardware being developed
The emulator permits the system being developed to use the main console's memory and
I/O capabilities, to execute the program being
developed in the user's hardware and to display
executed instructions with address and data,
and contents of the CPU's registers, all in
real time.

4.

PROM Programmers
Once a program has been, succes dully developed, the PROM Programmer allows the data
to be entered in a field programmable ROM.
The PROM Programmer may be a separate
console that is interfaced to the CPU console
by cable or a PC card that can be inserted
into the mother-board of the CPU console.

5.

Resident Software
Initially, the resident software was dedicated
to program assembly and editing, then came
the software for using the emulators and the
diagnostic check-out procedure. However,
recently the trend has been to resident higherlevel languages such as PL/M-SO, Fortran IV,
and Basic. These operate in systems using
from 4K to 64 K bytes of memory.
Most semiconductor manufacturers have produced a prototype development for use with
their microprocessor chip; some have gone
further and developed the wide variety of
hardware and software products discussed
above. Most noteworthy of mention are
Intel's Intellec System, Motorola's EXORcisor Systems, National's IMP and PACE
Systems and more recently, Texas Instruments' 990/4 Prototyping System.
Prices for microprocessor development
systems range from a minimal configuration
at $4,000 to a multi-function test bed at
$15,000.

E.

Learning Systems
There is another group of products, which can be
described as learning type systems, that has been
introduced by the semiconductor manufacturers.
Most of these products are unique.
National Semiconductor has produced the SC/MP
Low Cost Development System (LCOS). It comes
with a chassis containing a monitor program, a
hexadecimal keyboard, a LED display, sockets
for expansion and a CPU card with RAM and
I/O chips. Communication with this unit is in
machine language either via the keyboard or a
teletype. Additional cards for RAM and PROM
memory can be obtained arid it will run National's
4K Basic.
Intel's PROMPT SO and PROMPT 4S contain single
boards computer cards for the SOSOA and the S7,4S
or S035. They have hexadecimal keyboards and
LED displays, ' PROM programmers, monitor firmware and power supplies. They can be used as
developm~nt or learning systems. They will interface to the MDS-SOO.
'
The learning-type systems described above are in
the $500 - $1, 500 price range.
This brings us to the Texas Instruments Microprocessor Learning System which consists of four

BOX 1579,. PALO ALTO CA 94302

PAGE 41

separate modules, each provided with a detailed
manusl. The LCM-lOOl is intended to teach microprogramming, the development of a set of instructions a8 used by a microprocessor and is concerned
with processor architecture, data handling and
processor programming. The companion modules
are the LCM-1002 a controller, LCM 1003 memory
and the LCM-1004 input/output module. The four
modules combined constitute a versatile microcomputer. The entire set costs less than $700.
IV. Conclusion
The era of microprocessors is indeed in its infancy. Regardless of what projections are used for its growth, there
is no doubt that they will have a profound impact on our
lives whether we are engineers, technicians or consumers.
The technical hobbyist enjoys working with and nuturing
new technologies. In the case of microprocessors, the
hobbyist will find that broad, valuable assistance and
support are being provided by the technically and service
oriented electronics distributor, working with'the creative
semiconductor manufacturer.

FIRST COMPUTE-R FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

_PAGE 42

A look at micro-computing as if people mattered

Andrew Clement
789 W. 18th Ave.
Vancouver B.C.
Canada V5Z lWl

Abstract
E.F. Schumacher, in Small is Beautiful and his more
recent work, has drawn attention to the role tha,t
technology plays in the shaping of our present society
and to the need for technologies of smaller scale
in the growth of a more humane society. He identifies the criteria of smallness, simplicity, carital
cheapness, and non-violence as being part1cular y
1l1)portant. Micro-computer technology, which is the
basis of computing systems for home and personal
use, seems to satisfy these criteria in many respects,
and so it potentially represents a technology
appropriate for future general use.

benefit, from their use. Smaller, more humanscaled enterprises are needed in the formation of
a more humane society.
Schumacher suggests four criteria with which to
judge technologies and serve to guide their
development. These criteria are:
-

small
simple
inexpensive
non-violent

Technologies which satisfy these criteria will be
much more likely to be good for us.

One technology that appears destined to play a large
part in our lives is that of micro-computing.
Conventional computer technology, already quite
This paper examines critically the field of mi:roinfluential, is at the moment embarking on an
computing in light of Schumacher's four criter1a.
important new direction based on a radical reMany of the positive aspects are seen to hold up
duction in the size and cost of primary computer
under this examination. In important respects the
components. Large scale integration (LSI) of
technology really is small, inexpensive and noncircuits has made possible pOwerful computing
violent. It can also be fun, facilitate the more
devices that could be purchased by virtually
equitable distribution of computing power and help
everyone for home or personal use. Though not
breakdown fear and mis-understanding of computer
widespread yet, the future general use of these
technology. A number of important drawbacks are also "micro-computing" devices seems probably and would
discussed,' Micro-computers are generally crude and
,have considerable impact on society. At first
not very powerful at the moment. They are not simple appearances it would seem that this new microto use other than at a fairly elementary level. Wide- computer technology satisfies many of Schumacher's
spread use of micro-computers may contribute to the
criteria and so could have the potential to provide
increased centralization of power in society.
us with tools of great service. The remainder
of this paper is concerned with assessing this
The important role that computer amateurs and other
potential and exploring ways in which it can be
pioneers in the micro-computing field have in inexploited.
fluencing its future development is pointed out.
They are challenged to devote effort to ensuring
II. WHY MICRO-COMPUTER TECHNOLOGY IS IMPORTANT
that computers are used humanely to enhance people's
lives and that the negative aspects of computers are
Before becoming concerned about the social impact
minimized. The paper ends with suggested techniques
of micro-computer technology it is wise to see
and applications that may assist in achieving this
whether such concern is of any relevance. Firstly
goal.
it should be shown that micro-computers are likely
to have an important effect on people's lives and
I. INTRODUCTION
secondly that there is some possibility of influencing their course of development. Both of
Everyone agrees that technology has had a profound
these appear to be the case.
effect on modern society. Technology has crept
-into every facet of our personal lives and left
Micro-computing has not yet begun to affect many
no public institution untouched. Along with the
people's lives directly but there is good rea~on
many good things it has brought, there have
to believe that in the foreseeable future- the1r
been serious ill-effects to which no-one is immune. impact will be great. What we are witnessing
It is therefore wise of us to inspect closely new
at the present time is the rapid emergence of the
technologies as they arise to determine whether,
computer from within the-confines of large
and how, we may benefit from them.
institutional settings and into the view of the
general public. Until now most people have not
Two contemporary authors have made significant
really seen a computer or had to deal with one
contributions to the understanding of what we
directly. Rather they have learned of them by
should expect from our technologies, and their
repOrt and communication with them has been via
manifestation as tools, in order that they serve
the mail and through a bureaucracy. Computer
us best. Ivan Illich, writing in Tools for
hardware first came into public view in the form
Conviviality, calls for tools "which give each
of terminals for airline reservation systems
person- who uses them the greatest opportunity to
(back view only), but now they are highly visible
enrich the environment wi~h the fruits of his
in many banks and other institutions. Point-ofor her vision." (p.22), tools "which foster
sale processing, and automated checkout are about
self-realization", (p.25) tools that promote
to burst forth and electronic funds transfer is
self-reliance, autonomy and harmony between
fast approaching. In the home, the last few years
ourselves and with nature. It is essential that
have brought the cheap pocket calqulator and the
control of the tools lie with the individuals
video game that plugs into the T.V. set. Other
and organizations they are intended to serve.
talked of T.V. add-ons include systems to allow
E.F. 'Schumacher has similar objectives, and in
shopping, banking, and even voting from the comfort
Small 'is Beautiful and Technology and Political
of one's living room. We can look fo~ard to
Change, identifies the scale of the technology
finding (?) digitai.a.i!t',cu.ij::J:y in our cars, ovens,
as the most important factor in determining its
" and other appliances, (Figure 1).
social consequences. In general, many present
technologies are so massive that the overall
At work the outlook is for the "electronic,office"
,effect for people is that they suffer,rather ,than
with computerized word processing and greater

FIRST COMPUTER FAIRE PROCEEDINGS

realiance on computer conferencing techniques.
All of these changes rely heavily, though not
entirely, on computing devices built upon the
technology of large scale integration (LSI).
Thus many aspects Of our lives, in buying, in
recreation, in employment and transportation
and communication are going to be affected strongly
by micro-computing technology. We should see
what we can do to ensure that we are better off
for all this.

BOX 1579, PALO ALTO CA 94302

PAGE 43

complete and do not guarantee that the effects
of a technology will be humane, but they do provide a useful starting point.
Small
People are small and tend to get overwhelmed when
they have to approach and deal with things that
are much larger than themselves. It is clear that
the physical size of micro-computers is small. They
can be put on your desk, can be carried around,
taken over to friends' house, the whole thing can
be seen and be grasped at one time. At the extreme,
the Dynabook that is being developed by Xerox is
pictured as being the size of a notebook and
works off batteries and so will be completely
portable and unintimidating in appearance. This
is an important departure from the conventional
view of computers as large, complicated and somewhat
fearsome devices, demanding large buildings, special
air conditioning, phalanxes of experts to care
for them, and layers of bureaucrats to protect them.
Considerations of size apply not only to the actualhardware that the user sees but also to the necessary
back-up technology and institutions as well as the
organizational settings that are required to make
effective use of the tools. Fortunately in most
of these respects the "smallness" of micro-computers
remains in tact.

f~l
The realization that micro-computers are going to
have a major impact on our society is not, by
itself, sufficient reason to become actively
concerned in trying to affect their development.
We need confidence that the technology is somewhat flexible, that it can be changed to some
degree, and further that these changes will be
reflected back on the society that uses the
technology. If on the other hand what we do has
no effect, then we might as well sit back to
enjoy the show and amuse ourselves with our new
toys.
We shape our tools; thereafter they
shape us.
Marshall McLuhan
This statement expresses part of the justification
for concerned action at the present time. At
the moment the computing devices are still crude
and many of the details not worked out; the
manufacturing and marketing systems not fully
developed; patterns of use have not been firmly
established; the myths that apply to conventional
computers will no longer be accepted but replacements have not yet taken hold; legislative regulations await formulation. In many areas the
technology and related structures have not
solidified and although to a large extent, the
future forms have already been determined
by prevailing social forces, there is still a
short time to influence the course of development.
To do this positively and effectively requires an
understanding of the technology and what it has
to offer.
III.

SCHUMACHER'S FOUR CRITERIA:
SMALL, SIMPLE, INEXPENSIVE, NON-VIOLENT

Manufacture and marketing of most of the hardware
components can be done with relatively small firms
and without huge factories and machines. In fact,
many of the products available to computer amateurs
have been introduced by small groups of individuals
operating out of "garages". This is a reflection
not only of the-relative newness of the field (there
hasn't been enough time for companies to grow really
large) but also to the characteristics of the
technology and the particular way in which it has
developed. A good example of this is found in the
"bus" structure that underlies many current microcomputing devices. A "bus" structure is not only
just an excellent way to organize a computer
(there are other ways) but has important consequences in other areas. The emergence of the "Altair"
or S-IOO bus as a de-facto standard has resulted
from, and more importantly, allows, small enterprises to create special products that can plug
into it. Of course this has depended on the fact
that there is no restriction preventing anyone from
doing this. It is not hard to imagine that a
really large manufacturer (mentioning no names)
would either not use such an easily copied and
exploited technique or would find artificial
means to prevent such "abuse" and preserve its
monopoly.
When it comes to the manufacture of the integrated
circuits (ICs) the "smallness" is lost somewhat
since fairly large, though not huge, installations
seem to be required.
On the software end small groups appear to be able
to operate efficiently, perhaps more efficiently
than armies of programmers even with very large
programming tasks. However, when it comes to
marketing a hardware/software combination, size
may be a considerable asset in order to enjoy
economies of scale and as a protection against
competition. Using micro-computers can also .be a
small-scale affair as long as there is no need to
have to plug into large centralized networks as
is the case with conventional television.

Schumacher's four criteria give us way looking at
technologies and evaluating them for their potential
to benefit us. The criteria are not really new and
Simplicity is another virtue, not necessarily
in fact are based heavily on common-sense notions of
related to size, but sharing with "smallness" the
what makes something friendly and easy to get along
tendency to promote autonomous control and selfwith. Everyone has had r~ding experiences with
reliance. If a technology or tool is simple then
tools or institutions and I am sure that they would
it is much easier for people to understand it, to
often find that these criteria were underlying the
success of the encounter. Conversely, unsatisfactory use it and modify it for their purposes, to fix
it when it goes wrong, in short to control it
experiences with technology can often be traced
rather than be controlled by it. Unfortunately
back to it being huge, complicated, expensive, or
micro-computers are simple only in a few, restricted
violent. By themselves these criteria are not

FI ~STCOMPUTER.fAt-REPRoceEDtNGS -----BOX 1519;--PAtO-A-LTO --CA94302

aspects. Most people do not have a great deal of
trouble using computer equipment. Small children
appear to find it simple enough and although
harder to use than most popular appliances
(e.g. telephone, oven, etc.) it is certainly much
easier than an automobile, once some basic skills
and concepts have been mastered. The same goes for
the assembly of equipment from kits and the composing of simple programs. ' However, when involvement goes beyond this level, things become much more
complicated. The ahalysis, design, and programming
of major systems requires specialized skills
and experience. There do not seem to be programming languages and techniques presently available
that allow us to do this sort of thing fairly
,easily. This is due no doubt in part to the inherent complexity of the process but also because
we are still in the infancy of our understanding.
The problem is even worse when it comes to the
design and manufacture of hardware, particularly
integrated circuits. A highly advanced and
sophisticated technology is involved requiring
machines of great pracision and personnel of rare
expertise. With the reliance on experts goes a
loss in control and freedom, resulting in a
situation akin to that with the automobile. Most
people can drive one, put in gas, change tires and
sparkplugs, but when it comes to repairs we leave
our mobility (and pocket-books) in the hands of
trained auto-mechanics. The prospect of actually
making our own vehicle or modifying an existing
one is simply out of the question for all_ but a
handful - it's just too complicated. The present
situation with micro-computers is substantially
worse. with the consequence that at least in the
foreseeable future their popular use will centre
mainly around the purchase of plug-in modules.
Most people will depend on outside hardware and
software suppliers and not be able to re~y on
themselves or others in their vicinity. The guts
of our major machines will continue to be generally
out of bounds.

not require lots of time to start with but does take
a great deal of time and care, making the ultimate
cost fairly high. The purchase price can be kept
down if the software is general and reliable enough
to be attractive to a large number of ,users. One
way to do this is through software exch_ang4jls where
software can be made available and acquired cheaply. The producer would not stand to earn a great
deal of money but would presumably receive some
compensation by being able to enjoy other peoples'
work at a low cost. If this system is to flourish
though, the software must, be very reliable, well
documented and widely accessible. Dr. Dobb's
Journal is a good example of this process in action
at a level of amateur computing. The alternative
seems to be stiff copyright regulations maintaining
high costs for all but the most widely used packages.
Non-violent

It is very important that a technology that is to
find widespread use not harm people nor damage our
natural environment. In a direct sense this is
certainly true of micro-computer technology. The
greatest physical danger to an average user is getting
an electric shock or having one drop on his toe.
Environmentally, no aspect of computer technology,
even with universal application, consumes much in the
way of natural resources, demands large amounts of
energy, nor produces appreciable pollution. We can
say generally that computers "walk lightly on the
earth". (Figure 2) This is because the hardware,
the physical part, is needed only to harbour the software, which is really where the interesting activity
is going on, and thus has to interact only minimally
with the rest of the world. Micro-computing is like
other communications technologies in this respect
in that its effects are usually not directly physical. For instance, the violence that results from
television is not due to its physical characteristics
but rather to the indirect effects on its viewers
over a period of time. With micro-computing, the
violence comes from the ways in which it affects how
Inexpensive
people see themselves and how they relate to others
and 'their environment. Excessive and narrow use of
The criteria of inexpensiveness applies primarily
computers seems to promote mechanistic thinking and
to the financial aspects of a technology, and in
de-personalization which represent and result in forms
fact, Schumacher uses the term "capital cheapness".
of violence that, though not overt, are nevertheless
The capital requirements of a technology are clearly significant. Further investigation of this social
related to its size and complexity, and like them
and psychological violence is vitally necessary if
has an important influence on its control and
large numbers of people are going to come in regular
acceptability. Again it is useful to distinguish
contact with computers, (Figure 3)
between the hardware and software aspects and the
consumer and production ends of micro-computer
technology.
Perhaps the most dramatic and publicized feature
of the "micro-computer revolution" is the drastic
drop in price of hardware components. This plunge
in cost is probably the most important factor
contributing to the rise of popular computing and
the trend shows every sign of continuing. Small
hobby systems are now available for a few hundred
dollars, which is in the order of domestic appliances and within the reach of many people. However,
by the time the extra memory, peripheral storage
and other goodies have been added to make an
interesting system the cost has risen to several
thousand dollars, making it a substantial investment and thus out of the range of most individuals
and small organizations. With further refinements
of technique and the development of mass'markets,
this will probably remain the case for only a few
more years, at least in North America. This contrasts sharply with conventional computer equipment,
whicp is enormously expensive in comparison, and
thus available to only already wealthy organizations.
At the manufacturing end it appears that great
'
investments of capital are not required except
possibly in connection with the production and
IV. ADDITIONAL SIGNIFICANT FEATURES OF MICRO-COMPUTING
marketing of integrated circuits.
Besides Schumacher's four criteria that have Just been
Software, to bring the newly inexpensive hardware
discussed, there are a number of other important
to life, has -not enjoyed the same radical drop in
features that should be considered when examilling
price, mainly because it is a mind and labour
micro-computing'spotential to serve as a humane techintensive process and not susceptible to easy
nology in our society.
automation., To produce high-quality software does

FIRST COMPUTER FAIRE PROCEEDINGS

Fun
Micro-computers are fun! Lots of people, children of
all ages, enjoy playing with them. Computers are not
just serious

business~

They have the potential to

become great mind toys since they are so flexible and
can be adapted to represent such a wide variety of
situations (see Ted Nelson's. Computer Lib/Dream Machines) •
They are such a good toy, in fact, that some people get
so fascinated and turned on to the world they are
creating and exploring in the machine, that the outside
world gets lost.

For this reason, excessive exposure

to computers should not be allowed to drive out other
more physical and social forms of play, particularly
in the case of children. Nevertheless the pleasure
that can be obtained from micro-computer technology
is an important part in making it friendly and socially desirable._

BOX 1579, PALO ALTO

cA

94302

PAGE 45

usually is on a stark, single upper-case type font
of poor definition is often much lower than we are
accustomed to in other areas.

This doesn't have to

be the case. Input to computers is almost always
through keyboards with very little use being made of
devices such as light pens, joy sticks and "mice",
which, in many cases, are more appropriate and- easier
to operate. The languages of interaction with which
we communicate with the machine are also often primitive. Seldom do they offer convenient aids in learning them,are usually intolerant of any "mistake",
rudely insisting that they be addressed in strict
and peculiar ways, and they do not easily admit to
modification to correct their annoying features. In
fact, a computer usually has to be treated rather
like a spoiled-child from whom any desired, out-ofthe-ordinary behavior can be obtained only by those
who are very familiar with the brat or who love it as a mother and are therefore blind to its shortcomings. This is not to say that there have been
no important achievements, for clearly there have
been, but we still have a long way to go before most
people find micro-computers to be friendly, useful
and easy to get along with. An indication of what
is possible in this regard is seen in Alan Kay's
Dynabook Project at Xerox. The aim of his'Learning
Research Group, as outlined in Personal Dynamic
Media, is to develop a computer the S1ze of a note- .
book that rivals in power some of today's biggest
computers. A Dynabook would have visual output of
at least "higher quality than what can be obtained
from newsprint. Audio output should adhere to
similar high fidelity standards." A Dynabook could
be owned by everyone and used "as a medium for expression through drawing, painting, animating pictures,
and composing and generating music", as well as

handling many more mundane information processing
tasks. The fact they have already made great
progress gives credence to the achievability of their
goal and is a tribute to what the combination of
talent, hard work, and money can accomplish.
Exclusiveness

Breakdown of fear and misunderstanding
The widespread use of micro-computers will hopefully
have the effect that people will gain a much better
understanding of computers. This will tend to lessen
the fear of computers based on ignorance and provide
a firmer basis for the real justified fears and thus
enabling people to deal more effectively with the
technology. It should make it much harder for large
organizations to hide behind their machines and abuse
people by insisting they conform to the expectations
of the computer. People will learn that it is not
the machinery that is mainly responsible. However,
there is a danger that the understanding may only be
superficial and that the loss of fear resulting from
familiarity may work against people. Instead, what
could happen is that this simply paves the way for
easier penetration and acceptance of the more questionable aspects of computer technology, such as Electronic Funds Transfer and other large-scale databank
systems.
Redistribution of computing power
The ability to process information quickly and cheaply is an important component in the exercise of power
in present society. Until now the mechanisms for
doing this have rested almost exclusively in the hands
of large institutions while individuals and small
organizations have been pretty well left out. The
wide-spread availability of small, yet reasonably
powerful computers could alter this significantly and
help shift real power, along with computing power,
toward smaller social units. For this to actually
take place not only would the computing power have to
be accessible but also the expertise and raw information needed to go with it. It is not clear that the
organiz"_tions whose strength would suffer in proportion would be willing to relinquish their control over
these as well as the other vital components of power.
In fact, if a multitude of .micro-computing devices
act mainly as peripherals in a highly centralized
system; then power will be further consolidated in
the hands of the massive interests that already dominate society.
Crude, not powerful
Cheap, general·purpose micro-computing systems are
still in their infancy and are yet fairly crude and
lacking in significant power. This is particularly
true of the way in which people have to interact with
them. The graphic quality of output, based as it

Micro-computing is much more accessible to average
people than conventional computing, but still has in
some ways the same exclusive cult ·feeling about it.
For example, informal observation reveals that the
overwhelming majority of active participants are
male. Why is it that more women are not involved?
Is it because machines are inherently more interesting
to men, perhaps women receive cues that they are not
wanted in the area? The simple fact that it is already
so male-dominated may be sufficient to intimidate many
women from participating actively. That the disproportion is not as pronounced among young enthusiasts
could be sign of change, although perhaps computers
appeal to the adolescent in us and men stay adolescent
longer. Reducing sexist and other forms of bias and
involving a wide variety of people is important in
the development of micro-computing. A range of considered viewpoints will tend to protect against the
growth of a widespread technology that serves only the
interests of the small group of its creators.
The sources of discrimination and exclusion are probably deep-seated in our culture and so cannot be removed
quickly. However, there are some fairly obvious mechanisms that can be seen at work and dealt with. One
of the clearest is the way that jargon is used. Any
advanced technology needs specialized language in·
which to express the notions that are peculiar to it.
However, at the same time, and quite unconsciously, it
also serves to exclude those who are not initiated
into the circle (Figure 2). and reinforces membership
for those already in. Deliberate avoidance of unnecessary jargon and careful explanations for novices will
do much to broaden participation in this important
field.
V. THE CHALLENGE TO COMPUTER AMATEURS AND OTHER PIONEERS
It is hopefully clear from what has preceeded, that
micro-computer technology, though suffering from some
major drawbacks, has a number of positive features
to recommend it for wide-spread, human scale use in
society. It is very likely to have an important impact
on society and how it is shaped now, in the critical
period of its infancy, will have long-term consequences.
One group of people who will influence the course of
development and who are in a position to exercise some
choice over its direction are the computer amateurs.
There are two main reasons why this is so.· The primary
reason is that computer amateurs are the first major
'
" group in the general population to have significant
computing devices in their homes. It if catches on,
the market would be enormous and so major manufacturers will be watching closely to see, what happens to

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA

get an idea of what will sell. Behavior patterns,
in terms ~f purchase and use of micro-computer systems
will establish trends that will continue for some,·time.
Hopefully high standards will be set during this early
period when the market is still forming. If people
insist on 'quality systems that are reasonably powerful
and self-contained,that give the user flexibility and
choice to implement interesting, constructive applications, then the result will be quite different than if
people tolerate the introduction of crude pre-packaged
systems of narrow imagination and usefulness into
their homes.
The second reason that computer amateurs can influence
the evolution of micro-computer technology is that
they have the time and freedom to explore interesting
avenues of approach. They are not bound by having to
·make money from the end product so they can try many
leads before achieving a really significant result.
For instance, an amateur computerist could enjoy spending a great deal of time collaborating with a musician on a music system before coming up with a version

that was truly exciting. Almost incidently it could
be made available to many others at very little cost.

94302

Build on existing cooperative and sharing enterprises

The social· and organizational settings 'in which
micro-computer technology is developed and used
will define precedents of some la~~ing effect.
If the work is done in an enviro~nt of relaxed
and open' exchange of information by people in small
local groups that are in close communication with
each other, then the results are likely to be more
humane than if it is done in a competitive and
secretive atmosphere. Computer clubs that are
sprouting up everywhere are good starting points
because they provide an opportunity for people
living in the same area to get together ·to share
experiences, exchange ideas, software and the like.
Club newsletters are a valuable means for keeping
members in touch with each other, and trading them
between clubs expands the communications network
even further. Computer amateurs have of course
their own novel communications media at hand and so

direct computer-to-computer link-ups may prove
useful and at least interesting.

tant pool of inexpensive research talent and possibilities.

Major publ~cations such as Creative Computing,
Peoele's Computer Company (PCC), and BYTE serve
a s1m~lar funct10n of 1nformat10n access and
exchange on a broader level.
-

One consequence of the influential role computer

Work with non-computer people

In other words, computer amateurs represent an impor-

amateurs occupy at the present moment is that they

have social responsibility to others to use their
position wisely. This responsibility comes from
the fact that the actions of computer amateurs
could have a significant effect on other people's
lives and is independent of whether they actually
choose to acknowledge the responsibility. This
is one of the reasons that the term "home and
personal computing" is more appropriate than
·computer 110bbyism" for what computer amateurs do,
even though many regard it as a hobby. Because
it has major social consequences it is not just
like any other high technology hobby. "Computer
Hobbyism" is simply the thin, leading edge of the
much larger field of "home and personal computing".
The challenge to the amateurs and other pioneers
in this field is to accept a share of the responsibility and work actively to ensure that the
micro-computing for home and personal use grows
in humane and positive directions.
VI •

WHAT TO DO?

If the argument has been accepted so far, the question
now is:

"What does one do about it all?1I

To answer

this question directly is very difficult so what
follows here are some suggestions for things that
can be tried, rather than "answers". They are
tentative and sketchy, at best, but should provide
a good starting point.
Research and Discussion

Computers are too important to be left entirely
up to computer people,
A very important step is for non-computer people
to be involved with the development of microcomputer technology. By this is meant people whose
main motivation is to do something particular,
such as draw a picture, make music, organize and
share information, say, and look upon a computer
as simply one, of perhaps several, tools for accomplishing their objective. Computer people on the
other hand (to take an extreme view), look for things
they can use their computers on. They love their
machines and the actual process of using them,
rather than the end product. As a consequence these
two groups have very different approaches. The
computer person can explore wild and fantastic

uses and show what the machine can do. Their vision
is limited by what they perceive to be the bounds
imposed by the machine. Non-computer people will
bring them back to earth and supply interesting
ideas that go off in quite different directions and
which push hard on the limits of what the technology
is capable of. The results of the interaction of
these two forces should be excitement and conflict.

It will no doubt be difficult at times but is quite
vital to the health of micro-computing. Growth by
incorporating a variety of perspectives is essential
to avoid repeating the mistakes of conventional
computing that have resulted from computer people
being given too much unbalanced influence.

Tne criteria of smallness, simplicity, capital

There are two important requirements that must be
satisfied if this collaboration is going to work.
Firstly, it is obvious that the two parties are
going to have to be able to communicate effectively
and this will require a form of commonly understood
language. Each will have to learn a little of the
other's terminology and at the same time reduce
their own use of special jargon. It will take
some time before this gets smoothed out. The second
need is for the non-computer person to be able to
communicate with the machine in a language that is
natural to use and which can express the notions
peculiar to the particular application. To start
with the computer person will probably act'as a
go-between but in many cases the lack of immediacy
will be unsatisfactory and a special language for
direct communication will have to be implemented

cheapness, and non-violence serve as a useful guide

on the machine.

step is to find out more about the
and its social implications.
in this area are

~~~~~tJt:b~in
Discussions with others
expand the base of knowledge
and refine viewpoints. Try to keep a broad view
of one's activities so that technical considerations
are balanced by human concerns; so that people
don't,.get lost in all the bits, bytes, and bauds.
Follow Schumacher's

four principles

in developing both hardware and software systems.
In creating new hardware components other people
with similar needs will benefit most if the design
is kept simple,and inexpensive. With software
development, concentration on high-quality, welldocumented, transportable programs, though quite
difficult to achieve in practice, will likewise
re'sult in widest benefit. Programs should treat
users well by being polite, by providing learning
.aids, good error handling and clean interfaces.
Increasing the sophistication of programs in this
way may require considerable extra effort and
contradict to some degree the aim for simplicity,
though. imaginative approaches are.often able to
overcome dileriunas of this nature. If a program
is worthy of the attention of other people software exchanges and publications like Dr. Dobb's
Journal are a good way of making it ava11able to
't!iiiiiCheaply.

This too Can be expected to take

much time and effort. In short then the message
to the concerned computer person is to get involved
with individuals or small groups, (artists, musicians,
writers, teachers, business people, cooperatives)

that one supports and work with them on mutually
rewardin9 projects. The going won't be easy but
it will certainly be stimulating and, contribute
valuably to the future positive and beneficial use
of computers.
Suggested Applications
Hand-in-hand with these non-computer people there
are a number of promising applications that are
worthy of attention. Some are conventional
applications that can be adapted to a smaller scale,
while others are fairly innovative. Many have
already been tried in one form or another, with
varying degrees of success.

FIRST COMPUTER FAIRE PROCEEDINGS

VII.
Many small projects involving design (e.g. boats,
solar energy, insulation, etc.) require calculations
appropriately done with a micro-computer.
For
example in Ontario a van , equipped with a computer

goes around to small businesses and helps determine

BOX 1579, PALO ALTO CA 94302

CONCLUSION

To return to the question posed originally, "If small
is beautiful, is micro marvellous?', the answer must

be:
Now?

"No!" ,

the insulation needs and potential energy savings.

"Yes~",

Sut perhaps

if we make it so.

Process control

A small machine shop may be able to use a microcomputer based process control system to permit the
easy set-up of relatively small production runs
and the convenient incorporation of custom modifications.
The savings in re-tooling costs could

allow the shop to

remain competitive with larger

operations.

Bookkeeping
Small businesses, theatre groups, farmers all need to

do a certain amount of bookkeeping and often have
neither the time nor inclination to do it themselves
nor the money to hire someone else.

A simple micro-

computer based accounting system may be just what
they need. In Canada, the government provides an
inexpensive nation-wide accounting service to farmers.

There is no reason why this sort of thing cannot be
done on a local basis with a small computer.

Aids for the handicapped
Handicapped people, particularly those who are blind
or dea'f, need to have s.Emsory information converted

to a different form before it can be perceived. A
small microprocessor unit could be very appropriate.
Also some deaf people, because they cannot use the
telephone in the conventional manner already .have
teletypes in their homes so they can communicate with
one another. Adding computing power to their terminals could make them more useful and interesting.

Biographical Details
The author, Andrew Clement, was born in England

in 1947 but emigrated with his parents to Canada
before he could remember anything. They settled

Art

in a semi-rural area near Victoria, B. C. where

The potential for application of small computers in
the arts is very broad.
Computer-based "music-boxes",
animation, stage-lighting, sound synthesis, graphiCS,
poetry have all enjoyed a measure of success.
Garnes
Garnes are fun and, if designed with care, can be

educational - not only for the programmer but also
for the player. Gaming is probably the area that has
received most attention from computer amateurs and

there are already plenty of games around.

A great

number of these are one-person conflict games and
there seems little need for more of them. Garnes that
involve several people, that depend on cooperation
or negotiation, that teach useful skills or encourage

the understanding of important processes would all
be worthwhile and provide balance to the scene. Game

the young lad spent most of early schooling. Eventually he made it to the University of British
Columbia, graduated in 1968 with a B.Sc. in Honours

Mathematics. There followed a two year period in
which he taught mathematics and physics at a
Malaysian secondary school as a c.u.s.o. volunteer.
Upon his return to Canada, Andrew re-entered U.S.C.
and received in 1973 an M.Sc., mainly for having
managed to complete·a thesis with the title:
"The

Application of In'teractive Graphics and Pattern
Recognition to the Reduction of Map Outlines".
He
continued research into interactive computer map-

ping and developed a geographical programming
language known as INTURMAP. He has also been busy
with non-computer people experimenting with interactive public-access information retrieval systems.
The first one was known as the Community Information System and provided a file on social service
agencies in the Vancouver area.
The second system
was Community Memory, which was based on the San

scenarios could be taken from realistic situations
such a ecological systems, government, mathematics,
land-use, physics, transportation and so on.

of INFACT, a Vancouver community computer service

Information/Communication

of "humane computing" with a grant from the Canada

Many small organizations have filing systems that
would be greatly improved through automation, if it
was sufficiently cheap. Not only would the routine

some way.

Avenue, Vancouver,

up-dating chores be much easier, but wider access to

at (604) 874-6740.

Francisco prototype and operated under the auspices
society.

the information in the files would be facilitated.

Council.

Andrew is presently working on a survey
He would very much like to hear from

anyone wishing to contribute to the survey in

He can be reached by mail at 789 west 18th
B.C., Canada, VSZ lWI, or by phone

Richly cross-indexed directories and catalogues would

be produced quickly and more frequently.

Acknowledgements

Mailing

lists, in particular, are a prime candidate for this

type of application of micro-computers. Exciting
possibilities open up when systems of this kind are
set up that allow direct access by a whole community

Of all the many people who have contributed
information and ideas that have found their way
in some form into this paper, I would like to

of users.

especiallY thank Efrem Lipkin, Abbe Mowshowitz,
and my colleagues in INFACT for the numerous,
stimulating conversations that I have shared

People can not only get out previously

stored information but put their own in as well.

The

system thus serves "as a memory and oanmmications medium

for the community.

In fact, the first two prototypes

were called "Community Memory". The original one
operated in the San Francisco area and was later

"cloned" to Vancouver with the help of the author.
Both versions used large time-sharing computers and
work is now under way on stripped down versions that
will run on portable micro-computers.

with them. Gratefully acknowledged also are
the contributions of Ingrid Wood and Jan Morton,
of the Community Planning Association of Canada,
for the typing of this paper, Rennie Wiswall, for the
cartoons, and the Explorations Program of the
Canada Council, for the financial support that has

allowed me to become better acquainted with the field
of "humane computing".

This list of suggested applications is quite incomplete and unspecific, but it does give an ideas of
some of the things that an individual or group with
time, energy, and a small computer in their hands

could fruitfully undertake. They all represent
promising steps in the development toward a humane
and powerful technology.

Bibliography and References
These are some of the books and articles that
relate to the subject of the social relevance of
micro-computing.

PAGE 47

FIRST COMPUTER FAIRE PROCEEDINGS

BOX J579.PALO ALTO CA94302

Ken Colstad and Efrem Lipkin, community Memory:
A Public Information System.
Pr~nt of a paper presented at the Computer
Science section of ' an IEEE conference, San
Francisco, .February 1975.
E_rich Fromm, The Revolution of Hope: Towards a

Humanized Technology,
Harper and Row, New York, 1968.

..

Karl Hess, Community Technology
SPARK, Vol. 4, #2, pplO-15, Fall 1974.

---

Ivan Illich, Tools for Conviviality
Harper and Row, New York, 1973.
Learning Research Group, Personal Dynamic Media,

Xerox - PARC Publication, 1976.
Abbe Mowshowitz, The Conquest of Will: Information
Processing in Human Affa1rs,
Add~son

Wesley, Reading, Mass., 1976.

Ted Nelson, Computer

Lib/Dre~

Machines,

Hugo's Book Serv1ce, Ch1cago, 1974.
Victor Papanek, Design for the Real World,
Thames and Hudson, London, 1972.
E.F. Schumacher, Small is Beautiful: A Study of
Economics as if People Mattered,
Abacus, London, 1974.
E.F. Schumacher, Technology and Political Change,
Reprinted from Resurgence in RAIN,
Vol. III, #3, pp8-l0, Dec. 76.
Joseph Weizenbaum, Computer Power and Human Reason:
From Judgement to Calculation,
Freeman, San Franc1sco, 1976.

Norbert Wiener, The Human Use of Human Beings:
Cybernetics and Soc1ety,
Doubleday, New York, 1954.
Mike Wilber & David Fylstra, Homebrewery
Software Priesthood,
BYTE Magazine, Oct. 1976.

VB.

the.

PAGE 48

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

THE COMPUTER IN SCIENCE FICTION

The computer in Education

Dennie L. Van Tassel
Computer Center
University of California
Santa Cruz CA 95064

since the computer is so ubiquitous in our life
it is not surpr1s1ug it is a common character in
fiction and poetry. The main thrust at this aL"ticle
is about computers in literature, but! will mAntion
a couple robot books for those interested in robots.
There are several common motitfs in computer related
literature.
The first is the computer run society.
computer Dun Society
In This tYPe of story the whole society is run
by a computer.
l\oD"rt Heinl"in'r; !hs: !122ll 1l! i!
Harsch Mistress is an excellent beak about a colony
oii--"tiie--iiiooii-- which is run by a friendly computer.
H.inlein's book is unusual because the computer is
good.
Meinlein' s other books are som"wha t compu tor
oriented and are all yood, especially 2im2 ~nQyqh

t5:I

PAGE 49

19,!~.

Usually the computer is evil.
D.
F.
Jones
has two books £21Y§§Y§ and Ih~ fi!ll 2i ~2l~2§~2'
In
these books the computer ruthlessly runs the world.
The book was also made into a movie called The
[Q!Rill f!£j~£l. Kurt Vonnegut's £bi!Y~£ gii!li2
about a society where ~ll work is done by machines
and only the privileged all allowed meaningful jobs.
Everyone else is reduced to make-work and welfare
program.

-is

In Ira Levin's :n.!l! !!~!:f££!: J;i!1 W~ again seA a
computer run society which is very unpalatable to
humankind.
In Levin's book tbe computer completely
ccntrcls everyone, including their work, sex, and
friends by a combination of drugs ann surveillance.
one more story along this line is E.
11.
Forstp.r's
"The lIachine stops", where we lta ve it computer run
society and people have no control over how it is
run and even forgot how it was started.
In this
story the computer tries to be a benevolent despot
and fails.
Challenging the Gons

The next common motift is humankinds attempt at
something previously forbidden, and failing. LiKe
the old myth -- if you challenge tne gods you are
'Icing to gP.t it in the end.
Old hooks that fall in
this motiff are I!:sll!~ll§!:~lD
(must reading for
comfuternik~
and Capat's play B£ Q£ 1& Next we
have Michael Crichton's excellent book !h~ r~IID!nal
HsD. Some doctors install a computer in a mentally
sick man's head to contrel him.
rveryone gets what
they deserve in this fast moving book. Crichtor,'s
other books are excellent too. The opposit~ is done
in J;ll§ll!.l!~J! ~!l!j!!§,
by Eando Binder, where human
brains are implanted into computers to control the
machines.
flumor
Humor is rather rare in literature and life but
there is some good computer humor.
Ih!! :all ltllI! by
Michael Frayn is about aO computer research institude
where the researchers try to write literature,
simulate sex and sports, and teach a computer sorue
"thics.
The book is very funny and 'on" might even
think of some known research institude when reading
the book.
Another humorous book is John Barth's
!il!~!! !i2i!!.=Al21, which takes place on a la rge college
campus,
where opposing sides, using computp.rs, war
for control of the campus.
In David Gerrald's !hS:I!
!!lI!!i~
liS!! Qll!l we find an adolescent computer with
all the humor of an immature genius.

The
fictional
computer
assumes
various
positions in education.
In "Cybernetic Scheduler"
by Ed d Doerr; (i n Van Ta ssel' s IJ;;fl
a cOmpu ter is
~iven responsibility for scheduling all teachers and
classes.
But chaos develops when the computer
informs some of the teachers they are unsuited for
t.eachiny and should in fact be taking classes
themselves.
In addition students are advised to
change majors aLd drop out of school.
In B.C.
Weir's "What Happen to the Teachiny Machine" (in
Lewis's Q!!A!11
people have forgotten how to ask
questions because of teaching machines. In Isaac
Asim,ov's "The Fun They Had"
(in Asimov's aalII
school children do not go to school, but stay hOlle
with their teaching machine.
Two lonely children
wonder what it was like to go to school with many
other children.
computers in sports
Computer use in sports is rather rare in
literature.
But there is a ycod humorous book, !!!.!l.
1s§! !1i!ll l§ Q~!: by Marvin Karlins, where we find a
c em pu ter run baseba 11 team. 11Hl Ja!l£!.£2111£ Q!Yl!!.ei.£§
LY Hal Higdom is another book about computer use in
sports.
A good anti-machine

book is Samuel Bulter's
In this book written in the 1890's a
society destroys all machines less machines dominate
humankind.
In Ih~ Il!l~ 2t 1h!l ~ig J;;21!!EY!:~! by Olaf
Johannessen, we have a society where computers are
the dominant species and the computers gives its
view on the historical place of humankind.
Other Books
~~!l~h9!!.

There are several other books besides this one
that have some computer related fiction.
Groff
Conklin's ~£i~!!£!l. 1!£!:i2U Ihin!l11g !1l!£hlU~§ contains
both computer and robot fiction.
Damon Knigh t' s Il!jl
H~U! a!!!.i!£ is a sillilar
antholo~y.
Ih~
£9!!!.el~il!:
£2!E~!~~
by Dennie Van Tassel is textbook reader
about cOllputers which contains both nonfiction and
fiction,
including some computer related poetry.
?obert Baer's lh~ Qj.gi1!l Y!!lli!U is a nice little
book
which has a section on computer related
fiction.
£2l!!E~!~~L
£9l!!2~!:!l!L
£2!!!EY1~!L
I!!.!l.
££!!!EY!£! !n Ei.£!i.2U aUg ~!§£ by Dennie Van Tassel
is an anthology devoted entirely to computers in
fiction and verse.
~his
book also contains soae
songs tram the IBM songbook,
which was used
the
19110's.

Qt tts:U sUg tti!£h!n~§ by Arthur O.
Lewis Jr.,
is an antbology ahout human beings relationship with
machines.
Finally
check
Marcia
Ascher's
n lbU ogra ph y a t
the elld of this chapter.
Many pf
the followillg books in my bibliography have been
through both hard cover and soft cover editions but
I will mention the edition I have.
!libliography
"Computers in Scienc" Fiction".
£21!!.e~1~!§ ling !Y!2!!!s!:19D.
November, 1973.

11 sche r, Marcia.
A sillO v,

Isaac

H£ti211

Il!!~§.

and Grotf Conklin.
§h2!1 §£i£n£~
New York: Collier Books.
1963.

Baer, Robert M.
1l!!l !ligH!l
Massachusetts:
Addison-Wesley
1972.
Barth, John.
Co.
1966.
B inde r,

g11~§ Q2~1=~2I.

Ea nd o.

!ills!n.

Reading,
Publishing Company.

New York:

Doubleday

Avalon

Books.

1965.
(;onklin,
11!£hl!!~§'

Crichton,

Groff, ed.
2£i£!!£~
fi£ti2U
!h!n!lng
19511.
New York: Vanguard Press.
Michael.

FIRST COMPUTER FAIRE PROCEEDINGS

A!fred A.

Knopf.

1972.
lh~

Frayn, Michael.
1965.

BOX 1579. PALO ALTO CA 94302

Gerrald, David.
Ballantine Books.

Iii

I~I.

New York:

..hen .!!s!:li£
1972.

Ace BookH.

jj!!.§ 21£.

New YOJ:k:

Heinlein, Robert A. lh£ 1221 i§ s Harsh Mistress.
New York: G.
P.
putnam·s-Berkley.--19is.-------Higdom,
Hal.
Ih~ tl££1!:2Ii£§ Ql1!Ei£§.
Avon Books.
1973.
Jerrold, David. ~h~1 .!!a!:11£
Ballantine Books.
1972.

New York:
New

QI~'

!!!.§

J ohan nesson, 010 f;
Ih£ Ial1l 21 .th£ Q1g
Nell York: Coward-McCann, 'INc.
1968.
Jones, D. F.
Sons.
1966.

£21Q§§!!§.

New York:

£Q.!!l.E!!1~!:.

Putnam's

G.P.

ran

New York:

Jones, D.
F.
Ih~
1974.
G.P.
Putnam's SOilS.

Karlins, Ma rv in. lh£ l,a§1 !lall i§ QJU"
Cliffs, New Jersey:
Prentice-Hall, Inc.
Knight, Damon.
Books. 1968.

Ih~ !I~.ti!l

New

!h£

Van Tassel, Dennie.

£Q!£Y!1l£L

£QIR!!.t~!:

in ri£1i2D

Thomas Nelson Inc.

£Ql!!~1£i!1

Science

1977.

allg

Famdon

!li!£hiD~§'

New

£2l!!£!!1~!:.

Research

£2U!!.t~I:.L
!£L:2~'

vonnegut, Kurt, Jr.
g!i!l~!: giang.
Reinhart and Winston.
1952.

Belmont

York:

Lewis, Jr.,
Arthur O.
21 !!~n ilD9
York: E. P.
Dutton Co.
1963.
Van Tassel, Dennie.
Alto,
California:
1976.

Englewood
1969.

New York:

lll!!i!£·

Levin, Ira. ni§ g!u:f~£1 1!i!1.
House. 1970.

I!~

York:

Palo
Associates.

COJU!.!!.t£n

New

York:

New York:

Holt,

PAGE 50

FIRST COMPUTER FAIRE PROCEEDINGS

COMPUTER POWER TO THE PEOPLE: THE
MYTH, THE REALITY AND THE CHALLENGE

BOX 1579. PALO ALTO CA 94302

PAGE 51

puter projections had anything to do with his defeat but, in
fact, his fear was that by the time the voters went to the
polls in the western states the major national election was
locked up. In 1976 it wasn't quite locked up by the time they
went to the polls, but frequently it is and therefore-people
may say "why bother" or "gee, there's a bandwagon; I want to

David H. Ahl, Publisher
Creative Computing
Box 789-M
Morristown NJ 07960

The following is a lightly edited transcript of a presentation
originally given at the "Man and the Computer" symposiwn at
Dartmouth in December, 1976. Modified versions have also been
given at several other educational and hobbyist conferences.
Some 80 slides and graphics are used in the live presentation
most of which, unfortunately, cannot be reproduced here.
INTRODUCTI ON
We all know that computers are around us, they're invading
our lives along dozens of dimensions. We see them in super
markets - the little product code that you find on the side of
virtually every food and grocery product you buy can be read by
an optical scanner connected to a computer. Computers in
department stores - a little "magic" wand, actually a tiny
laser device, reads a product code from the tag. Medical
facilities - hospitals frequently keep all their patient
records on computers. When you're admitted you often undergo
some kind of questioning process. One psychiatric hospital
out in Utah takes the entire patient history, and in fact, does
the preliminary diagnosiS of all entering patients by means of
an on-line computer program. College admissions, for instance,
Fort Lauderdale Community College, and hundreds of others use
on-line computers. Every time you pick up the telephone and
dial it you're actually using the largest general purpose computer in the world - the switched telephone network. Magnetic
ink character recognition in the bank; sports stadium score
boards; and so on.
My premise is that now, some 30 years or so after the invention of the computer, it's having a tremendous impact on our

lives. It is having an impact on our lives similar to what the
printing press did, but instead of taking some 400 years to make
its effect known, the computer is having a vast effect in something like 20 or 30 years. We just can't escape it. So some
thirty years after the invention of the computer we decided it
would be a nice idea to find out what people think about computers.

Do they view it as a master, a slave, a dictator, a

get on it and vote for the winner." Or, "I was going to vote
for the other guy, and he has lost, so I can't be bothered
going to the polls." Well that may not affect the outcome of
the national elections, but it has a tremendous affect on the
outcome of local elections and local bond issues. So, John
Tunney at least was pretty upset about using computers in the
forecasting of election results.
"Computers dehumanize society by treating everyone as a,number." On that statement we had some ambivalence - some people
agree, some people disagree - certainly a substantial number of
people are a little bit fearful and do feel like the computer
is dehumanizing things by treating them as a number.
We asked five questions to get at whether people understand
the role of a computer. Do they really know what it's good for
and do they know its applications? One of those statements was
"Computers are best suited for doing monotonous, repetitive
tasks." Well 80% of the adults agreed with that although only
67% of the young people did which gives rise to the hope that
young people can see that computers are good for doing more
than just dull, repetitive tasks. Are computers a tool? Yesa pretty substantial agreement that they are a tool. I think
that's a good thing. But I think it matters a lot whether
people view it as an intellectual tool or whether they are
thinking of it as a plain, ordinary tool such as a hammer, for
example.

=1111111111111111111111111111111111111111111111111111111111111111111111111111111111111 :

§=

=
-=
=
~= = :

AOUL T (N-3001

Stro'IIIIY
or Mo.tl'l

Stro",ty
or Ment/v:

Impact
on tho Quality
of Lif.
•Computer
Computers
will improve
education.
• Computers will improve law enforcement.

A,86.6%
81.9

Di..,,..
5.9%

A,,"
84.2"
70.0

D
'4.5"
10.1

• Computers WIll improve health care.
• Credit rating data banks are a worthwhile
use of computers.

78.6
64.2

5.3
13.4

54.1

11.9

64.0

7.6

91.6

4.0

66.8

17.7

Computer Threat to Society
A person ,today cannot escape the

::

Computer polls and predictions ioflu-

repetitivA, monotonous tasks.
• Computers are a tool just like a
hammer or lathe.
• Computers slow down and complicate
simp'e business operations.
Computers will replace low-skill job.
and create jobs needing specialized

=.
=
=
_

=
=.
::
=.
=

-= .

_

48.1

27.5

44.2

28.9

37.4

50.3

39.9

30.8

18.7

62.6

20.9

42.S

80.0

10.3

51.0

21.8

anea the outcome of elections.

Computers dehumanize society by treating
everyone as a number.
Computers isolate people by preventing
normal social interactions among users.

- ~n;::;::::;!r~~::~:~;;::~:

First of all we asked some questions about what you might
call the quality of life. Did people feel that the computer
was going to improve various facets of society? Well, for the
most part, there was pretty good agreement that computers would
improve education somehow, a very substantial agreement that
computers would improve law enforcement, a little less agreement, particularly among younger people, that computers would
improve health care; and some agreement that computers are
worthwhile for prevention of fraud through credit rating data.
This last one is interesting. The question was asked in the
AFIPS/Time Magazine survey just four years before this one; the
percentage of people that felt credit checking was a good
application dropped from 74% to 64%, so 10% more people today
have some doubts in contrast to four years ago. I guess in
four years many people have gotten stung in one way or another
by credit ratings or other foul"ups.
We asked some questions about the threatening nature of computers. Do you feel you can escape the influence of computers?
Well people for the most part felt that they couldn't; a surprising number of young people felt they could - I'm not quite
sure where they were going to go to do it, certainly not the
United States. There was some feeling, particularly pronounced
among west coast respondents, that the computer could influence
the outcome of elections. Senator John Tunney of California
was one of the biggest critics of the use of computers to forecast the outcome of elections. Senator Tunney, if you'll
recall, was defeated in November, 1976. I'm not sure if com-

3.3

influence of computers.

=.
=
=.

THE MYTH

72.6

14.7

81.3

23,4

17.6

68.4

11.4

68.8

71.0

15.0

61.8

14.11

8S

many jobs

=

Computers are beyond the understanding
of the typical person.
Computers make mistakes at least 10%
of the time.

:_~:_ . :'~~~~~~;::.~e~':":::~~ :;.~e:~.'.k",
• It is possible to design computer
systems which protect the privacy of

=

-

5===_-:

=
=
=
=
==
-=_
=
_

training.
Computers will create
as they eliminate.

=
5:
=
=
=
=
=
E

.:

62.5

16,4

40.0

29.1

25.2

61.6

30,8

49.2

9.6

76.7

10.3

60.0_

UnderulJnding of Computen

_

--=
=
~= = =

Strongly
or Mostly

=.
=
=.

monster - in fact, do people really understand what the computer
is all about and what it's good for? We took a survey among
both adults and young people with 17 different questions. We
posed statements and asked them "Do you agree with this state~
ment or disagree?" and got their responses. We also had some
open ended questions and we continue to ask people open ended
questions. Like, "If you had a computer in your home, what
E===_-=
would you do with it?"

YOUTH (N-5431

Strongly
or MOItly

::

_

i
=
5

STATISTICAL RESULTS OF
SURVEY OF PUBLIC ATTITUDES
TOWARDS COMPUTERS IN SOCIETY

_

67.0

19.3

7:L3

13.3

60.2

26.4

48.6

15.9

data.

:11111111111111111111111111111111111111111111111111111111111111111111111111111111111111

~==

e=

Do computers slow down and complicate simple business operations? Some people felt that they did - I'm not quite sure
who. There's a substantial agreement that computers are going
to replace a lot of jobs and create jobs that need specialized
training, and some people really fear that they might not be
qualified for the jobs that will exist after the "computer revolution". Also on the jobs issue we asked whether people feel
that computers will create as many jobs as they eliminate?
About two-thirds agree but that leaves a fair number that disagree. You have to remember that people have 'always been
fearful of any kind of industrialization or technological
breakthrough. The Luddites were anti-technology - to them the

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

industrial revolution meant the machines were going to take all
the:.jo,bs. Well, it just didn't quite work out that way, and
don't really think computers are going to take all the jobs
either.
Then we asked a couple of questions to'see if people really
understand the computer itself. We first asked are computers
beyond the understanding of a typical person? The response was
mixed. At least a quarter of the people think that they are
beyond their understanding, but I'm encouraged by the larger
percentage of people who disagree. "Computers make mistakes
10% of ,the time." You have to feel sorry for the 10% of the
people who do think that computers make mistakes this often.
In fact it is the programmers and operators who make the mistakes and not the computers. But in these questions we gleaned
a little bit of intelligence that someplace between 13 and 19%
of the people just actually don't know what's happening, don't
know what computers are all about, and don't know who's running
them. They think the computers are running the people rather
than the other way around. A substantial number of people just
don't know, which is also upsetting. So, there's a substantial
portion of our society - at least a third or so - that just
doesn't know some of the fundamental issues and facts about
computers. We asked one last question - is it possible to
design computer systems to protect the privacy of data? Wellnot even the computer designers know for sure so I don't think
we could expect much from people that we asked.
So all in all, we have some ambivalence - people optimistic
on some counts and pessimistic on some other counts and some
other things that they just don't know. The ignorance is probably most apparent when you ask someone what would you do if
you had a computer at home? A computer? What do you mean a
computer? You mean like a'hand calculator? Some people
thought we ,meant robots. "Well, maybe I'll have it serve me
martinis when I come home from work." They just couldn't quite
visualize a computer at home. A computer is supposed to be
something that goes behind glass doors and is on raised flooring and requires a lot of electricity." I don't have the kind
of home that would suit a computer," said one.
. I guess this mixture of attitudes 'really shouldn't be too
surprising. The every day perceptions of a computer are formed
by people in the media and elsewhere who really don't know what
computers are all about either. For example, newspapers, comic
strips, TV, and so on. For example, what dOeS a newspaper'
cover? They're going to report the computer error - the problem with the computer. For example, how many of you read a
couple of months ago about the Shop-Rite in Springfield, New
Jersey with brand new laser scanning systems at the checkout?
This was the grand opening day and they really crammed the
people in. I mean they had hundreds of people all filling
their carts with these grand opening specials. People were
lined up at the cash registers with two and three carts each
laden with groceries. Seven or eight deep at every cash register and all of a sudden, bang, the system went down. Well, not
only did it go down but it locked all the cash drawers. So
there was no way of making change. They couldn't use the cash
registers manually. There was just no way of opening them up.
Rumors started flying around - people said, "The cash drawers
are locked; the doors are going to lock too; we're going to be
locked in here forever." And then there was a rumor that a
replacement computer was going to have to be shipped in from
Texas and they'd have to wait until it arrived! It was wild.
Finally the manager decided that the best course of action was
to give each checker a pencil and some brown pap,er bags which
were at the checkout position, and have them add up manually
the groceries in these laden carts. People were there for
literally hours. The interesting thing is they ,did not lock
the doors and more people kept streaming in. They didn't want
to lock the do,ors because of this panicky rumor inside the store
that if we lock the doors we might be stuck here. They didn't
want to start a riot. Well anyway the newspapers had a field
day with the story.
Most of you have heard about the frivolity out in Southern
California when McDonalds had a sweepstake. To enter, all that
was required was a 3 x 5 card of your own. Students at one
fraternity programmed the computer to produce entry forms - 1.2
million of them and then they stuffed every ballot box of
McDonalds in Southern California. They won ,90% of the prizes
in the contest. McDonalds was very upset about it - they said
it was anti-American. I think it was very American; it showed
a lot of ingenuity and creativity. In fact, McDonalds awarded
duplicate prizes to people that were not members of this conspiracy to defraud them. The winning fraternity invited Ronald
McDonald to make the prize presentations over at their fraternity house for dinner, but he declined the invitation. Actually, Burger King got the best publicity out of this. They
gave a $3,000 scholarship to ,the university in memory of the
prank. Again, the newspapers had a wonderful time blaming the

PAGE 52

whole ,thing' On a, computer.
A college student at the University of Arizona insured the
life of his guppy. He put down all ,the correct information on
the mail order insurance form - height 3 centimeters long,
weight 30 centigrams and so on. It died of course, as most
guppies do, some four or five months later. He submitted a
claim for $~,OOO which was what he had insured it for. The
insurance company said it was an invalid claim - the computer
made a mistake by accepting this party. Well the computer
hadn't made a mistake - it was a programmer who hadn't allowed
for somebody that was 3 centimeters high. It wasn't the computer. But the newspaper, how did they portray it. Sure'another computer error.
In Swansea, Wales, a young man of 17 applied for a drivers
license and passed his test shortly after. But when his license arrived, it bore 12 ,endorsements for a whole array of
driving offenses, plus a 28-day driving suspension, Police
proved sympathetic when it was found that "the computer at the
license office had run wild. The system has not been operating
for long," said an official.
There was a cute little notice printed recently in the
Chicago Tribune. "A COMPUTERIZED bill had this notice on the
bottom: Failure to receive this bill is no excuse for nonpayment of the amount shown." Why capitalize "computerized"i
Does that mean the computer printed that notice on the bottom
of the bill. As if the computer could have made that up out
of the blue sky? The computer is the scapegoat for the post
office now - that's what's really happening!
A woman in Shreveport, La. got a gas bill for $42,474.58.
A customer representative at Arka Gas Co stated, "the computer
went haywire and some of 'those bills got out." Computer error?
Hardly. Good for the newspaper? You bet!
Movies are another way that people form perceptions of the
computer. For example, in 2001, remember when Commander Bowman
finally gains access to the memory banks after Hal has been
harrassing him for half the trip and he yanks out the circuits
one at a time. Finally, Hal breaks down as Bowman performs the
first successful interplanetary lobotomy. The movie Colossus have you seen that one? Colossus "wakes up" and gains sentience very much like the computer did in Heinlein's book, The
Moon Is A Harsh Mistress. Well, Colossus gains it while itrshooked up to its Russian counterpart. The computers are in
charge of the National Defense Systems of both countries and
the two computers decide between them that it would be kind of
neat if they held the population of both of their countries
hostage. A movie that will be coming out shortly called Demon
Seed has a computer in it, Proteus IV (appropriately named)
equipped with an ominous blue arm enforcer with which the computer keeps people hostage, mainly Julie Christie in the movie
(that probably makes it worth seeing even if you don't like
computers). Three movies and three impressions of computers all false.
Some people get their images of computers from books (not
too many because not too many people bother to read books anymore). Science fiction writers are probably the one group of
writers in the country that are portraying future computers
uses reasonably realistically and making some half decent speculations. Unfortunately, very few people read science fiction
so we don't have to worry about 'many people getting a realistic
view of computers from that source.
So, consequently we know a little bit from the survey what
people think about computers and little bit of how these impressions were formed from my rather incomplete discussion of it,
but I think you can fill out the missing pieces. We know too
that if we ask the average person what would you do if you had
access to a computer or if you had a computer in your home he
really doesn't have a very good idea. In fact neither do
many professionals or manufacturers. The fact is that we're
really not very good a forecasting the future. We really can't
and never have forecasted future technological innovation or
invention very well.
Back around the turn, of the century who would have forecasted life today as it actually is? In those days the best
guess of what the Panama Canal would be was a railroad pulling
ships across the isthmus. Back in those days it probably seemed
reasonable. I'm sure if the Wright Brothers had asked the
drivers of ox carts what they would do with an airplane, they
probably couldn't have given them a very good idea. Henry
David Thoreau, one of our leading philosophers commented when
he was told that the telephone would permit people ~n Maine to
talk to people in Texas, "but what does a man in Maine have to
say to a man in Texas?"
THE REALITY
It's pretty clear that we can't forecast 70 or 50 or probably even 30 years very well, particularly with a high technology item such as a computer. So let's just look 5 to 10

FIRST COMPUTER FAIRE PROCEEDINGS

years into the future. Even so, we can't foresee exactly when
everything is going to occur. We would certainly expect that
processor instruction speed would continue to increase very
rapidly. Packing density will also continue to dramatically
increase. Currently, we are within two orders of magnitude of
the human brain. Actually, the theoretical limit for semiconductor devices is packed more densely than the human brain.
DIGITAL CAPACITY AND COMPUTING

SPEED
1017.

bits

I add time CIIC.)

10 1
10 1
10 1
IBM NORC

1010j
'09

i

lAS JOHNNIAC

IBM 701

t-:,oc':~!~~

MIT WHIRLWIND I

,OB

UNIVAC I

EDVAC

~ hVbrid

eSEAC

107

ENlr

1()6

"Jan.stors
vacuum tubes

105

HARVARDMKI
digital and analog

,04
'940

1960

'950

1970

Currently, bubble memory circuits in Bell Laboratories about 1
centimeter square will store about 1.5 million bits.

lcf

...0

~

lOOK

Z

10K

I!!
::;)
IL

0

a::

w
III
:IE

lK

::;)

Z

100

10

lL-__
.01

~

.1

__

~

____L-__

1

10

~

100

__

~

__

lK

~

10K

SELLING PRICE ($0001 OF CPU PLUS MEMORY

Coupled with miniaturization, prices are rapidly falling.
Let me tell you that more than one manufacturer is a little
bit alarmed at the projection of hardware prices approaching
zero. The indication is that as the prices come down the numbers of units sold go up very dramatically. This applies not
only to calculators but to computers as well. What happens as
prices come down? What do you think the value of this ratio is
today?
Cost to program
line of code
line of code
Cost to execute
One hundred to one? A thousand to one? Ten thousand to one?
Wrong. IBM says the ratio is 100 million to one and that was
two years ago! Given the current increases in processor speed,
it's probably a lot more than that today. What that indicates
of course is that the human element is by far and away the most
important thing in computers and technology today 'in making
them all work.
'
So what does all this mean when you put all this technology
together? Well, obviously it means smaller terminals, terminals
that fit in your pocket. Sophisticated and very small color
video cameras. Calculators with as much power as a computer of
20 years ago. Hobbyist computer kits that are within the price
range of a quarter of the households in the u.S. Close to
30,000 hobbyist computer kits have been sold as of the end of

BOX 1579. PALO ALTO CA 94302

PAGE 53

1976. Technology means people talking to other computers and
terminals or new high speed terminals or plasma panels that are
built into your phone. A panel that can be written on with a
light pen or typed on; or display information from a computer,
data bank, directory, or from local storage.
'
Today there are over 100 manufacturers of personal computers
and periperals. At Creative Computing we can't possibly keep
up with all the new product announcements for new hobbyist
computer kits and peripherals. We started a new product section
in early 1975 and the hardware portion was about one page. In
the Jan/Feb 1977 issue it ran 9 pages of close spaced descriptions of new hardware. It's a revolution. Two hundred computer
stores open now and a new one opening every four days. Retail
,computer stores where you go in you can buy yourself a micro~
processor, a computer kit, or peripherals.
Extensible, user defined, simple languages are being developed. Harvard has a new language called ECL. It's not like
today's simple language, say Basic or Logo. ECL doesn't use
constructs that have to be absorbed into your intuition but
rather you use concepts that are already part of your intuition,
part of your language and then you construct the computer language out of that. Whether you're a banker, a baker or a professional programmer you can produce a computer language that
does exactly what you want.
Out at Xerox Palo Alto Research Center they've got a thing
called t.he "Dynabook". The original idea was that Dynabook
should in every way be better than a book. It can display
printed pages on its screen: black on white, white on black,
red on green, etc. It can display pages in any style and size
typeface. If you have some visual problems and you want a page
in large type, it displays it in large type or'for reference
material it can use very small type. Not only can you read
things but you can write things on it. You can just draw a
circle around a word and move it to someplace else with a
little arrow and the computer moves it for you. You can edit
your material from a keyboard if you'd rather. You can strike
over lines and they disappear. The next eime you push a'button
you get all you text nicely justified on the screen. Actually,
it's better than a book in every way because you read it, you
can write it, and you can change it. It's also better from the
graphical sense. It would be nice i f the illustrations in a
book could move (kids love little, pop-up picture books). The
illustrations on Dynabook can move with full animation. In fact
not only can they move the way that they're programmed to move,
but if you'd like them to move in some special way, you simply
take your light pen and draw over the illustration and let the
computer sequence through your frames. This is reality. This
is here today. It's not quite the size of a book today; it's
about the size of 3 bread boxes, but it's not going to be too
long before it is the size of a book. In addition to having
book qualities, it's also a general purpose computer with the
ability to do parallel processing on eight different levels.
When you think of it, that's the way human beings think. When
I'm walking alone, for example, one part of my brain is thinking
about putting one foot in front of the other, another part is
thinking "it's cold out I'll be glad when I can get inside,"
another part is thinking about the speech I'm going to give
tonight, still another is thinking about the beer that I'll
have later on and so on. So your brain is processing information on a parallel basis all the time. Well, wouldn't it be
nice if you could have a computer that could do that too and
have the output of one level serve as the input to another.
That's precisely what Dynabook provides. It's a phenomenal
machine. I'd like to think that within 10 years it will be as
commonplace as the pocket calculator is today.

--

Uoorvo

Fill... Ho... CoM,.... " _

I· feel one of the keys for getting computers into the home
at least is the widespread availability of cheap high-quality
software. One possible vehicJe for bringing this about is the
video disc. Quite inadvertently, a stroke of luck perhaps, the
storage technique employed by the disc is binary, or digital..

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

Just what's needed for a computer. So while the player will be
brought into the home for entertainment, it's real power lies in
he fact that if you couple the video-disc system with a microprocessor and keyboard you have incredibly powerful audio/visual/computationaltl'ducational/recreational device. One videodisc can store 10
bits of information, the entire encyclopedia Brittanica for example, or a very comprehensive software
library. You could have Jackie Stewart introducing the Monaco
Grand Prix, taking you on a pre-recorded ride around the circuit
and then turning the controls over to you. Or Kirk handing you
the controls of the Enterprise just as the Klingons are about
to attack. Or Fran Tarkington coming off the field putting you
in as quarterback in the Super Bowl.
THE CHALLENGE
There's no question that in 5 to 10 years solid state and
real ted technology are going to put some fantastic things well
within the reach of everyone who wants them. It's equally
clear that most people have little idea of what they'd do with
a computer if they had one. Hence, we have quite a chasm
between the insiders (those who have learned about computers
from school, work, or hobby) and the outsiders who don't know
much about computers and don't really care (today).
It would be nice to think that this chasm could be bridged
by education (like the new math or metric system?), but it's
not likely that schools will really face up to computers until
every kid has his own (pocket calculators allover again).
Business and industry are so wedded to large EDP Systems with
most DP Managers pretending that microcomputers are just toys,
hence we can't expect any help from that quarter. Most likely
it will be the people, plain ordinary folks, who see a friend
with a computer and decide to get one of their own. And as
this increasingly happens, we're going to have the most massive
domino effect you ever saw - calculators and CB move over you ain't seen nothin' yet. Computer power to the people is on
the way!

PAGE 54

FIRST COMPUTER FA-IRE PROCEEDINGS

BOX 1579, PALO ALTO CA IM302

PAGE 55

PSYCHOLOGY AND THE PERSONAL COMPUTER
Kenneth Berkun
928J Street
Davis CA 95616

Computers are useful as tools not just as
an end in themselves, but also for two other
reasons 1) for teaching or doing things
(applications) and 2) for what they can teaoh
us about mankind (womankind). 1 will discuss
only brei fly the first area, applications, and
will spend the majority of my time on the second
and perhaps more theoretical area of oomputers
providing insiBht to people.
The study of psychology and applications
of psycholo~y do tie in to computers, and
sp~cifically they oan relate to micro-oomputers
in the home and in school. For instanoe. the
famed programmed text developed by B. F. Skinner
which lead to his invention of the teaching
machine.
A modern example of the teaching
machine is the computer. This is evidenced by
the success of the Plato system.
A micro computer in the home could b~
supplied with a bunch of lessons in prom plug
In packages, and everyone being such good little
students would flock to use them. Th~y might
also be networked with a central processor for
record keeping.
Then there is a"more esoteric aspect, that
of computer counselors. The most famous example
of that is Joseph Weisenbaum's program ~lizah,
and its "Doctor" version. This program simulated
a Rogerian therapist and his active listening
approach when talking over a terminal with a
person. Very "effective. Sort of frightening
too. his views on the program are chronicled
in his book "Computer Power and human Heason".
And computers have one other advantage in
the educational system than say textbooks,
they're different, and funl
They hook people
so that you want to use them. Flashing lights
and buzzers may not be necessary but they sure
are exciting. So kids may do much more work on
a computer than they would anywhere else. This
Is a major advantage, at least until they become
so common place as to be boring.
Now I will discuss the second area,
computers as an InsiRht to human behavior.
Basic to this is the question of why study
human behavior, or why is human behavior
important. This" Is not the place to discuss
that, I will assume that it is important. If
you felt It is not, then you probably wo~ldn't
be here.
One thins that we've all noticed In
computers Is that at times they behave very
differently, for instance, someti~es they seem
almost parental, scolding us for our errors,
and bllljn~ us for their time, kicking us off
for exceeding limits etc.
At other times it is very serious and gets
the work done very efficiently, like a person
who is reasoning with logic and care.
And
sometimes It just goofs off messes around and
nothing seems to work, or it literally plays
games like a kldl Looking at that 1 see three
basic ways humans behave, emulated on their
most hunan technological development •
This is Important because It points out
how man seems to be a technological creature by
nature, and society does Influence technology
and vice versa.
There are a lot of similarities between
computer operation and human function. It" is
interesting to note how systems are designed
that way. For instance human thought processes
run very si~ilarly to timeshare systems, as far
as central processor design. Also humans have
the original interrupt system, as demonstrated
by the "cocktail party" effect. I/O is also
handled similarly, for instance by ·poillng".
~lth the advent of the micro computer we

see a new emergence of the compulsive programmeror haCker. These are also described in Joseph
Weizenbauw's book. Now they can live with
their computer eat with their computer and even
sleep with their computer. Eut is that any
diffcrent than say, the compulsive mechanical
tinkerer, the ham of the early 1900's, or even
the alchemists of medievel daysl
Now how does this relate to personal
computersl ~irst and foremost it marks the
invasion of the computer into one's personal
life. gven more the Frankenstein complex Is
trigGered. will computers take over the world1
Within ten years ~erhaps, every home will have
a computer. We necd to make computers more
personal, more human and less scary. If people
understana and or can control them then they
won't be as afraid. Things out of our control
scare us.
Therefore t s~e the role of the personal
computer as it exists now, the hobby computer,
as opening the pathway to general acceptance,
if not understanding of computers by the public.
Computers are a way of life, more so even than
T.V.
Ken Berkun is a senior at the University
of California at Davis. His major is an
individually concieved one consisting "of Computer
"Soiencc and ~sychology, and called "Man Wachlne
Interaotlon". he Is a computer operator on a
Buroughs Bb700 at UeD.
he is active at the
Davis Counseling Center and the Sacramento Area
Institute for Uroup Treatment, where hc Is In
training. he is currently teaching a course on
public speaking in Sacramento.

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 56

HUMAN FACTORS IN SOFTWARE ENGINEERING
James Joyce
Computer Science Division
Department of EE & CS
University of California
Berkeley CA 94720

This is a discussion of how human factors affect software
development and integrity. My interest in this area was first
focussed by the article "Guidelines for Humanizing Information
Systems" in the November, 1974, issue of Communications of the
Association for Computing Machinery. For this discussion I c~arac­
terize as basic components of software engineering six aspects:
1. Human user interface
2. Maintainability
3. Portability
4. Efficiency
5. Correctness or reliability
6. Ethical considerations
Human interface, briefly, encompasses those aspects of a program
a user experiences: protocols, error messages (if any), or uncertain
silence broken only by the whirring of a fan. Maintainability is
also, in away, an aspect of human interface, but from the point of
view of someone who fixes or. modifies an existing program. Portability refers to the problem of getting a program that works on
one machine to work on another. There have been many discussions of portability, but they center on hardware limitations or
software techniques. I argue here that human factors impinge
directly on the portability of software.
Software efficiency has received more attention than all of
the other factors listed here -- either .singly or combined. Gerald
Weinberg [1972] has argued persuasively that efficiency is as
strongly influenced by human factors as any other component of
software engineering.
I have combined the questions of program correctness and
program reliability because they seem fraternal twin aspects of a
central source of worry: how can I depend upon the answers I get?
Yet they are separable as well. For example, that the program
actually meets all the requirements of the problem is a matter of
program correctness [Elspas, 1972], but how often the program
crashes is a matter of reliability.
The last component of software engineering to be discussed
here, ethics, is one that appears the least rooted in reality. QUestioning the ethics of writing or copying software seems as ethereal
and philosophical as questions about whether the person who commits robbery is the true criminal or whether the true criminal is
Society -- that is, unless you happen to be the one who is robbed.
We will examine the ethical aspects of software, particularly fraud
and copyright protection, and a possible solution to piracy of
software.

1. Human User Interface
1.1. Error 477
Perhaps the component of· software engitleering in which
human factors are easiest to recognize is human user interface.
Anyone who has been programming for any length of time eventually elicits as output what I call Error 477. Just what Error 477 is
remains a mystery, because "Error 477" is the entire message; and
even if there is a reference· manual with a table of explanations of
the messages, Error 477's explanation is as cryptic as the error
message itself.
Partly human-oriented messages, such as those by Li-Chen
Wang in Palo Alto Tiny Basic [Wang, 19761, are still at the "Error
477" level. His three error messages, "How?", "What?", and
"Sorry" are, it is true, differentiated by the kind of error condition
that evokes them. And chatty error messages would undoubtedly
swell Tiny Basic into something much larger than at present, thus·
making it less available for machines with small memory. However, the program could have been quite a bit more helpful if it
had printed, in addition to the error message, a character on the
line under the Basic statement in question to indicate where it
stopped translating. Although no guarantee that the error is truly
in the indicated location, it is nonetheless quite a bit of help that
can be provided at a small increase in program size. This is not an
attack on Wang; I chose Tiny Basic as my example because I
admire the job Wang did very much. It is, I feel, one of the better
representatives of assembly level coding practices today.
Donald Knuth's Turing Award Lecture to the Association
for Computing Machinery contains a plea that goes further than
mine about error messages; he urges programmers to make programming languages and even control languages "a pleasure to use,
instead of being strictly functional." [Knuth, 1974] I fully agree
with Knuth's statement, but am willing to settle for good error
messages. Objections to the effect that elaboration of error messages would consume large amounts of main memory are, as conceded above, true. But just as writing a program so it will run in a
small amount of main memory is seen as a challenge, so too writing a program so that it is a pleasure to use can be seen as a similar
challenge. After all, the personal computer movement seems to
me to be an insistence that computer technology is not the private
domain of institutions -- whether business, educational, or governmental -- but is available to people. It follows, then, that the error
messages should not be bureaucratic gobbledegook, but human.
Making the human interface relate not to the machine's
requirements and limitations alone, but to the user's desires,
seems a continuation of the same philosophy that began personal
computing. From a strictly commercial standpoint, a large number
of potential computer users will not purchase equipment and

FIRST COMPUTER FAIRE PROCEEDINGS

software until it is easy to use for the person who has never held a
soldering gun nor looked up an error message. And we cannot
expect people to memorize commands willingly; they will always
manage to forget something that is hard to remember -- as they
should.
A discussion of why people forget would take far too much
space here, although some basic reasons can be stated briefly. One
is that we forget because there is too much to remember. In a reasonably complex program (the kind we feel good about writing)
the individual parts may at one time have been known so well we
could recreate the code at will. But by the time we have created a
large enough program, the parts we worked on earlier begin to
fuzz and fade. This is not due to time, but to attention to something else -- either another part of the program, or another program. Yet time, too, enters as a factor in forgetting. In terms of
human interface we may forget (either from time or other pressing
details) just how something was to work. Typically this occurs
when we are explaining to someone else how to use a program.
We forget a detail, a restriction, and if we are lucky we remember
it correctly when we are telephoned by the person who believed
the first explanation was all there was to it. But surely these
remarks cannot be applied to that large number of programs that
are "one time only"!
It has been my experience that even my most casual program is something at some time I may wish to show off; this,
regrettably, does not mean every program is all that good, but that
what I wrote as a one-shot program is inevitably something someone else wants to use or do. A well-done program must be able to
be used without arcane knowledge. It should even be 'helpful to
users wanting to use it.

1.2. Help and Control-d
The first test I apply to any program is to input a one-word
message: help. A system that cannot help is at the mercy of
misunderstanding just as much as the user who receives Error
Message 477. Help may be offered in many forms. On large computers I have seen it expressed as a telephone number to call
(which is not all that much help at 8:30 pm -- and less at 3 am), a
menu of arguments to use with the help statement to receive specialized help (as in "help files" for information on how to move,
remove, create, etc.) files, or a short summary of the available
commands, or a tutorial without menu. I regret that I have not yet
seen a microcomputer program that responds to help other than to
issue Error 477 in any of its many equivalent forms.
One area of human interface in which microcomputer programs are, on the whole, more advanced than programs for mini
or larger computers, is in free-format input. Sometimes, unfortunately, free format is interpreted to be that the data items may
be any length, but if they are separated by more than one blank
then things will not work properly. Being able to ignore redundant
blanks is simple and makes input much easier. Reluctance to make
such allowances seems hard for me to distinguish from laziness.
Similarly, having to enter commands or data in specific positions is
a requirement always for the convenience of the programmer and
not for the user. Let me make that point more strongly: rigid
input specifications are for the convenience of the programmer
writing the program and not when slhe uses the program.
Although software for microcomputers is ahead of that for the
larger computers in emphasizing free-format input, it shares with
larger computers the mystique of control-d.
To those of us who are used to the control key on a terminal, a fuss over control-d may seem unwarranted. Yet in teaching
naive users (and we were all at one time naive users) to use a text
editor I have found those commands requiring the control key with

BOX 1579, PALO ALTO CA 94302

PAGE 57

another (and sometimes two others!) the hardest to make into
second nature. This isnot to urge a ban on control characters, but
to suggest that befortf control-anything is made a command there
should be serious thought about other ways of signalling what is
intended. The same can be said of the ")off" combination that
allows graceful exit from APL; ideally, commands should be something the user can guess rather than something to memorize.
1.3. Guidelines for Interactive Systems.

A student of mine [Tossy, 1977] in a seminar on human
factors in software engineering came up with several ideas for
designing interactive programs so they are easy to use. They are:
1. Command names should be mnemonic.
2. A frequently used command should have a short
name or an abbreviation.
3. The program should always accept the full length
name of a command, even if a standard abbreviation
exists.
4. Both the full command name and any 'standard
abbreviations should appear in the index of a user's
manual.
5. Make provisions for a user becoming more sophisticated about a program as slhe uses it.
6. Protect the user from the results of "dumb mistakes."
He generalizes his rules into two principles:
1. Make the program forgiving; humans make mistakes.
2. Make the program convenient; humans are lazy.

What programmers seem to forget, time after time and program
after program, is that the two principles apply equally to both
sophisticated and naive users -- to you and me, for example.
Such concerns lead naturally into a discussion of another
factor in human interfacing: that awful wait while the panel lights
blink, during which the most hardened of programmers wonders
whether the program has found a new infinite loop or is only setting all of main memory to 7s. Much of the anxiety of waiting is
not hearing anything. In Samuel Beckett's play "Waiting for
Godot" the wait endured by the two protagonists is eternal, unending even when the play ends; but to some extent they are kept
waiting by the appearance of Godot's messenger. The message he
brings is, simply, wait. Some such message from a program that
runs longer than 10 seconds (say) might be a good idea -- as well
as the capability of suppressing such a message if that is desired.
For the human user's sake there should be some indication the
machinery is still working, still "there". Thus I would like to add a
third principle to the basic two given here:
3. Make something happen; humans are easily bored or
made anxious.
2. Maintainability

Strongly tied to human interface with users is the problem
of program maintainability. Error 477 enters our discussion again,
this time not as a message we have generated but as a system message that lets us know there is something to fix. The first question
is not the logical one of "What is it I have to fix?" but "How do I
fix it?" If this question seems out of place, we might note that it is
really a more sophisticated version of "help!". How do I fix it may
be answered variously by identifying the problem and then fixing
it, or asking for help in either locating the problem or in fixing it.
No one who develops software really wants telephone calls from
users who cannot understand why the editor they are using suddenly goes into a loop -- or simply stops. No one who programs

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

wants code written six months ago to stop working. I could be
somewhat cynical and say six weeks rather than six months, but it
does not seem necessary for the point.
There are, no doubt, some individuals who are so good at
programming that the very code communicates its purpose to any
reader who knows the programming language. I believe once or
twice I have known such people; the world needs more people with
such ability; I wish I had such ability. And there are some very
impressive higher-level languages with block structures that
encourage structured programming. Although we know structured
programming is not enough to make a program readable, it is evident that structured programming helps readability [Knuth, 1974].
So far, higher-level languages are, by and large, unavailable to
microcomputer owners; such languages require too much main
memory or an auxiliary storage device, such as a disk, for successive passes of the compiler -- or simply cost too much. Microcomputer programming is done in either assembly language or Basic by
and large, and remarks about maintainability are directed toward
what is possible within those languages.
2.1. Routine Size
In structured programming a key concept is that of breaking
the larger problem into modules that are in themselves complete;
that is, the module does something. Sometimes we find a module
that does too many things, which we perceive as the product of an
inadequate application of structured programming. When we are
designing a program we may manage to create modules that do too
much. How much, though, is too much?
I would argue that "too much" is as dependent upon physical
size as'it is upon conceptual size of the module. Yourdon [1975]
suggests a size limit in his recommendation that "at each level of
the design, try to express the implementation of a module in a single page of coding or flowcharting." What we are able to perceive at
one time strongly influences what we can process in our minds.
Thus modules should never be larger in size than the crt screen
can hold, or one 8 112 by 11 inch sheet of paper. My choice of the
American standard paper size is based on the nearest hard-copy
analogy to crt screen size. I would gladly relax my pronouncement
of page size to my true intent, the unit of page size on the hardcopy device, but in the case of teletypes that leads to an obvious
absurdity: the whole roll of paper. The routine size of one page or
screen includes all comments associated with the routine. There
are few things more irritating than flipping between pages or trying
to squeeze two screens of code onto one screen.
2.2. Comments
Having introduced the topic of comments into the subject of
human factors in software maintainability, I think it only fitting to
discuss commenting in greater detail. I have heard people who
should know better claim that a well-written program needs no
comments. It is possible that a particular well-written program -even one in assembly langUage" -- is so clear it does not require
comments; yet I know of no technique or language or attitude
toward programming that would make comments truly unnecessary. Of course, it is also possible that too many comments can
obscure the code they were created to explain. Comments require
an effort to write that seems quite apart from the effort to program, and for that single reason they often do not get written.
Other reasons a programmer might offer for not writing comments
include:
1. They take up too much space in the program.
2. They only repeat code anyway.

3. They should be put in after the code is running or

PAGE 58

else they will be just another thing to change during
debugging.
The list of three is not exhaustive, but it is representative.
The reason comments seem to take up too much space is
that usually they are not properly integrated with the code; the role
they play in understanding the program needs to be essential rather
than documentary. If the comments echo the code they will at
best be documentary, and perhaps a nuisance to be ignored while
reading the code. Bad comments are the result of the
programmer's self-fulfilling prophesy: seen as taking up too much
space and repeating the code, comments will be produced to do
just that. Comments are a feature of programming languages, and
like any other feature they should be used when needed. The
problem with comments, then, is not in their number or size, but
when in a program they are needed. The function of a comment in
a program is to help remember what is going on [Weinberg, 1972],
and thus they should be introduced as a part of the code.
To some extent the programming language itself (excluding
machine language) helps us remember what is going on. Commands are imperative utterances to do something; declaratives
identify elements in the program, such as variable names, transfer
labels, or routine names. Between commands and declaratives we
may indicate what is to be done'to (or with) what items, but not
why. And it is "Why" that we ask when we read uncommented
code: why LAI 002 -- load the value 2 in the A register of the 8008
microprocessor cpu? The activity, though complete enough for a
computer, is not complete enough for the human; to complete the
instruction it is necessary to supply motivation, a reason. The
feature for explaining things in a programming language is a comment.
While programming the programmer has the reason for
writing particular code in mind. That reason may be the wrong
one for the problem, as when we code a bug into our program, but
it is a reason nonetheless. Without the reason for the code clearly
indicated, the program literally has no reason for "running" in the
programmer's mind. The program does run (or at least is emulated) by a human when. the code is read or written: the value 2 is
placed in the A register of the 8008 cpu which exists in the
programmer's imagination. At the moment of coding we supply
the reason, the comment, in our mind; it is, then, an inaccurate
transcription of our code to omit keying the comment when we
key the command or declarative. As elsewhere in' computing, the
term for that inaccuracy is "bug".
Further, comments that echo the code are buggy comments.
"LAI 002" is not the reason we code "LAI 002". No action is its
own reason, even if one is not speaking of computer programs. It
is a part of good programming to express the comment as correctly
as the command or declarative. This appears to call for a comment
for every command or declarative, and for some routines I do not
doubt that necessity at all. We also know that there are" many
instances in which such commenting would be too much. How do
we know? I believe the answer to that question is the same as the
answer to "How tricky is too tricky when writing code?" -- another
question I cannot answer in words. BUt, through experience, we
may learn the answer to both.
One technique for creating comments is to think
to comment giving reason,
command
or,
command
to comment giving reason

FIRST COMPUTER FAIRE PROCEEDINGS

or, for variety,
command
because comment saying why
or perhaps
because comment saying why.

BOX 1579, PALO ALTO CA 94302

PAGE 59

mnemonic names should be avoided, but that they are not a foolproof solution to symbolic names. The problem of mnemonic
names in Basic is a non-problem in that the names may be only
one character in length -- with a $ suffix if the variable is to hold
character strings or an expression in parens if the variable is the
name of an array.

command
Naturally, all those tos and becauses would be tedious to
see on our crt, and the ability to avoid repetition is a test of our
ability to write good code. The important thing to remember is
that the function of the comment is to provide the reason or
motivation for the code, and we should choose the wording for a
comment accordingly. Such an attitude toward comments will
undoubtedly make manufacturers of ram, paper tape, and teletype
paper very happy and the rest of us pleased at the insight -- but
with one more thing to remember to do.
There is another real advantage to writing the reason along
with the action, one we recognize in other forms of thinking.
When something, some problem, is expressed in a form external
to our mind we tend to get a clearer idea of what the problem is
and are then less likely to make a mistake based on not thinking
the thing through. Or, if we do make a mistake, we stand a much
better chance of identifying the mistake (and thus correcting it) if
it is in a form external to the mind investigating the mistake. In
plainer terms, it is easier to spot a flaw in thinking if it is down on
paper or up on a crt. This is certainly one function of a project log,
used in many large-scale systems development projects and by
some of us working on individual projects as well.
The value of writing the reason along with the code and
rereading such reasons along with the code later seems to be so
obvious I mention it here only to have said it. The question I find
myself asking (when I ask questions of programs) is "Why is the
code there?" I know perfectly well what the statement does (if it is
a language I know), but not why it is being used.

2.3. Variable Names
Since I am arguing here that the statement and its reason
should be represented together in a program, it follows that just as
the comments should be written clearly, so should the statement.
We generally have no control over the operation code mnemonics
in an assembler, but we do have control over the variable names.
Everyone, it seems, agrees that variable names should be
mnemon'ic -- an aid to memory in identifying their purpose. However, as Weinberg [1972] warns, mnemonic symbols expose us to
error because
1. They tend to make programs seem "sensible" by their
satisfaction of our general' preference of sense for nonsense.
2. They play upon our tendency to believe in the name,
rather than the thing named; consider the seductive
nature of a variable named FIVE. What value does it
contain? Are you sure?

3. Similar names can be confused; for example,
SQUARE for the square of a number and SSQUARE
for the sum of such squares differ by only one keystroke.
Exposure to error is perhaps preferable to no idea what the variables in a program mean. If names in a program are assigned in
alphabetical order of occurrence, we wHi find it pifficult to interpret
the value we assign to the variable D. Weinberg's point is not that

3. Portability
Mnemonic symbols, meaningful comments, and structured
programming are aids to maintainability and also portability. If a
program is good it will be one that gets shared -- or rather, one
that we will want to share. Even if we are not the sharing kind, it
will be one we want to take with us when we move onto another
computer. Even assembly language programs can be made fairly
portable if there is macro capability on at least the new computer.
The human factors in portability may be viewed through three concerns: equipment considerations, relocat!}ble code, and the ability
to "plug it in" and have it run.

3.1. Equipment
Equipment considerations are perhaps more financial than
human factors; but where there is something financial there is
something very human at work: a fallacy I call the "Just As Good
As" {allacy. This fallacy has several variations: a system with 12K
of ram is just as good as a system with 16K or more because if you
are good enough you can do anything in 12K; and, this teletype is
just as good as the other one with upper and lower case because
you really don't need lower case; and so on, with examples being
possible from all areas of human choice. We compare what we are
willing to settle for (or afford) with what we would rather have,
and deduce "just as good as". It is a natural defense mechanism to
try to keep us from feeling we have let ourselves down. Of course,
"just as good as" is a letdown; the easiest measure of the truth of
this is the amount of emotional heat with which someone who has
settled for "just as good as" will defend the decision against someone who has the bad manners to suggest otherwise.
In personal computing, as in stereo systems and automobiles, our taste (or lack of it) must be balanced by our bank
account or line of credit. Computer components are dropping in
price, but they are still expensive enough that software requiring
16K and a floppy disk will find fewer systems to run on than one
requiring 16K and audio cassette. Actually, the target software for
microcomputers presently seems to be an 8K machine with paper
tape reader or audio cassette. Even as I write this I am aware that
equipment costs are bringing "just as good as" and "would rather
have" closer together, and before long they may be as close
together as "just as good as" and "would rather have" in the case of
stereo equipment. Until then, software must avoid dependencies
on expensive or extravagant hardware if it is to be exportable to
many microcomputer users.

3.2. Relocatable Code
Relocatable code is a topic more obviously a matter of
software than are equipment considerations, and is generally associated with large system software rather than with microcomputer
software. My use of the term "relocatable code" refers to code that
does not rely on being loaded into the same address space to be
run each time. The difference between relocatable and nonrelocatable code may be illustrated in terms of how a particular
memory location is referred to. If we declare a location with the
name K, some assemblers associate K with a specific address, such
as 764. Every time the symbolic name K is used in an instruction
the assembler substitutes 764 for K. The resulting program is

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

dependent upon K being at position 764, and all other parts of the
program are tied to specific locations as well. But if the assembled
code does not refer to 764, but to 764 plus a value in a register
that is the address of the beginning of the program, the code can
be loaded into any segment of memory and the addresses will be
resolved as offsets from the beginning of the program. Such a
register is being used as a "base register"; base registers are in wide
use on larger computers. On microcomputers I know implementation of a base register for relocatability is a software feature, not a
hardware feature.
Base registers imply there is a need or a desire to load a
program into various locations in memory, and such a need has
not yet been demonstrated here. Interfaces between devices on
some systems require certain absolute locations in memory for
buffers, status registers, etc. If on a given system we want to load
a program at a particular location and a device interface requires
the same location we may find that the device, the program, or
both may do unexpected and possibly unwanted things. The easiest solution to such a problem is to eliminate the problem. If the
code can be relocated by an appropriate value in the base register
then the conflict over particular locations does not exist. Writing a
program so that it is relocatable heads off future complications
over where the program has to be in main memory in order to
run.
The first two aspects of portability, equipment limitations
and relocatable code, appear to be arguing for practices contradictory to each other. We must keep in mind that most microcomputers have small main memories, but we should also write code
so that it may be run in any location in memory. The synthesis of
these two concerns requires the belief -- justified by past performance -- that memory costs are coming down. Two 8K relocatable
programs could be loaded in 24K with room to spare, and one or
the other run as needed without having to load and reload code.
For example, with the code for Shooting Stars and a text editor in
memory a user could switch between them while writing a paper,
thus time-slicing work and play. If neither Shooting Stars nor the
text editor are relocatable, all the memory the machine can address
will be of no help.
3.3. Plug it in and Go
When I began as a professional in computing in 1967, IBM
was making great claims for upward (and parallel) compatibility.
This meant that a program running on an IBM 360/30 would run
on an IBM 360/67. Generally that was my experience, and
apparently others also found it a strong selling point for the IBM
360 series. For microcomputer software the corresponding
strength might be in self-loading programs. That is, programs
arrive with a bootstrapping loader on the front as a part of the program so that the overall effect is that the program can be "plugged
in" and run with minimum user involvement. This may appear to
contradict the spirit of personal computing, of wanting to do things
with one's own computer. But the owner of a computer does not
really want to do everything, just those parts slhe wants to do.
Getting ready to play with a program is nowhere nearly as enjoyable as playing with it -- especially if some unexplained detail must
be guessed by the user before the program will load properly.
What may conflict somewhat with the "plug it in and run it" aspect
of software portability is the problem of relocatability. But then, if
two programs are to be in memory at the. same time it is likely
only one of them really has to be relocatable. Besides, there is
nothing that prevents a self-loading program from using a base
register.

PAGE 60

4. Efficiency
Being able to load and execute a program in one. step may
seem more an aspect of overall efficiency than of portability, and
perhaps the discussion should be continued as an aspect of human
factors in efficiency. The program that handles details for the user
is intuitively more appealing than one that requires attention to
housekeeping details. Such a factor accounts for many users'
preference for a higher-level language over an assembler, and the
overwhelming preference of an assembler to machine language.
This sense of the word "efficient" is not the usual sense when one
is discussing a program, however.
4.1. Fast Programs
I think it is fair to say that when most people speak of an
efficient program they are referring to a fast program. Stories of
programmers who spend a week to save a few cycles of cpu time
are legion and share the same moral: be sure the time being saved
is worth the effort and time to save it. For microcomputers the
important unit of time is not the machine's cycle, time or the time
it takes to add 1,000 numbers together, but whether a human user
notices a delay in response. This does not mean sloppy programs
are efficient if the user does not have to suffer through a slow
response, but that before a major effort is invested in optimizing a
section of code the need for such optimization, in terms of the
effect upon the user, should be established. If we are writing a
program solely for our own amusement we can do anything we
want in pursuit of that amusement; but I have already remarked
on how programs we thought were one-time only seem to turn
into programs we would like to share.
When I teach an assembly language programming course I
carefully avoid any lectures on efficiency, yet my students turn in
programs with notes calling my attention to how a particular programming trick saves time, code, or both. What is at work is a
human factor, pride in one's skill as a programmer, that leads most
people I have taught to find ways to make their programs run fast.
Such pride can, however, turn into an obsession that impedes the
progress of the very program being developed with such pride.
4.2. "Tight" Code

Another human factor relating to program efficiency serves
as a summary point in our discussion of efficiency. As Weinberg
[I972] puts it, "when we ask for efficiency, we are often asking for
'tight' coding that will be difficult to modify." The coding trick that
seemed such a stroke of genius at first seems inevitably to turn
into a stumbling block in understanding the code when it is to be
changed or fixed later. This does not mean we should strive to be
inefficient, of course.
In The Elements oJ Programming Style Kernighan and Plauger
discuss efficiency considerations, arriving at the following rules
relevant to us here:
1. Make it right before you make it faster.
2. Make it fail-safe before .you make it faster.
3. Make it clear before you make it faster.
4. Don't sacrifice clarity for small gains in "efficiency".
5. Keep it simple to make it faster.
6. Don't diddle code to make it faster -- find a better
algorithm.
The occurrence of the construction "Make ... before you
make it faster" (or something very similar) so often in this list certainly seems to place efficiency in a subordinate po~ition to other
concerns. Such subordination does not mean efficiency is unimportant, but that for efficiency to be. most valuable in a program

BOX 1579, PALO ALTO CA 94302

FIRST COMPUTER FAIRE PROCEEDINGS

the other criteria must be met: correctneSs of the program, the
program's ability to recover from error, the clarity of the program,
and overall simplicity of the program. I have taken the liberty of
interpreting "Make it right" as something speaking about program
correctness because I believe that is the thrust of that point, and
also because program correctness is the next topic in this ,discussion.
S. Correctness and Reliability.
As was said in the introduction, program correctness and
program reliability seem to me to be fraternal twin aspects of a
central source of worry: how can I depend upon the answers that I
get? If a program is correct (that is, it has no bugs in it at all and
works for all possible input) it wil1 be a reliable program; unfortunately, a program that is reliable may yet contain a bug that has
not been found, and therefore is not a correct program. But such
fine distinctions aside; both program correctness and program reliability have in common the paramount concern that the program
work properly for all data that is given it.
The area of program correctness is rather difficult to summarize, but the tutorial in Computing Surveys [Elspas, 1972] is the
best attempt I have seen. Why the area of program correctness is
so difficult to summarize may be found in the approach of those
working in that area: they are trying to prove programs are correct.
The point of being able to prove programs are correct has been
summarized by Elspas as "It has been the hope of many practitioners and users of programming that the development of the programming art into a science would have the effect of relegating
programming errors to the minor nuisance category." The techniques for proving program correctness are ingenious, but they are
too complicated to be used on most programs even by those who
make proving program correctness their specialty.
Proving programs correct is a rather mathematical
endeavor, but that is not why it is a complicated matter to prove a
program 'correct. We simply do not yet see how to prove programs
are correct in any reasonably short manner at the present time.
Such a lack of easy to apply techniques must be accepted as a fact
of life for the time being until they are developed. That may be a
long time away, warns Elspas, who does not foresee "any fundamental breakthroughs that wil1 dramatically simplify the process of
verifying a program." We can want correctness in our programs,
but we must settle for reliability.
Software reliability may, for the sake of discussion, be
divided into two concerns: will the program/system crash, and the
documentation of bugs. A program with only one bug may sound
like a very reliable program, but if that bug is in the code that handles carriage return we would not be very pleased. Every language
translator I have used ran with known bugs, but the bugs did not
occur so often that they interfered :with typical processing. The
translators were, despite their bugs, reliable -- within certain limits.
As the bugs were discovered they were handled in any of several
ways: they were fixed; they were scheduled for being fixed at some
future time; they were reported to the person responsible for maintaining the translator; or, they were published (sometimes in the
form of a hastily written note).
People who do not program, or those who are rather new to
programming, find any of the alternatives other than fixing the bug
most curious. However attractive fixing the bug may appear, we
must be sure of the impact of the fix on the program as a whole.
If the program has been designed with maintainability in mind, a
change in the code intended to fix a,b,l.\g will not create strange
surprises in code within another routine even if that change is not
correct. It is all too human and all too common to perceive a par-

PAGE 61

ticular area of code as the problem area, to write code to fix the
problem, and to accept that code as fixing the bug even though it is
not tested carefully. Stories of such behavior on the part of individuals are common enough, but although I should know better it
always seems to surprise me when I hear of a software company
doing just that.
The motivation for changing the code is laudable for, after
all, the idea is to get the program working again as quickly as possible. But an iI1-considered change can make the software even
more unreliable than before. We must balance how many bugs are
in the software against how often they are encountered in use.
Van Tassel [1974] suggests several criteria for jUdging program reliability:
1.
2.
3.
4.

Mean time between errors
Mean time to repair errors
Percent of up-time for program
Number of bugs vs calendar months

Of these, perhaps numbers 1 and 4 are the most meaningful to us.
They might serve as good starting questions we might like to put to
software vendors who want us to buy a compiler. This assumes
that the vendor would give us correct answers to our questions, an
assumption that apparently is not always the case. Such a discussion, however, is better carried out in the next section of this
paper, which is concerned with human factors and ethical considerations.
6. Ethical Considerations.
There certainly is no need to argue that human factors have
a direct effect upon ethical aspects of microcomputer software.
Such an effort is obviously present whether or not we feel ethical
concerns derive from an absolute, eternal set of values or not.
Ethical considerations include (but are not restricted to) fraud and
violation of copyright.
6.1. Fraud
A typical dictionary definition of fraud will read to the effect
that intentional perversion of the truth in order to get someone
else to part with something of value constitutes fraud. One might
argue that fraud is too strong a term to use regarding someone
who makes claims about performance that the software cannot
meet. Perhaps the term should be lying, not fraud. Software that
fails to live up to promised performance may do so in degrees
varying from small glitches to defying anyone to load it; surely the
one word fraud does not apply equally to all. Of course, it does
not. And deciding just when and where it does apply legally is a
matter for someone in law to decide, rather than someone in computing. But I make no pretense of deciding a legal matter; my concern is ethical. It seems to me that anything software is advertised
to do should be something that was thoroughly tested and
debugged. When we buy something we naturally assume it is
being offered in good faith: that it works, at least in the aspects
advertised, and one can expect reasonable performance from it -such as being able to load it. As more people enter the microcomputer software marketing field we are seeing a dual effect on
software quality; competition brings pressure to bear to create
better software, and the desire to be competitive is accompanied by
a temptation to stretch the truth a bit about what a program will
do. As users of software we have more than the old saw caveat
emptor, let the buyer beware, to help us: we have the hobbyist and
personal computing magazines.
Magazines such as Personal Computing, Byte, Creative Computing, and Dr. Dobb's Journal can and to some extent do serve as a

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

guide to available software. As microcomputer-oriented magazines
continue to develop I would expect reviews of software to become
.a standard part of every issue. This may have the effect of concentrating power in the hands of a few at first, but in time reviews of
software would come to be regarded in the same light as reviews of
books: not the last word necessarily, but a guide to what is around.
This is not to say that one should buy software only if it is favorably reviewed in a computer magazine. It is to say that a search of
the literature may save the software consumer much frustration
and disappointment. Searching through all issues of the various
hobbyist magazines is lengthy, tedious work, and the idea of waiting for Reader's Guide to Periodical Literature to get around to listing
all the hobbyist magazines does not appeal too much. But there is
a guide published to the literature we can consult now: it is Periodical Guide for Computerists, by Eldon Berg, that indexes over 1,000
articles and letters from fifteen magazines read by computer hobbyists. The table of contents is quite extensive, and definitely
saves hours of search through back issues. Berg is publishing the
guide semi-annually, in July and December. Those wishing a copy
of the guide may write him directly at the address given in my
bibliography at the end of this paper.
6.2. Copyright
Our concept of copyright comes from similar English laws
and licenses dating from approximately 1518. The United States
copyright law is so complicated that I have had directly contradictory legal advice from two very competent attorneys. Both agreed
that on the subject of computer use of copyright materials the law
is rather grey and difficult. The purpose of the law is to protect a
person's property from being taken by others without proper compensation. That is, books, documents, songs, recordings, etc. are
considered the property of the copyright holder. Through copyright provisions writers, composers, and others are given protection
for their work so that royalties are paid to the person who deserves
them. This is, I hasten to add, not a legal opinion but an ethical
perspective on the topic. Donald Knuth writes most eloquently
and from the same non-legal status about legal protection of algorithms in Sorting and Searching, volume three of The Art 0/ Computer Programming. Knuth argues that algorithms should not be
anyone's property any more than a mathematical result is. This
seems very reasonable to me and right in line with the contention,
backed by legal precedent, that ideas are not protected by patent or
copyright whereas devices or publications may be. I also believe
that if someone writes a computer program and wishes to sell it to
others then that person should be protected from piracy.
The revised copyright law, effective 31 December, 1977,
contains wording that clearly intends to cover computer programs:
'''Literary works' are works ... expressed in words, numbers, or
other verbal or numerical symbols or indicia, regardless of the
nature of the material objects, such as books, periodicals,
manuscripts, phonorecords,_ film, tapes, disks, or cards, in which
they are embodied." The old law had to be interpreted to cover
modern technology; the new law attempts to anticipate new
developments by saying '''Copies' are material objects ... in which a
work is fixed by any method now known or later developed, [italics
mine) and from which the work can be perceived, reproduced, or
otherwise· communicated, either directly or with the aid of a
machine or device."
The question of whether this law will indeed provide proper
protection will have to be answered in time in the courts. However, whether the law can be effective against individuals who
pirate software for personal computing can be answered, in my
opinion, with a simple "No." First one must find the guilty party,
and then one must take that party to court. The ~xpense and time

PAGE 62 ,

required for such investigation and prosecution is staggering to
contemplate. Although the average income for computer hobbyists
is higher than for, say, the average citizen of the United States,
recovery of the- expenses involved in prosecuting software piracy
would be hard to do -- perhaps harder than getting the jl./dgement
to begin with.
This is not to be construed to mean that I advocate violation of copyright; I decidedly do not. If someone is selling a program I want I have two ethical choices: either pay the asking price
or write the program myself. However, one would have to be shy
of basic intelligence and have never read any personal or hobbyist
computer magazine to believe that everyone operates with the
same ethics. The problem of detection and prosecution is too
large, and the remedies too difficult to extract to halt violations of
copyright through legal channels. What, then, is to be done to
encourage software development and guarantee that such development will be protected if protection is desired?
Digital Group Software Systems of Denver, Colorado,
appears to have a solution. By pricing its software so low that it is
virtually the price of a tape cassette, the temptation to steal a copy
has the cost motive taken out of it. After all, why steal the programs by copying them to a cassette when for essentially the same
price they can be acquired legally? And with a copy of the documentation, no less! In a discussion with the President of Digital
Group I learned that pricing software at $5.00 per cassette does not
mean they lose money on software. The volume of business they
do makes up for the low price, and the low price encourages people
to buy from them. Although it does not say much for strength of
ethical feelings in humans, Digital Group's experience does indicate that when the cost is pretty much the same that people will
buy rather than steal. The temptation to remark "how very
human" is too much to resist.
7. Conclusion
This discussion of software engineering has had one major
point to make throughout the discussion: no matter what area of
software engineering one considers, there are human factors that
have a major impact on that area, whether it is typically perceived
as being so influenced or not. Some of the remarks have had
more "solid" evidence or support than others, but all are backed by
more than has been possible -- or prudent ~- to include here. What
has become clear to me is that ignoring human factors in software
engineering is done at the risk of having them assert their importance with a force that can mean disaster for a project. This discussion has been one attempt to bring the matter forward for discussion.
Bibliography
Berg, Eldon, Periodical Guide/or Computerists. 1360 S.W. 199th Ct.,
Aloha, Oregon 97005 ($2.50).
Elspas, Bernard, Karl N. Levitt, Richard J. Waldinger, and Abraham Waksman, "An Assessment of Techniques for Proving Program Correctness," Computing Surveys, vol. 4 (June, 1972),97-147.
Knuth, Donald E., "Computer Programming as an Art," Communications o/the ACM, vol. 17 (Dec., 1974),667-673.
Sterling, Theodore D., "Guidelines for Computerized Information
Systems: A Report from Stanley House," Communications 0/ the
ACM, vol. 17 (Nov., 1974),609-613.
Sterling, Theodore D., "Humanizing Computerized Information
Systems," SCience, vol. 190 (19 Dec., 1975), 1168-1172.
Tossy, Michael, "Some Thoughts on Designing an Interactive Program for Easy Use by Humans," unpublished seminar paper, U.C.

FIRST COMPUTER FAIRE PROCEEDINGS

Berkeley, 1977.
Wang, Li-Chen, "Palo Alto Tiny Basic," Dr. DoM's Journal of Computer Calisthenics & Orthodontia, vol. 1 (May, 1976), 12-25.
Weinberg, Gerald M., The Psychology of Computer Programming,
NY: Van Nostrand Reinhold Co., 1972.
Van Tas!\el, Dennie, Program Style, Design, lYficiency, Debugging,
and Testing, NY: Prentice-Hall, 1974.
Yourdon, Edward, Techniques of Program Structure and Design, NY:
Prentice-Hall, 1975.

BOX 1579, PALO ALTO CA 94302

PAGE 63

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

THE HUMAN INTERFACE
William F. Anderson
158 Valparaiso
San Francisco CA 94133

ABSTRACT:
A great deal of energy has been spent on defining the various physical interfaces that exist in a computer system. Such a statement cannot be made about
the human interface. Yet, the success or failure of a system is dependent upon
the quality of this interface. In designing the human interface the basic princi·
pies of communication need to be applied. Simply, these principles are: what
are you tryinq to communicate, how is it being communicated, and who is the
recipient of the communication.
******************************************

The human interface-where does it fit into the picture? What must be considered when designing software to support this interface? The intent of this pre·
sentation is to start you thinking about these questions and their answers.
What is the purpose of computers; whether they be micro, mini, or maxi? Is
not a computer a "tool"? A tool used, for example, for problem solving, infor·
mation storage and retrieval, and the controlling of other devices. In general,
computers are tools used to solve human problems. Note this. is q,:,ite dif~er­
ent from computers being problems for humans to solve; a Sltuation WhICh,
unfortunately, is rather common.
The design of tools requires the application of "human factors engineering"in other words, one must take into account the user of the tooL In a computer
system this involves two levels: the physical desiqn of hardware, and software
design. Take, for example, a keyboard. The weight of the keys, their size,
angle shape, and layout are all factors in determining the optimal physical
desig~ of that keyboard. Although important, this is an area in which few of us
ever get involved, since the hardware is usually purchased. However, software
is a totally different story.
In terms of software the human interface involves the entering of data into a
system, the retrieval 'of data from a system, an~ th: co~trolling of t?e s~stem.
Each of these areas can be viewed as a commurucation mterface. It IS a link to
the human user, just as software routines also link the computer to peripherals
such as a cassette recorder.

Some of you are probably wondering of what interest is this to the hobbiest?
I can only ask, how do you plan to use your home computer syst:m? Is it for
your own personal enjoyment, or are you planning on others sharmg the bene·
fits of your work? If it is for yourself, then you need only be concerned about
communicating with yourself. If you are writing programs that will be used by
others, even if only your family and close friends, then you should be concerned with how they will interact with the system. For no matter how good
the program is in other areas, if it is difficult to use, it will be put aside.
Notice I have referred to the human interface as a communication interface.
The interface is a communication interface when one considers that the object
is to transfer information. Furthermore, we are entering an era where more
people directly interact with computers. This means that the machine's soft·
ware must take on more and more of the burden of providing the communica·
tion interface to the user of the system. Simply, the principles for this inter·
face are those of all hurnan communication. They can be categorized as what
are we trying to communicate, how are we going to communicate it, and to
whom are we trying to communicate.
Let's consider the recipient of the process first. Traditionally, the users of
computer systems have had to be rather sophisticated, for example, users. of
airline reservation systems. Some educational systems have been an exception
to this statement. The fantasy of those of us involved in personal computing
is a computer in every home (or at least a good majority of homes). This
means that the users of systems are not going to be the ultimate combination
of electronic and software whizzes. The vast majority of potential users of
home systems could not care less how a job is done on a computer; only that it
is done. Unfortunately, the industry is geared towards supporting the sophisticated user. In fact, I will stick my neck out and say that it takes a more experienced person to purchase a home computer than is required to purchase a com·
mercial product. We seem to be spending more time trying to educate people
so that they have the requisite level of knowledge than we do in trying to make
the computer easier to use. Even if systems are designed so that the hardware
is transparent to the user, the job is not done. The task is complete only when
the effectiveness of the information interchange with the system has been maximized and the person using the system has found the experience to be helpful rather than frustrating.
Although knowing what to say seems to be a problem that particularly plagues
documentation, it also haunts the environs of interactive software. Before a
message can be effectively communicated, one must be clear about the content

PAGE 64

and purpose of a message. This applies not only to messages generated by a
system, but also to the syntax requirements of entering data into the system.
In my opinion, the designer of interactive software has the responsibility for
seeing that it is the software which insures the quality of communication and
not the user of the system.
The purpose of a message is to get the desired response, and that does not include kicking the computer during a peak of frustration. Nor is a system crash
when invalid data is entered an acceptable response from the system. Valid
responses include entering the requested information or taking an appropriate
action such as changing paper in the printer.
To me, lack of clarity in a message reflects a lack of understanding of the problem one is trying to solve. For instance, with my current knowledge of the subject, if I were trying to design a system which, based on various inputed parameters, provided an analysis of a particular stock, I would have a difficult time
devising questions that would lead to the appropriate answer-to say nothing
about how to state the answer. In other words, if one understands the problem
aNI knows the purpose of what he is trying to achieve, then he is in a position
to communicate a clear message.
The finai link in the communication chain is how to communicate the message
to the recipient. One of the exciting things about current technology is all the
new possibilities for media that can be used in the communications process.
There are audio boards, video drivers in both black & white and color, light
pens, plotters, printers, and optical scanners, as well as the old teletype. Each
of these offers different possibiliti(!s as to how messages can be communicated.
I know that I would like to own one of everything so that I could explore their
limits. However, that is not the situation today, so I will explore what can be
done with a CRT or teletype.
Compared with the CRT, the teletype is a very limited device. It is not uncommon for the CRT to be used in a teletype replacement mode, but it would be
very inefficient and in some cases impossible to use the teletype in a CRT reo
placement mode. In terms of presenting information, the teletype is basically
a line oriented device (longer messages being communicated as a series of lines).
The major advantage is that it can produce a listing which is independent of
t he computer, can be used as a historical document on the interaction that
occured during the session, and comments can be noted on the listing itself.
The major disadvantage is its lack of speed.
The CRT, however, is a very different medium. The area of the screen limits
the maximum amount of data that can be conveyed in a single message. Unless
supported by another means of storage, once the data goes off the screen it is
lost forever. The major advantages are that longer messages can be communi·
cated very quickly, and, depending on the CRT, one has the additional features
of graphics and variable density.
For example, on a CRT I could do what is called menu selection, which is the
presentation of the question along with a list of alternatives. My response
would be to enter the number for the alternative I wanted. Whereas on a teletype the message is presented, and then based on my prior knowledge of the
alternatives I would enter the appropriate response.
This leads into another topic called format of messages and responses. One of
my pet peeves is systems that use single letter messages and responses, or even
numbered messages. This approach requires a more sophisticated user of the
system and is prone to greater error. It is disturbing to break up an invol·
ved interactive process with a search through the manual to find out what is
going on.
The opposite extreme is to get too fancy in presenting a message. T.his ~
especially true with media that is extremely versatile. Remember, the object IS
to communicate a message, not to absorb the user's attention into the media.
I often see another habit which I think needs to be changed. Computer respon·
ses such as "hey stupid-you made and error" are basically insulting and convey
little information. Such remarks say more about the desigr\er of the system
than they do about the user. In correctinq errors, the purpose is to ellicit the
desired response. This is accomplished through messages that describe the error
.
and tell what was expected.
In summary I want to emphasize that until we start to concern ourselves with
the human Interface the growth of personal computers will be limited to the
devoted "hackers". 'I feel that the first step in designing this interface is to
realize that it is a cOmmunications process and that the guidelines for good
communications between two humans apply equally to communications between human and computer. For the dialogue of the computer is nothing more
than an extension of the person who wrote the interactive program.
****************************************~*

BIOGRAPHY:

Current employment at Four-Phase Systems culminates eight years of
experience in data processing. This is tempered by a B.S. in Psychology and
graduate work in Administration of Justi~e with a couple ?f years as a proba·
tion officer. Interest in personal computing dates back eIghteen months to
acquisition of an 8080A based computer,

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579. PALO ALTO CA 94302

PAGE 65

THE POTENTIAL OF MICROCOMPUTERS FOR THE PHYSICALLY HANDICAPPED
Peter J. Nelson & J.G. Cossalter
Medical Engineering Section, Bldg. M-50
Division of Electrical Engineering
National Research Council of Canada

Ottawa Ontario
Canada K1 A DRS

ABSTRACT
The needs of the physically handicapped, especially those
who are non-verbal, are outlined with respect to several communication aids developed at the National Research Council of
Canada over the past dozen years. For each device described
it is shown how the lise of a microprocessor has simplified the
required hardware, while making the redesigned devic,es more
versatile. The use of synthesized speech in a classroom
symbol communication system, based on a microcomputer, is
described in some detail. To sUm up, the' future possibilities
for home-computer_based aids for the handicapped are explored.
Introdllction
The microprocessor and microcomputer revolution promises
new electronic possibilities for everyone. For certain
~eglected groups such as ~he physically handicapped, the possibilities of new freedoms are more important and even more
exciting than for the ordinary "",n or woman i~ the street. we
are referring to such new freedoms as: the freedom of selfexpression through simpler and more cost-effective aids to
communication; the freedom to pursue educational opportunities
through computer-aided-instruction brought right to the
person's home; the freedom of independence pro-,ided by personal
environmental controllers and mobility aids; the freedom to
hold a job and support oneself by means of various vocationai
aids; and the freedom of new recreational opportunities provided by computer games.

Fig. 1.

COMHANDI typing and communications aid
handicapped.

for the

The Medical Engineering Section and the InformationScience
Section of the National Research Council of Canada are pursuing
some of these goals on behalf of the physically handicapped.
This paper will describe our initial attempts to exploit the
potential of microcomputers in communication aids and teaching
aids for the physically handicapped.
Background to the Problem
The aids described in this paper are designed for severely
handicapped persons who lack normal functional use of their
hands and arms to the point that they cannot hold a pen or
pencil nor operate a regular typewriter. Persons in this category include those with a high spinal cord lesion or other
paralysis due to stroke, trauma, etc. and tho'se with ueuromuscular disabilities resulting from cerebral palsy, poliomyelitis, muscular dystrophy, etc. The most handicapped of
these are the persons who also have no functional speech
capabilities.' The loss of the ability to cotm:lunicate in any
normal way is the most serious problem for these persons. the
need to communicate and to express one's feelings, thoughts,
and desires is fundamental to mankind. Children deprived from
birth of any ability to communicate will be developmentally
handicapped throughout their lives. Alternative means of communication must be provided early in life.
COMHANDI
The CONHANDI Communications System for the Handicapped was
the first aid developed by NRCl (see Figure 1)_ It was
developed over twelve YlOars ago using diode-transistor logic
(DTL), the implementation of which required about nine circuit
boards and other associated components (see Figure 2). Nevertheless, the CO~~I accompllshlOd what it was dlOsigned to do it permitted a severely handicapped person to type out messages
on a low-cost teletypewriter by operating a single paddle
switch. Actuating the paddle caused a light to scan behind an
alphanumeric display panel, first horizontally and then
vertically, until the desired character was reached and typed
out on the teletypewriter. If the user had slightly better
fllnctional capabilities, a joystick could be used to direct the
scanning in right, left, up, or down directions. A separate
paddle would then be used to actuate the typing function.
Although there are ether approaches, the scanning concept has
since been implemented almost universally in typing and communicati~n aids for the most severely handicapped.

Fig. 2.

Rear view of COMHANDI showing circuit boards.

Microprocessor-Based COMHANDI
As a demonstration of the potential of',ilf-croprocessors to
reduce hardware logic, we have recently implemented all the

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579. PALO ALTO CA 94302

PAGE 66

functions of t;he CONIIANDI using an F-8 microprocessor. The
dealing with emotions contain the basic heart-shaped symbol to
block diagram, Figure 3, shows the simplicity of the newsyste~ indicate inner feelings. By organizing Bliss Symbols into
The program requires 512 bytes of read-only memory (ROH), 9
sequences, whole ideas or sentences can be conveyed, as shown
scratchpad registers (out. of 64 available in the F-8 CPU), the
in Figure 5.
programmable timer, and 3 of the 4 I/O ports (3850 and 3851),
the FAIRBUGTM monitor, which resides in the 3851 PSU, uses
1\
firmware to generate the serial ASCII-encoded data to drive the
teletypewriter. Not only is the hardware vastly simplified,
but the software-controlled system permits greater flexibility
in the mode of operation. For example, the scanning rate can
want
I, me
mother
see
be changed by typing in a time 'constant from the teletypewriter
keyboard.
Fig. 5. A Bliss Symbol sentence.

V(

o

axa
DISPLAY MATRIX

DATA

38!13
SMI

en

..,en

,'BEEPER

15
~

Symbol Communication Aids
The children soon develop a working vocabulary of 200 to
500 symbols, which creates some problems for those who are
physically incapable of pointing on a large symbol board.
Electronic symbol. communication boards have been built for these
children, such as the unit shown in Figure 6. This portable
unit provides electronic scanning over 256 symbols by means of
a 16 x 16 matrix of light-emitting diodes (LED's).
The
capacity of the board can be doubled to 512 symbols by using
either a steady light or a blinking light to indicate upper and
lower case symbols, in effect, at each location. Just as with
the COMllANDI, a variety of interface devices can be used to
control the symbol communication board, either of the singleswitch-closure type or the joystick-type.

-05UOJECT

L.._-+::-_-l-O INTERFACE
EPROM

3851

2 x256

PSU

8

- 0 CONTROL

SWITCHES
(1108)

bytes

PORT4

Fig. 3.

Block diagram of F-8 microprocessor version of
COMHANDI.

Bliss Symbols
Although the CO~lliANDI was effective for certain groups of
handicapped individuals, an alphanumeric communication aid is
of little use to preschool children who cannot yet read or
spell. In the past, picture boards have been used with these
non-verbal children to permit them to express their immediate
needs. 2 Hore recently, a universal symbol language developed
by C.K. Bliss has been adapted for use by thes~ children. 3
The Bliss Symbols, as they are called, are pictographically related to the concepts and real-life experiences which
they represent. They are therefore, intuitively meaningful to
young children and are more easily learned than an alphabetic
language. Hence, using Bliss Symbols, the children can begin
to communicate at an earlier age, which is extremely important
to their development.
Some examples of Bliss Symbols are shown in Figure 4. Tne
symbols for "home", "mouth" and "animal" look like the objects
they represent. Basic symbols such as these are then combined
to convey related concepts such as "street", "food" and "meat".
Note that "meat" is "food" from an "animal". All concepts

v

\71

home

street

happy

o

o

7\1\

mouth

food

animal

Fig. 4.

Some examples of Bliss Symbols.

v

vl
sad

9M
meat

Fig. 6.

Symbol Communication Matrix board, Model 2.

An important feature of the electronic scanning board is
the provision of a memory function. One serious limitation of
manual alphabet or sym~ol pointing boards is the fact that the
"listener" or receiver of the communication usually cannot
remember enough letters or symbols to piece together any but
the shortest words or messages the "talker" is attempting to
transmit. This problem is compounded by the slow rate at which
some of the'severely handicapped persons must work. Knowing
that a normal person is impatiently waiting for them to point
out a message only heighte~s their anXiety.
With an electronic
memory board, however, the handicapped user can work at his or
her own speed, building up a message in the board's memory, one
symbol at a time. The message can be read back to a "listener"
at a later time, as often as necessary, simply by causing the
LED indicators on the display matrix to "jump" sequentially
through all the symbol locations stored in the memory.

Just as in the case of the CO~~DI, the electronic hardware required to implement e symbol scanning matrix can be .

FIRST COMPUTER FAIRE PROCEEDINGS

greatly simplified through the use of a microprocessor. The
original hardwired board shown in Figure 6 uses about 60 OIOS
small-scale integrated circuit packages, whereas the same
functions have been i;nplemented with a 76B-byte program in the
F-8 microprocessor. Again the microprocessor-based.version
provides greater flexibility, in user definable rates for
scanning and memory read-out, etc. and a larger memory capacity
(in the scratchpad memory of the F-8).

BOX 1579, PALO ALTO CA 94302

PAGE 67

The microcomputer is the component which provides all the
necessary memory and electronic control. Sentences formed on
one child's board can be sent to the other board to be read out
or to the TV screen for all to see. The audio from the speech
synthesizer is also under computer control and can be directed
to any individual board or to the classroom display. As the.
symbol message is being displayed, the corresponding words are
spoken by the synthesizer.

The microcomputer is based on the 8080 microprocessor.
Since it.is an 8 bit processor, it nicely suits the jobs of
The Symbol Cowmunication Matrix, as described, has been a handling a 256 symbol system - a unique identifier for each
useful aid, especially in situations where portability is
symbol fits into one byte of memory. The control program for
the communication boards and the TV display is stored in 4096
necessary. It has some limitations, however, because it provides only a visual indication of the selected symbols. We
(4K) bytes of Erasable Programmable Read Only MemorY (EPROM).
have been experimenting with the use of synthesized speech,
This type of memory is ideal for this application because it
therefore, as a means of providing additional sensory inputs to allows the control program to be changed by reprogramming the
the handicapped person. 4 For the initial trials, a commercial same EPROM integrated circuits. This EPROM also contains the
speech synthesizer (VOTRAXTM) and a remote computer were used, codes required to direct the speech synthesizer .to produce the
spoken words for the symbols. (The 256-symbol vocabulary
coupled to the handicapped person's symbol display board via
requires about l~ K bytes).
an acoustic telephone link. The synthesizer speaks out the __
name of each symbol on the display matrix as it is selected,
4K of Random Access Memory (RAM) is used as a dynamic
storing these words in a scratchpad memory. Upon command,
data store for control operations. Symbol sentence lists
then. the whole sentence or thought cau be spoken by the synand intercommunication buffers are kept here.
thesizer.
Synthesized Speech

Speech is, of course, a very natural form of communication. The value of the. aural reinforcement provided by the
synthesizer soon became quite evident. The children's
attention span and motivation increased almost immediately,
permitting training to proceed at a faster pace. Hence, in a
period of six months following the addition of the artificial
speech, their speed in selecting symbols, their language de..,
velopment and the use of proper syntax, and their spontaneous
desire to communicate have all been promoted. The synthesizer
gives the child an objective feedback on the trial-and-error
selection of symbols and sentences, permitting independent
work. The "space age" quality of the artificial voice appeals
to the children and many attempt to verbalize along with it.
Use ofaMicrocomputer
Following the successful trials with the speech synthesizer, we have proceeded to develop a stand-alone classroom
communication system built around a microcomputer. A block
diagram of our "Classroom Symbol Talker" is shown in Figure 7.
Initially the system provides for two handicapped children and
a teacher to intercommunicate in the two mediums of Bliss
Symbols and artificial speech. Each student's terminal is very
much like the symbol communication matrix board described
previously, including the same type of interface controls.
Some of the differences are local loudspeakers in each board
and extra "control addresses" on the symbol matrix to permit
the child to select the destination for his or her message.

A Real-Time Clock is used to time events which must be
carried out at particular intervals of time. Scanning symbols
on the communication boards, for exampl~is carried out at a
preset rate determined by the clock.
The processor sends control codes to the speech synthesizer
through a Serial Input/Output (I/O) port. These control codes
are buffered, interpreted by the synthesizer and then spoken
out. The artificial speech that is generated. is-routed
through a digitally controlled switch and gated to theparticular communication unit requiring audio reinforcement.
Each of the three communication terminals is handled
through its own Parallel 1/0 port. Each is independent from
the other and more terminals could be added to the system by
interfacing them through additional I/O ports.
A significant amount of digital memory will be required
to store the bit patterns for all 256 of the Bl:3s Symbols for
the graphic TV display. Other researchers are attempting to
display Bliss Symbols electronically and it is hoped that
techniques will be found to minimize the required memory size~
Otherwise, an auxilliary diskette memory may be required for
this feature.
Design Considerations

The use of a microcomputer as the main component in our
Classroom SyQbol Talker is an example of a near-ideal solution
to a number of the problems involved in developing aids for the
A graphic television display is planned as a low-cost
additional feature. It will serve as a classroom "blackboard" handicapped. The commercial manufacture of small quantities of
specialized devices for the handicapped has been a recurrent
on which the teacher or either of I:he students can "write·" a
Bliss Symbol message. The teacher will use a numerical keypad problem. In our system, however, as many of the"logicfunctions
as possible have been implemented in the microcomputer software,
to select the symbols by code numbers. The symbols can be
rather than in discrete circuitry as was the practice ·in the
stationary on the screen or can be made to move across the
past. Less manufacturing is involved, therefore. The micro~
screen in "Times S;ure" fashion for longer messages. By
computer can be purchased as a completely assembled and tested
bringing the symbols together and displaying them in a serial
commercial product into which the programmed EPROM's are in'string on the TV screen, it is hoped that a degree of
serted. In fact, except for the individual symbol matrix
connectedness will be conveyed which may be lacking on the
boards and interface controls, all other components of the
individual symbol boards.
system are commercially available.

~

CHILD'S

o INTERFACE
o CONTROLS

~.O
CHILD'S
COMMUNICATION BOARD

Fig. 7.

Block diagram of "Classroom Symbol Talker" system.

The system can be expanded, or its functions can be
changed, without re~iring. Each communication board can light
up a maximum of twenl:Y five lights simultaneously. By replacing the symbol sheet on the front of each board· with an
enlarged BINGO card and adding some appropriately programmed
EPROM memory, the system will allow the children to play BINGO·.
Other interactive games·, such as TIC-TAC-TOE and Steep.1echase
can be played, either on the children's individual display
board or on the classroom TV screen. The recreational possibilities for the handicapped which are opened .up by computer
games are nearly limitless. The games must be chosen to match
the children' s intellec~ual and· functional capabilities, hoWever. Target shooting, ping~pong and other games of skill are
obviously out of the quesfion. Games which stimulate
intellectual participation are ideal. The costs of the software for each additional game are quite small.

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

The Future

PAGE 68

need for a portable artificial voice. It may be some time
before such a· .dev1ce is economically feasible, but we can be
sure it will involve a microprocessor. The feasibility of a
low-cost device, using a limited vocabulary on magnetic tape
or diskette, is under study at NRC of Canada. The problem is
to provide reasonably rapid access to any word in the
vocabulary.

This paper has drawn attention to some of the communication needs of the physically handicapped and has attempted to
show how microprocessors and microcomputers are beginning to
be used to meet these needs. It is certainly only the beginning. Other researchers are also applying these newtechnologies for the handicapped. 5 ,6 This will be the case more and
Computer games have been mentioned. The Medical
and more as the prices of microprocessors and fully built home
Engineering Section of NRC has developed several games for the
microcomputers continue to fall. In our Classroom Symbol
handicapped,
such as Checktronics, an electronic checkers
T.alker, the major cost itemis the speech synthesizer. The
game, and Steeplechase (see Figure 8). These were built up
synthesizer is an excellent device. Since it is basically a
from hardwired CHOS logic circuitry. Portability was one of
phoneme generator, it provides random access to an unlimited
the features of.these games, but from the standpoint of the
vocabulary. For some non-verbal handicapped persons a limited
visibility of the display, a TV screen would be an improvement.
vocabulary stored on a floppy diskette would be a more
.The
hardwiredl!\ames have served to demonstrate the value of
economical solution. Controlled by a home hobby-type computer,
recreational aids for the handicapped. The Steeplechase is
this arrangement would permit such persons to conduct their
especially appropnate for young children who like the idea of
personal business by telephone.
racing. Incidentally, it helps teach them counting concepts
as they must "move their man" by pushing on a paddle switch the
Some of the other areas where microprocessors can be
appropriate number of times. In hardwired form these standapplied for the handicapped are in r l typewriters and in the
alone games are probably not cost effective. As programsin"a
develop~~nt of a portable artificial voice.
TV typewriters
low-cost hobby computer with a TV display, they will be very
have been adapted for the handicapped, already, in hardwired
attractive.
logic versions. 7 These could be more easily implemented with
a commercial microcomputer with a TV interface. A progran
From communication aids, to educational games, it is only
could be written which would display the set of alphanumic
another small step to more formal educational programs on
characters at, say, the top of the TV screen. The user would
personal computers. )!ere is an exciting new opportunity for
move the cursor,by means of a joystick or single paddle
the handicapped. The teaching of children and adults with
switch, to select each character. The selected character
physical and educational handicaps has~always required an
would thee appear on the lower half of the screen, where a
intensive amount of one-to-one interaction between student and
whole message could be built up. With an optional teletype
teacher. Interactive teaching programs will reduce this
or other hard-copy printer, the handicapped person could De
requirement and provide a more objective tutor in many cases.
gainfully employed preparing business correspondence. The
The low-cost of personal computers will make such teaching
text would be prepareri in the desired fo~~t on the TV screen,
practical, not only in institutional settings but also in a
with any errors corrected, before b~ing "dumped" out to tha
handicapped person's own home where they may be, confined to
printer.
bed or wheelchair. The hobby computer can also act as a remote
terminal for a large time-shared computer system on which more
elaborate teaching programs may be available.
Biography
Peter J. Nelson has a Master of Science degree in Electrical
Engineering (Biome.dical Engineering options) and has nine years
of experience as a rehabilitation engineer (one who specializes
in the design and application of devices and techniques for the
rehabilitation of the physically handicapped). At present he is
employed as a Research Officer in the Medical Engineering Section,
Division of Electrical Engineering, National Research Council of

Canada, where his responsibilities include the development and
evaluation of aids for the handicapped. Previously he has worked
in Washington, D.C., where he was Staff Officer for the Committee
on Prosthetics Research and Development, National Academy of
Sciences; and in Winnipeg, Manitoba, Canada, where he was
Co-Director of the Rehabilitation Engineering Dept., Health
Sciences Centre.
G. Cossalter, holds the degree of Master of Applied
Science from the University of British Columbia, Vancouver,
Canada. For the past seven years he has been employed as a
Research Officer in the Information Science Section of
National Research .Council of Canada and has worked in the
areas of computer-aided instruction, computer-generated
speech, and computerized aids for thehand1capped.

J~hn

Acknowledgements
The authors wish to acknowledge the assistance of summer
student R. Paduch from McGill University, Montreal, Canada,
in the preparation of the programs for the F-8 microprocessor.
The authors are also indebted to J.R. Charbonneau and
F.P. Orpana of NRC for the con~truction of the equipment
described in this paper, to the staff of the Ottawa Crippled
Children's Treatment Centre for the clinical evaluation of the
devices, and to A.J. Mortimer of NRC for helpful suggestions
in the planning of this paper.

Fig. 8.

Portable electronic Steeplechase game for handic;>pped
children;
References

Speech is a far more acceptable medium of communication
with the general public than letters or symbols. The nonhandicapped person usually won't make the effort to learn a
symbol language and feels psychologically uneasy when confronted by a non-verbal person. Hence, there is a tremendous

1.

Roy, O.Z. and Charbonneau,J.R., "A Communications System
for the Handicapped (COMHANDI)", Chapter 11 in Aids for the
Severely Handicapped, K. Copeland, ed., Sector Publishing
Ltd., London, 1974; pp.89-98.

FIRST COMPUTER FAIRE PROCEEDINGS

2.

McDonald, E. T. and Schultz, A.R., "Communication Boards for
Cerebral-Palsied Children", J. of Speech and Hearing Disorders, vol.38, no.l, Feb. 1973; pp.73-88.

3.

McNaughton, S., "Bliss Symbols - An Alternative Symbol
System for the Non-Vocal Pre-Reading Child", in Non-Vocal
Communication Techniques and Aids for the Severely Handicapped, G.C. Vanderheiden and K. Grilley, eds., University
Park Press, Baltimore, 1976; pp.85-104.

4.

Charbonneau, J.iil., Roy, O.Z., Cossalter, J.G., {,arrick, A.
and Cate, C., "A Symbol Communication System for the NonVerbal Severely Handicapped, with Audio Word and Sentence
Reinforcement," Proc. 1976 Conf. on Systems and Devices for
the Disabled, Boston, ~~ss., June 10-12; pp.18-l9.

5.

Vanderheiden, Gregg C., Director, Trace Research and
Development Center for the Severely Communica-tively Handicapped, University of Wisconsin-Madison. Personal
Communication.

6.

McBride, J.W., Morena, L.C., Lawrence, P.D. and Robinson,
C.E., "An Adaptive Environmental Control and Communications
System for the Handicapped", Digest of 11th Intnl. Conf. on
Medical and Biological Engineering, Ottawa, Canada, Aug. 26, 1976; pp.29.6.

7.

Logan, H.C., "Communications Terminal for Speech Handicapped", Proc. IEEE 1975 Region Six Can£., Salt Lake City,
Utah, May 7-9; pp.8-11.

BOX 1579, PALO ALTO CA 94302

PAGE 69

FIRST COMPUTER. FAIRE PROCEEDINGS

sox 1579;

PALO ALTO CA94302

PAGE.70

AN INTERFACE USING BIO-ELECTRICAL SIGNALS TO CONTROL A MICROPROCESSOR SYSTEM
FOR THE PHYSICALLY AND COMMUNICATIVELY HANDICAPPED
. Laurence R. Upjohn, Pharm. D.
7297 Stanwood Way
Sacramento CA 95831

Abstrao.t:
.
This paper outlines the biological source of electrioal signals that can be used to control microprocessor
sytems. A brief discussion is undertaken as to methods
of amplifling this bio-electricitl with comments on
integrated circuit selection and circuit design. Emphasis
is placed on the safe interconnection of the bio-electric
interface to the microprocessor insuring that elec·trieal
isolation is maintaned between them. Lastly a brief
mention is made of several decoding methods usad with
the switch to implement microprocessor systems for the
severly handicapped.
Introduction:
This paper will briefly describe the human body as a If
source of electrical signals that can used to control
electronic systems. A short discussion on the biological
origin of this electrical activity will be given. followed
by tec·hnical methods to exploit this pher.omenon.
i1.pplication of .this switch to various microprocessor systems
then will illustrate adaptation of microprocessor systems
to the physically handicar·pe4. With this adaptation systems
can be tailored to individual needs. by the handicapped
individual himself. This self-tailoring process can provide
new vistas ~f recreation. education. communication and
enhanced independance.
Electro-physiology:
This ten dollar word describes the universal property
of all living things to generate very small but measurable
electrical currents. The popular areas of Bio-feedback
use several bio-electrical potentials or voltages to study
v4rious body functions· which then are. converted to some
auditory or visual signal with which our senses can deal.
These signals have origin in individual cells going through
the repetative process of concetrating salts from body fluids.
These salts am concentrated so that one salt will be in high
concentration inside the cell~ while another will remain
c?ncetrate~just outside the cell.
These concentrations
are maintaned by the cell membrane but can rapidly change
when certain environmental stimulae disturb the cell
membrane. When these finely balanced concentrations
change rapidly a small pulse of approximately 50 millivolts
is given off l".uch as the electrical current that flows
when the poles of a battery are shorted together.
Multiply this by several mil~ion cells discharging at once
and it becomes apparent where or how bio-electricity is
"generated".
Interfacing Bio-electricity to the Outside World~
Since the Qio-electric signals just discussed are of
such small voltage, thel must be amp·lified before they can
be modified or processed by any digital system. However
this amplification must take place with as little interference
to the biological system as possible. Therefore an
amplifier must have high input impedance. This is a resistive quality of the input terminals such that incoming
signals meet a very high resistance path into the amplifier.
Because of this high resistance pathway very little current
is drawn from the biological system into the amplifier
so the cells being observed function as usual. Next. the
amplifier needs the ability to reject low level signals
that arrive at both inpu+s at the same instant'i.e., are
in phase with eachother). This propertl is called high
common mode rejection ratio, or CI-:RR for short. The
predominant electrical noise that must be kept out of the
system is the 60Hz. noise from the electrical utilities,
hence the high CMRR, Next the inputs to the amplifier
·are connected to electrodes placed OYer the area to be
observed· in ~lectrical contact with the skin.

This contact· is enhanced by using a jelly or p~6te containig
a high salt concentration and securing the electrodes
firmly so movement signals will not be produced. A much
less complicated method is to use disposible EKG electrodes where available. They come prejelled with high
quality electrode metal(siLver!) and are self adhesive.
The amplified signal can now be monitored from the
output of the amplifier by an oncilloscope or a low
cant audio am!~lifier and permanent magneL speaker.
One soon learns the tell-tale hum or smooth sinewavefor~
of 60Hz noise being amplified through the system.
Bl the appropriate adjustment the 60Hz. noise can be
"tuned" out so only the irregular higher- frequency
biological signal ~ets through.
The monitor •• signal must now be smoothed so that
in effect a slowed waveform is presented to the next
stage of the bio-interface unit. This process is called
integration. Integration of the signal is accomplished
with a • wave rectifier or diode and a resitance/capacitance
network to store the signal for the time constant of
the reSistor-capacitor network. This in~egrated signal

has a slow enough transition to trigger a 7413 dual
nand Schmitt trigger, which then outputs a TTL pulse
for each threshhold crossing of the input signal.
The TTL trigger pulse is lea~ to a monos table
multivibrator wliich outpuh a pulse of predetermined
duration. During this period it cannot be retriggered·
so its' output pulse remains of constant length or time
duration.
Thus the signal is converted from the constantly
changing low level biological current to a .two state
binary si·gnal that is TTL compatable. Now we have a
signal that can be fed to the microprocessor. as our
next interconnection step. right?
h'RONG! The interface must be comple.tell isolated
electrIC"ill'y from the microprocessor and its' high
amperagp DC voltages. This is not sa difficult a .tasJt
to accomplish as one might suspect. A photo-optic
isolator of the LED/Photo transistor type is quite
effective in achieving the necessary e·lec.trica]
isolation. It ~s also suggested that in construction
of the interface,
micro-power circuits be used where
possible, to make it easy to use low voltage transistor
batteries to power the interface. If low ~ower or micropower IC's are not availab1e then larger butteries should
be used.. Under no circumstances use the OC voltages from the
Microprocessor bus.
~oper grounding of all cases to one single earth ground
will reduc~ noise problems that can arrise when several
different ground points are used.
Interface Applications :
Since this pap.er is to address the area of Microcomputor
systems for the Physically Handicapped. now is the time
to outline how this bio-interface could be used to program
a micro-system.
The signal output from the bio-interface is only a
single binary bit but several methods can be implemented
to expand this to a fulll codde~ eight bit binarl data
word or simply an external flag directly to the microprocessor.
Coding the single bit to an eight bit blte can be
done uRing a self scanning array of LEDs. Two four to
ten or sixteen decoders scan the horizontal and verticle
rows giving two four bit addrer·'s for the matrix position
of the lighted LED. These two addresses are latched
into the computor as a single eight bit word. This word
is then converted by software to represent either
alpha-numerics or actual machine operational codes.
A simple "bootstrap" loader could be contained in Read
Only Memory 'to give power on start capabilities.
Using the single bit line as a direct flag to the
micro-processor envolves writing the appropriate
software to test the flag and the execute an interogative
interaction with the operator to determine function
to be programmed. This may take longer to facilitate
initially but is bl far the more elegant solution to
this control probiem.
This second method has the added advantage of allowing
the operator to tailor his software to his individual
control or communication problems. This is the ultimate
goal for "nl aia to the handicapped, for i t gives them
indepence which to them is their greatest need.
BibleographY:
Belke, R.E. et ale
G.E. Transistor Manual (Li/i!:'ht Neight Edition)
General Electric Co •.• Syracuse , New York, 1969
Geddes. L.A. and Baker, L.E.
Principles of Applied Biomedical Instrumentation
John Wilel and Sons, Inc. , New York, N.Y. 1968
Millman. J. and Halkias, e.e.
Integra ted Elec tronics: .~nalo{iue and Digital Circuits
·and Systems
McGraw-Hill Book Co., New York, N.Y. 1972
Vander Kooi. M.K~ et a1
Linear Applications, Volume 1
National Semiconductor Corp •• Santa Clara, Ca. 1973
Author:
Laurence R. Upjohn· Ph,. . rm. D.
Stafr Pharmacist
U.C.Davis/Sacramento Me~Center
Graduated From Universitl of The Pacific College of Pharmacl
in Mal of 1976 with emphasis in Electro-phlsiologl and
Pharmacology. While there developed Electromyographic Switch
for the severly handicapped and a micro-computor system
for clinical drug analysis using Electro.-Myograms and

FIRST COMPUTER FAIRE PROCEEDINGS
Encephalgrams, as indicators of patient/drug effects.
Presently deyeloping Bio-electrical switch and microprocessor card for use by the severly handicapped.
May be contact'ed at;

7297 Stanwood ~Jay
Sacramento, California 95R31
Phone: 916-391-5336

.

BOX 1579, PALO ALTO CA 94302

PAGE 71

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

, PAGE 72

WHAT TO DO AFTER YOU HIT RETURN . .. AND NOTIDNGHAPPENS: WARRANTY IN THE
MICRO-COMPUTER INDUSTRY
Kenneth S. Widelitz, Attorney at Law, WA6PPZ
10406 Louisiana, No. 8
Los Angeles CA 90025

ABSTRACT OF FULL TEXT PAPER

as the quality of their product and its sales
price. As home computing catches on, the purThis paper will discuss consumers' rights ,and
chaser of a microcomputer will have less technical
manufacturers' and retailers' liabilities under the
expertise and will place a greater importance on
Uniform Commercial Code, the Song-Beverly Warranty
the warranty which accompanies the product he is
Act of California and the ~eder~lly enac~ed Magnuson
buying. Conceivably, the warranty can be as
Moss Warranty Act. Attent~o~ w1ll be pa~~ to the
important a factor in a purchase as the number of
effects of warranty on the m1croc~mputer ~ndus~ry and bytes of memory or the speed of an I/O device.
examples will be 'drawn from the m1crocomputer 1ndustry. The warranty takes on added significance when the
The paper will include a description of both express
hobbiest realizes he will probably be spending
and implied warranties.
more money on 'his microcomputer system than on any
other item of personal property which ~e owns with
Special emphasis will be placed on the presale
the exception of his car (and automobile manuavailability rule and on the repair facility requirefacturers spend substantial sums advertising their
ments. The paper will conclude with an analysis of
warranties.) The more money someone spends on an
formal dispute settlement mechanisms as a possible
item, the more careful he is about what he pursolution to the compatibility problem unique to the
chases. The consumer is also aware that there is
microcomputer industry.
generally a close correlation between the cost of
a product and ,the cost to repair it if it fails to
function properly.
Recently enacted legislation has made dramatic
inroads into the evils of the well known maxim of
The foregoing is intended to place the im"caveat emptor" and, more importantly, the lesser
portance of the warranty in perspective for the
known manufacturers' warranty maxim of "what the
manufacturer, retailer and consumer of microbold print giveth, the fine print taketh away."
computers. The following discussion of warranty
Unfortunately, consumers, manufacturers and retailers are generally unaware of their rights and
legislation applies to all consumer goods, but an
liabilities under this legislation. This is
attempt has been made to use examples of warranty
problems unique to the microcomputer industry,.
especially true in the home and personal computing
field due to the recent emergence of the microcomputer industry.
WARRANTY LEGISLATION
For instance, manufacturers are unaware that
they are in violation of federal legi,slation if
they fail to clearly designate their written
warranties as either "full" or "limited". Retailers and manufacturers are not cognizant of the
fact that they are in violation of federal legislation if they fail to conform to the presale
availability rule which requires that every
written warranty be readily available to the consumer prior to sale in a specified manner. Consumers are unaware that if a manufacturer or retailer
breaches the terms of his express warranty, a
California Statute allows the consumer to recover treble damages plus costs and attorney's
fees. - - The preparation of written warranties by microcomputer manufacturers has been given short shrift.
The manufacturer should give his warranty the same
careful deliberation and consideration that he
'
gives to the development of his product. A carefully considered warranty can do much to promote
brand loyalty and accurately cost out warranty
liability. If a manufacturer costs out his
potential liability based upon ass'wiiptions which
are not viable due to the requirements of recent
legislation, it might mean the difference between
a profitable or loss year.
AS an example of possible liabilities unknown
to the manufacturer, manufacturers are now required to reimburse retailers who perform the
m~nufacturer's warranty repair work in an amount
which includes a reasonable profit to the retailers.
Another example is in the area of implied warranties. Implied warranties can no longer 'be
disclaimed where accompanied by written warranties.
This can be a critical warranty cost factor when
considering that a manufacturer's liability under
an implied warranty can be, greater than his
liability under a written warranty.
As consumers become more aware of the presale
availability rule relative to warranties, manufacturers and retailers will have to recognize
that their warranty will have to be as competitive

There are three major pieces of legislation
which govern warranties as they relate to consumer
goods sold in California. The oldest is the Uniform Commercial Code of California (U.C.C.) which
has been in effect since 1965. Almost every state
has its own version of the U.C.C., but, as its name
implies, they are all substantially similar. In
1971 California adopted the Song-Beverly Consumer
Warranty Act (SBCWA). The SBCWA was the first consumer warranty protection oriented piece of legislation in the country. The federallY enacted
Magnuson Moss Warranty Act (MMWA) is based, in
part, on the SBCWA. It has been in effect since
1975, although rules promulgated pursuant to that
Act by the Federal Trade Commission have been
effective as recently as January 1, 1977.
TYPES OF WARRANTIES
There are two broad species of warranties,
the implied warranty and the express warranty.
A warranty is implied when it arises by
operation Of law from the nature of a particular
transaction, that is, it's automatic and requires
no writing to arise. There are two kinds of implied
warranties, the implied warranty of merchantability
and the implied warranty of fitness for a particular purpose. In general, the implied warranty of
merchantability'means that a consumer good must
be free from defects in materials or workmanship.
An implied warranty of fitness arises when the
retailer, distributor, or manufacturer has reason
to know any particular purpose for which the
consumer goods are required and that the buyer is
relying on the skill and judgment of the seller
to select and furnish suitable goods. For example,
if a manufacturer of a floppy disc advertises
that it is Saltair/Bonzai compatible, there exists
an implied warranty of fitness that the floppy can
be effectively used with such microcomputers.
Implied warranties are created by Provisions
in the U.C.C. and in the SBCWA. While the MMWA
does not create any implied warranties, it does,
legislate the extent to which they can be limited.

FIRST COMPUTER FAIRE PROCEEDINGS

The other type of warranty is the express
warranty. The express warranty is usually a
written warranty. For the purposes of the MMWA
the express warranty must be created in writing.
However. under the U.C.C. the express warranty may
be created by an oral affirmation of fact, i.e.,
where the retailer makes an oral statement as to
the capabilities of a certain product. It should
be noted that "puffing" does not create an express
warranty. That is, the retailer who says, "I
guaranty your satisfaction, "or that a particular
product "is the best buy on the market" does not
create an express warranty. Where a sample or
model is displayed, the U.C.C. and the SBCWA create
an express warranty that the whole of the goods
conforms to such sample or model. This has a
significance for the manufacturer who buys large
quantities of parts from a supplier based on a
sample or model, but will ordinarily not have
significance for the consumer.

BOX 1579. PALO ALTO CA 94302

PAGE 73

ranty is coextensive with that of any express
warranty which accompanies the consumer goods.
However, in no event shall the implied warranties be
for a period of less than two months or for a
period of more than one year. If no written warranty
is provided, the duration of .the implied warranty is
one year.
The remedies available to the consumer under
the SBCWA and the U.C.C. for the breach of an
implied warranty are identical with the single
exception that the SBCWA specifically provides
that if a cQnsumer sues based upon the breach of
an implied warranty, the consumer may reco~er his
attorney's fe,es.

The damages which a buyer may recover are
incidental damages and consequential damages.
Incidental damages should include the costs of
repairing nonconforming goods and other items such
as the transportation of those goods to and·from the
IMPLIED WARRANTIES
place where they are repaired. Consequential
damages include such damage, loss or injury as does
The U.C.C. and SBCWA provisions relating to
not flow directly and immediately from the act of
implied warranties parallel each other to a
the breaching party, but only from some 'of the
certain extent, but the SBCWA provides some important consequences or results of such act.
changes.
For ins·tance, take the case of an amateur radio
The U.C.C. version of the implied warranty
operator who spends 20 hours inputting data relating
of merchantability requires, for such an implied
to all the contacts he made in 1976. Because of a
warranty to arise, that the seller must be a
defect in the cassette recorder he is using as a
mercharit as to those goods. Such a warranty under
memory device, none of the data is preserved. His
the U.C.C. is a seller's (retailer's) warranty.
consequential damages would be equal to the amount
The SBCWA has given renewed vitality to the implied
he would have.to spend in order to hire a typist to
warranty, of merchantability in two ways:
one, it
reinput the data. As another example, consider a
imposes a liability under the warranty directly on
lemonade stand application that cannot service its
the manufacturer; and two, it makes it both
clients While a defect in the CPU is being fixed.
difficult and commercially unwise for the manuThe consequential damages would equal the lost
facturer to disclaim such a warranty.
profits during the period of repair •

.'i'he implied warranty of fitness under the
U.C.C. is also a seller's warranty whereas under
the SBCWA such a warranty is made by both the
manufacturer and the retailer. As stated before,
the implied warranty of fitness requires that the
manufacturer or retailer have a reason to know
that the purchase is being made for a particular
purpose and that the buyer is relying on. the expertise
of the seller or manufacturer to furnish the right
product for that purpose.
However, the manufacturer and retailer
do not actually have to be told that the buyer is
relying on thefr skill and judgment. The manufacturer who advertises a particular use for his
product should be liable under the implied warranty
of fitness for a particular purpose even if the
advertised purpose is not an ordinary use.
DISCLAIMER OF IMPLIED WARRANTIES
Before the enactment of the SBCWA and the MMWA,
the implied warranties created by the U.C.C. were
relatively easy to disclaim. The implied warranty
of merchantability could be disclaimed by the use of
a conspicious written disclaimer that mentioned the
word "merchantability." The implied warranty of
fitness could be disclaimed by a writing declaring
that "there are no warranties which extend beyond
the desciption of the face hereof."
As a result of the enactment of the SBCWA and
the MMWA, the disclaimers just mentioned are ineffective. Under present law. the only way the
implied warranties can be disclaimed is by making a
sale on an "as is" basis. A conspicious writing
indicating an "as is" sale attached to the goods
sold is required. Any other attempted waiver of any
implied warranty is void.
DURATION OF AND REMEDIES UNDER
IMPLIED WARRANTIES
While the U.C.C. does not make mention of the
duration of implied warranties, the SBCWA specifically states that the duration of an implied war-

As a final example, let's take a letter which
appeared in the November/December, 1976 issue of Dr.
Dobb's Journal, page 4. Stuart R. Fallgatler wrote
that he received an AY5-8500 6 game MOS/LSI chip
from Advanced Micro-Electronics.
The chip didn't
work properly. Mr. Fallgatler wrote the company and
received no reply. Dr. Dobb's Journal also wrote the
company and received no reply. The implied warranty
of merchantability requires that the chip be free
from defects. Having received no satisfaction Mr.
Fallgatler should bring a Small Claims Court action
against Advanced Micro-Electronics. Small Claims
Courts handle suits for claims·less than $750. The
filing fee varies by county bu~ is usually $10 to
$15. The chip in question here lists for $50, a
significant sum.
While filing a suit might be
time consuming and inconvenient, Mr. Fallgatler
would certainly be less inconvenienced than the
company. He should obtain a judgment allowing him
a replacement chip and his court costs. He would.
also be allowed incidental damages and consequential
damages, if any. More importantly, such an action
would be a great service to other persorBsimilarly
situation as Advanced Micro-Electronics might be
more responsive to future complaints, having been
taken to court once.
EXPRESS WARRANTIES
The provisions of the U.C.C., SBCWA andMMWA
over lap considerably i.n the area of express warranties.
This paper will highlight the unique am salient features
of each but where there is an overlap there will be
no attempt to distinguish between them. It should
be noted at this point that although both the SBCWA
and MMWA define "consumer good" ·or "consumer product"
as an item which is normally bought primarily
for personal, family or household purposes, the
House Report 'on the MMWA indicates that products
which are in fact used for business purposes fall
within such definition if such items would generally
be used for personal,family or household purposes.
Thus it would seem that lemonade stand and even
office uses of microcomputers would be covered by
the MMWA becaus'e microcomputers are generally used
for'hobby or home purposes.

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALToeA 94302"

MMWA "FULL" OR "LIMITED" DESIGI\IATION REQUIREMENT
A very important feature of the MMWA is its ,';
requirement that every written warranty accompanying
a product selling for $15.00 or more be clearly
designated either "full" or "limited". If a warranty
merely says "WARRANTY" at the top, it fails to meet
these federal standards. Rather, the warranty must
be designated. for example, "FULL 90-DAY WARRANTY." A
warranty is designated full when it meets the
federal minimum standards for warranty set forth in
the MMWA.
••
The requirements necessary in order to obtain
a "full" designation are as follows:
1. The warrantor must remedy the defective
con'sumer product within a reasonable time and
'without charge. The term "remedy," as defined by
the act, means either repE'ir, replacement or refund.
If the product is a "lemon", that is, it cannot be
repaired after a number of attempts, the warrantor
must permit the consumer to elect either a refund or
replacement without charge. If the warrantor replaces
a co~ponent part of a consumer product, such replacement must include installing the part in the product
without charge. It should be noted that the MMWA
only requires that the remedy be given within a
reasonable time. The SBCWA, while not making
provisions for designating a warranty as either
"full" or "limited", requires that goods be repaired
within 30 days;

PAGE 74__

If a warrantor fails to designate the warranty
as either "full" or "limited" or fails to disclose
required information, the warrantor is !\\lbje,ct to a
lawsuit brought by the Attorney General or a Federal
Trade Commission attorney. A civil penalty of up to
$10,000 per violation may. be assessed,.
(

,

As of this writing, conversations with FTC
attorneys indicate that, as yet, no actions have
been brought to enforce disclosure requirements.
The explanation is that since the rule has been in
effect for such a short period of time, the FTC is
allowing additional time for warrantors to comply.
However, actions will be brought as soon as the FTC
headquarters in Washington decides that enough time
has been allowed.
PRESALE AVAILABILITY RULE
Effective for products manufactured after
January 1, 1977, the presa1e availability rule will
have a vast impact on consumer awareness of warranties and on the manufacturers', distributors'
and retailers' costs. The rule requires that the
seller of a consumer product costing more than
$15.00 make the written warranty accompanying such
product available for the prospective buyer's review, prior to sale, by the use of one of four
methods.

One method provides for the text of the
written warranty to be displayed in close conjunction to each warranteed product. Another method
2. The written warranty may not impose any
allows the retailer to maintain a binder (looseleaf
limitation on the duration of an implied warranty;
notebook) which contains copies of the warranties
for the products sold. The binder must be maintained
3. 'The warra~tor may not exclude or limit
at a location which provides the prospective buyer
consequential damages for the breach of any written
with ready access. Such binder must be indexed
or implied warranty', unless such exclusion or limita· according to product or warrantor and must be
tion conspiciously appears on the face of the
kept up to date when new warranteed products or
warranty.
models or new warranties for existing products are
introduced into the store. Under this method the
4. The warrantor may not impose any duty upon
retailer must display such a binder in a manner
the consumer other than that of notifying the warreasonably calculated to elicit the prospective
rantor as a condition of secu.ring a remedy "unless
buyer's attention, or place signs indicating the
the warrantor has demonstrated that such a duty is
availability of the binders in prominent locations
reasonable." Such a reasonable condition might be
in the store. A third available method is disthe filing of a warranty registration card, if such
playing the package of any product on which the text
requirement appears on the face of the warranty.
of the written warranty appears. The last available
method is similar to the first and allows the
5.
The warranty must extend to each person
retailer to post a notice that contains the text of
who is a consumer under the MMWA. The MMWA defines
the written warranty within the vicinity of the
consumer as a buyer or any person to whom the product product sold. This differs from the first in that it
is transferred during the duration of an implied
provides some convenience to the retailer where a
or written warranty. Thus, the manufacturer giving
number of products covered by the same warranty are
a "full" warranty cannot deny liability to virtually
being sold in close proximity to each other. It
anyone who obtains possession of a product during
allows one notice rather than the full text being
the term of the warranty. The SBCWA limits its
displayed next to each product.
scope to only the retail buyer of a consumer good.
The effect of the presa1e availability rule
.Thus, a warranty which requires that the
will be dramatic. The rule will allow the consumer
consumer pay for transporting the product to a
to compare warranties much more readily than has
repair fac:llity must be a "limited" warranty, as the
been possible in the past. For that reason the
remedy is not provided without charge.
warranty will become a much more important factor in
the consumer's purchasing decision. That should
Whether 'a warranty is full or limited, the
provide incentive for the manufacturer to give
MMWA requires that on its face it disclose a great
greater consideration to his warranty.
deal of information. The warranty must set forth
the identity and address of the warrantor and the
The presa1e availability ru1e'wi11 have other
identity of .the parties to whom the warranty is
effects on the manufacturer and retailer~ Most
ex,tended. It must state, a clear description of the
obviously, someone is going to have to pay for the
parts, or characteristics, or components covered by
printing of the full text of the warranties to be
the warranty and where necessary for clarification,
displayed. There will also be expenses involved in
which are excluded from the warranty. The warra~ty
preparing binders or in making the warranties
must also state what the warrantor will do in the
readily available. The retailer will incur conevent of a defect, for what period of time and at
siderable expenses to 'satisfactorily prepare, index
whose expense.
It must also inClude a step by step
and maintain binders, if that is the method the
expIanation of the procedure which the consumer
retailer decides to use.
should follow in order to obtain performance of any
warranty obligation. The warrantor must further
The manufacturer and retailer will have to work
provide, a general description of the legal remedies
together in order to decide the most efficient
available to the consumer, and any limitations on
method of the available four. Obviously the
incidental'or consequential damages.
The warranty
physical piece of paper:containing the text of a
must also state if .there is an informal dispute
warranty to go in a binder will differ significantly
settlement procedure (described subsequently)
from the type of paper used i f it iS'intended to be
available.
'
displayed in. close conjunction with the product.
The manufacturer will also want to consider printing

FIRST COMPUTER FAIRE PROCEEDINGS

the text of the warranty on the box if it is the
type of product which can conveniently be displayed
with its box'. Perhaps in the long run such costs
will be passed'on to the consumer. Nevertheless, it
is submitted that the benefit to the consumer in
being able to shop warranties more than makes up for
the added printing costs.
The presale availability rule is applicable to
catalog and mail order sales. The rule requires a
seller to disclose for each warranteed product the
full text of the warranty or an explanation of where
it 'can be obtained free of charge.
The FTC has, as yet, not brought any actions
against retailers for failing to comply,with the
provisions of the presale availability rule. The
reason stated is that it is difficult to determine
if a product has been manufactured after January 1,
1977.

SBCWA REPAIR FACILITY REQUIREMENTS
One area not broached by the MMWA and fully
treated by the SBCWA is the subject of maintenance
of service and repair facilities. The SBCWA mandate's that if there is an express warranty accompanying goods sold in California, the manufacturer of
such goods must maintain, in California, "sufficient
service' and repair facilities reasonably close to
all areas where its consumer goods are sold" to
carry out the term of their warranties. Manufacturers may comply with this requirement by
entering'into warranty service contracts not
exceeding one year with independent service and
repair facilities. Providing facilities in Los
Angeles and San Francisco will probably satisfy the
"reasonably close" requirement.
If a manufacturer maintains service and repair
facilities within California, goods subject to an
express warranty must be serviced or repaired
within 30 days. The buyer may extend this period by
agreeing in writing or the period may be extended by
conditions beyond the control of the manufacturer.
Should the manufacturer of its representative be
unable to repair or replace the goods, the buyer
will be reimbursed in an amount equal to the purchase
price paid less an amount directly attributable to
use by the buyer prior to the discovery of the
defect.
'
If the manufacturer does not maintain repair
facilities in California and has not authorized a
representative to do so, the buyer may return defective goods to either the retailer from whom he
bought the goods or to any other retail seller of
like goods of the same manufacturer. The retailer
to whom the goods are returned may replace or
repair at the retailer's option.
If the retailer opts to repair, he is also
subject to the 30-day requirement. If he can't
replace or repair he must reimburse the buyer.
If a manufacturer does not maintain repair
facilities in California the SBCWA makes such
manufacturer liable to the retailer who incurs
obligations in giving effect to the express
warranty of the manufacturer. The manufacturer
is liab,le as follows:
1.
In the event of replacement, the
manufacturer is liable in an amount equal to
the cost of replacement plus transportation and
handling charges;
,
2.
If the retailer reimburses the buyer,
the manufacturer is liable to the retailer for
the amount of the reimbursement plus handling
charges.
If,: ,the consumer has
warranty repairs and has
services, or if there is
who sells like goods for

gone to a retai ler for
not obtained satisfactory
no retailer in California
the same manufacturer

BOX 1579, PALO ALTO CA 94302

PAGE 75

(i.e., if the manufacturer sells exclusively through
mail order) the consumer may secure the services of
an independent service or repair facility. If the
consumer pursues this option, he is not responsible
for the costs of repairs. The independent repair
facility shall only hold the'manufacturer liable for
such costs. Those costs encompass the actual costs
of repair including costs for parts, transportation
of the goods or parts, plus a reasonable profit.
A few comments about the independent repair
provisions are in order: Those provisions are only
applicable where the wholesale price to the retailer
is $50. How does the consumer know this? The SBCWA
provides that the warranty must state that the
independent repair option is available on all
express warranties accompanying products with a
wholesale price to the retailer of $50 or more.
What about in the mail order situation?
Actually, the independent repair provisions do not
expressly provide coverage in mail order situations.
However, the SBCWA repair facility section is
applicable to "Every manufacturer of consumer
goods sold in this state and for which the manufacturer has made an express warranty .••• "
Manufacturer is broadly defined by the SBCWA as
" ••• any individual, partnership, corporation,
association, or other legal relationship which
manufactures, assembles or produces consumer goods."
The question becomes "is a mail order sale a
sale in this state."
A recent amendment to the Unruh Act (dealing
with consumer credit) provides that: " ••• a ••• contract •.• shall be deemed to have been made in this
state •.• if either the seller offers or agrees in
this state to sell to a buyer who is a resident, of
this state or if such buyer accepts or makes the
offer in this state to buy, regardless of the situs
of ,the contract as specified therein."
Although that section is applicable only to the
Unruh Act as promulgated, the legislative intent as
to mail order purchases is clear. It is the
author's opinion that manufacturers who sell by mail
order to California residents are subject to the
independent repair facility provisions.
Those provisions cannot be waived by any
manufacturer. Any attempted waiver is void.
By imposing liability on the manufacturer
for all warranty repairs the SBCWA enhances the
probability of consumer satisfaction. This is
because the retailers, manufacturer's representatives and independent repair facilities, knowing
that the manufacturer will be liable to them and
that they will be paid a going rate for making
the repairs, will not hesitate to accept warranty
work. Further, manufacturers should be less
likely to delay reimbursement to retailers (their
main source of revenue) than they would 'be to
satisfy isolated claims of the consumers themselves. This is especially true in light of
provisions for treble damages plus costs and
attorney's fees should the manufacturer willfully
violate the reimbursement requirements.
One more unique provision in the SBCWA is
a tolling provision. Where any item costs the
consumer $50 or more, the warranty period is
tolled (extended) from the date the consumer
delivers the goods for warranty repair until
the goods are returned to the consumer.
The SBCWA also contains disclosure requirements. An important addition to the MMWA requirements is that the consumer must be provided with
the name and address of each repair facility in
the state or be provided with
toll free
number which will provide repair facility addresses
for manufacturers who elect to ma,intain such
facilities. The retailer must also provide a
list of authorized repair facilities.

a

FIRST COMPUTER FAIRE PROCEEDINGS'

CONSUMERS' REMEDIES FOR EXPRESS WARRANTIES
The U.C.C. provides the same remedies for
warranties whether they are implied or express.
The SBCWA also provides identical remedies but
allows treble damages in instances where it is
an express warranty that is breached. The MMWA
does not broaden the scope of remedies available
under the U.C.C. and the SBCWA. It does specifically provide that an action under the MMWA
can be brought in·State court or in an appropriate District Court of the United States.
However, the jurisdictional requirements to
bring an action in District Court are almost
prohibitive. That requirement is that the amount in
controversy must be at least $50,000. If the action
is brought as a class action, the named plaintiffs
must number at least 100 and the amount of any individual claim must be at least $25.00.
Perhaps the remedies available to the consumer
seem slight when viewed in the light of the magnitude of the requirements placed on manufacturers and
retailers. However, the most important result of
the warranty legislation is that the consUmer be
aware of his warranty rights and that he be able to
enforce them. The SBCWA's repair facility provisions are perhaps the act's most important
provisions,as it places the onus on the manufacturer to establish repair facilities or to be liable
to retailers or independents who provide repair
facilities for warranty repairs. Presumably,
this will be enforced by the repairer after the
consumer has been satisfied. Nevertheless, in order
to be effective at all, consumers must be aware of
their rights and must take advantage of them.
MAIL ORDERS
An oft heard complaint by consumers in ~ealing
with mail order houses is that, "I ordered a product
and sent my money in months ago and the mail order
house just kept it and didn't send me what I ordered." A new provision of the California Business. &
Professions Code requires that any business conducting a mail order or catalog business in California must, within 6 weeks, either (1) deliver the
goodS ordered; (2) make a full refund; (3) send the
consumer a letter advising him of the duration'of
delay and offering to send him a refund within one
week, or (4) send the consumer substituted goods of
equivalent or superior quality.
A violation
order or catalog
may be recovered
A~torney General

of this section subjects the mail
business to a fine of $2,500 which
in an action brought by the
of the State.

Therefore, if you have had experience with a
mail order ,or catalog house which violates this
provision, call the local Consumer Affairs Bureau or
the Attorney General and notify them of the details
of your experience.
INFORMAL OISPUTE SETTLEMENT MECHANISM
Congress, in enacting the MMWA, has explicitly
dec~ared its purpose to encourage warrantors to
establish procedures for settling consumer disputes,
fairly and expeditiously through informal dispute
settlement mechanisms (IDSM). The MMWA does not
require the establishment of an IOSM but only states
that any mechanism incorporated into the terms of a
written warranty must meet the MMWA's standards.
For.the microcomputer industry, the early establishment of an industry wide informal dispute
settlement mechanism could very well be the solution
to one of the great problems facing the industry.
'That problem grows out of the situation where a
manufacturer.of a peripheral device claims that it
is compatible with "all SlOO buses" or "all 8080
1'\Iicroprocessors."
A perfect example of a real-life compatibility problem is set out in another letter
appearing on paqe 14 of the November/December

PAGE 76

1976 issue of Or. Oobb's Journal. There Glenn
Tenney describes a programing problem resulting
from IMSAI's;use of a NEC 8080A chip instead
of an Intel chip. He states that NEClreported,
in a confidential letter to IMSAI, some "minor"
differences between their chip and Intel',s.
Being a Senior Designer for Compro, Mr.'Tenney
stated that he was more disturbed by not being
informed of the differences than the incompatibility itself.
Being. an "appliance operator" the author
is more concerned about the incompatibility.
IMSAI responded to Mr. Tenney's letter with
information summarizing the differences between
the chip. Well, that's satisfactory for someone
who can understand the difference described,
but as microcomputers become as common as TV
sets and are purchased by people who can use
them, but don't know how they work, the
"solution" adopted in this instance is definitely unsatisfactory.
How can the establishment of an IOSM help solve
this technological morass?
In order ~o see how it
is necessary to have a better understanding of what
the IDSM "mechanism" actually is. The MMWA provides
no definition. The 10SM rule only governs the
minimum requirements of the mechanism with respect
to its organization, operation, record keeping and
qualifications of members. The minimum requirements
are broad enough to encompass 'a wide range of
descriptions.
in general, the proper model would be the
labor dispute analogy. Almost all collective
bargaining contracts include a grievance procedure
with "in house" settlement steps leading to a
terminal step where a decision is made by a neutral
arbitrator (a mechanism). In this analogy the
consumer can be thought of as an aggrieved worker
and a warrantor can be thought of as management. In
the microcomputer industry the neutral arbitrator or
mechanism could be an association consisting of
members who are microcomputer users, manufacturers,
retailers, distributors, microcomputer magazine
publishers, etc. Because the validity of some
"grievances" in this industry would necessarily
require the use of highly sophisticated and
expensive testing equipment, the "offices" of the
mechanism could run the gamut from the basement
workbench of an experimenter, to the repair shop of
a retail outlet, to the facilities of a storefront
operation designed to exclusively act as an office
for a microcomputer industry-wide informal dispute
settlement mechanism.
While the MMWA does not require a warrantor to
establish an IDSM, if a warrantor does establish an
IOSM, the consumer must resort to the IOSM procedure
before filing a lawsuit under which he would obtain
the benefits provided by the MMWA. That is to say,
even if an IDSM is established, the consumer may
still sue and obtain remedies based upon the U.C.C.
and the SBCWA. Further, a consumer may attempt to
resolve the dispute with the warrantor prior to
going to the 10SM procedures. If a consumer does
resort to an IDSM, it is important to note that
neither the consumer nor the warrantor is bound by
the decision of the IDSM. However, if either
decide not to be bound by the decision of the 10SM,
the IDSM decision can be admitted into
evidence should a legal action be brought.
Given that the warrantor is not required to
develop an IOSM, that the consumer. need not resort
to the 10SM and that neither the consumer nor the
warrantor is bound by a decision of the IDSM, what
are the benefits of the establishment of such a
mechanism? As previously indicated, in the microcomputer industry the nature of warranty disputes
(i.e., the compatibility problem) are such that very
few individual consumers have the necessary knowledge
and test equipment to prove that a given peripheral
is not "SlOO compatible." Many manufacturers of
peripherals cannot afford to test their per.ipheral
with every SlOO device. An industry-wide IDSM would

FIRST COMPUTER FAIRE PROCEEDINGS

provide for the warrantor a cost effective procedure
for dispute settlement. Additionally, it is
conceivable that in the dispute settling process, an
expert technical consultant could solve the noncompatability problem, thus saving the warrantor
thousands of dollars in research and development
expenses. A potential consumer with limited
technical expertise would feel more comfortable
purchasing an expensive home computer if he knew
that there was a mechanism to which he could resort
if a manufacturer's claim of compatibility proved
incorrect.
REQUIREMENTS FOR AN IDSM
If an IDSM is used, the warrantor must disclose
that such a mechanism is available on the face of
the written warranty. The warranty must disclose
the name and address of the mechanism or a telephone
number of the mechanism which consumers may use
without charge. Further, the warranty must disclose
the legal ramifications of resorting to the mechanism, as already discussed. The warrantor must also
provide a description of the mechanism procedures,
the time limits adhered to by the mechanism and the
type of information which the mechanism may require
for prompt resolution of warranty disputes.
The MMWA provides that the mechanism shall be
funded and competently staffed at the expense of the
warrantor.
It further provides that no member of an
IDSM deciding a dispute can be a party to the
dispute or an agent or employee of a party to the
dispute. There is a specific provision for the use
of a technical consultant who works in the industry,
so long as such consultant or consultants make up no
more than one-third of the members who will be
deciding a given dispute.
Once a dispute is brought into the IDSM
mechanism, a decision must be rendered wi thin forty
days. The mechanism must then disclose to the
warrantor its decision and the reasons therefor.
If
a decision would requir~ action on the part of the
warrantor, the warrantor must inform the mechanism
whether, and to what extent, the warrantor will
abide by its decision.
The mechanism must then
disclose to the consumer its decision and the
warrantor's intended action. The mechanism must then
ascertain from the consumer within ten working days
whether performance by the warrantor has occurred.
There are also extensive record keeping requirements.
In light of the highly technical nature of many
of the problems which face microcomputer manufacturers, retailers and consumers,the establishment
of an industry-wide IDSM at this early stage
of the industry's development is a factor that might
lead to an earlier broad-based consumer acceptance
and use of microcomputers than anticipated.
If a
toaster doesn't toast, the consumer knows it and the
warrantor knows that it is his responsibility. If
an "S080 compatible" peripheral doesn't work, the
consumer doesn't know if its due to a defect in the
peripheral. The problem evolves into a pointing the
finger at the other guy game.
The bottom line in
such a situation can only be bad news for the microcomputer industry as a whole.
The purpose of the above description is to
suggest a possible solution to a major problem
facing the microcomputer industry.
It is intended
as food for thought.
Nevertheless, the establishment of an industry-wide IDSM would alleviate the
finger pointing and would establish a state of the
art dispute settlement mechanism in a state of the
art industry.

BOX 1579, PALO ALTO CA 94302

PAGE 77

theory of knowledge processing

'Tl

:%I

How do we go about designing a brain-like computer? Do we invent a fancy new device called a neuristor? Do We cook up a chemicsl brew which spontaneously organizes itself? Or shall we depend forever on that old fashioned biological method?

~=
C:::tr1

~~

Nol The answer will not be found in exotic new devices but in the re-e~luation
of our computing methods. All presently known computers may be roughly classified
as methodical, analytical, or empirical computers. Fig. I shows a comparison of
the three computing methods.
Most present-dsy electronic computers are methodical or stored program computers.
A set of input dats ia manipulated by a stored program to yield a set of output
data. The stored program presents a method which specifi*s what steps must be
taken to convert the input data into some desirable output. Some engineers believe
this to be the only way to fly.
Let us consider how a creature with a methodical brain would behave in nature.
This creature would be born with a completely pre-programmed, pre-wired brain without
the ability to learn or accumulate new knowledge. It would react to a certain situation in a predictable way precisely every time. A slight defect would kill the
creature since it would have nobody to repair Its program.
This is obviously not the way our brain works. The question is why have we been
building such overstuffed adding machines? Well, they are simple and they are so
different from ourselves. They do things easily which are difficult for us. They
are great for science and bureaucracy with their rigid equations and rule books but
they will never yield a brain similar to ours.

~("')

tr10

~
til

....
........
"',.. ..
.. "."
" .."
.. "
..=. .. '"
,.gSlSl

g",,,,

'"
""."C

.... :r ..

... ...

'<

0

"'''to

. . . . It

...
g ... ,..

-< ..

o

en ...

='

",.. .......
.... :r
0)

..,..'" ." ....

0"0 ...

.. to

.. It."

,..."

..........
:r ......

A second type, the. analytical computer, Is used by Nature and Man. The old analog
computer used this method. An input pattern is examined to yield an output response
directly dependent on the input pattern. In analog computers, a set of input variables is combined by a pre-wired network of operationsl amplifiers to yield an output
function. The result is obtained, not by a stored program, but by a pre-wired
weighted network. Mother Nature uses this method for all its primitive creatures
and most of the peripheral processing in our brain is organized this way. A fly,
for example, reacts to movement in its direction detected by its eyes by activating
its leg8 and wings for flight.
This type of computer is useful for primitive reflex responses which can be prewired ahead of need. The network is not very flexible and depends on outside wiring
either by man or in nature by the forces of evolution. The assembly of analytical
infinite dimensional networks will be explained later in the text.
Enter the empirical computer. This computer contains no stored program but learns
its behavior pattern by interaction with its environment. A certain input situation is analyzed and a response is formulated according to pre-learned knowledge.
This knowledge is not programmed but obtained from experience, abstract learning,
or duplicating the successful behavior of other people. An empirical computer
would be very flexible. It may have several responses for each situation. It
would constantly update its knowledge and behavior repertoire according to its
changing environment but always remember past experiences.

An empirical computer is now possible but before we can build it we have to aaalyze
exactly what knowledge consists of and how it may be stored. "Knowledge" unlike
mere '~ta" cannot be stored in 8 filing rack type array. It requires a selfassembling tree-like array at which all knowledge is related to other knowledge.
The following five principles will define knowledge processing. They are valid both
for the new computer and to the human brain. They may be hard to understand all
at once but will become more obvious in the later text. They may provide a more
profound understanding of ourselves and natural philosophy~ They may even sprout
a new freak like religious group in Southern California.

g;:g-~st

-6~~&;;

" ..

... :r

to

~fIl~

"' n..

" ..
..
0 ,0.

...
o

....

" :r ..

0' 11

Go

""'''
on ..
... ,<

n ..

.....
.....
.. .....
"' ......

~:;c:

til
n" C
....

:

.... 0""

."

" :r

0
"0 ... to
0

....

..

""

"0 ..

.....

.. .. 0

..
.."'.

"0",

::s

0 n'" 01
0'" CD t1

Q tot
CD ....

"

OOnDl:;ll;"_

•

CD
In

::s

:s ()
0

.....

..........0:"
.. ,.
n ......
n ..
:s c "' 1!:
QQ:sQ.
...

00 .....

'10"t:l"O

'<::1I1t1
"0.

..

o
OQ

0"
no>

....
en :s

.. ...
.....

"1nUltT

:r ... ao:s

'" l:

0)

';: :::.. ="' .. ;;--6

IUC,.,. ....

..

f"tOQ

a

(t

"0:

OI:S HI

n ..

....f't' ....

.....

n
0

::s n :s a

ooDaca"O
C .... tT C

:.~:!
It "C ... :s

........
... .....
"0 "" . .

m(')O)::r

:s

:s ..

III
CD IT Q. 0

..........
(100)'<
,. 0
•
"'1Il . .

o
:s

:r

.. ...

C It H
00,.,.

... 0

..

.

I» Ht'< C
OC
...

o :

0. ..... 0

6~

~

ft>o8-8~
0.::1- .....
"0
nCl,.,.
"t:I

0

.....
:r
t1
Q)

)( 0

I» ,;

.. n-t1::S::r
::s ;ro.Q.Q)
rt .... f!
rt

:::fII~~,<
:J(D"t:IO
r.n II
CD C

!!,.f!5.;g
~n

.:.
,tot

......... _

~ ....
!f~

0 (1)
It .........

:i ~
...0 "CT
I'D

00.0- .....

C""

fI.I (JQ

C'<" .... tb

.....

0." ...
'1 0 0

::s

..

rtCrtnt1

;t'n1'1001

o'<">:r
a .... tD
"afli"""'fn
c ......

CD Q. 11
~

...

......

00 :I ....

::i:i
en
::s
...

.... n

~ ~ ii ~~

........

ncn""
SitTCDD.

-e...

CD"":s
n
::s<
..... OO
a.o (t 1'10

.....

"' ...
....
o

" •

n

'< ...

.....

rto."Of!n
..
...
0
11 "' ....

:ra

!J'9c::"O

.... CI .... :;JC

:s

ng.n

....

........ '111
.. 0 < .....

'" ...
......
fD-c:ro.u.
t.:-co

'<

- r t ....

::s

OQ
.... ftt
(tIDCm ....

(b:s

tot"
totrttDQ)::J'
fI.I

....
It
C CD tot
It .... 0
rt .....
a.:::r"
-,",,0.
011
fa (D J1
fI .....
0 0.

III

..I'.ft

a • <

. :

~

i ,.,.

"o . ....
.....

.....

0

"C

0
..
0'"
0-,1", ..
t1::rCDI1

o
o0"
,.

CD ...

fA

"',.

..

0

'"

~

~

is ?;

'< ..

" .......
III

..

....

t:C

It
" ..
......
n

"' ...
..... 0

~

"'

00"
...
n...

"0"0

a~ g

~

~~
-6
", ... ",

-.... ...

gn"
a .. ..
:s •

..

tTl

0:

~

;:T

00-,1'"

" :r
... n:r

~

CD CD

c:
n
'On ....

.. !l

0

~.ij ~

..."'
..... '<....

~!:!2!i

o ';; ~
........
,.c"
n .,

~. ~;:
nOl

III ..

0"

"
-

III

...

In

....
..

Q.·rt

..... :r

......... ..:s
"to",g
.. C

..........
........
§ :r"
",..0-

0'"

nc ...

:!i§

oo " n...

... n ...

o :r
OQ t-Il>
•

0

::a:

.... CD

"' ...
5."

...0

6~
c

..

~~5

~~[
l>

~
;;;

i
p

:z
o

~

(')

o

3:

,~

-I
,m
,:%I
."

~

:%I

'm

'0

~
(')

m

~

Z
G')

en

~

X

~

,/&)

~

5

»

r

d
(')

»

I

~

~ ~

~

.~
~

~
~

l:IO

~
~
tr1

In

0:1

.£!.§;-L

The proce•• of specifying COIlcept. 1a explained later In Inflnl te .i_.1_1
net_rk.'. fla1ti-dl_.lonal spaoe is only a de_Iptlon of the IIIBt ....tica1
_thod. It doea not: Impl, the existence of such apace •.

THIS FIGVIU CO#PAIUS THE $ MOST I#P()ATIfAiT C()NPUrIH~
MCTHODS. THE £NPIAICAl CONPUTEA Will 8E /iYPI.AIAI£O
~lfrEA IN THC TEKr

2.
YETI(()OlqL

EHplIUCAL
COMPuTER

AIIAL'!TlC4'
CoNI' liTER

coypUTER

this principle specifle. exactly What knowledge COIl.lat. of.
Few objectl in our e n v i _ t are reall, under.tood III detan as to their _
po.ltion and re1atlon.hlp, to.otber Object•• A ROSI for ex..,le COIl.Ists of
flower, orpnelle., protelna, . .ino 'acids, atolD, etc. It ~elate. to other
flower. and enlah in the gerdu eco10D, to cUute, pl.etary _tion, etc.
Not even the word. we uae, such a. proteins or ecology, are really understood.
We gein knowledge however by defining the composition end relation.hlp. one
fact at a tlms. The _re U,htly thia network of facta 1a knit the more kn_ledge 'lie po ......

ttErHoQ
INPUT

OUTPuT

STOREO
l4£rllDO

INPUT I PI/EI/IOUSi'! I OUTPUT

II/PUrl WEIGH rEO IOIJTPUT
NETWORKS

l£AANE/)

KNOWL£DGE

(PNOGRAM)

3.

TYPIC""

"l'IloVl.... I. the ~finltion of COIloept. end their Interrelationship•• "

"/Cnowledge 1a ac_lated In discrete quantum Incrementa which change a concept
to a different concept."

BLOCK 0/dtiNAH
This principle make. it po •• ible to accurately measure Ie_ledge and to stor.
It In digital memories.
The concept ROSI for example I. changed to a different concept RID ROSI by the
addition of its color. The change is always in discrete Increment. which can
be measured, quantified or named.

4.

"Only a few of the infinitely po •• ible concepti exist in the real world."
This prillciple seta a limlt to veriety and ma.a practical COIIIPuters possible
by eUmlnating the Infinite. Ivery posalble concept _!It, however, heve a chance
to become real.

\. SrO/UGE MAP

ADDRESS

"

II

0 ,"ST/filCTlolI ,
/I
l
/I
1
J

II

]

1/

4-

II

SO

-!~
/I

'--

"

I

-II-

_rd.

AOORESS (J

,CAPAC/riVE
S TORAG£ ONLY

s-

"

I

"

GA TE

rop
('wI/TEN

l

I,-T "

/I

3

"

"

4
S-

"

I'

II

II

(,

S

/I~

STORAGE NEtJUIREHEAlT

STORAGE

Taking written Engll.h a. an example, .n almo.t Infi.ite number of posaible
could be aslll!\d)led from the 26 letter. of the alphabet. Only a few
thou.and words exlat In everyday use.

1/£6iIJIRENC/Ir

S.

"l.tab,U.hed kn_ledge exclude. redundant m-ledge."
Thla principle .peclfles • _chanlam which ali_ kn_ledge to be .tored in
highly repetitive and randOlll order alnce every fact h only atored once.
Learning i. the procea. of .toring new kn_ledge. A human, when presented
with a new fact, will learn that fact to increase hh m-ledge. If the as_
fact h presented a second time it will not increase hh kn_ledge and is
therefore' not learned apin. A ._chanislll to filter out already learned knowledge mu.t be iicorporated into a knowledge proce.sina computer. this will
al1_ only new facta to be learned and prevent the accumulation of usele ••
redundant data in the memory. A fact, once learned. mu.t never be learned
apin unles. of course a memory is f.u1ty and keep. forgetting.

ST(JfiAG£
REQUIRE,

PROGRAM

size

The tool. to bulld a kn_ledge proce.sing computer are the inflni te dimensional
networks which will be expl.ined ~.
STORED KNOIVt.£OG£ Introduction to infinite dimenaional networks

What is an Infinl te dl_nsional network and why I. It illlPOrtantT

1.

"Every concept.may be apecified like a point in multi-dimenaional apace."
Thla principle is the very basis of knowledge processing. It provide. a _ans
of defining and manipulating concept.. A concept may be anything that c.n be
named or described, such as physical objects, persona, proces.es or ideas.
Since a single pOint is sufficient to specify .ny concept, its compleXity becomes Irrelevant. This make. It as easy for a human to le.rn s .ingle new numberas to remember the face of a .tranger.

In the Introduction to m-ledge proces.ing it waa .. Id thet any concept may be
specified like a point in multi-dimsn.ional apace. If this is to be u.eful, a method
of specifying points ill multi-dimensional space mu.t be provided.
An infi~te dimensional network may be envisioned as a tree like array. These networks assemble thelllselves automatically from the supplied input data without proGramming or human: supervision. this results in a mechanism which strikingly

,..

!

83:

...C!m

:u

~

:u
m
"V
:u

g

m
m

C

Z
~

~

.~
;:,..
o

»
,..

d
~

§
~

m
'0,1

CD

simulates human learolna. the networks used latar In electronic coaputers are both
real sad i_ainary. They an real insofar as they are stored in digital_ry
devices bllt imaginary because they an ~t actually connected with getes or wires.
They axiat only. as a _t~tical equivalent.
Since infini ta dimensional networks an brand new conCepts ... have to start from
the very beginning.
.
Fig. 2 shows a 3 dimensional network that fa all that can be illustrated on paper.
Thla network may be used to spscify various points In I, 2 or 3 dl,.nsional space.
A speclfic point In 3 dimensional space such as "3" may be specified by Its three
vectors In the flrst,'second and third dimension which are I, 4 and 2. Each of the
vectors presents an Increment of knowledge about the location of point "3" but only
In combination with the vector's orlain.
This first atap allows us to quantify knowledge. A quantum increment in knowledge
consiats of a fact (vector length) and information about Ita location in the network
(vector origin). to apecify a point in 3 dlmenaional apace three knowledge quantuma (3 vectors) are raquired. We do not have a name for a unit of knowledge at
this time but knowledge can now be preCisely measured. FUture generations of studenls
mey graduate with a certified knowladge of 524 @$*Icf&.
FIG 1

:3 OI),fE!lSltJAlAL IlErwORJ<

Z

KNOWLEDG{ QUANTUM
NODE
G

A "Pointer" value is Introduced at thia time. thla value specifies the node from
which a branch ori,inataa. It ta thenfore the number of the previous node in the
sequence.

t

THIIlD
DIMENSION

."

~
~

S
m
:II

~
2i
m

The node name or number is now celled "Address." Every address (node) number
specifies a point in multi-dimensional apace. No 2 nodes in the asme network may
have the same address.

:II

Every knowledge quantum is now specified by a ''Gate" and a "Pointer" which are
together called a "Matrix." Each branch leads to another "Address."

o

Verify that Fig. 3 contains all identical Information from Fia. 2 but in a more
convenien~ way.
Point (addresa) "3" may still be specified prectaely by the 3
vectors (aates) 1, 4 and 2. This network may spread Into additional dimenlions
i f required.
Fig. 4 shows the final step to arrive at a -stored infinite dimensional network.
Its construction is no longer obvious but I t is now suitable for computer processing.

J

P

A "Gate" fa now a CODditton' code which specifies the condition which 1IIIst be _t
to eroas to the next node. In our example it was thelenath of a ftctor but it
may be facts, Input deta, coaditions or anything that can be measured or na_d.
A second law of Infinita dimensional networks Is thatl "Ivery node may sprout an
unltmt'tad number of branches but each pte in a branch lIIIat be unique. No 2
branches from the s _ node may have the _
gate."

The stored network in Fig. 4 WlS derived by simple diasssembi'y of the
Fig. 3 and storing them according to their address (node) number in a
memory. The network in Fig. 4 contains now all identical information
Fig. 3. This network can spread into many dimensions without 11mt.

node. from
common digital
of Fig. 2 and
It can specify

."

on

m
m

Z

C)

en

~

...
X

.~
~

6
l>

r-

a

111$£

VECTOR vaTON
ORIGIII 1.£1I6TII

FI63
'1
'J

~

I

~ECOIIO

I ~/M{N.sION
T

~m

'2.

!

\ \'

...

I.sr
DIKENSloN

FI!lsT DIMENSION

Every specified point in the network la merked by a sep.rate na. . or IlUIIIber. the.
ere 11ke network nodes froll which _ y branches _y sprout. A very illlpol'tant first.
law of iafi.i te dimanaional networks la !;batl "BftI'y Dode in the network la unique
aad no 2 nodes in the _
network _y have the sa. . na_ or number."
Point 113" in ria. 2 is therefon unique and can oaly be reaohed Oftr the thzoee ftCtors I, 4, 2 in the riaht seq_ceo lach node la therefore Ub • fixed point in
IIIIlti-di_slonal space which location la pre~l ..ly knowo. '!he numbers "to the nodes
are easlp.ed In sequence .s required. We do IIOt iteed to re..r .. numbers for SllPty
coordinaUs and .s law 4 of knowledp plOcssslng statas. "CIIlly a faw of the infinitaly possible CODcspta (nodes) exlat in the real world." 1he fact that each natwork
node pra...ta a CODcept as a point tn _ltl-di_ataaal apace will ba_ clear later.
na. 2 la uasful for explaining the firat stap. ria •. 3 allows the network froll
,J'ia. 2 rearranged in • IIOre CODWIli_t way. instead of .howing tb6 ftctors in
their physical length they are spacified .s "Cata" ".lues.

/

/
/

I

"i:W--

OINENSlgK
HErWOI?K NODE
. (KIIO""UIJ6E~II.4NTIJH)
POINTER

ADORESS

(OR/~liI) ~ (CONCEPr)
GATE
(lIEcTolC tENlSr",)

/

I

/

7irH - /

DfH£NSIOJ/

a point in multi-dimensional space using only the.origiDal vector inputs. In our
example pOint "3" was specified by its 3 vectors 1, 4 and 2. Starting address 0
contains a unique stop code marking the network entrance. Starting from this location we ~ry to locate a memory location (matrix) containing a POinter 0 (origin
of that branch) and a Gate 1 (first vector.) We locate this in Address (node) 1.
Address 1 becomes our new point or vector origin. A matrix containing pointer 1
and gate 4 (second vector) is found in address 2 which becomes the new pointer.
Address (poiater) 3 is found after one more step with Pointer 2 and Gate 2.
The above procedure is very cumbersome for humans but not for electronic registers.
The next chapter will show how these networks assemble themselves from the input
data. There is no need for a human operator to specify addresa and pOinter numbers
or to supervise the internal operations of the computer.
FlG.4- STOREO NETW(lRK
AOOII(SS GATe POINTER
'''''- --r-

o

I
2

EAlTRAAICE
I

.,.

J
4
S
6

J
J

7

4-

8

,

I 6
I

0

I

0

I

I
I

6
7
0
I

S

-

l

o

t:

J

S

".

s,

I

j

E

I z
L 3

/!,

I Z

() I

s

7

r

8
9

D

6
0
8

10

/

I

1/

"E I.

3

/2

A

J

/I

13

AOM\SSEm=I<.
o

'v,,,

I

9

tJurp(/T NETWORK
A/)D8ff~

VI'."

o

iSTOI'

:!

I

R
E

/0

T II

3

l.l

I

f

D
A

TOP

( 276\2
I

-I

:;

f

I~

5
6

--

1,;7,.., ...

M£140/(Y ,UA I'

0

/

I ()
I

I z
I

1.

;

4-

y

I

5

T

s

I

()

8

M

I

7

9

RIHE .RED
R()80T- .READY

If)

A I 8
R I 9

rON
£OEA

/I
12

G

0

IZ

14

() I
o I

/5

D

--SMAFIT
- - GOOD

/5

/6

T

I

...J y

13

~
X

....
U1

-oJ
.ID

~

§

The lnput/output learning network and the bi-polar network described so far are only
simple examples of whole families of networks. These more exotic networks may be
derived by modlfication of the gate and pOinter values.
.
The gate value represents the fact whlch determines which network branch la to be
selected. In practlce thls gate value may be lnput characters such as text data.
address numbers from previous networks. log1ca1 operants. polsrity indicators,
numerlcal values or lndirect pointers. The gate value may consist of various aubvalues which may be Interrelated In seweral ways. For example, if the gate conslsts
of two values, the network generator could log1cally OR, AND or EXCWSIVE OR the values to arrive at a very f~exlble gate. The gate could be made very selective or .
approximate. The network gener.tor could select the best fit or the most probable
gate. Some networks, like the simple bi-polar network descrlbed ear11er, contain no
gate value.

10

i 14

I

~~

Z
CO)

en

r10 yield a primitive answering devlce three networks are therefore required. The
()
input output networks convert any Input word pattern into a single number'which to~
tally ldentlfies each word. The address number may then be used to retrieve the
-f
word pattern. A human teacher could educate such a system by typing in some questions ()
and supplying answers. All lnternal operatlons would be handled by the three network g
generators. Address and pointer numbers would be assigned automatlcal1y without
human progranming or supervlsion. Questions and Answers may be entered in any random
order and each set would be learned only once.

"

~~

C

The pointer value can also be modified to yle1d exotic networks. The network shown
in Fig. 6 shows how a network node with two polnters could be u..d to cODstruct a
hereditary tree for a larae number of people. Anode which designates a person has
two origina, one frOID lts father and one frOID its mother. It also must have as gate
a glven name AND a birthdate. The heredlty of a whole natlon can be stored in such a
network. Personal files may be entered ln any repetltive or random order slnce every
personal fl1e is stored only once. The network may be expanded and updated at any
time.
Self-assemUng lnfini te dimenslona1 networks in sUlllllllry are imaginary networks consisting of aate and pOinter values whlch are stored in digital memory devices. Each

~m
~

network ia generated by a fixed (genetic) adcro-routine which is determined by the
network's purpose. All networks reduce complex input patterna to aingle addreas
numbera which are then related to other addresa numbers representing other patterns.
the input dats pattern is compressed but never destroyed. Each pst tern may be fully
retrieved from the sddress number. the content of each word in the digital memory is
unique. No two addresses in the same network may have the same content. The network
memory is accessed by address or content which can be accomplished by scanning conventional memory devices or by future content addressable memories.
FIG_ ~ HEIlEI)ITAI?Y

Bi-polar Network Micro-routine
Matrix (memory content)

-,

Address
Label

Operation
Wait for input pointer number from previous network
- search-memOry to -lOcate .-niatrIx Wi th the correct
input pointer
A) Find input pOinter in memory
Supply output pointer from .ame memory word to
output network. Go back to START
B) Input pointer not In memory
Human education is required
Test ff learning-I.-enabled
A) Lesrning not enabled
Put special pointer code "DON'T KNOW" to output
network. Go back to START
B) Learning enabled
Weit for output painter supplied by human input
and encoded by output network
Store Input_nil output-poliiterIn- next tree memory
location. Go back to START

SffiT

TREE

MATRIX
WiESS POINTER POINTER GATE I GATE 2
?St1l.",-,ITHER 1#t'THEIi

12~~11~:;1

I

EXAM8lE

IDputpointer
Input sequence

CF EXoTIC IYETWORK

WITH 2 GATES ANt) .2 POINTERS

Matrix
Address
(locetio

Learning Network Micro-routine

Address
(location)
Label
STARt
LOOP

ElCIT

----,

I Input GAT!
I POINTER
character Output number

Operation
Setpofntervawe-to 0
Wait for lnpui:character
Examine input character
If input character is an "End of sequence" code
such as space. full stoP. period etc. ao to EXIT
CombIne input CMracterWi th present pointer
value to obtain a matrix
Search or scan tliii memoryto locate -the present
matrix in memory
A) Find present matrix already stored in memory
Upds~e pointer value in matrix to the sddress
value of the memory locstion in which the
matrix wss found. Go to LOOP
B) Matrix not found in memory
(After scan through entire memory)
Store present matrix in next free memory location. Set pointer value in matrix with the
address value of that memory location. Go to LOOP
The present Pointer value is the number which defines
the entire input sequence. Supply this number to the
next network. Go back to START

~

~

"'II

Output Network Micro-routine

Matrix
,

"T

:zl

Label
START
LOOP

Pointer
ut data character Next sddress

----Ga~----

Operation
Walt for the pointernWDlier-input from the
~revious network
Fetch- the coiitent (matr Ix) of the memory
location specified by the pointer value
Examine- matrix.----rr the matrix contsins a
stop code (or address is 0) the output
s~enceis_C!IIDPlete.
If true go back to START
take --:Output data charscter frOm Gate section of
matrix and send it to the output device
Takenew pointer value from the matrix. Th{ s
pointer value will become the address of the next
matrix to be fetched from memory. Go to LOOP

c:
-I

m

:u

~

:u

m

"'II

:u

o
n

m
m

C

Z

c;)

en

~

en

.Ia
~

r
The

human brain

Now that we know what theoretical infinite dimenaional networks are and how they
are assembled let us examine if the human brain could be organized this way. It
is usually not an engineering task to explain brain functions. After all, we engineers want to build computers not duplicste the human brsln. But why should
scientlsta have all the fun? Here then is a highly speculative prediction of how
the human brain may ba organized.
Let ua assume that the brain is indeed a biological infinite dimensional network
which follows the five laws of knowledge processing. How could such a network assemble
itseU in accordance with the known functionina of the nerve cells? We must not
look so much for structure as for the underlYing principle. After all, the theory of
Evolution ¥ss not'explained by showing-the detailed relationship among animal species,
but by inventing the mechanism of mutation and natural selection.

o

»

r

a

g
~

fa

~m
8

To understand the system we lIIUst first examine its smallest comp.onent, the nerve
cell. 'lbis cell, 11ke other cells, h a semi-independent Hving orpnhm which is
self-mintaining, self-dupUcating, and produces its own intemal power from
externally supplied fuel. The nerve cell is specialized for data processing and
is usually a member of a vaat network of interconnected nerve cells. Some nerve
cells have specialized sensor apparatus which serve as input to the networks.
There are several kinds of specialized nerve cells but most are variations of the
same general design.

FIG. 8

DECODING tlNlr

:!!
::II

~

8~

S
m
::II

A nerve cell as shown in Fig. 7 has • cell body with. tree like branching called
dendrites. Theae dendrites present an extended interconnection plane Which allows
other cells in the network to connect to the cell. A long fiber on the other end,
the "Axon," also branchea on the tip to Connect to other nerve cells. The axon of
one cell connects to the dendrites or the cell body of other cells through small
nodule. called synapses. There are two kinds of synapses. One kind is posi tlve to
incr•••• the likelihood for the nerve cell to fire when a aignal arrives from this

~
::II

m

"0
::II

g

m

m

C

rIG.

7

Z

IIERi/E e£t./.

C)

en
NEXT LAYER

~

FII?sT LAYE/(
/leOES
(

I

(·2·3

~

.~

CU+=8

""'s YNAfJSE

PltU/~(/S

,.,. uters. All human knowledge can therefore be collected and stored In more
and more advanced computer a to be of service to all mankind. A aimple skill taught
to an IDN system can be traded snd aold to other users to upgrade their systems.
The effort of any teacher of any skill could contribute to that common deposit of
human knowledge.
A language translator system consisting of six networks Is shown in Fig. 14. This
system contains the same five networks of the previous system. An additional word
translator specifying network is added to decrease memory requirement. This word
translator would translate every word of a language into a word of the otherlanguage. 'It would also specify each word by its type, such as noun, adjective, verb,
etc. This network would therefore be a bipolar network building the word number of
one language, the word address number of the word in the other language, plus the
address number for the word type. A sentence in one language typed into the system
would be converted into a sentence address number. This number is converted by the
bipolar memory Into a aentence addresa number of the aecond language which is then
converted backward through the sentence and word encoding networks into a clear text
output. If a specific sentence cannot be found in the bipolar network, a second
attempt b made by substituting word type gates in the sentence decoding network.
Thia would result in the decoding of a sentence structure decoding with the word
codes to be inserted by the output network. For example, an English-German translation would read:
THERE ARE TWO ROSES IN
THE GARDEN
(Noun 1)
" (number) (Plural)"
"
(Noun 2)
"
ZWEI
ROSEN
STEHN
1M
GARTEN
(Noun 1)
(Number(Plural)
"(Noun 2)
"
THERE ARE (NUMBER) (NOUN 1) IN THE (NOUN 2)
(NUMBER) (NOUN 1) STERN 1M (NOUN 2)
What kind of systems can we expect in the future? At first simple text networks
will be built to be followed by more and larger systems. If the need for an inexpensive nonvolatile, content addressable memory device such as laser at magnetic
bubbles can be aatiafied, a hoat of other applications can be realized. A robot

FIG 14

LANGUAGE

rliANSlArelf

~ItO

CIICOO/N&

::!!

:II

~

8
~

~

What are the implications of thla new computer for our future?
human brain potential and may it endanger human aurvival?
These questions were, up to now, just idle speculations.
and quickly. Let ua examine the facts in detail.

Will it surpass

Now we muat find anawers

i!....
m
:II

~

:II

m
"CI

To answer the question of whether thb computer will ever beat the human brain, we
must examine the three factorsl intelligence. knowledge and Imagination, which like
the legs of a tripod, determine the height of human success.
Intelligence is the innate ability to lsarn, recognize patterns and solve problems.
One might call i t the .-etic hardware provided by Mother Nature. An ION computer
can have unlimited intelligence alnce there b no theoretical limit to ita memory
size, apeed, number of networks and network complexity. Except for economical restrictions there b no reaaon why an IDN computer camot be hundreds or thouaands
of times more intelligent than humans.
Knowledge, as defined earlier, is the definition of concepts and their interrelationships. Knowledge may be compared to the stored software. It may be obtained from
books, teachings or experience. Contrary to the old progra.....d co....uters which
could only be as knowledgeable as their programmers, the new ION computer can obtain
knowledge automatically or combine the knowledge from many people. The amount of
knowledge stored in an ION computer is only limited by the'memory space provided.
Due to the ION inherent data compreasion memory requirement wi'll nearly saturate for
larger computers. Trillion bit laser memoriea available today could store all of
Humanity's present knowledge, including every book ever written by Man. This store
of knowledge could be constantly updated and expanded to provide easy access wi thout
akilled operators.
Imagination or creativity is the ability to find novel answers without hard data or
precedence. ION computers will at first have Uttle imeglnation untll we can define
rules aa to how to solve problema and be Imaginative.
The human brain will therefore remain superior for some time.
ION Robot could be trained to perform moat human jobs which can be defined or
learned. It would perform them more cheaply,faater, more accurately and without

An

:II

g
m

m

o
2
C)
en

~

....X

~

:

r-

o
>

~

~

§
~

m

!!3

sick 1 ..... or vacaUOIl.

SOODer or later . . ha.,. to reaUze that _nay aDd aploymeat

an 0Il1)' crude ...hicles to happiness. I f . resard machi.... as apUflers of tw.a
capabilities .. caa OIlly enr1ch our U .... by more freedom frca physical ll1DltaUons.
MIn wU1 not reach the sters un1e. . hia machine. carry him there. the r . .1 80818 of
....... happiness, such as ....Uc expresslaa, COIIIfort of bodUy funCUOIls, social acceptance, satlsfactlOil of curiosity aDd expresslOil of creativity caD all be _re
. .sUy obtained if _ caa reduce our ph)'.ica1 U.ttaUOIls.

Fra.kensteln coaplex. Accidents will happen unle•• we provide phy.lcal safeguard.
which .y be expre.sed ia the following three rule ••
1)

CaD a COIIiputer ID ti_ be_ truly self a.re?
'1'hII !DgUsh mathelllticiaD, 'l\IrlDg, once specified Wen a COIIIPuter be_s self
a ..re. Thle rule. bow as the "'l\IriDg test" specifies thet WeD, after a prolonsed
CODveraaUon betweeD a humaD and a coq>Uter, one _ s to the CODvictiOD that it is
self aware it Ie for aU practical reaSOD self aware. (£labarrassIDg if the computer
fiads that huans area't self IIWIIre accordiDg to its ow stalldard). Thle test Ie
crude IIDd comparable to a test to determine if it Ie raining outside. "When after
a prolonged walk in the park one haa the i..,ression of getting wt it is raiDing
outside." '1'hII problem is accurscy. How convinced and how long a conversaUon?

2)

Another !DOre practical test Is that a CGq)uter be_s self aware' wheD it appears to
become insaDe.'

3)

Asslllll1ng that a ClOq)uter would be many hundreds of times !DOre intelUgent aDd bowledgeable when it becomes sel f aware. it would perform functions no longer cOlllPreheDsible by hUNn beiDgs. Since humans are iDcapable of recognizing a superior
intellect. they would assume the computer to malfUDction.

'"110 robot should be fumlahed with faciUtt.s for self-dupUcaUOIl or self.adi ficatlOll."
This will prevent a rogue robot from _ufacturiDg others and to modify itself
frca its lateaded purpose. &Dowled,e about it. own coa.tructiOil should be
withheld flOlll a robot unless It has no physical means to effect Ita ow modlficatlOil.

n£very machine should be buUt from degradable material and fumished with an
exhaustible powr source."
A machine which requ'res occasional maintenance la w1nerable. The aeed to use
degradable . .tarials should be universally appUed. It is a cri . . against
Nature to PUlllp _-made, DOn-degradable materials into our environmant. A
rogue robot la need of . .Intenance aad frequent
input will e_tually
run cIowa aad b e _ harmless. If a robot should secure and defend a power
statloa it would be tied dow on that location aDd be unable to do mischief.

pawr

"£very machine should require for its operation a frequent input of human
intent."
this human intent should be expressed by a device which assures that the operatlon of the machine is according to Its creator's intent. A machine which
does not conform to Its specified intent or which function is obsolete should
de-activate itself autOlll8tlcally after _
time.

The abow CODslderations will beCOlDB important in the future.

It will be very difficult to recognize a self aware machine aDd to live with it.
Humans at first had to learn to live with machines aurpassing their muscle strength
several thouslIDds of times; now we have to learn to 11ve with super intelUgent
machines. The time Wen the first cClq>uter becomes self ....re Is hard to predict.
Our brain. after all. is just a CGq)uter and never Ddnd that divine spark. A COlDputer which so closely simulates human brain functions will sooner or later b e _
self aware.
Will this computer pose a threat to human survival?
It certainly couldl But humans have mastered such immensely dangerous forces as
steSID. electricity. atoms. chendstry and biology. Chances are good that we might
not only survive but greatly profit from this Dew technology. A killer robot Containing an IDN brain would be invincible and can only be defeated by other robots.
Thi. ia true for all the other forces mentioned above. '1'hII dsnger is not brought on
by mad scientists since no such threat has ever materialized. The danger lies with
very sane and responsible military techDicians intentionally designing invincible
killer machines to be used by irrational politiciana.
The distingu,ished scientist and writer, Isaac Asi!DOv, has formulated rules for robot
safety (1, ROBOT 1970) which have become known as the 3 Asimov laws of robotics.
His laws are:
1)
2)
3)

A robot may not injure a human being, or, through its inaction allow a human
being to COlDS to harm.
A robot must obey the orders given it by human betngs except where such orders
would conflict with the First Law.
A robot must protect its own existence as long as such protection does not
conflict with the First or Second law.

These rules could be used for designing robots. but in an imperfect world like ours
robots will be built for example by the military for the express purpose to hurt and
kill people. I also believe it to be impossible and wrong for an inferior mind to
control a superior mind. In the, long run a superior intellect will break lIDy jail
CODstructed for it by an Inferior intellect.
We should neither belleve a robot to be always benewlent nor to be obsessed with a

IDN computers have
to be bullt today and sold at a profit. There are _ y problema stUl to be solved
but the basic method is now knowa. The ewlutioa of this new techDlque should lead
to very Interesting devices and a more profound UDderstaading of ourselves and our
brain fUDctlons. We might meet another intelUgent non human creature sooner than
we might expect.

::!!

~

i

s
m

:D

)!
;j

m
."

:D

g
m
m

o

Z
~

..~

~

~

5
~

d

Bibllography

g

David H. Hubel
The Visual Cortex of the Brain
Scientific American Nov. 1963

§

Rosenzweig, Bennet, Diamond
Brain Changes in Response to Experience
Scientific American Feb. 1972
Isaac A.UlOv
The Human Brain

Mentor 451-H71431

Isaac Asimov
t, Robot

Fawcett Crest P2355

Arthur C. Clarke
2001
A Space Odyssey

Signet 451 W6230

Lewis E. Garret
Primer on Artificial Intelligence
Creative Computing Vol 2 No 2 Mar-Apr 1976

."

~
m
88

BOX 1579, PALO ALTO CA 94302

FIRST COMPUTER FAIRE PROCEEDINGS

ROAMING AROUND IN ABSTRACT 3-D SPACES

Tom DeFanti, Dan Sandin, and Larry·Leske
University of Illinois at Chicago Circle
Box 4348, Chicago, IL 60680
Producing visuals by computer which have the subletyof form
and pleasure that we associate with our most powerful music
requires a computer environment predicated upon extremely rich
feedback and real-time production. Micro-computerists have a
much better feel for this need than the average large-computer
user; hence this presentation.
We have isolated four basic organizing principles of highlY
interactive systems: rich feedback, ubiquitous tactile contro~
easy parallel processing and straightforward extensibility.
The video tapes accompanying this presentation will first demonstrate the GRASSI Image Processor system at UICC and then show a
live performance in concert of 3-D full-color computer graphic~
Tom DeFanti and Dan Sandin are faculty members at the Unive~
sity of Illinois at Chicago Circle who have been working on
highly interactive digital and analog computer systems for six
years. They were some of the very first people to recognize
the power of video in computer graphic systems and they organized the first live digital/analog computer graphics concert
in 1975. Larry Leske has been an integral part of the graphics
effort, having built most of the AID and D/A interfaces. Larry
is also currently involved in a project to bring highly interactive graphics to the home.
VIDEO SYNTHESES - EXPANDING ELECTRONIC VISION
Stephen Beck, Electronic Videographer
Beck Video graphics
1406 Euclid Ave, #3
Berkeley CA 94708
Abstract:
Since 1968 Stephen Bec k has been among the pioneers in developing personal videographic tools. His invention, the Beck
Direct Video Synthesizer, has been used to realize videotape
and electronic film compositions of both graphic and psychological substance.
In this informal presentation, Beck will discuss general
aspects of his system, illustrated with color slides, and present
two color videotapes showing it's creative application entitled
VIDEO WEAVINGS and UNION.
Both analog and digital techniques are used in Beck's Synthesizer. With projection transparancies some aspects of the
system of television scan and color will be presented during
the technical portion of the presentation.
Background:
Stephen Beck has been developing both technical and videotape
applications of video synthesis and digital video from his
studio in Berkeley. He has received grants to further his
research and production from the National Endowment for the
Arts, the American Film Institute, and the Rockefeller Foundation. He was with the National Center for Experiments in Television at KQED, San Francisco from 1970 - 1973, and is currently
a consultant on video game systems for National Semiconductor
Corporation.
Beck holds a BSEE from the University of California, Berkeley,
and his videotape and vilms are in public and private collections world-wide.
COMPUTER GENERATED INTEGRAL HOLOGRAPHY

Michael Fisher
Multiplex Company
454 Shotwell St.
San Francisco, CA 94110
A hologram will be defined from a physical and information
storage point of view using simple graphic models. An illustrated description of how different kinds of holograms (including transmission, reflection, projected, integral) are made and
some of their characteristics will be described from a historical perspective. Some applications of computer generated
integral holograms will be discussed and information on how you
can make them will be presented.

PAGE 89

COMPOSING UYNAMIC LASER LIGHT SCULPTURES VIA A HYBRID ELECTRONIC
WAVE SYSTEM
Ron Pellegrino
701 Del Mar Avenue
Novato CA 94947
All the necessary hardware is available off the shelf and
accessible to anyone desiring a personal system. The hybrid
electronic wave system is a Synthi AKS, an instrument originally designed for electronic music.
The AKS is divided into
two parts: 1) an analog signal generating, processing and controlling section with matrix patching and 2) a digital keyboard
which is touch sensitive and includes a 256-event memory driven
by a variable speed clock, 4 touch voltage "transposers" which
can be summed in any combination, a random voltage output and
controls for expanding and compressing the d/a converted voltage before it is applied to the analog section of the instrument.
The two AKS outputs can be connected to any home stereo
amplifier with 10 - 15 watts rms per channel to achieve proper
level control for the next stage, driving a pair of optical
scanners mounted in the xy mode. Produced by General Scanning
Inc., the optical scanners, G-06l2 and G-l08, were selected for
their wide band width (for electro-mechanical systems) and
their high resonant frequencies. The scanners are galvanometers
with short arms to which are attached light-weight high quality
mirrors.

An inexpensive one mw Spectra Physics helium neon laser
beam is directed at the scanners to create Lissajous figures
uniquely characteristic of electro-mechanical systems. The
exploration of every imaginable combination of dynamic waveform
transformation leads to the composition of laser light sculptures which are analogous to what one senses as living forms.

DIGITAL VIDEO PAINTING - TOWARDS THE NEW PERSONAL MEDIA
Richard Shoup
Xerox Palo Alto Research Center
3333 Coyote Hill Rd.
Palo Alto CA 94304
1. Pictures as important vehicles for communication and selfexpression. The human visual system as a powerful receiver and
interpreter of visual information.
2. Shortcomings of human abilities to create and manipulate
imagery using ordinary physical media.
3. An example of an electronic visual medium, the Superpaint
system (cira 1974-5). A videotape will show examples of freehand drawing and painting, color space manipulations, areafilling, moving, shrinking, transparent paint, multicolor
brushes, animation and special effects, etc.
4. Some thoughts on system design, personal computers, etc.,
as appropriate to audience and other speakers.

ELECTRONICALLY PRODUCED VIDEO GRAPHIC ANIMATION
by IMAGE WEST
Terry Craig
IMAGE WEST, LIMITED
345 N. Highland Avenue
Los Angeles, California
90038
A brief, informal discussion of the use of video animation
in the production of television and film special effects.
A sample of our work in the television field will be shown.
Terry Craig joined the Image West staff soon after it opened
its doors in August, 1974. During this period he has worked as
an art director, commercial director and is presently Production
Manager. He has a BA in Broadcasting from California State
University at San Francisco. He supported himself while in
college by working as a broadcast engineer for KQIlD, KEMO & KKHI
in San Francisco. Prior to this he had six years experience as
an electronics technician.

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

VIDEO SYNTHESIS & PERFORMANCE
WITH AN ANALOG COMPUTER
Jo Ann Gillerman
4250 Horton Street
Emervville CA 9460~

The Sandin Im3.fe Process or (IP) is <:In analog r~.tch­
programmable instrument desif"ned by Daniel Sandin at
the U. of Illi Chicago Circle. The IF accepts signals of.! 0.5 volts 750hmEl, includinp: video signals.
This moduh.r instrument m'l.Y rflcE!ive in;,uts from cameras, VTRs, or both. I built a copy of ·thE! Sandin
Image Proce'lsor that I now UHP. prim'l.rily as a real
time ins"trumen-f; in live electronic 3.udio/video performa.nces, and in sturtio production work of analog
video processing and synthesis.
Of thp. many tynes of videa pE!rformc;nce, I make a
distinction between nerform1.nces conceived and derlen,1ent on video nnr:l the,-I;rical nerform',nces documented
on video ta1Jp.. I do Derform'l.nces or intflractlve
environr~ents th~.t are defined by thp. T)arameters of
video, usually i:'lVolving the Im<:lge Process()r, and
frequp.ntly 1Jl'Wing it 'l.S 8.n instrument.
Real time is an element I believe to bo Bxtremely
imnort9.nt in l)erfarm~.nce. Real time reans a contin1I0US flow throu,g'h time, une1i ted in the tradi ti.on~ 1
sense, and effected by events pRrticulRr to BRCh indi..vi!lu8.1 situ8.tion. Of primary importance in working
real time is to be able tl) g.ccess as many input
source~ "IS needed for '1 '::nrticular piece. This is one
application of a computer, the Il'1ase Processor in my
case. i',ore and varied "witches c~.n be Plade effici.entIV and fjuickly with digital circuitry~ Also, of utmost imr'ort-:tnce in g,udio/vide 0 pArfor~2_nce is for
hoth me-Jiums to be of W1U3.1 im'Jort"nce ",nd to perf'orm
as equal inntruments, Bath shnuld h3ve active ~nd
p2'''~ive "u3.1itip.s, "lnd be sensitive to unbue Drob1ems of ·t'NC different mecl.iur:ls actin!,\
nne in real
time.

"C'

A hi{Thly nrorluctive s i tU8ti,,". '"hich I call R Fant'l.sy
FE'.cility, 'v')ulr! hrluse efjuipment cf vidp.o, 'lUdio, and
both digi t'll 9.nrl em'!.lo!,: computers. It would provide
a comf0rtable space for performances "nd studio 'Nork
of a hi.c:hly sophistic9.ted n'ltl're. Emphasis c·~uld be
directed toward software concerns, and hassels of
moving eg uipment Minimized c :msiderably. I t would be
wonderful for the desif';m~rs of virleo hardware to kepp
in mind the performance oriented in future desic;ns.
That iSI small, sturdy, compact, reliable, rugged,
easily transportClble, inexpens ivp., and bst, bt.:t not
least, a larr;p. viewinl': scrp.en c"lPRhlp. of hiph resolution without R crmsole in the opti1":111:1 viewin!': ,.,l'lce!
Aside from t.he slides, one of the video t~.",es shown
during my informal talk will he an eX8mple of +he
Sandin Image Processor in conjunction 'vith a PDP11 and a Vector Gener'lJ DisnJay. It was ~~.de in
Chicago 'l.t the U. of 11 Co. ChicR70 Circle usinr- R
digit'll programmine: system desir:ned by Tom Def~nti.
The tape was originally done in reql time, Rnd
could be performed given sp?ce 8.nrl comper8ble equipment. The digital portions of the tape were done by
Gunther Tetz and the analog process ing was done by
myself on the Sandin Image Processor which is an analog patch programmable instrument designed •• ,
Having graduated with an ~IFA from the Chicago Art
Institute in 1975, I am presently a free lance artist
doing video in t.he Bay Area. ti,ost recently. I have
been involved in live gigs with electranic musicians,
but have also been doine: production work using the
Image Processor for both commercial and personal work.

PAGE 90

FIRST COMPUTER FAIRE PROCEEDINGS

THE STANFORD COMPUTER MUSIC PROJECT
John Chowning and James A. Moorer
Department of Music
Stanford University
Stanford CA 94305

A major American contribution to present and future
music exists in the application of a rapidly developing
computer technology to the art and science of music.
The extraordinary. results already - obtained have
occurred in those few instances where scientists and
musicians have taken the opportunity to bring their
respective skills to bear on problems of common interest
in a rich interdisciplinary environment. It is an· example
of cooperation, but more, an expression of the freedom
of intellect and invention, where creative minds from
diverse disciplines have joined in a common goal to
produce fundamental knowledge which must be the
source for new music, and to produce works of art
which reflect the scientific-technological riches of the
present.

BOX 1579, PALO ALTO CA 94302

PAGE 91

experimentation with the sounds of natural instruments.
By modifying the sounds of these instruments in
systematic ways, then testing the perceptual effects of
the· modifications, a great deal of information has been
produced on the way musical timbre is perceived.
Several papers and technical reports have been
produced describing the techniques and results of this
research.
Unfortunately, it is beyond the scope of this
presentation to give a detailed description of the
center's activities, or even of the technology of sound
production. For this purpose, we refer the reader to the
article by Moorer in the Computer Music Journal
(available through People's Computer Company, 1010
Doyle Street, Box E, Menlo Park, Ca. 94025) entitled
"Signal Processing Aspects of Computer Music - A
Survey". For more detailed information, a number of
publications are available either from the Stanford
department of Music or from nationally known journals.
A list of those publications with a partial list of abstracts
follows.

At Stanford University, such cooperation has been
commonplace over the past twelve years. In the
beginning, progress was made in the analysis, synthesis,
and psychology of sound perception in largely
unsupported work by professors, graduate students, and
staff members. In June of 1975, the Center for
Computer Research in Music and Acoustics (CCRMA) was
formed with funding provided jointly by the National
Science Foundation for research and teaching in
computer techniques of interactive sound production and
the perception of timbre, and by a one-time grant from
the National Endowment for the Arts for computing
equipment for musical purposes. One aim of the Center
was to establish an international facility where
researchers, composers, and students could work with
strong computer-based technological support.

In general, little of the center's work is meaningful at
this time for the computer hobbiest. Probably the most
relevant work is that of frequency modulation synthesis
(see Chowning's article in the Audio Engineering Society
Journal). We expect, however, that it will not be long
before the technology catches up with the techniques,
allowing every computer hobbiest to synthesize a small
orchestra in his workshop.
INTERNAL PUBLICATIONS

The status of the facility as it now stands is a multifaceted topic. As a musical instrument, the computer
system is possibly the most flexible of all instruments.
To speak of it as a conventional musical instrument,
however, is somewhat misleading because the system is
capable of simultaneously producing a large number of
independent
voices
having
arbitrary
timbral
characteristics. It is much more general than a
conventional musical instrument in that it can generate
any sound that can be produced by loudspeakers,
modify and transform real sounds entered into the
system by means of microphone and digital-to-analog
converters, remember and modify articulated musical
input, and simulate the location and movement of sounds
in a variety of illusory reverberant spaces. Equally
important, the facility is capable of serving a number of
composers and researchers simultaneously, providing for
each a direct control over the medium to a degree which
was never before possible.

The Stanford computer
music
group
produces
of
the
technical memoranda, describing results
research done at Stanford. We can offer these
memoranda to the public, but we request that we be
reimbursed for publication costs by a donation of the
amount listed by each memo. This donation goes
exclusively into the publication funds for the project and
helps us bring this work to the public. Make checks
payable to Stanford University. The donation is taxdeduct able.

As a research tool, the computer has shown itself to be
uniquely useful in generating precisely controlled stimuli
for
perceptual research. The analysis-synthesis
techniques
developed
here
allow
for
direct

Center for Computer Research
in Music and Acoustics
Department of Music
Stanford University
Stanford, California 94305

STAN-M-l
July, 1974
85.65
"Computer Simulation of Music Instrument Tones in
Reverberant Environments"
by John M. Chowning, John M. Grey,
Loren Rush, and James A. Moorer
This is a reprint of selected portions of the NSF
proposal which resulted in a grant to the computer
music group for research over a two-year period. The
following is the abstract from the memo:
Novel and powerful computer· simulation techniques
have been developed which produce realistic music

FIRST COMPUTER

FAIR~

PROCEEDINGS.

BOX 1579, PALO ALTO CA 94302

instrument tones that can be dynamically moved to
arbitrary positions within a simulated reverberant space
of arbitrary size by means of computer control of
loudspeakers.
Research support for the
four
simulation of complex auditory signals and environments
will allow the further development and application
of computer techniques for digital signal processing,
graphics, and eomputer based subjective scaling,
toward the analysis, data reduction, and synthesis
of music instrument tones and reverberant 'spaces.
Main areas of inquiry are: 1) those physical
characteristics of a tone which have perceptual
significance, 2) the simplest data base for perceptual
of
representation of a tone, 3) the
effect
reverberation and location on the perception of a
tone, and 4) optimum artificial reverberation techniques
and position and number of loudspeakers for producii,g
a full illusion of azimuth, distance, and altitude. These
areas have been scantily investigated, if at all, and they
bear on a larger more profound problem of intense
cross-disciplinary Interest: the cognitive processing and
organization of auditory· stimuli. The advanced state of
possible
the
computer technology now makes
realization of a small computer system for the purpose
of real-time simulation. The proposed research includes
the specification of, and program development for, a
small special purpose computing system for real-time,
interactive acoustical signal processing. The research in
simulation and system development has Significant
applications
in
a variety of
areas including
psychology, education,architectural acoustics, audio
engineering, and music.
STAN-M-2
February, 1975
"An Exploration of Musical Timbre"
by John M Grey

87.10

This is a reprint of John Grey's doctoral
dissertation, submitted to the department of Psychology,
Stanford University.
Due to its overwhelming complexity, timbre perception
is a poorly understood subject in the field of
auditory perception. Computer-based research tools
.have been developed that appear to be important for
an investigation of timbre perception. In the work to
be described, an exploratory approach was formulated
for dealing with this highly multidimensional attribute of
sound. This approach utilized a computer technique for
the synthesis of musical timbres based on the analysis
of natural instrument tones. This technique was useful
for generating stimuli in timbre experiments because
of its to effectiveness in allowing the investigator to
specify and manipulate the physical properties of
complex time-variant tones. An important discovery
resulted suggesting that naturalistic tones can be
synthesized from a vastly simplified set of physical
properties. These simplified tones were useful as
stimuli in further studies on timbre perception because
of the great reduction in the number of physical factors
considered
in
making
psychophysical
to be
interpretations of perceptual data. Ahother study
undertopk to equalize a set of tones in the dimensions

PAGE 92

of pitch, loudness and duration, in order to eliminate
confounding factors from future judgments on different
timbres. The simplified and matched tones were rated
by pairwise similarity in a further study, and the
results
were
treated
with
computer-based
multidimensional scaling techniques to obtain an
interpretable data structure in a low dimensionality.
Three dimensions were found to explain the similarity
data. Two were related to obvious physical properties
of the tones (to the gross characteristics of the
spectral energy distribution; and to the existence of
precedent
low-amplitude,
high-frequency,
and
possibly inharmonic energy in the initial segment of the
attack). The third dimension was interpretable either in
terms of a physical property (synchronicity in the'
attacks of . higher harmonics) or as a higher-level
distinction made between the tones on the basis of their
musical instrument family. Another set of studies next
initiated an exploration of timbre in terms of
continuous versus categorical perception. An algorithm
was designed to generate a set of tones interpolating
between
two' naturalistic timbres. Identification,
discrimination and perceptual similarity studies were
performed using a set of stimuli generated by
interpolations.
The
results
of
these
studies
suggested that interpolations were perceived to be
continuous rather than categorical. Furthermore, the
timbral similarith:~s between a partial set of the
naturalistic and interpolated tones revealed three
perceptual dimensions that. related directly to those
found above for the total set of naturalistic stimuli. The
first two physically-related dimensions were found,
and the third dimension seemed to correspond to a
higher-order distinction made between naturalistic tones
and the interpolation-derived tones, this superseding
the
family distinction made for the total set of
naturalistic tones. A notion of timbre is developed
involving both a higher-level perceptual processing of
tones that has access
to
stored
information
relating to the distinctive features of identifiable
sources, and a lower-level, qualitative perceptual
comparison of tones with respect to gross acoustical
features lying outside of the domain of specific
identification. Suggestions for future research are made.
.STAN-M-3
May, 1975
88.60
"On the Segmentation and Analysis of Continuous
Musical Sound by Digital Computer"
by James A.Moorer
This is a reprint of James Moorer's doctoral
dissertation, submitted to the department of Computer
Science, Stanford Uriiversity.
The problem addressed by this dissertation is that of
the transcription of musical sound by computer. A
piece of polyphonic musical sound is digitized and stored
in the computer. A completely automatic procedure
then takes the digitized waveform and produces· a
written manuscript which describes in classical
musical notation what notes were played. We do not
attempt to identify the instruments involved. The
program does not need to know what instruments were

FIRST COMPUTER FAIRE PROCEEDINGS

playing.
It would appear that it is quite difficult to achieve
human performance in taking musical dictation. To
simplify the task, certain restrictions have been placed
on the problem: (1) The pieces must have no more than
two independent voices. (2) Vibrato and glissando
must not be present. (3) Notes must be no shorter than
80 milliseconds. (4) The fundamental frequency of a note
must
not coincide
with
a
harmonic
of
a
simultaneously sounding note of a different frequency.
The first three conditions are not inherent limitations
in the procedures, but were done simply for
convenience. The last condition would seem to require
more study to determine the cues that human
listeners use to distinguish, for example, notes at
unison or octaves. Numerous other lesser restrictions
were also imposed on the music to be analysed.
The method used for this analysis is a directed bank of
sharp-cutoff bandpass filters. First, a pitch detector is
used to determine the harmony of the piece at each
point in time. Using the harmony information, the
filters is
frequencies of a band of bandpass
determined so as to assure that every harmonic of
every instrument will pass through at least one of the
filters. 'The output of each filter is processed by a
pitch detector and an energy detector. This gives power
and frequency information as functions of time. Each
power and frequency function pair is rated as to
its quality. The rating takes into account the constancy
of the frequency function, the smoothness of the power
function, and several other measurements on the
functions. This rating is used to eliminate spurious traces
and null filter outputs.
Notes are then inferred from groups of power and
frequency function pairs that occur simultaneously
with frequencies that are harmonically related. Notes
with higher overall ratings are preferred over other
note hypotheses. The melodies are then grouped by
separating the notes into the higher voice and the lower
voice. Voice crossings are not tracked. For the final
manuscripting, Professor Leland Smith's MSS program
was used. The analysis program produces directly input
for the manuscripting program, thus the entire
procedure is automated.
In addition to the above described system, many other
techniques were examined for their utility in this
task. Each technique that was explored is described and
analysed, with a description of why it was not found
useful for this task.
One interesting observation is that there is considerably
more activity in a piece of music than is perceived by
the listner. This is especially common with stringed
instruments, because the strings that are not being
manipulated invariably resonate and produce sounds
independently which are generally not heard due to
aural masking. This indicates that perhaps we should
use more. perceptually-based techniques to help
determine what would actually be heard in a piece of
music, rather than determine exactly what is there,

BOX 1579, PALO ALTO CA 94302

PAGE 93

although detailed descriptions of the contents of the
piece may be useful for other purposes, such as music
education or musicology.
In general, the system works tolerably well on the
restricted class of musical sound. Examples are
shown which demonstrate the viability of the system
for different instruments and musical styles. Since the
procedure is extremely costly in terms of computer
time, only a limited number of examples could be
processed. These examples are discussed with a
description of how the system could be improved
and how the restrictions might be eliminated by
better processing techniques.
STAN-M-4
February, 1975
81.80
"On the Loudness of Complex, Time-Variant Tones"
by James A. Moorer
This memo is part of a proposal to the NSF division of
Psychobiology.
This study of loudness is motivated by the discovery
that a set of complex, time-variant tones appear to
behave differently with respect to loudness than would
be predicted by the methods proposed in the literature.
It is possible that the time-variant behavior of the
sounds influences the loudness, so that a more complete
theory of loudness must take this behavior into account,
We thus propose to study these data and attempt to
either verify the existing theories of loudness or
formulate a more comprehensive hypothesis of
the
currently existing
loudness, building upon
and
to
test
this
hypothesis
by
theories,
synthesizing
new
tones,
dOing
equalization
experiments, and comparing the results with the
predictions of the model of loudness perception.
STAN-M-5
December, 1975
83.00
"The Synthesis of Complex Audio Spectra
by Means of Discrete Summation Formulae"
by James A. Moorer
A new family of economical and versatile synthesis
techniques have been discovered which provide a means
of controlling the spectra of audio signals that has
capabilities and control similar to those of Chowning's
frequency modulation technique. The advantages of the
current methods over frequency modulation synthesis
are that the signal can be exactly limited to a specified
number of partials, and that "one-sided" spectra can be
conveniently synthesized.
NOTE: This document is no longer printed, because it is
superceeded by the Audio Engineering Society Journal
article:
James A. Moorer, "The Synthesis of Complex Audio
Spectra by Means of Discrete Summation Formulae",
Journal of the Audio Engineering Society, VoluMe 24, #9,
November 1970, pp 717-727

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

Reprints of this article can be ordered directly from the
Audio Engineering Society. 60 East 42nd Street, New
York, N.Y. 10017
BIBLIOGRAPHY OF NATIONAL PUBLICATIONS
John M. Chowning, "The Simulation of Moving Sound
Sources", Journal of the Audio Engineering Society,
Volume 19, #1, 1971
A digital computer was used to generate
four channels of information which are
recorded on· a tape recorder. The computer
program provides control over the apparent
·Iocation and movement of a synthesized
sound in an illusory acoustical space. The
method controls the distribution and
amplitude of direct and reverberant signals
between the loudspeakers to provide the
angular and distance information and
introduces a Doppler shift to enhance
velocity information.
John M. Chowning, "The Synthesis of Complex Audio
Spectra by Means of Frequency Modulation", Journal of
the Audio Engineering Society, Volume 21, # 7,
September 1973, pages 526-534
A new application of the well-known
process of frequency modulation is shown
to result in a surprising control of audio
spectra. The technique provides a means of
great simplicity to control the spectral
components and their evolution in time.
Such dynamic spectra are diverse in their
subjective impressions and include sounds
both known and unknown.
James A. Moorer, "The Optimum Comb Method of Pitch
Period Analysis of Continuous Digitized Speech", IEEE
Trans. on Acoustics, Speech, and Signal Processing, Vol.
ASSP-22, #5, October 1974, pp330-338
A new method of tracking the fundamental
frequency of voiced speech is described.
The method is shown to be of similar
accuracy as the cepstrum technique. Since
the method involves only additions, no
multiplication, it is shown to be faster than
the SIFT algorithm. The basis of the method
is searching for a minimum in the magnitude
of the difference between a speech
segment and a delayed speech segment.
This is shown to be equivalent to selecting
the comb filter which best annhilates the
input signal.
James A. Moorer, "The Use of the Phase Vocoder in
Computer Music Applications", Presented at the 55th
Convention of the Audio Engineering Society, October
29-November 1, 1976, available as Preprint number
1146 (E:-1)

PAGE 94

The phase vocoder is an analysis-synthesis
system which has as intermediate data the
time-variant discrete Fourier spectrum of
the input signal. It can be formulated ina
way such that the synthesized signal is
identical to the original, both theoretically
and practically. The intermediate data can
. be transformed, also with no loss of
information, into the more conventional
magnitude and frequency representation.
These intermediate data can then be used
to resynthesize the tone at different
pitches or different rates than the original
with the advantage that when no
modification is made, the synthetic tone is
absolutely Identical to the original. This
represents a significant advance over the
Heterodyne filter, which placed sever.
restrictions on the amount of variation in
pitch or amplitude that could be analysed.
The phase vocoder has no such restrictions .
and can just as easily deal with vibrato and
inharmonic es.
Since scaling the frequencies in the phase
vocoder analysis data also scales the
spectrum up, use of this modification with
speech can produce altered vowel tones. If
this method is combined with the linear
alter
predictor, using t~e phase vocoder
the pitch of the error signal, then the
spectrum can be held constant while the
pitch is changed, thus allowing independent
control over time, pitch, and spectrum.
Vowel quality can be preserved or altered
at will. Again, if no modification is made, the
combination of the linear predictor and the
phase vocoder is an identity, both
theoretically and practically.

to

James A. Moorer, "The Synthesis of Complex Audio
Spectra by Means of Discrete. Summation Formulae",
Journal of the Audio Engineering Society, Volume 24, #9,
November 1976, pp 717-727 (this superceeds memo
STAN-M-5)
James A. Moorer, "Signal Processing Aspects of
Computer Music - A Survey", Invited paper, to be
published in the July 1977 issue of the Proceedings of
the IEEE. Also reproduced in the Computer Music Journal
Volume 1, Number 1
The application of modern digital signal
processing techniques to the production and
processing of musical sound gives the
composer and musician a level of freedom
and precision of control never before
obtainable. This paper surveys the use of
analysis of natural sounds for synthesis, the
use of speech and vocoder techniques,
methods of artificial reverberation, the use
of discrete summation formulae for highly
efficient synthesis, the concept of the alldigital recording studio, a.nd discusses the

FIRST COMPUTER FAIRE PROCEEDINGS

role of special-purpose hardware in digital
music synthesis, illustrated with two unique
digital music synthesizers.
SUBMITTED FOR PUBLICATION
John M. Grey, James A. Moorer, itA Perceptual Evaluation
of Synthetic Music Instrument Tones", Journal of the
Acoustical Society of America
An analysis-based synthesis technique for
the computer generation of musical
Instrument
tones
was
perceptually
evaluated in terms of the discriminability of
16 original and re-synthesized tones taken
from a wide class of orchestral instruments
having quasi-harmonic series. The analysis
technique used was the heterodyne filter which produced a set of intermediate data
for additive synthesis, consisting of timevariant amplitude and frequency functions
for the set of partials of each tone. Three
successive levels of data reduction were
applied to this intermediate data, producing
types of simplified signals that were also
compared with the original and resyhthesized tones. The results of this
study, in which all combinations of signals
vlere
compared,
demonstrated
the
perceptual closeness of the original and
directly re-synthesized tones. An orderly
relationship was found between the form of
data reduction incurred by the signals and
their relative discriminability, measured by
a modified AAAB discrimination procedure.
Direct judgments of the relative sizes of the
differences between the tones agreed with
these results; multidimensional scaling of the
latter data provided a visual display of the
relationships among the different forms of
tones that pointed out the importance of
preserving small details existing in their
attack segments. Of the three forms of
simplification attempted with the tones,the
most successful was a line-segment
approximation to time-variant amplitude and
frequency functions for the partials. The
pronounced success of this modification
strongly suggests that many of the microfluctuations usually found in the analyzed
physical attributes of music instrument
tones have little perceptual significance.
John M. Grey, "Multidimensional Perceptual Scaling of
Musical Timbres", Journal of the Acoustical Society of
America
IN PREPARATION
John M. Grey, John W. Gordon, "Perceptual Effects of
Spectral Modifications on Musical Timbres", for the

BOX 1579, PALO ALTO CA 94302

PAGE 95

Journal of the Acoustical Society of America
John M. Grey, "Perceptual Continuity of Interpolations
Between Musical Timbres", for the Journal of the
Acoustical Society of America
John M. Grey, "Multidimensional Scaling of Interpolated
Music Instrument Tones", for the Journal of the
Acoustical SOciety of America

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579. PALO ALTO CA 94302

PAGE 96

Design of High Fidelity , Real-Time,
Digital Hardware for Music Synthesis
John Snell
Editor, Computer Music Journal
People's Computer Company
Box E, Menlo Park CA 94025
ABSTRACT

A digital oscillator is capable of generating a large number of partials (hannonic or inhannonic sine waves) with independent control of frequencies and independent control of
amplitudes. Any waveshape may be generated. The oscillator
design described here may be used in a musical instrument
which may be played by a musician, not just programmed. The
sound would be heard at the same time that a key or pressure
sensitive pad was pressed, like a traditional musical instrument.
Envelopes may be generated in software or hardware. A primitive hardware envelope generator is shown which will generate
up to 256 different amplitude envelopes and up to 256 different frequency envelopes. The envelope generators will generate
any shape curve (not just exponential curves); and the envelope shapes may be changed note by note. The final two oscillator designs will perfonn sine summation synthesis (sometimes referred to, somewhat misleadingly, as Fourier synthesis)
as well as FM synthesis with multiple carriers and/or modulators (with up to 128 modulation index envelopes). One oscillator design may be constructed from integrated circuits (not
including the DAC, deglitching circuit and low pass mter)
which may be purchased for less than $275. The frequencies
and amplitudes of the sinusoidal components from the slow
oscillator may be controlled with an inexpensive microcomputer. A higher speed oscillator design is described which is
capable of generating up to 256 sinusoidal components. Noise
or distortion from these oscillators will be inaudible to most
people.

INTRODUCTION
In experimenting with non-traditional tone
colors or timbres it is instructive to determine which
parameters of sound need to be controlled in order to
generate sounds which could come from acoustic
musical instruments. Once these parameters are
determined, they may be played with or varied to
produce non-traditional sounds which are just as
interesting in timbre as the sounds from acoustic
musical instruments.
The sine wave illustrated in Figure I is the most
pure or simple sound. Theoretically, any sound may
be generated by adding together a number of sinusCopyright 1977 John Snell

oidal components (cosine or sine waves) for which
the amplitude and frequency may be independently
varied. Using additive synthesis, tones have been
synthesized from the analysis data of acoustic instruments which are "indistinguishable numerically,
theoretically, and perceptually from the original"
[Moorer, 1976].

Figure 1. SINE WAVE
AMPLITUDE

TIME

,
i

i
i

10+-------- T

-------'~

T=
F=

the period, or time for one cycle (360°) to occur.
liT = the frequency or number of cycles per
second (Hz). This is related to the pitch of the
sine wave.
A= the amplitude. This is related to the loudness of
the sine wave.
a= the phase angle. The sine wavt may be generated
by continuously evaluating "sin (ex)" for a
phase angle "ex" increasing continuously and linearly in time.
The sine wave has a tone color which is similar to that
which is produced by a tuning fork which has been
gently tapped by a soft hammer somewhere between
~ and Yz of the way from the end of one prong of the
fork [Benade, 1976]. The piccolo flute or the
soprano recorder sound somewhat like a sine wave.

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579. PALO ALTO CA 94302

PAGE 97

The partials* are often found to be slightly
inharmonic. Even the frequency of each partial varies
within one single tone or note from most acoustic
instruments. This can be seen in the "Lexicon of
Analysed Tones". t 256 sinusoidal components might
be utilized in generating 16 voices or instruments,
each having 16 partials. A large number of sinusoidal
components is also useful in generating choral cloudlike tone clusters or tone fields somewhat like the
music which Gyorgy Ligeti has often produced with a
traditional orchestra.
Let's look at a method for generating one lowdistortion sine wave (or any waveshape). Then it will .
be found that one digital oscillator may be used to
generate a large number of sinusoidal components
with independently variable frequencies and independently variable amplitudes. This oscillator will also
perform FM synthesis [Chowning, 1973] with multiple modulators and/or carriers. A sine/cosine generator is basic to many of the new equations for
timbre synthesis such as those briefly discussed in the
first issue of Computer Music Journal [Moorer, 1977].
A sine wave may be represented digitally as a
series of pulses or steps as shown in Figure 2. If the
steps or changes in pulse amplitudes are made infinitely small, a smooth analog waveshape will result.
The steps should be made small enough so that the
ear is incapable of hearing the difference between a
smooth analog waveshape and the digital waveshape.
Thus there will be no audible distortion or noise.
Each of these steps is a pulse whose amplitude may
be represented by a number in a computer. If one
cycle of a digitized waveform is stored in computer
memory (called the waveform memory), the

numerical values of the pulse amplitudes may be read
out by repeatedly incrementing the memory address
(which corresponds to the phase angle). When the end
of the waveform cycle is reached, the memory
address will jump back to the beginning of the waveform memory. In other words every time the phase
angle (memory address) is incremented to a value .
greater than or equal to 360 0 ,3600 will be subtracted
from the phase angle. Then the phase angle will continue to be incremented as before. If this waveform
memory output is fed to a digital to analog converter
(deglitched):(: which is followed by a smoothing fIlter,
amplifier, and loudspeaker, a continuous sine wave
will be heard. The digital to analog converter (DAC)
changes the numbers into pulses whose amplitudes
are controlled by the numbers read out of the waveform memory. The smoothing filter (low pass filter)
rounds off the pulses so that a continuous waveform
results as shown in Figure 2.
The frequency of the output waveform will be
equal to the rate at which these pulses are generated
(called the sample rate) divided by the number of
pulses in one waveform cycle or period .•

* A partial is a harmonic if it has a frequency which is

(Alexander Ellis) footnote on page 25 in On the Sensations of Tone [Helmholtz, Dover Publications,
1954]. "The term 'second harmonic' will always
refer to a partial whose frequency is precisely twice
that of the fundamental; this partial mayor may not be
present in a tone, but there is no ambiguity."
t "Lexicon of Analyzed Tones", Computer Music
Journal, Vol. I, No.2, 1977.

equal to the fundamental frequency (usually related.
to the pitch) multiplied by an integer (1, 2,3,4,5, .. ),
Partials may be inharmonic if their frequency equals
the fundamental frequency multiplied by a noninteger (such as 2.31 or,[2 or 11'). John Backus in his
book, The Acoustical Foundations of Music (W.W.
Norton & Company, Inc., New York, 1969, pg. 96)
adds some useful information here. "The term 'overtone' has frequently been used in reference to
complex tones, such a tone being described as consisting of a fundamental and its overtones.This introduces a certain amount of confusion; in the sound
produced by the vibrating string, the first overtone is .
the second harmonic. Similarly, in the sound produced by the closed tube, where the second harmonic
is missing, the first overtone is the third harmonic.
Because of this unnecessary confusion, it is best not
to use the term 'overtone' at all- especially since we
do not need it." Reference is given here to U.S.A.
Standards Institute as well as to the translator's

fre uenc (Hz) = .::sam=p!:.:l:::e..:r.;:.at:.:e~::--_ _:-q
y
samples/waveform cycle
One can see that the units check:
frequency

=

sam ~es sec~nd
samp es cyc e

=cycles/second.

As mentioned earlier, each of the numbers in the
waveform memory has an address which corresponds
to a phase angle "0:". Thus, if a particular address "0:"

:(: To avoid a noisy output the digital to analog converter (DAC) is first followed by a sample and hold
deVice or a track and ground switch. This will eliminate the spikes which may occur when the input of
the DAC is changed.
• This infonnation was provided by S. C. Johnston
in The Technology of Computer Music by M.. V.
Mathews with the collaboration of Joan Miller,
F. R. Moore, J. R. Pierce, and J. C. Risset, MIT
Press 1969, pages 134-138.

195

o

15

30

46

60

76

PAGE 98

BOX 1579, PALO ALTO CA 94302

FIRST COMPUTER FAIRE PROCEEDINGS

210

225

240

255

270

285, 300 315

330

345

360

90

OOMPUTER MEM)RY

0

.26

.5

.7

.87

.97

1

.97

.87

.7

.5

.26

0

-.26 -.5

-.7

-.87 -.97 -1

-.97 -.87 -.7

-.5

-.26 0

LOUDSPEAKER
DIGITAL
TO
ANALOG
CONVERTER

L(}NPASS
FILTER

---1r-c(]

IV

Figure 2.
is given, the memory will output the number "sin a"
contained at that address.
'
The sample rate is crystal controlled for ultrastable tuning and is constant. If every number in the
waveform memory is generated one after another at
this constant sample rate, the frequency of the sine
wave will be constant. This w.ould result from incrementing the address of the waveshape memory by 1.
If a higher frequency is desired, the address (phase
angle) may be incremented by a larger number. If a
lower frequency is desired, the address may be incremented by a smaller number. The phase angle is
truncated to form the address for the waveform
memory as illustrated in Figure 3. The phase angle
increment register holds the value of the increment to
the phase angle. This phase angle increment will be
added to the phase angle once for each sample of the
sine wave. When the address is near the end of the
waveform memory (360°); an in~rement may be
added which will overflow the phase angle register,

thus placing the address back at the beginning of the
waveform cycle. This is equivalent to subtracting
360° from the phase angle every time it is incremented to a value greater than or equal to 360° .

WAVEFORM
MEMORY
SINE TABLE

•t

Addres.

u
t.

0

a

0

k Bits

Figure 3.

FIRST COMPUTER FAIRE PROCEEDINGS

Sampling Theory
At first glance, one might 'think that this technique would result in a large amount of distortion if
the phase angle increment were as large as 1800 • This
would result in a frequeflcy of Y2 of the sample rate.
With this,phase angle increment value, only 2 pulses
would be generated per waveform cycle. It can be
shown mathematically [Carlson, 1968] that if a signal
contains only frequency components whose absolute
values are less than some maximum frequency F MAX'
the signal may be completely described by the instantaneous sample values uniformly spaced in time
with period Ts :5'1/2FMAx • If S is the sample rate,
the sample period is T s = l/S. Alternatively, the
Nyquist Sampling Theorem states that if a signal has
been sampled at the Nyquist rate of 2F MAX or greater
(S ~ 2F MAX), and the sample values are periodic
weighted impulses, the signal can be exactly reconstructed from its samples by an ideal low pass filter of
bandwidth B where FMAX <:B«S - F MAX )'
Let's look at the problems that arise when we
apply this theorem to generating sound. Any practical
(non ideal) low pass filter will require a transition
band to go from unity gain to 0 gain as shown in
Figure 4. To avoid distortion, the maximum output

BOX 1579, PALO ALTO CA 94302

PAGE 99

and increasing, up to 4 dB down, at frequencies
which approach 1/2 of the sample rate. The reconstruction filter (low pass filter) may be designed to
compensate for this. A different reconstruction filter
should be used for each sample rate anticipated.
The theorem states that the samples from the
DAC should be uniformly spaced, so the sample
period jitter should be minimized. If the sample period jitter error is to be 82.6 dB below the rms level of
a sine wave, the sample period jitter should be less
than (1.18 x 1O-5)/F where F isthe output sine wave
frequency [Talambiras 1977]. So if F is 10 kHz
(10,000 cycles/sec), the sample period jitter should
be less than 1.18 nanoseconds.
The ultimate test of a sound synthesis technique
is the ear. The Soundstream Digital Recorder
[Warnock, 1976] designed by Thomas Stockham, Jr.
has provided one of the most convincing demonstrations of the audio application of this Nyquist
Sampling Theorem. It has played back the cleanest
undistorted music which I have heard from any tape
recorder.
Frequency Resolution
As mentioned earlier, the frequency of the output waveform is the sample rate divided by the num- '
ber of samples in one period of the waveform. *

AMPLITUDE

I,--_~___,

FREQUENCY

SI2

FREQUENCV AESPONSE OF AN
IDEAL LOW-PASS FILTER

f

requency

sample rate

=no. of samples/cycle

The number of samples in one cycle of the sine wave
is determined by the sine table length (waveform
memory) divided by the phase angle increment:
,
/
_ sine table length
no. of samples cycle - Ph ase angl'
e mcremen t

AMPLITUDE
TRANSITION BAND'

-+-_

.L...-_ _ _ _--+_..\--_ _ _ _ _ _
Fma>c

Sf2

Substituting this expression for the number of
samples/cycle into the above equation for frequency:
FREQUENCY

FREQUENCY RESPONSE OF A
REALIZABLE LO·PASS Fll TER

Figure 4.

frequency should be below this transition band. The
maximum sinusoidal component frequency is usually
limited to 36% to 40% of the sampling rate
(FMAX S AS).
It might be noticed that realizable samples from
the DAC will not be impulses; they will have finite
pulse widths. If the pulse, widths are as wide as the
sampling period, the frequency response will be attenuated very little if at all for very low frequencies

_
phase angle increment
frequency - sample rate sme
. t able 1ength
or
F

= S (I /

L)

Eq 1.

The sample rate "s" and the sine table length "L"
will be hyld constant, so the frequency "F" may be
changed by changing the phase angle increment "I".
The smallest increment in frequency (frequency
resolution) will be determined by the number of
bits "b" used in the phase angle increment register
(see Figure 3). The phase angle register should also
contain this many "b" bits. An article entitled "Pitch

* One nanosecond (ns) is' one one-billionth of a
second or I sec/I,OOO,OOO,OOO.

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA

Discrimination at the Threshold of Hearing"
[Rakowski, 1971] indicates that under ideal listening
conditions a very discriminating ear, at best, is capable of noticing a pitch change of between (approximately, as best as could be measured from his graphs)
.03 Hz and .08 Hz around 160 Hz. To specify frequencies to an accuracy of .03 Hz would require 19.3
bits plus a sign bit for FM synthesis in the phase
angle increment register if the maximum output frequency is 20,000 Hz as determined from the following equations:

=

N MAX
NMIN

I MAX

Eq 2.,

I MIN

Where:
I MAX = the maximum phase angle increment which
will produce the maximum desirable frequency of any sinusoidal component
(F MAX ).
IMIN = the minumum phase angle increment which
will produce the minimum step or change
in frequency (F MIN ).
N MAX = the maximum number expressible with
b - 1 bits. For frequency modulation
synthesis positive as well as negative
increments (or decrements) to the phase
angle will be needed. An extra sign bit
will be needed in any registers which
handle frequency or phase angle information. So N MAX = 2 (b ·1) - 1.

=

NMIN

the minimum number expressable with b
bits = 1.
Equation EQ 1 may be used to determine the
phase angle increment, I, in terms of the frequency,
F, sample rate, S,and sine table length, L:
1= (F / S)L

This equation may be substituted into equation Eq 2
for I MAx and 1M IN :

= (FMAX /S)L - -F MAX
--

N MAX

(F MIN /S)L

NMIN

-

1

1

=

F MAX
FMIN

FMAX
b = 1 + log2 ( F
MIN

b =

PAGE 100

I + 3.32 IOg10(F MAX + 1)
FMIN

F MAX may be set to 20 kHz; and a minimum step in
frequency of FMIN = .03 Hz should be inaudible to
most musicians. Substituting these values into the
above equation:
b

=

1 + 3.32 log

10

(20000 Hz + l'
.03 Hz
)

b = 20.3

Thus a 21 bit phase angle increment register
should be capable of generating a glissando or vibrato
which will be perceived as smooth. Minimum changes
in frequency should be inaudible as steps to a listener
with very discriminating ears, even in an ideal listening environment. A computer may update the frequency (incrementing by 1 the phase angle register)
at the right time intervals to generate as slow a change
in frequency as is desired. Alternatively in hardware a
28 bit frequency envelope may be added to the phase
angle increment. For musical purposes a 20 bit phase
angle increment register should be fine with the
following possible exception. If the sound were
played in a soundproof room to a listener who had an
extremely discriminating ear, who had previously sat
in silence for 15 minutes, and who listened specifically for steps in frequency in a slow glissando in the
lower part of the audible frequency range, then the
steps might just barely be noticed sometimes. A.
Rakowski's tests were done under similar ideal'
conditions. He was looking for information in his
tests which would serve as a basis for speculations
concerning the action of the hearing mechanism.
Table 1 shows the resulting values of the minimum
step in frequency for different values of the number
of bits "b" in the phase angle increment register and
for different maximum frequencies.
A musical interval is often measured in cents instead of as a step in Hz. A cent is 1/1200 of an octave,
or 1/100 of an equally tempered semitone in the
chromatic scale. An interval or ratio of one semi tone
is equal to the twelfth root of 2.

I semitone = 2 (1/12)
I cent = 2 (1/1200)

then replacing N MAX and NMIN results in:
2(1)-1)

94302

Eq 3.

A minimum interval (which is an indication of
how accurately an instrument can be tuned) measured in cents "C MIN " may be related to the minimum
step "F M1N " as follows:
F MIN = F 2(C MIN /1200)

- F

FIRST COMPUTER FAIRE PROCEEDINGS

where F = the frequency around which the minimum
frequency step is made. Solving for CMIN :

C MIN

+

0

=3986.31l0g10(~MIN

+1)

Eq5.

F MIN may be determined from Eq 3
Eq 3.

2 (b-1) - 1
1

=

F MAX
FMIN

FMIN = F MAX
2 (b-1) -'- 1

Eq 6.

TABLE 1 Frequency Resolution

b

Fmax

F niin

bits

Hz

Hz

21
20
19
18
17
16
20
18
16
20
18
16
20
18
16
20
18
16
20
18
16
20
18
16

20000
20000
20000
20000
20000
20000
16384
16384
16384
15000
15000
15000
12800
12800
12800
10000
10000
10000
8192
8192
8192
4096
4096
4096

.019
.038
;076
.15
.31
.61
.031
.125
.50
.029
.114
.46
.024
.098
.39
.019
.076
.305
.016
.063
.25
.008
;031
.125

PAGE 101

Substituting Eq 6 into Eq 5 results in

F MIN = F(2(CMIN /1200) - 1)

eM'N = 1200 IOg{F ;'N

BOX 1579, PALO ALTO CA 94302

around
65.4 Hz
cents
.5
1.0
2.0
4.0
8.1
16.1
.83
3.3
13.2
.76
3.03
12.1
.65
2.58
10.3
.51
2.02
8.1
.4
1.65
6.6

.2
.8
3.3

Cmin
around
160Hz
cents
.2
.4
.8
1.65
3.3
6.6
.34
1.35
5.4
.31
1.24
4.94
.26
1.06
4.2
.21
.83
3.3
.17
.68
2.7
.09
.34
1.4

CMIN =

3986.31l0g1O~ F MAX

\F(2 (b-1) - 1)

+ 1\

Eq 7.

)

A minimum frequency step (FMIN of .038 Hz) around
a frequency of 65.4 Hz is an interval or ratio of 1
cent. 65.4 Hz is the frequency of C2 or the note C
one octave above the lowest note C on a piano tuned
to A.t = 440 Hz in equal tempered tuning. This same
step of .038 Hz around 160 Hz is an interval or ratio
of .4 cents. 160 Hz is a little below the note E3 which
is in the octave below middle C on the same piano.
Table 1 shows the resulting value of the minimum
intervals or tuning accuracy measured in cents, CMIN ,
around 65.4 Hz and 160 Hz for each different value
of the number of bits "b" in the phase angle increment register and for different maximum frequencies.
In his article* "Table Lookup Noise for Sinu- .
soidal Digital Oscillators", Richard Moore points out
that a glissando from 50 Hz to 100 Hz will not sound
smooth if a 16 bit phase angle increment (frequency
control) and phase angle are used with a Nyquist frequency 0/2 of the sample rate) of 16384 Hz. As an
alternative to making both. the phase angle increment
and the phase angle be wider words, it is suggested to
only make the phase angle register wider. Then the 16
bit phase angle increment may be shifted left or right
for variable frequency resolution and range. This
phase angle increment shifting technique is useful for
controlling the oscillator with a small computer
which can do 16 bit data word arithmetic and movement. Even the popular 8 bit MOS microprocessors
* F. R. Moore, "Table Lookup Noise for Sinusoidal
Digital Oscillators", Computer Music Journal, Vol. 1,
No.'2,1977.
Table 1. This shows the resulting values of the minimum representable step in frequency "FMIN" and the
corresponding minimum representable interval (or
tuning accuracy) "C MIN " measured in cents around
65.4 Hz and 160 Hz, for different values of the number of bits "b" in the phase angle increment register
and different maximum frequencies. 20 kHz was
chosen as a F MAX since it is the highest audible frequency for many people. 16384 Hz was chosen since
it is a power of 2; so the true frequency could be read
directly from the phase angle increment for human
comprehension. Any maximum frequency which is
not a power of 2 will need a translation program to
convert encoded values of phase angle increment to
the true frequency value. For this reason 8192 Hz
and 4096 Hz were also included. 15 kHz, 12.8 kHz,
and 10kHz were included as maximum frequencies
since they correspond to 40% of the popularly used
sample rates of 37500 samples/sec, 32000 samples/sec,
and 25000 samples/sec respectively.

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

have the capability of performing 16 bit arithmetic.
However they are very slow (even the Z-80) when
working with l6bit data. A useful integrated circuit
(lC) for implementing this shifting technique is the
8 bit position scaler made by Signetics, the 8243. It
is expandable to handle wider word widths and is capable of shifting up to 7 bit positions at once instead
of requiring 7 clock periods like a shift register. If
this shifting technique is used, an arithmetic operation such as addition of a low frequency to a high
frequency would first require shifting inside the computer to line up equally weighted bits. Then the frequencies could be added. Then they might have to be
shifted left or right before sending to an output port.
This would slow down the shipping of frequency control data to the oscillator.
A computer which would be capable of directly
outputting 20 bit data words to the digital oscillator
frequency control would be useful, especially if it
could also perform 20 bit arithmetic without using
double precision words. However I am aware of no a-.
vailable 20 bit computers; and building your own
would require a large amount of software development time since there would be no available compatible editors or other useful system programs. The
VACuuM* is the best low cost computer design of
which I am aware. It is microprogrammable, high
speed (made from 2900 series IC's) and available with
variable word widths (8, 16, 32, or 36 bit data
words). You may microprogram in your favorite computer instruction sets and then use software which
you are already familiar with. You may microcode
your own special sequence of instructions for higher
speed of operation. The VACuuM allows one to dynamically jump from one instruction set to another.
Microprogramming in PDP 11 and PDP 10 instruction sets would be very useful since there is a large amount of useful software written in these instruction
sets. Instruction cycle time is predicted to be around
300 ns for 32 bit data operations. The PC boards and
bootstrap PROM's were estimated to cost around
$350. Then you would have to buy the rest of the
IC's, resistors, capacitors, sockets, etc. You could
start by only buying the parts to build a 16 bit
computer and microcode in NOVA and/or PDP 11 instruction sets. Later you could expand it to a 32 or
36 bit machine. If you bought all of the parts for a 36
bit machine including the PC boards and bootstrap
PROM's in single quantities, it was estimated to cost
around $1800. It would cost less for smaller data
word machines. There will be more information about this processor in a future issue of Computer
Music Journal.
* Tom Pittman and Bob Davis, "A Variable Architecture Computing Machine", Proceedings of the
West Coast Computer Fa ire , 1977.

PAGE 102

Sine Table
The size of the waveform memory or sine table
will affect the signal to noise ratio. If all 20 bits of the
phase angle register were used to address the sine
table, the sine table would be 1 million words long.
Fortunately this is not needed. Fewer bits may be
used to address the sine table without affecting the
frequency resolution if the number of bits in the
phase angle register and phase angle increment
register is not reduced. If the 12 most significant
bits of the phase angle register are used to address a
3600 sine table (truncating the 8 least significant
bits), 212 = 4096 words of sine table memory would
be needed. For more details, please read through the
article "Table Lookup Noise for Sinusoidal Digital
Oscillators." If the address of the sine table memory
is rounded off to 11 bits instead of truncating it to
12 bits, the table length may be reduced to
2" ;:: 2048 words and maintain the signal to noise
ratio of that obtained when truncating the address to
12 bits. It is not worth the computation time to make
an interpolating table for real time operation. Most of
of the sine tables in computer music software in
universities use 512 words in their sine table with the
interpolation technique. This corresponds to a signal
to error noise ratio of 95.1 dB. For non real time
operation interpolation is very useful.
A listening test to determine the necessary size
of the sine table was recently conducted at the Center
for Computer Research in Music and Acoustics
(CCRMA) at Stanford University. Different memory
sizes were tried for the table in generating a low
frequency FM tone which was believed to be the
worst case. A 4096 word x 12 bit/word table for
3600 of a sine function was perceived to be just as
distortion free as a 65536 word x 16 bit/word table.
However a 1024 word x 10 bit/word table generated
an objectionable amount of noise. The truncation
method of addressing the sine table was used. The
test would indicate that if the round off method of
addressing were used, 2048 words would be needed
for a 3600 sine wave with negligible distortion.
In examining one cycle of a sine wave, it may be
noticed that the first half (0 0 up to 1800 ) of the
cycle is identical to the second half except that the
sign is changed. One may store only 1800 of the sine
function in the sine table and then change the sign of
the output sine wave every time the waveform memory address is incremen ted to or past 1800 (or decremented below 0 0 as in FM synthesis). The sine function may be generated from only 90 0 ; however in my
design the control functions for incrementing (and
decrementing) the phase angle with a 90 0 sine table
required more integrated circuits (lC's) than the number of IC's required with a 1800 sine table. If anyone

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 103

Sign of sine

Figure 5

WAVEFORM MEMORY
1800 SINE TABLE
RAM

I

11 or 12 Bits

x 11 or 12 Bits

1k

Addre••

~10r

MOlt
Sianificlnt
81t

PHASE ANGLE
INCREMENT
REGISTER

ROUNDOFF
ADDER

20 Bit.

~

4

ADDER

~8

,••

INVERTER

H~IJ

sign

Ol

r

sl9n

+],

MULTIPLEXER

;;;

i

20

I

PHASE
ANGLE
REGISTER

20 Bit.

l

rro~,
~ignOred

,

•

c
t

f

II

20 Bits

has found a simple method of controlling the phase
angle with a 900 sine table which will allow for incrementing or decrementing of the phase angle by as
much as 1620 , I would appreciate hearing about it.
As shown in Figure 5, the output of the sine
table is fed into one data input of a multiplexer. The
other data input of the multiplexer is fed by the
inverted output of the sine table. The most significant
bit from the round off adder ·is used to select the
inverted or noninverted half of the sine wave,
r.esulting in a sine wave with a positive half cycle and
a negative half cycle. The addition of one to finish
forming a 2's complement negative number was
assumed to be insignificant and thus was not included.
The sine table size experiments at Stanford indicate that a 1024 word x 11 bit/word, 1800 sine
table memory will generate a negligible amount of
distortion if rpund off addressing is used. The phase
angle may be rounded off by adding bit 8 of the
phase angle to the 11 bit word formed by bits 9
through 19. As mentioned earlier the most significant
bit from this round off addition is used to determine
the sign of the sine wave. Bits 0 to 7 of the phase
angle are ignored in -addressing the sine table.
However the full 20 bit angle is used in calculating
the phase angle sp that accurate frequencies are generated.

Since fast RAM's are less expensive than fast
PROM's, RAM's were chosen for the sine table. This
also enables the sine table memory to be loaded with
another waveshape if desired; however I doubt this
feature would be used due to the time multiplexing
of the sine table. The generation of a few hundred
sine waves is probably more useful than a few hundred of any other waveshape. The 1800 sine table
may be stored in three 1 k x 4 bit RAM IC's such as
the AMD (Advanced Micro Devices) 9135 or Intel's
2114 or the soon-to-come fast VMOS RAM from
AMI (American Microsystems Inc.). Alternatively the
sine table could be made with eleven of the less
expensive 1 k x 1 bit RAM IC's such as the 21 02A or
9102. For high speeds the AMD 9135J RAM or the
VMOS RAM from AMI will be useful.
The output from the sine table will have a constant amplitude. The amplitude of the sine wave is
fed into a multiplier which multiplies the sine wave
by an amplitude which may vary in time as illustrated
in Figure 6. In an analog synthesizer this is similar to
connecting the output ora voltage controlled (control of frequency) oscillator to a voltage controlled
amplifier signal input. The control input of the voltage controlled amplifier would be used to vary the
amplitude in time (often controlled by an envelope
ge,nerator). The frequency of the digital oscillator is,
binary number controlled as is the amplitude input of
the multiplier.

FIRST COMPUTER FAIRE PROCEEDINGS

PAGE 104

BOX 1579, PALO ALTO CA 94302

sign of sine

Figure 6
WAVEFORM MEMORY
1800 SINE TABLE
11 or 12 Bits

RAM
1k x 11 or 12 Bits

I

Address
Most
Significant
Bit

PHASE ANGLE
INCREMENT
REGISTER

,

10

II
ROUNDOFF
ADDER

20 Bits

~8

I

01

;;;

=

iii

20

Hi,J
I

c

$1,

t

MULTIPLEXER

r.:..I

20 Bits

How wide a multiplier is needed? If a 12 bit sine
wave is multiplied by the contents of an amplitude
register of infmite width the resulting signal to noise
ratio is only 6 dB above that which results from using
a 12 bit wide amplitude register. If 16 bits are used in
the amplitude register, the signal to noise ratio of the
product is about % dB less than that resulting from an
amplitude register of infinite width.
Generation of Many Sinusoidal Components
Building a separate oscillator for each sinusoidal
component would be expensive if one desired over
100 sinusoidal components. However one low distortion digital oscillator may be time multiplexed to generate a large quantity of low distortion sinusoidal
components (with independent control of each frequency and independent control of each amplitude).
The number of sinusoidal components which the
oscillator will generate is determined by the speed of
the IC's and the sample rate.
If the sample rate is set to 40,000 samples/sec,
a new sample must be generated every 25 us·. Each
• A microsecond (us) is one one-~iI1'ionth of a
second or I second/I,OOO,OOO.)

AMPLITUDE
REGISTER

F

~O~7
~ignOred

PHASE
ANGLE
REGISTER

20 Bits

s
e
I
e

INVERTER

j ~il
)"

120r13Bits.
/'

MULTIPLIER

X
1..L

output sample from the DAC is the sum of a sample
from each of the sinusoidal components. If 100 sinusoidal components are desired, each sinusoidal component will be allotted 25 us/I 00 = 250 ns to compute its sample. With a sample rate of 25,000
samples/sec 40 partials can be generated if each
sinusoidal component sample is calculated in
40 us/40 = I us.
The number of sinusoidal components which
may be generated is inversely proportional to the
sample rate (and thus the maximum output frequency). It is possible with very fast IC's to generate
512 partials at a sample rate of 50,000 samples/sec
thus enabling a maximum frequency of 20 kHz. To
achieve this would require a very large quantity of
expensive, heat generating ECLIC's including a very
high speed multiplier such as the parallel pipeline
multiplier discussed in the first issue of Computer
Music Journal. A couple of less expensive implementations which require fewer IC's and generate a
maximum of 256 sinusoidal components (dependent
on desired audio bandwidth) will be described.
What kind of modifications must be made to the
digital oscillator in order to generate many sinusoidal
components? In Figure 6, the phase angle increment
register must be replaced by a RAM which contains

PROCESSOR OUTPUT BUS

sign of sine
20
Bits

REGISTER

WAVEFORM MEMORY
1800 SINE TABLE

r

REGISTER

I'
10

Most .
Significant
.Bit

Data In
A
~ PHASE ANGLE
r INCREMENT
e
RAM

•

e

ROUNDOFF
ADDER

s

•

,i

Address

20
Bit.

8
~

~ or 12 Bits

RAM lkx 11 or 12 Bits

Data Out

1~

CJ)

rJ

12
or
13

Bit 8

20 Bits

A~
20
Bits

Clkl ~

RE~

IpBJ

s.

r

MULTIPLEXER

:l

iD

20
Bits

~ "'UTUD'
RAM

I
e
c
t

1

•

5
e

Parallel In

0-7
ignored

eO
ru
i t
a
I

Data Out

S

e

MULTIPLIER

r
S
i
•
a PRODUCT ~
I
n
I

X

5
SHIFT
REGISTER

Data In

a
I
n

•I

0
u
t

25LS14's

Data Out

SHIFT
REGISTER
14LSI64
P.... lelOut
20

A

d

~~•

PHASE
ANGLE
RAM

20
Bits

Clk 1

Data In

28 Bits

1
20 Bit.

)j

m

::r

a

m
m

I
~

ADDER

"

j

~

Accumulator

6

20 Most
Significant Bits

~

28 Bits

1

~

,..--

4~

..j
16 Bits

L...-----<
25LS14

S
e
r
i
a
I

~

ProdiJct

r

0

I

I
Clk 1

20

V
REGISTER
74LS174

I

A
_d
8 Bits d
_r
e
s
s

Clk 1

.~

28 Bits

a!

Parallel Out

20

Data Out
PHASE
ANGLE
RAM
256 x 20
2101A-4

SHIFT
REGISTER
74LS164

J

u
t

~.
ADDER
74LS283

S
e
r I
i n
a
I

i

I

m

"V

C

m
m

~

ADDER
74 LS283

~

~

Accumulator

20

~:0

8

..I
REGISTER
74LS174

m

:0

T

N

Data In

C!
~

REGISTER
74LS174

20 Bits

0

83:

20 Bits

~

20 MOst
Significant Bits

16 bits

ffir!
1-;.- 1-----1
!!!~

Cl ...
~,...

....-()

0(

~

0

'--20 Bits

PROCESSOR
INPUT BUS

'---

~

28 Bits

~

I

0-

REGISTER
With
L----l
Standard
and
Three
State
Outputs
25LS18

o

....--

H

~ ~

~~5
H
II: II:
I-

Cl

L..--

~

r--

:t",ffi

9~!:i
0.._

§

~ Audio
Amplifier

IL

'---

Figure 8

im
S

FIRST COMPUTER FAIRE PROCEEDINGS

PAGE 108

BOX 1579, PALO ALTO CA 94302

correct instantaneous modulation amplitude is added
to the appropriate carrier frequency.
The address of the phase angle increment RAM,
the phase angle RAM, and the amplitude RAM may
be controlled by one 8 bit up counter. As shown in
Figure 9, the output of the counter is compared with
the number (N) o[desired sinusoidal components. If
they are equal, the counter will be reset. When
clocked, the output Of the counter will be changing;
and the comparator might erroneously try to reset
the counter. A one shot is utilized to prevent the
counter from being reset just after the counter is
clocked. A second one shot guarantees that a minimum clear pulsevvidthwill b~ provided.
The 8 bit register which holds N is loaded from
the computer output bus. To avoid the possibility of
loading the N register at a time when the counter
might need to be reset, the 4 most significant bits of
the counter are used to prevent the N register from
being loaded unless the counter is in the early part
(counter output of 0 to 15) of its counting sequence.
The controlling computer plac~s the value N on its
output bus and then sends a ready signal to strobe N
into the N register.
When the frequency of the second sinusoidal
component is read from the phase angle increment
RAM, the amplitude of the first sinusoidal compo-

nent is read from the amplitude RAM. With this
timing, a sample of the first sinusoidal component
from the sine table arrives at one input to the multiplier at the same time that the amplitude of the first
sinusoidal component arrives at the other input of the
multipiier. The computer which updates the RAM's
must realize that the counter addresses the frequency
of the nth sinusoidal component at the same time
that it addresses the amplitude of the (n-l) th sinusoidal component. The method of updating the frequency is shown for the phase angle increment in
Figure 9. The digital oscillator frequency control is
allotted (hardwired to) a group of 256 of the available computer addresses. The 8 least significant bits
of the computer address bus are compared with the
counter output, while the most significant bits of the
computer address bus are compared with the allotted
(hardwired) address of the digital oscillator frequency
control. If both are equal, and the update frequency
is ready, and clock I is at a high level, then the new
frequency value will be written into the phase angle
increment RAM. The amplitude RAM is updated
similarly. Amplitude envelopes as well as frequency
envelopes may be generated in the controlling computer's software and used to update the corresponding amplitudes and frequencies. Simple hardware
envelope generators are used in the oscillator shown
in Figure 10.

COMPUTER ADDRESS BUS

Update
Frequency
Ready

74LS10
Clk 1

=

Clk 1

74 LS04
Oscillator Frequency-........---l
Address (Hardwired) _....,..._--.

R/Vi
.------------ICk
Clear

L -_ _ _ _ _ _ _ _--"'I A

COUNTER

8 Bits

r------------..i

74LS393
4 Most
Significant

~

PHASE
ANGLE
INCREMENT
RAM
2101A-4

~~gwBits

N ready

COMPUTER OUTPUT BUS

Figure 9. Logic Circuit for addressing and updating the RAM's in the slow oscillator.

FIRST COMPUTER FAIRE PROCEEDINGS

Prices and quantities of the integrated circuits
for the slow inexpensive oscillator diagrammed in
Figures 8 and 9 are listed in Table 2. The price of a
PC board or socket board plus the small cost of
miscellaneous' capacitors and resistors should be
added to these prices.
The DAC's, track or ground switches, and low
pass filters are not listed in Table 2. The track or
ground is a bipolar switch so it may be constructed
from a few transistors which cost next to nothing.
However the DAC will be a major cost. Datel manufactures a 16 bit DAC called the DAC-HR 16 B which
costs $299. This is the least expensive high fidelity
DAC of which I am aware. A less expensive 12 bit
DAC such as Harris Semiconductor's HI-562A-5
might be used for initial experimentation and later
replaced with a higher fidelity DAC. This Harris DAC
will settle to.:!:.l/l0 LSB in 150 ns at 25°C and costs
$29 in 100 quantity (probably around $40 for one).
The low pass filter needs to be maximally flat in
its pass band and have a very sharp frequency roll off
above the cut off frequency (seven pole filters are
recommended). A voltage controlled low pass filter
would enable the cut off frequency to be dynamically
changed as the sample rate was dynamically varied

BOX 1579, PALO ALTO CA 94302

PAGE 109

between several fixed values. With a dynamically
variable sample rate, high frequencies could be
generated with a few sinusoidal components during
one section of music, while in another section of the
music a large number of sinusoidal components
could be generated with a lower maximum frequency.
However voltage controlled 7 pole low pass filters are
difficult to design. CCRMA at Stanford University
currently uses several of the low pass filter series, the
J77C, made by T. T. Electronics. * These are very low
noise and distortion filters (since they are passive)
and have approximately Y2 dB of ripple. The transition bandwidth from the cut off frequency to 0 output is narrow enough to allow output frequencies of
40% of the sample rate. T. T. Electronics is now
making a new filter series, the J87C, which has an
even narrower transition bandwidth. If the noise, distortion, and ripple of the J87C is as low as that of the
J77C, it should be useful for generating output frequencies possibly as high as 44% of the sample rate.
Every time the sample rate is changed a different low
pass filter is needed. At $65 for each of the T. T. E.
filters this could be expensive if several different
possible sample rates are desired.

* T. T. Electronics, 2214 S. Barry Ave., Los Angeles,
CA 90064, (213) 478-8224.

Table 2. Prices and Quantities of IC's for Slow Inexpensive Oscillator
(Prices listed are manufacturer list prices, not "surplus" or discount dealers prices.)

-=----:--.,..----------+-1
._M=an~u~f.aclure.r Part Nwnber_~.rice Pe.!...K....-_Quantity of IC's-=-R.:.::e.:1gu:::::i~re:..=d,_..::;S=ub~t~ot=al::..;P::.:n;::·c~e
Phase Angle Increment, Phase Angle;
and Amplitude RAM's
(256 ~'!J~_i!_~~:s).,
Waveform Memory
_Jl,k ~}bit ~!)
Registers
~g1ster with standard
and 3 state outputs
-Aifders
..
-_.,_
..... __.. Multiplier
shftfRegistel
(par~Je) _~ serial out)
Shift Register
(serial in parallel out)
Inverter
Multiplexer
'Co'unter
Comparators
'Shots
4 input NOR gate
S R flip flop
ITnp.t!!~.gates .
3 input NAND ~ate

, _.__ . J '

One

i

2101A4

4.20

14

58.80

2101A-6
74LS174

3.25
1.58

11
37

60.04

Am 25LS18
74LS283
Am 25LS14

3.78
1.85
13.93

5
20
2

18.90
37.00
27.86

74LS165

2.50

2

5.00

74LS164
74LS04
74LS157
74LS393
DM 8131
74123
7425
74LS279
74LS08.

2.20
045
1.70
5.00
4.00
1.15
.80
.90
040

3
3
3
1
5
2
1
1
1

3~.75

6.60
1.35
5.10
5.00
20.00
2.30
.80
.99
040
~._.~
.--L.. __ ~..~ A~,~~ ...
112
286.20
Total Number of IC's
Total Cost

.'. ._l._.__.__.___?~~l~_.J_~_.:~~ ___,___.__ __.___

not including DAC, track or hold, and low pass filter

FiRST COMpUTER FAiRE PRQCE-EDINGS

.BOX 1579, PAL.O ALTO CA 94302

Table 3 lists the number of sinusoidal components which may be generated with a given sample
rate using ·the inexpensive slow oscillator shown in
Figures 8 and 9.
TABLE 3. Trade oU"between the number ofsinusoidal components which may be generated and the
sample rate for the slow inexpensive oscillator shown
in Figures 8 and 9. The 25LSI4's in the multiplier
the main speed bottleneck in this oscillator. For mor .
sinusoidal components at a wide bandwidth see the I
faster oscillator shown in Figures 10 and 11, and
i
Tables 4 and 5.
;
.__. ·__ ····[_· .. ···_··---·T· .-.............".. ' ......._ .. "._._----1

! Sample

Maximum
Number of gene ratable
Output
sinusoidal components
Frequency
!
of any
sinusoidal
component I for a ,'. for a
. (40% samplep2 bit x 12 bit 12 bit x 16 bit :
_ _ _:7._•...hI:~~~_ .._. __ ~~:u.~~~}.i.C~E~~. fl..tp~liP..I.!~!ti.<
X'
Address
- i- - - - - ; - , - - - " r - - ! ,
-"",- ' - - - - "--T3_T4~T5-'1i
,

RAM
Read/Wilte
elk 1

T1 =

:

•

~I-,- - I

t--T, ~T2+'

I

,

~Tl~

L

-,--_---!t-,

L...._ _

the read address access time of the RAM plus
the data set up time of a register.
T2 = the clock to output delay of a register plus
the data set up time (before the beginning of
the write pulse) of the RAM.
T3 = the RAM write pulse width.
T4 = the RAM address hold time.
T5 = the time' needed to change the address. The
counter which generates the address already
has the next address, so the pipeline register
(between the counter and the RAM) clocks in
the next address. Thus T5 will simply be the
clock to output delay time of a register.
. TT = the total delay time of one pipeline stage.

BOX 1579. PALO ALTO CA 94302

FIRST COMPUTER FAIRE PROCEEDINGS

PAGE 111

Table 4. The number of sinusoidal components which may be generated depending on the time delay of the
slowest pipeline stage. The time delay of a pipeline stage is summed from the time delays of the Ie's within
that pipeline stage. The delays of several different possible combinations of Ie's within a pipeline stage are
shown. The left half of the table assumes that the phase angle computation stage will be the slowest pipeline
stage. The right half assumes that any 20 bit addition stage wiIl be the pipeline bottleneck (which is unlikely).
The bottom of Table 4 shows the number of sinusoidal components which may be generated depending on
the sample rate and the Ie's which are used (assuming that one is wiIling to buy or build a fast enough multiplier - the multiplier wiIllikely be the bottleneck).
Delay Time (nanoseconds) in RAM Stages as a
Function of Which IC's Are Used

Manufacturer Part Number

I

RAM read
address
access time
"'.... "-.-.-... "'..-."'."'...... -...--....

--:---1------------.. . . .

74LS202
35 typT 45 max! 45 max I'-~:--I
82S116,!
I 40 I 40 I
I i
93LA22
I
: '60 I 60!
2101A·2
r
i
!
!
i
i 250
.. ... -- .......-......"'''' .. - -_'''''' _.-._.....--.-... - --· .. -t· .... -· .. ··-......
+.......
i ......... !..... ....j- ..

-T-.-. . . .

-i;~~::---:j~m-::-~I-Sj
!
l

: I:: i sf : ......
1S

!

i

. to output delay
748174'
17
,17
I 17
- - - - -.. - .."' ..... ---- ..-.- .. -.-..... -. "'......-- ....... - ...... "' .... _- ..... 1---....-........... ~ ... - ......................... - ............... -1..........
RAM data set up
before leading
edge of write
pulse width
RAM write
pulse width

74LS202
82S116

O !. 0
~
' :

0

~

93LA22

2101A·2
74LS202
828116

-;:;;~.--:-:------.-.--=.----

f---o:-:---

15 typ

hold time

.

~' .~ ----~--------~

_~d:t~::td:l-ay"'.--_"'~:!~;~._

!I

i

O!

I

I 25

25 ;

j:

.
45

.......... -.........

.-

I
I
I

5:
0

-...... ............. " ..

,
45/
150

---':S·typ·'· Omax:·O·maxT··. '...... :......; . "' . ,.j .. - .... :-..- ...... - .. ,. ,"
I

82S116

~-

I

.---"'-.~--"'--

'

0

93LA22 ,

2101A.2
74Ls174
748174
74LS174

0

.

j ! 5:
.;
I!
...-t--"'---.... _.... -...- .. ......
25 max: 25 max I
::

93LA22

2101A·2
'·RMfa(fdreSs"·-·"·-"'·"'·'74i..Siof·

·Addre"'ss-·"--- -..
change .time
-----... -..-..•. •.
Register clock

Delay Time in Adder Stages
As a Function of Which IC's
Are Used

:

:

:

5'

5i

0:

!

!

;

i

30!
' 30' , 1 30~
, 17
:
: 1 7 :t -.-.--- -+-- .....17:
t---...._________ ..•___
_.. -.... - .
•
.
;
,
'
! ...
30

i·

o
30
...

-0-______ • -, .-••

-..-.._.'

-~....-.....-"'--t-.. . .---..-,~.. , . . -., . . ~-,. '.'......~

301
"·107

'r~~

30
69·' ....6197 '

74S283
! ;
II
748181,74S182
, i
1
- - . - - -..-...........-.......--........,"'.-- r-'- .....-.....__ ...--, ...,-...• '--..-...,. __....;..... ........... _, .....;." .......
, ...
Register data
74LS174
. !
I'
20
iO'
set up time
748174
i
5
Total time delay of 1 stage
125
150
109
145 104 195' 154 t 480 157 129. 119

~7

time

I

I

Number of Sinusiodal Components Which May Be Generated

~~'-.-;

_....
--. .

.-----~--::-::-----:=:".-.--:-::-:~-.--

-;--_ .•.. __ ..• -_. •

44

I

!!

I

Sample
Sample IMaximum
Rate
Period
Frequency
samples/sec us
Hz

···1,

5:
9

5

iT"66-

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

o ns, maximum 5 ns. For higher speed, the 74LS202
made by Texas Instruments may be used in the phase
angle RAM. It has a read address access time of typically 35 ns. Maximum specifications were not available before the journal went to press, however I suspect it would have a maximum read address access
time of 45 ns. The .write time plus address hold time
is typically IOns and I suspect it would be a maximum of 25 ns. The 74LS202 should be typically
30 ns faster than the 93L422, and a maximum of
40 ns faster. The main disadvantage of the 74LS202
is that it is 256 x 1 bit, so 20 of these Ie's would be
needed for the phase angle RAM as compared to 5 of
the 93L422. However the 93L422 is manufactured in
a 22 pin dual inline package (DIP) while the 74LS202
is available in the convenient 16 pin DIP. The 93L422
is priced at $24.95 in quantities of 1 to 24 as of
April, 1977; while the 74LS202 is priced at $5.25 in
quantities less than 25 and $3.75 in quantities of 25
to 99 as of May, 1977. The power supply current on
the 74LS202 is 55 mA typically, 70 mA maximum,
so it should not become hot.
Signetics makes a 256 X 1 bit RAM, the
82S1 16, which is typically 10 ns faster than the
74LS202. Address access time for the 82S116 is
typically 30 ns with a maximum of 40 ns. The data
setup time is specified from the end of the write
pulse width and is the same width as the write pulse
width. The write pulse width is typically 15 ns, 25 ns
maximum. The address may typically be changed 5 ns
before the end of the write pulse, and at worst
changed exactly at the end of the write pulse. Thus
the time required to read, then write to the same
address is a maximum of 65 ns, 40 ns according to
typical specifications. This maximum time is about
5 ns faster than my estimated (but unspecified by
Texas Instruments as of this writing) maximum time
for the 74LS202. The 82S116 costs $11.20 in quantities of less than 25, $10.00 in quantities of 25 to 99
as of May; 1977. Power supply current is 80 mA .
typically, 115 mA maximum; so this Ie should not
run cool. Since the 74LS202 has not yet been fully
characterized, it is difficult to decide which RAM to
use. Texas Instruments generally provides conservative specifications. The 82S116 presently costs 2 %
times as much and J;onsumes approximately 1 Y2
times as much power supply current as the 74LS202.
Unfortunately these two Ie's are not pin compatible.
When attempting to minimize the number of
Ie's .required and yet still desiring high speed, the
93L422 is a good choice for the phase angle RAM. To
minimize costs at the beginning of the project,
2l0lA-2 RAM's made by Intel could be used. Later
when a wider bandwidth with a large number of
sinusoidal components is desired, these RAM's could
be unplugged from their Ie sockets and replaced with
the pin compatible higher speed 93L422 RAM's. The

PAGE 112

2l01A-2's are 256 x 4 bit static RAM's which cost
$5.50 each in quantities of under 25 as of February,
1977. The read address access time is 250 ns maximum; and the write time is a maximum of 150 ns if
writing to the same address as the read address.
In looking for fast RAM's, it was assumed that
the phase angle calculation stage of the pipeline
would require more or about the same amount of
time as the multiplication stage. This assumes that the
multiplier can multiply two words in less than 200 ns
and preferably in approximately 100 ns. The TRW
MPY-16AJ will latch and multiply two 16 bit words
in a maximum of 190 ns. The MPY-12AJ will latch
and multiply two 12 bit words in a maximum of
175 ns. TRW is working on a lower power version of
these multipliers which is expected to be faster by a
factor of 1.5 to 2 (thus multiplying-in approximately
100 ns). Monolithic Memories 67558 expandable
8 bit multiplier should also be considered for high
speed. Unfortunately these high speed multipliers are
expensive. The MPY-16AJ costs $300 in single quantities while the MPY-12AJ costs $165 in single quantities. The MMI multiplier price has not been announced yet; however, it will probably cost between
$50 and $80 when first released.
Using the design shown in Figure 10, Table 4
shows the time delay of one pipeline stage as summed
from the individual Ie time delays within the pipeline
stage. The left half of the table assumes that the
phase angle computation stage will be the slowest
pipeline stage. The right half assumes that any 20 bit
addition stage will be the pipeline bottleneck (which
is unlikely). Most of these times assume that TRW
will be able to manufacture a faster high resolution
multiplier so that the multiplier does not become the
bottleneck. If TRW's 190 ns multiplier, MPY-16AJ, is
used for a multiplier, I would recommend using the
Fairchild 93L422 RAM and low power Schottky Ie's
for adders and registers. The parts picked in Figure 10
assume that a multiplier with a typical multiply time
of 125 ns and a maximum of 157 ns is used. A
parallel pipeline multiplier constructed from Monolithic Memories' 67558 Ie's should meet this spec if
TRW is not able to product a higher speed multiplier.
The bottom of Table 4 shows the number of sinusoidal components which may be generated depending on the sample rate and the Ie's which are used
(assuming that no other pipeline stage is a bottleneck).
Ie's were chosen for the oscillator in Figure 10
with speed and relatively low power consumption in
mind (so that little heat is generated). If the heat
erated by the Ie's is minimized, the number of fans
(which are acoustically noisy) needed to cool the circuit will also be minimized. Rotron now manufactures a very quiet fan which would be useful for cooling the multiplier circuit. If still higher speed is

FIRst COMPUTER FAIRE PROCEEDII;~GS

desired, the low power Schottky IC's could be replaced with their pin compatible Schottky parts. The
Signetics 82S116 could be used in the 256 word
RAM's and I k x I bit bipolar RAM's such as the
Fairchild 93415 could be used in the waveform memory. However price and power consumption would
take a quantum leap.
The RAM address control logic for the oscillator
shown in Figure lOis not drawn here. However a
timing table for this pipeline is shown in Table 5. This

PAGE 113

BOX 1579, PALO ALTO CA 9430Z

table uses a total of 7 sinusoidal components, but the
timing is applicable to any number of sinusoidal components.
The address of the amplitude of the nth sinusoidal component changes every sample period since
the amplitude is written into the amplitude RAM
2 periods of Clk I (2 address changes) after it is read
from the amplitude RAM. So the address of the
amplitude RAM provides no direct clue to determine
which sinusoidal component amplitude may be up-

Table 5. Timing Table for the High-Speed Oscillator Design shown in Figure 10.
Frequency Slope
RAM

Phase Angle
Increment
(Frequency)

Amplitude Slope
(of Envelope)
RAM

Phase Angle RAM

Dat' ~Triiten- A"ddieSS Reid Dii,

Address -Read

j-

~__ . _ - ~-2

_._~

..

6

. ".

6

-~y---iipciate-

address

I

orwait

.

------

---+----____~------~~------+_----~----------_r--------~----------~:
0
I
..- . .....

I := I+

_.j_ .... 0 ___

~2

.. -

:=

-

0

5
6

, .... _._ _ j .
14.6
5
ri

o·

=~J_O~_ -~ ... - ········-4~-~·-1 .. -o~··l; . :··'4;_~____

2

3

3

5

4
5

4
5 ... _1

6.+
0
•

6

.. ..
,

6

....

L __ t ..

I ._.
~

__ .

1

. ...

5

2 .. i _ 6
3 ;.. 0
1.. .. 4:. _L 1

~~ress ! :~:t ~----~ .. --~---~-- ... ~-.;
.. -----.Q.-~--- - ~
I . . . . _._~. . . . " =1I. ~
~~--"'1' .2 t 6
0 i
6

-.. !

..!

~::. ~

I.

~

!-'any

I

i ~ . ~
I ;
!

1

i

!

update '"
4
or wait·
5
i O! 6
~
1
10

.
-

;

5
6

f

I
i

-1

-

0:

2
1211!
3!
3
i
2,
I'
1
f
4!
4
l
3,2
_.__ ?...:
5
_I
4
i
3 i
1
6
6'
5:
4;
~~---·t
d t
I 6 j 5 '

~~ress
n

: :;:t[-o-'
n

~

!f
I

_ 2

x

5
6

=

0

2
3
4.

~

~

;

!

4
5
6

1

1

5

J-6---1'

0

1 n-2

x!

6

2

3

3

.. _____0

4

1

~

i

._ .. _.. L

I
1

I.

J ., 1 .. "" I

3

!-- .. 3 .

'i---' -4---;-'---4" --,
5 4- ..
61

5
6

; any'l ~pdate

5
6
-

address! or wait

-

6
o. , 4
-':
1
;
0
2 "----' i""

l' :3 --. ---2-

I
i

1

4
5
6

,0
1
I
2
'
3

I

!

3;
4
5 '
6

.,

1
2
3
4
5
6
-

0
I'
4
4
5 •
2
5!
5'
6
i
3
1616.0'114
I,.
any
update •
1
5
2!
6;
address: or wait

01

01

0

1
2

1
2

I
i

i 3Jl

-

.
,

314;
1

!

!

I:.

0
1

0
1

-il-i- -:
I

!

n -4 !

_.

1

o

I

-~

___ . _0

2

I ;'i!

'1! -

1
!

..

-t·= '

-: update
- II 45 any
2

I

!

-~.-

1, -t- _. .7 "--'1 6 ~ 0','

~.

1.. .

j

-1'-' 4----:.I
n-2

1

f

4
5

o
1

:

_

0

L_.3.

.

23

2

1
2;

1
2

o?

11
2'
:
3;
4

i

o 10:

o
3
4
5
6

_

address; or wait

6

1
2

I

,,'

Ij-

.....01 . _~,'._.... -..._01,_. .' -, J.....45._.. .~;' . ,.. :: _.:

t
Iii

i
11

-I

-,--.~---.l ,.,3 +_
4:
4'

1

l i t

address,

o

"j"',

3
4

t

\.~ ... J

_ ~

O·

r
1
. . 5 -----1-i---6-·-t·--··-C··-t···-·-6-··

__

lator

I

Written Address Read Data Address! Written: Written
i Data Data
Data

~==!::. ~ - 1-- ~·I ~ 1- ~L

r-"-'

I

RAM

--.. " ----....--- ... --. '-'---" ....- '--"-"'- --.----t--:----.. -

Data

-~
_____2

IAccum-

Amplitude

1

n-4

n-4

3
4

j

I

•

;
4
5
6
do not
write
-- 0-'1
2
3

4_
5
6
do not
write

0

t"

2
3
4
5

6
- ' do not

-

Li~--t---!
__ -:if 1
I

j

x

n-6

n-7

BOX 1579, PALO ALTO CA94302

FIRST COMPUTER FAIRE PROCEEDINGS

PROCESSOR OUTPUT BUS

Frequency
Envelope

20

I

REGISTER
74LS174

I

REGISTER
74LS174

y

20

20

I

F
r C
e 0
q n
u t
8
r
n 0
c I

20

81_

20

I

MULTIPLEXER
74LS157

REGISTER
74LS174

20 Bits

Data In
A
d FREQUENCY
d
SLOPE
8 B:E; r
RAM
e
256 X 20
s
93L422
s
Data Out

Data In
A
d PHASE ANGLE
-:j>d 'INCREMENT
RAM
e
256 X 20
s
74 LS202
s
Data Out

.!!:r

20

20
Clk 1

..

1

20

REGISTER
74LS174

MULTIPLEXER
With Storage
74 LS398

Clk 1

WAVE FORM MEMORY
1800 SINE TABLE
20 Bitl

J

RAM 1k X 11 or 12 Bits
Am 9135 J

20

Address

I

ADDER
74LS283

l

r--

Clk 1

Clk 1

REGISTER
,74LS174

~ 7 FM
G 4 Register

MOlt
Significant
8it

I
i 20 Bits
~~n
FI 4
~'--.I<----lI-..K.....,
I.
~

ADDER
74LS283

I

e

r

REGISTER
74LS174

I

iii

REGISTER
74LS174

J20

I

I

Clk 1

Clk 1

REGISTER
74LS174

ADDER
74LS283

I

REGISTER
74LS174

I

I

Data Out
PHASE
ANGLE
RAM
256 X 20
74LS202
Oat. In

A
d
d
~
.!or
e
s
s

-J120L-________~

L-____________

20 Bits

Figure 10. High Speed Oscillator

rt

I

20

20

20

Bit 8

d;

20

FM & Vibrato
Holding Register

ROUNDOFF
ADDER
74 LS283

CI>

20 Bits

J
Clk 1

10

11

20 Bits

20

O·

a
t

•

oU
t

REGISTER
74LS174

I

o

ignored

;. F.fRSTCOMPUTERFAIRE PROCEEDINGS

BOX 1579. PALOALTO CA 94302

PAGE 11&

PROCESSOR OUTPUT BUS
Amplitude
Envelope
Slope

12
to
16
REGISTER
74LS174

I

REGISTER
74LS174

MULTIPLEXER
74LS157

~

A
m C
12 P 0
to I n
16 i t
t r
u 0
d I
e

12
to
16

REGISTER
74LS174

J

Data In
A
d AMPLITUDE
SLOPE
d
RAM
r
e 256 X 1210,16
93L422
s
Data Out

12 to 16 Bits

Data In

A

d AMPLITUDE

"it

d

RAM

....;;, r 256 X 121016
e
74LS202

•

•s

12
to
16
Bit

Data Out

Jt

sign

REGISTER
74LS174

Clk 1

MULTIPLEXER
With Storage
74 LS39B

Clkl -

12to 16 Bits

11 or 12 Bits
'-

J

""

12
to
16

l

J

ADDER
74LS2B3
s

I

INVERTER
74lS04

Hi~

I

I
e
c
t

1i9n+l

I
N
P
U
T

12 or 13 Bits

~

R
E
G
I
S
T
E
R

I
MULTIPLIER

X

I
N
P
U
T

R
E
G
I
S
T
E
R

r-

12 to 16 Bits

R
E
G
I
S
T
E
R

16 Bits

OUTPUT
REGISTER

I

II

REGISTER
74LS174

r

..---,

J

Accumulator
~

2B Bits

~

20

288its

ADDER
74LS181,74182

input to
least significant
bit. of
adder

Am25LS18
REGISTER
With
Standard ~
20 Most
and
Significant Bits
Three '"r
State
Output.
3 State
25LS18
Enable

J
PROCESSOR INPUT BUS

1

Clk 1

Cli'

20 Bits

R
E
G
I
S
T
·E
R

7
4
L
S
1
7 M
4

r--

'7

r---

r-

liIi:

0
A
C

t;6

........

j-;

Figure 10 (continue!i)

Ir

~o~~
~~~I---l
IIr

~

0
A
C

-

,---

-

0
z
~ ~~;:)
Ir° O
I- Ir
t!l
'--liIi:

-

R 7
r-E 4
G L --'
0
I S
A
S 1
C
T'7
E 4
'--R

----

~

...

Audio

AIIIPIIf*'

ChMneI1

i--

5

-

Audio

==",ffi

O~I- ~ Amplifier
C.....nel2
..Ja..:

...

L---

-

liIi:

..0

Ir

...., ~o~ -oJ ~:g~ H
IE ~
..J~=
~~

7
r-4
r-~
L ........
0
~~z
;::gffi
S
A
.-'! ~ 0 HOc(!:i
1 16
C
IIr
..Jo._
---:
7
t!l
...
4
'--

'--

.--

0

'---

....,

16 Bits

R
E
G
I
S
T
E
R

-

'is'

'---

7
4
L
S
1
7
4

'--

~

20 Most
Significant Bits

J

12to 16 Bits

P

MULTIPLEXER
74LS157

Clkl

I

REGISTER
74LS174

e

I

I

elk 1

---

r-.

Audio
Amplifier
C .....neI ..

Audio
Amplifier
C.....nel3

FIRST COMPUTER fAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA, 94302

datep by the processor. This is also true of the
addresses of the phase angle increment'R~Mllndithe
phase angle RAM. However the address of the frequency slope RAM provides a direct indication of
which sinusoidal components are being worked on in
the different stages of the oscillator. IUhe address of
the frequency slope RAM is n, then the phase angle
increment of the nth sinusoidal component will be
written into the phase angle increment RAM after 2
periods of Clk 1; its phase angle will be written into
the phase angle RAM after 4 periods of Clk 1; the
slope of its amplitude envelope will be read from the
amplitude'slope RAM after 4periods-of,Clk 1; .itsamplitude will be written into the amplitude RAM after 6 periods ofClk 1; and the accumulator will add
this nth sinusoidal component to earlier sinusoidal
components after 7 periods of elk 1, as shown in
Table s. A delay line of 8 parallel output shift registers
(74LSI64) fed by the output of an 8 bit counter
(74LS393) is used to generate addresses as well as to
determine which sinusoidal components may have
their frequency or amplitude changed 'by the processor. The 8 shift registers are clocked by elk I along
with the 8 bit counter. The 8 bit parallel outputs of
the different stages of the shift register provide the
addresses. The first stage 8 bit parallel output (n) of
the 8 shift registers is used to address the frequency
slope RAM. The fifth stage parallel output (n-:4)
of the shift registers is used to address the amplitude
slope RAM. Other stages may be used for timing in
other parts of the pipeline oscillator.
The amplitude RAM, phase angle increment
RAM, and phase angle RAM are all addressed by a
separate 8 bit counter. Since the amplitude address is
continually scrambled, the address of the amplitude
slope RAM may be used to determine which sinusoidal
component may have its amplitude changed by the
processor. When the processor wants to update the
amplitude of the nth sinusoidal component, ii loads
the new amplitude into the holding register (next to
the amplitude RAM in Figure 10). The control logic
compares n to the address of the amplitude slope RAM.
When they are equal, the multiplexer (below the amplitude RAM in Figure 10) is switched to take in the new
amplitude. The multiplexer includes a clocked output
pipeline register which is clocked by Clk 1. The frequency (phase angle increment) is updated similarly,
using the address of the frequency slope RAM to determine which sinusoidal component may have its frequency updated. With this method of determining the
update addresses, control logic similar to that shown
in Figure 9 for the slow inexpensive oscillator may be
used.
Envelopes are generated by straight line segment
approximations to the envelope curve. If infinitesimal
line segments were used, any curve could be generated.
The slope of the envelope at the beginning of a line

PAGE,US

segment islpaded into the appropriate RAM (through
its temporary'lioJidinirregIster) by the processor. '
This slope is repeatedly added to the current amplitude (or frequency for frequency envelopes) until
the slope of the envelope changes. Then a new
envelope slope is loaded into the RAM. This is a
sim pIe-minded method 'of envelope generation;
however, minimal extra hardware is required as compared to other methods of envelope generation of
which I am aware. One of the problems with this
envelope generation technique is that the software
which updeates the slopes must load the new slopes
at the right times.
I would be interested in other techniques for
envelope generation which allow a different envelope
to be used for every individual n,ote. A function table
generates the same envelope shape for every note. A
group of function tables mayb ORG 05800
5800
>. K LUG E H 0 R N
SMO
>.
SINGLE CHANNEL MUSIC SYNTHESIZER DRI~ER PRO~RAM
SMO
>. (C) 1977 BY CARL HELMERS, BYTE PUBLICATIONS I"C·
SPOO
>.
ASSEMBLY
Of 2/27177 • 12.00
5AOO
5MO
>. TAPE 20010 LOC 281
>WAVD
EQU
$154
'WAVE PIA DATA
0154
>\lAVC EQU 0155 WAVE PIA CTRL
0155
>ENVD EQU 0156 ENV PIA DATA
0156
0157
>ENVC EQU 01 57 ENV PIA CTRL
0144
>HORN EQU 0144 PITCH LATCH
0138
>MILI EQU 0138 I 1'15 DELAY
>ATEC EQU $158 TERM ACIA CTRL
OISA
0159
>ATED EQU $159 TERM ACIA DATA
0004
>NMIV EQU $4 PROGRAMMABLE NMI PTR
0161
>TIMG EQU $161 TURN ON 4800HZ NMI
0163
>TIMs EQU $163 TURN Off NMI
>AA2'X EQU 51070 :x ,. X+A
1070
0070
>MEAS EQU $70 CUR MEASURE
>BEAT EQU 072 CUR BEAT
0072
0073
>ENVX EQU $73 ENV PTR
0075
>SULK EQU 575 ATTACK END NMI PTk
SAOO
>* lOEeI-STACCATO, ISUSI-SUSTAIN
0077
.ECNT EQU 577 ENV' COUNTER
007A
.RATE EQU $78 ENV RATE
0079
>OENV EQU 579 OLD ENV VALUE
007A
>DECf' EQU $710 DECAY ~LAG
007B
>TMPI EQU $7B CUR TEMPO RATE
007C
>BMAX EQU $7C BEATS PEIl MEASURE
007D
>SDFG EQU $70 SUBRTN DEf FLAG
007E
>PROC EQU S7E CUR PROCESS PTIl
>ENDF EQU S80 END EXEC fLAG , $}o~F .. CONTINUE
OORO
OOAI
>sAVX EQU OS I X SAVEl NEil PC ~ALUE)
00A3
>TMPO EQU 083 TEMPO CNTR
001':4
>SAVY EQU $84 X SAVE
00A6
>LOsT EQU $86 TIME LOST,O~ER RUN
00R7
>TLsT EQU $87 ACCUM TIME LOST
00R9
>PPTR EQU 089 Pili NT LI NE PTR
5AOO
5800
>. PROCESS CONTROL BLOCK OffSETS
OOOP.
>STKI EQU 2 OLD PC
0004
>STK2 EQU 4 OLDER PC
0006
>STK3 EQU 6 OLDEST PC
OOOR
>NXMS EQU 8 NEXT MEAsUIlE
00010
>NXBT EQU 10 NEXT BEAT
OOOB
>ONOT EQU II OLD NOTE
OOOC
>QLNG EQU 12 OLD LENGTH
>JiSUM EQU 13 LENGTH SUM/CLEAR fl.AG
'OOOD
OOOE
>ORIG EQU 14 SAVED OIlIGIN
SROO
5ROO 8E 2F FF >ENTRY LOS 1$2f'Ff
5R03 7E 00 00 > JMP GOGO
5A06
5806
TABLES
5806
5A06
>* SUBRtN PTRS
SP06
>SRTN EQU ..
58R6
)0
ORG .+12~

>.

>.
>.>*
>.
>.,.*
>."'*
>."'*
>.>*

5RP6
SRM
5A86
5896
5R96
SA96
SA96
5RB6
5SB6
5AB6
5PB6
5936
5936
5936
5936
593P
59310
59310
593C
593E
5940
5942
5942
5942
59610
59610
596C
S96E
5970
5970
5970
5A04
5970
5970
5973
5975
597A
59710

LENGTHS

>LGNT EQU •
,. ORG *+16

WAVE PTRS
>WFOR EQU ..

,. ORG *+32
ENV PTRS

>ETAB EQU ..

,. OPG *+128

80 AO
MOO
59
59
59
59

F.NV CONTROL BLOCK

>DUI"E,
:> FOB
:>EPTR
>PATK

36
37
38
39

FrB $80~0
58000
EQU .,
f DB DUME

>SUST F"DB DUME.l

.DECY FOB DUME+2

>.

,. ENND FOB DUME + 3

>* TEMP \lliAVE
>TWAV EQU ..

,. ORC
>IIPTI
>WPT2
>WPGM

00 00
00 00
00 00

>.

*+40
FOB 0
FOB 0
FDB 0 OPEE. SUBRTN.

>* MAIN

>GOGO EQU ..
59 70
7F 01 5A
M 03
87 01 58
R6 01
B7 01 5A

'597D1F
59110 7F
59113 73
59/!6 86
591111 87
59 .. B 7F
59 liE 7F
5991 7F
5994 73
5997 .. 6
5999 B7
599C AEo
599E 87
59101 86
59103 B7

01
01
01
04
01
01
01
01
01
3C
01
AD
01
3f
01

"'* INITIALIZE
> CLR ATEC
,. LOAA '3
> sTAA ATEC
,. LDAA II
,. S1A" ATEC
> CLR ENve

57
56 ,. eLR ENVD
56 ,. COM ENVD
,. LOA" 14
57 > sTAA ENVC
56 ,. eLR ENVD
55 • CLIl WAVC
54 ,. eLR WAVD
54 > COM WAVD
,. LOAA IS3e LOAD CLOCK ONE
55 ,. STAA WAve
:00 LDAA IS80 RECIRCULATE
54 )0 51"" WAVD
> LOA" '$3F INIT NOTE

44 ,. 51"A HORN

59106
59A6
59109
59101'
59AE
59BO
59B3
59B3
59"3
59B3
59B6
59B9
59Bl'
591'0
59Bf
59C2
59C4
59C6
59CB
59CA
59CC
59CF
59DI
59D3
5906
5909
59DB
5900
590F
59EI
59U
59E6
59E9

CE
OF
FE
OF
7F

7F
7f'
86
97
97
CE
OF
~6

97
M
97
CE
DF
DF
7F
7F
86
97
~6

97
CE
80
CE
80

BOX 1579, PALO ALTO CA 94302
>. ACTIVATE 4800 HZ I NTERJ LDX #TMER
04
• sTX NMIV
59 3" > LOX PATK
73
> sTX ENVX
01 61 > CLR TlMG

>.

00
00
FF
7D
710
00
75
010
78
IE
7B
00
87
70
00
00
FO
7C
FF
M
00
00
00
00

>. BEGIN INTERPRETER
DEFAULT SETTINGS
89 > CLR PPTR
79 ,. eLF! OENV
,. LOAA ISFF
> STAA sDFG NOT SUBROUTINE
> sTAA DECf ENV SUSTAINED
00 ,. LDX 'SUSl
> sTX SULK LEGATO
> LOAA '10

"*

> STAA RATE 0(0'

"
>
00 "
>
>
86 >
72 "
"

"
"
>
00 "
>
10 "
>
"

>.>*

59EB 20 00
59 ED

SAVE ORIGIN
"SVST LOAA

59ED

59ED
59E5
59EA
59EF
59Ft
59F3
59F5
59F7
59F9
59FA
59FB
59FD
59FE
59FE
59FE
59EC
5<'01
SAOA

106
07
02
107
106
A7
86
6F

00

DE
01
OF
DC
02

o.x

" STAA OIU G.X
" LOAA 1,X

" S1AA ORI G+ I.X
> LDAA '12
"SVSL CLR 2. X
» INX
» DECA
• BNE SVsL

O~

410
26 FA
39

..
)0

RTS

•• EXECUTI VE CYCLES PI'OCESsES
CE 00 00 >GOMU LOX 'PRTA KLU6EHORN PROCESS PCB
II
BD 00 00 )0 ,",SR INTR
)0
BSf{ INWA
8D 00
CE 00 10 ,.. LOX 'PRTA+16 TEMPO PROCESS PCB
BD 00 00 ,.. ,",Sf{ INTR
,.. BSR INliA
80 00
7D 00 80 " TST ENDF
,.. BNI: GOMU ARE WE DONE?
26 EB
7E 00 00 ,.. .)MP TCLO

51006
51009
5AOC
5<'OE
51011
51013
51016
51016
51016 7D
5~05 10
5AOD O~
51019 26
SAIl' 96
51010 27
5AIF ~A
51020 7F
51023 DE
51025 BD
5A2A DF
510210 96
5A2C 97
5A2E 7C
5"31 96
51033 91
51035 26
51037 DE
51039 08
510310 OF
5A3C
5A3C
5A3C 96
5A3E SF
5A31'

ENV

LOAA '30
sTAA TMPI TEMPO
LOX '0
sTX TLsT ZERO TIME LOST
sTX MEAs TIME ORIGIN ZERO
CLI! LOST
CLR BEAT
LOAA '240 DIVISIBLE BY 4.6.8.ETC
STAA BMAX
LDAA ,SFf
STAA ENOf'
LDX 'PRTA
BSR SVsT
LOX 'PRTA+ 16
BsR sVST
.~.~A 5iOM_1!_

f'Ill

>.

00

~3

>. WAIT FOR INTERRUPT DONE
>INWA TsT TMPO

,.. SNE IN.A
)0
LDAA LOST
)0
BEQ *+3
)0
DECA
00 86 > CLR LOST
~7
• LOX TLsT
10 70 > JsR AA2X
~7
,.. STX TLS1
,.. LDAA TMPI
7B
~3
> sTAA TMPO
00 72 > INC BEAT
72
" LDAA BEAT
7C
" CMPA BMAX
00
" BNI: INWI
70
" LDX MEAS
,.. INX
70
,.. STX MEAS
FB
86
01

>.

,..*

71

(1"

5A41 25 00
51043 ~O OA
51045 5C
SA1I6 20 F7
5A4~ CI 010
5A~P 05
5A~A 25 01
5A4C SF
5A40 CB 30
5MF F7 00
51052 88 30
51054 P7 00
51057 ~6 09
5"59 97 M
5"51' 7f' 00
5A5E B~ 01
5A36 27
51061 16
51062 ~1I 01
51064 27 03
51066 7E 00
51069
5"69
5A69 C~ 02
5A6B 27 00

PRI NT MEASURE SETUP
> loDAA MEAS+ 1
" CloRB
"DNDD CMPA '10
> BCs ODND
,.. SUBA 110
" INCB
" BRA DNDD
>DOND CMPB '10

,.. Bes

.+2+ 1
> CLRB
" ADDB 'S30

00 > STAB PPNI
,.. ADDA IS30

00 > sTAA PPN2
,..

t.DA~

'9

> sTAA PPTR

72 " CLR BEAT
58 >INWI LDAA ATEC
" TAB
" ANDA '1
" BEQ .+5

00 > JMP TCLO

>* CHECM FOR MEASURE PBINTOUT
" ANDB 12
> SEQ NPPR

PAGE 123

FIRST COMPUTER FAIRE PROCEEDINGS
SA6D
SA6F
5A71
5"74
SA77
5A79
5A7C
SA7F
5A6C
SA70
5A7F
5A71!
SA80
5A~P.

5"55
SA~3

SASO
SAPII
SAI!7
SA89
SAR9
SAR9
SA02
SAO"
S"PI'
5ARE
5A90
5A90
51190
5Age
511911

96
P7
CE
BD
"6
1'7
7A
39
II!
OE

~9

00
00
10
00
01
00

>
>
00 •
70 >

BOX 1579, PALO ALTO CA 94302

LDAA PPT"
BEQ NPP"
LOX #PLI N
JSR AAI!X

LDAA O"X

:»0

59 > STAA ATEP
89 > DEC PpTR
>NppR RTS

>pLIN EQU .-1
SA
OA
30
SA
30
SA
3D
.5
DF
SA
5"
7D
27

71'
OD

>PPN2 FCC 1 .. 0
A2
.pPNI FCC 1,0
83

..

S3 41 > FCC 3,-SA

.0

•

FCC 2,EM

•• INTEI'pRETEF EXLCUTIOII
.INTR STX PI10C SAVE PCB pTn

71£
R9
~9

00 70 • TST SDF'G
00
• BEQ EXEC IF SUBHTN I;E;F THEN IJUMMY EXf.C

••
••

IS NEXT EVElll TIML PAST?
• LDAA MEAS +1
> SUBA NXMS+l .. X
• LIJAA MEAS
> SElC~ NXMS"X

96 71
AO 09
96 70

5 .. 96 AI!
5A9~ 25
S"9A EE
SA9C 9C
S"9E 26
5AAO DE
5AAe 96
5AA4 AI
SAA6 24
5AAP 39
SA99 OE
SAA9
SAM
5AA9 DE
SAAF 19
5A91' 09
SAA7 01
SAAI' 1£1£
SAAD A6
SAAI' DE
SAI'l AI
SAB3 I!S
SAPS AI
SAI.'7 1!5
SAP9 ~I
SAEP I!S
SABD AI
5AIll' 1!6
SACI 71'
SACII 39
SACS EE
SA CO 04
5AC7 08
SAC~ DF
SACA DE
S"CC 96
SACE A7
SA\)O 96
SADe "7
SADII PO
SAD6 7E
SAER ID
S.. D9 7F.
SAEC IC
SADC
SADC
SADC DE
SADE OA
SAOI' DF'
5AEI DE
5AE3 39
SAE4
SA Ell
5A!:1I DE
5AE6 7D

FeB SA"SD

)0

O~

• BCS NOAK CURP.ENT • NEXT CI GIIIORt; BEAt>
:. LDX NXMS,X
> CPX MEl'S
:.. BNI!: EXEC CURFtE~T > NE-XT CI ","ORE BEAt>
• LI)X pROC
> LDA" BEAT
,.. CMPA NXBt"X
• BCC EXEC CURFENT >- NEXT
.NOAK RTS

00
OP
70
00
7E
72
OA
00

>.

•• EXECUTE COMMANDS
.EXEC L&X P"OC

7E

00
00
71£
80
00
90
00
BI
00
FF
00
00
00
AI
7E
AI
00

o.x
LJjA~ o.x

,. LDX
,.
>
>
•
•

LDX p"OC
CMpA #S80 NOTE?
BCS NOTE
CMP" '$90 LENGTH RE'?

,. Bes LENG

~O

> CMpA #SBI FUIIIC?
> BCS ",UNC
CMPA #SFF END MARK?
BNE'EXEI
• CI,., ENDF
,.. HTS
.EXEI LOX O,X

> INX
> STX SAVX
.EWEN LDX PROC
• LI:AA SAVX

,.. STAA

o.. x

~2
• LDAA SAVX+I
01
)0
STAA 1.X
D3
> BRA EXEC
00 00 >LENG .JMP XLNG

00 00 .FUNC .JMP X"UII

>.
~I

>. WAIT INC
>liATI LDX SAVX

,. INX
81
71£

> STX SAVX
> LIJX PI'OC
HTS

>.
:>

>* WAIT
71£
>~AIT LDX pROC
00 70 • TST SD"G
> BEQ EKE I
SAE9 1!7 VA
SAEE PO 00
• BRA WAIX
SA ED
5AE1>
•• PLAY OL[; NOTE
SA ED DE 71£
>PLAY bDX PIiOC
SAEI' 7D 00 7D > TST SD. G
5AI'I! 1!7 DI
> BEQ EXEI
5AI'II A6 OB
> LDAA ONOT.X
5A,'6 liD 00 00 > JSR KNOT
> BRA ~AIX
SAF'9 eo 00

>.
>*

SAfi'S

5AFB
SAFE
5AEII
SAFE
51'00
5BOP.
5F02
SEOI!
5AEC
SAFA
5BO.
5806

>. NOTE
70 00 7D >NOTE TST SDFG
46
27 C5
> BEQ &:XU
8D 00
>NOT I BS" KNOT

DE 70
IS
07
DF AI
DE 71£
SBO~ A60C
51'OA 51'

>.

. . NEXT EVENT TIME I . CURRENT TIME. LEN 6TH
>WAIX LDX MEAS

>
>
,.
>

STX SAVX
LDX pROC
LDAA OLNG,X
CLRB

PAGE 124

5BOB
51'01J
51'01'
51'11
51113
SillS
5BI7
51119
SBII'
5BID
5BI6
5BIF
5BEI
5B23
5Bes
5B27
5B29
51'2A
51l2C
51'PE
5B30
5B32
5B34
5B36
5B3A
5B39
5BI0
SB3B

911
C9
26
A7
91
25
90
A7
RD
96
06
A7
96
A7
DE
1£1£
OR
OF
DE
96
A7
96
A7
6'
39
8D
2A
90

5B3D
5B3F
5841
SIl.3
51'01
,5AF7
51'113
5B.6

C2 00
26 FA
20 CE

41
5B
117
DE
5BII~ A7
51'.... DE
5811C AC
5B4F 27
5BSI 39
5852 CE
5B50 01
51'55 OF
5B57 39
5B5/1 71£
5B51'
5115P
51l5B Ill>
5B5E 70
51'61 27
51163 DE
5"65 6D
51'67 26
5l'69 36
5B6A C6
5B6C "6
51'61£ A7
51'70 09
5B71 SA
5872 26
5B7. 3P
5B75 /III

5B77
5l'7R
51171'
5B7E
5BAO
5BIII'
SilAS
51'115
5B85
5AD7
5111111
51'AA
5BIIC

""
CE
I'D
EE
DF
7E

SI'9A
SB9A
SB9C
51!9E
51'AO
51lA2

DE
6D
27
AB
1i7
20

7D
51'
27
EE
A6
~B8E All
51190 CE
5B93 BD
5B96 A6

5""" 06
liD

SB9D
5BAS
51lA7
51'119
5BA6
5BA3
SIlAB
51'A9
5BAE
5BAF.
SBAE
5BAE
SAM
51'BO
SI!"I
51!FII
51'B7
SBI'9
5BBB
SI'BB
5BBB
5B50
5"I!D
SBBF

72
00
00
OA
7C
00
7C
OA
BF
AI

- ADDA BEAT
> ADCB #0
> BNE WADJ
>WAXI STAA NXBT,X
> CMpA BMAX
> BCS, WAX2
> SuBA BMAX
- STAA NXBT,X
> BSR WATI
-WAXI! LDAA SAVX

OA
R2
09
71£

> STAA NXMS,X
> LDAA SAVX+I
STAA NXMS+I,X
LDX PROC
• LDX 0.)(
> INX
:to STX SAVX
> GOBK LDX PROC
> LDAA SAVX
» STAA 0.)(
• LIJAA SAVX+I

00
81
7E
III
00
82
01
OD
AI
7C

,. STAA I,X

• CLF FSUM,X
> RTS
>WADJ BSR ,.AT!
> SUBA BMAX
> SBCB #0
> BNE WAD"
• BRA WAXI
>KNOT EIIU •

113
01 411 .KNT I STAA HORN
71£
> LDX PROC
OB
• STM ONOT.X
75
> LDX SULK
00 00 • CPX #DECI
00
• BEll NGAT
> RTS
00 00 >NGAT LVX #ANE~
04

> STX NMIV
> RTS
SA CA >&:XU "I'll' EVEN

>.

>. MUSIC SUBROUTINE CALL
00 00 >CALL JSR OHED
00 7D > TST SDFG
'5
> BEll EXE. SKIP EXEC I f IN DE.
7E
> LDX pROC
,. TST STK3 .. X
06
EI'
> BNE EXEII SKIP EXEC It STACK f'ULL
> pSHA
06
> LDAB #6
>XSLP LDAA s.x
05
,. S1AA 7,X
07
> DEX
> DECB
F~
> BNE XSLP
,. PULA
3F
> ANDA #S3F
,. ASLI'
5R 06 > LDX #SRTN
10 70 > JSR AAI!X
00
,. LUX o .. x
AI
> STX SAVX
SA CA > JMP EVEN

••

•• SET LEN&TH fROM TABU;
00 7D .XLNG TST SDFG
85
00
• BEQ EXE3
00
,. LDX O,X
00
,. LDA,. 0 .. )(
OF
• ANDA #SF'
58 86 • LOX #LGNT
10 70 > JSR AA2X
00
,. LDAA o .. x·
- LOX pROC
71£
> TST FSUM,X
OD
00
• BEQ XSTL
,. ADDA OLNG,X
OC
> STAA OLN&,X
OC
00
• BRA LENI
.XSTL TSTA

27 00
A7 OC
~C OD
Ol!
05
7E 00 00
21

RO 90
51' AE

""

> BEll LENI IF NULL KEEP OLD LEN 10TH
• STAA OLNG,X
>LENI INC FSUM,X

>EXE3 .JMp OBYT

>.

... "UNC EXEC I
>. LOOK UP ADDR THEN &0 TO 'UNC
>KFUN SUBA #S90
)0

CE 00 00 >
I'D 10 70 >
,.
EE 00
,.
~E 00

>.

DE 7E
SF BB
EE 00
OR

ASLA
LDX #FlAB
JSR M2X
LDX
JMP 0 .. )(

o.. x

•• 2 BYTE OPCODE OIiERHEAD
-OHED LDX pROC

,. LDX
> INX

o.. x

FIRST COMPUTER FAIRE PROCEEDINGS
SBCO
5BCB
5BC3
5PC5
5BC6
511C6
511C6
511C6
5BCR
SacA
SBCB
5BCE
SBDI
S!!D3
SPDS
S!!1l7
SIID9
S!!DB
SBDV
SBm
SI!EP
SBES
SBE5

116 00
Oil
DF III
39

liD
II.
.11
CE
liD
96
A7
96
A7
,DE
86
!!V
Df
1E

F3
OF

,. RTS

ASLA
LDX 'WF'OR
.JSR MBX
LD"'" SAliX

..

S1AA

o.x

LDAA SAIIX+ I

Sf"A I "x

LOX SAliX
LDAA 140
.JSR AA2X
STX SAlIX
.JMP EWEN

•• ENII CONTROL MOllE
'TUKE LDX SAllY
1111
81
00

• LDAB SAlIX
» STAB o.x

112
00

" LOAS SAIIX+I
,. STAB

DE
D6
E7
Oil
D6
E7
OR
DF
39

5C34
SC37
SC3A
SC3C
SC3F
SC.I

BV SB
7V 00
27 00
7F 00
II. 3F
.8
CE SR
BD 10
96 ~I
A7·00
96 82
111 01
7E 5A
I.

SC.S
5CIIR
SC4A
SC4C
SC4E
SCSO
SC3B
SCS3
SCS3
SCS3
SCSS
5CS8
5CSA
SC5C
SCSE
5C60
SC61
SC62
SC64
SC66
SC6P
SC6A
SC6C
SC6D
SC6E
SC70
SC73
SCS9
SC76
SC79
SC79
SC79
SC79

..

INX
STX SIIIIX

•• WAIIE~-OR1'I Dn
'WDEF EQU •
,. 8Sft OMED
,. ANDA 'Sfo'

•
58 96 •
10 70 •
II~
•
00
"
112
•
01
:10
Al
•
2A
"
10 70 •
III
•
SA CA •

SBES
SIIE7
SBE9
SBEII
SIIEC
SI!EE
SBFO
SElF I
SBF3
S8F.
SIIF4
SBF.
511F4
SIIF6
SIIF/I
SIIF9
SBF..
SIIFB
SliFE
SCOI
SC03
SCOS
SC07
SC08
SC09
SCOB
SCOC
SCOD
SCDF
SCIO
SCI2
SCI.
SCI6
SCI9
SCIB
SCIV
SCIE
sceo
SC23
sces
SC27
SC28
5CIlA
sceD
SCBF
SC31
SC3.
SC34

selle

LDAA 0,,)(

:»0

•
•

•

INX

o.x

,. INX

A4

..

• STX SAllY
,. RTS

>*

ENV DEfo"

"EDEF EQU
8V
II.
.11
"/I
.11
CE
liD
DF'
VE
A6
36
Oil
A6
36
OR
A6
OR
VF'
liD
VE
I'D
DF
liD
32
DE
BD
VF

CS
0"

*

• BSR OKED
• IINVII 'SF
,. ASLA
,. ASLA

~V

• IISL..
S8 116 • LDX ,ET ..B
10 70 • .JSIl M2X
II.
• STX SIIIIY
,. LDX SAUX
RI
,. LDAA O"X
00
• PSKII
• INX
00
,. LDAA O"X
• PSKA
• INX
00
,. LDAA o"x
)0
INX
,. STX SAliX
III
VI
> 85ft TUKE
lit
• LDX SAlIX
10 70 ,. .JSR AII2X
~I
• STX SAlIX
C~
• BSR TUKE
• PULA
~I
• LDX SAlIX
10 70 • .JSIl M2X
~I
• STX SAliX
BE
)0
BSR TUKE

32
VE
BV
VF'
liD
7E

• PULA,
RI
• LDX SAlIX
10 10 • .JSR AA2X
81
• STX S"IIX
B4
• BSR TUKE
SA CII • .JMP EWEN

VE
7V
27
C6
"6
A7
08
SA
26
DE
6F
6.'
EE
08
08
DF
7E
73
19
7E

..

•• BEGIN SUBROUTINE
'.BEGS .JSR OHED
BB
7D • TST SDFe
• BEQ' SDE2
7V • CLR SDFG
)0
ANDA ,S3F
•
06 •
70 •
,.

ASLA
LDX 'SRTN
.JSR AAex
LDAA SAVX
STAA

)0

o·,x

• LVAA SAIIX+I
,. STAA 1.X
CA 'SDE2 .JMP EWE ...

••

•• END SUBROUTI NE (RETURN IF EXECUTiON)
7E
.ENDS LDX PROC
00 7D • TST SVF'G
,. BEQ SEXD
00
06
• LDAB '6
'SXLP LDAA 2.x
02
00
,. STAA o.x
F'R
7E
06
07
00

•
,.
•
•
•
,.

INX
DECB
BNE SXLP
LDX PROC
CLR STK3.X
CLR STK3+ I.X

,. LDX

o.x

,. INX
• INX
,. STX SAliX
RI
SA CA • .lMP EWEN
00 7D 'SEXD COM SDFG

..

00 00 'EXE2 .JMP OBYT

•• SET LENGTH REG
.LSET EQU •
BV SEt BB • .JSR OKEV

5C7C
5C7E
5Cn
5CIII
5CaB
SCII.
5CII7
5CIIA
5C8B
5CIID
SC90
SC90
5C90
5C92
SC94
5C9S
SC96
5C98
5C9A
5C9C
5C9E
5CAD
SC9B
5CAB
5CAII
SCAS
5C.. 7
SCA3
SCAR
SCAli
SCM
SC.. II
SC .. A
scn
SBIIC
5CIIC
SCAF
5C .. "
SCA"
SCIIF
SCB2
SCBlI
SCB6
5CB9
5CB9
5CB9
SCBB
SCBV
5CBE
SCBF
5CCI
SCC3
5CC5
SCC7
SCC9
SCCA
SCCC
5CCE
SCCF
SCVI

E6
Oil
DF
37
II.
CE
BD
33
E7
7E

DE
A6
.C
16
C4
CI
2F
II.
liB
81
04
25
.A
"7
39
03

BOX 1579, PALO ALTO CA 94302
00

,. LDAR

,.
•
,.
OF
•
511 M •
10 10 •
,.
00
,.
SA CA •

81

o.x

INX
STX SAliX
PSHB
ANDA ISF
LDX 1\..6NT
.JSR AA2X
PULS
STAB o"x
.JMP EWEN

..

7E
OB

•• NOTE INC SERIIICE
>NINI LDX PROC

,. LDAA ONOT"X
• INCA
> TAB

OF
DB
00
FO
10
7F

,. ANDB ISF

• CMPB '11
• BLE NIN2
• ANDA UFO
• ADDA 'SIO
.NIN2 CMPA ISH

00

• BCS NINI

DB

" DECA
" 51"" ONOT.X
>NINI RTS

••••

NOTE INCREMENT
'INCN EQU •
AV E€>
• BSR NINI
DE 7E
'OBYT LVX PROC
SC
SC 1111
7E 511 CS • .lMP EXEI

....

7V
27
IIV
7E

116
A7
39
4V
27
M
27
liB
A7
39
DE
A6
16
CII
27

..

>* INCREMENT NOTE liN\) PLIIY
>lPLA EQ·U
00 7V • TST SVFG
,. SEQ OBYT
F6
D..
> 85ft NINI
5B 00 • .lMP NOTI

*

..

01
OB

F8
10
F.
OB
DB
7E
DB
OF
EB

5CV3 . "
SCD" 27 E3
SCD6 A7 DB
SCDS 39
SCD9
SCD9
SCD9
5CD9 8D EF
SCDB 7E SC M
SCDE
SCDE
SCDE
SCDE 7D 00 7V
SCEI 87 C7
SCE3 80 ES
5CES 7E SB 00
SCES
SCES
SCE8
SCES BD SB BB
seEB 97 7B
SCED 7E SA CA
SCFO
SCFO
SCFO
SCFO 96 7B
SCFB IIC
SCF3 27 00
SCFS 97 7B
scn 7E SC AA
scn 02
SCFA
SCFA
SCFA
SCFA 96 7B
5CFC .A
SCFD B7 F8
SCFF 97 7B
5001 7E 5C AA
Sooll
SOO.
SOO.
500. DE 7E
5006 6F OA
5008 EE 00
SooA 08
SDOB A6 00
5000 08
SDOE E6 00
5010 08

>* DEC NOTE SERVI CE
'VMI N LVAII 1\

,. Sf"" ONOT.X
• RTS
'DFLIl TSTII
• BEQ DMIN
• SUBA '5\0
• BEQ D1'IIN
• AVVA 1\ I
,. ST"A ONOT"X
> RTS
.DIN! LDX PRoe
,. LDAA ONOT. X
,. TAe
• ANDB I$F
• BEQ D'LR
)0
DECA
• BEQ DMIN
,. STAA OlVOT.X

·••

RTS

•• DECREMENT NOTE
'DECN EQU •
• BSIl DINI
~ .JIIP OBYT

••

•• DECREMENT AND PLAY NOTE
'DPLA EQU •
• TST SDFG
• BEQ OBYT
• BSR DINI
• .JIIP NOTI

••
~.

SET TEMPO
EQU •
.JSR OHED
STM TMP!
• .JMP EWEN

~TEI!P

•
•

••

•• INC TEMPO
'TINCEQU •
• LVAA TMPI
• INCA
• BEQ NOCH
• STM TMPI
'NOCH .JIIP OBYT

••
•• DEC

TEMPO
'TDEC EQU •
• LDM TMPI
• DECA
• BEQ NOCH
• STAA TMP!
• .JIIP OBYT

••

•• WAIT TIL MEASURE
'WEA EQU •
~ LOX PROC
• CLR NXBT.x NEW BEAT IS 0

o. . x

·•

INX
LVM O.X

•

INX

,. LDX

• INX
,. LDAB O ... X

PAGE 125

FIRST COMPUTER FAIREPROCEEDINGS
5DII DF III

-SDI3DE

1E
5DI5 A7 08
5D17 E7 09
5DI' 1E 5B 2C
5DIC
5DIC
SDIC
5DIC BD 5B BB
5DIF 84 OF
SDI!! ... 8
5DBB 48
5DB3 48
5DB4 CE 58 B6
5De1 BD 10 70
5DBA C6 08
5Dec 116 00
5D2E 36
5DBF 08
5D30, SA
5D31 26 F9
5D33 C6 08
5D35 C£ 59 41
5D38 32
5D39 A1 00
5D38 09
5D3C 5A
5D3D 26 F9
5D3F 7E 511 CA
51142
5DA2

BOX 1579, PALO ALTO CA 94302

»

STX SAW
• LDX PRDe

..

• STIIA NXMS.X
• STAB NXMS+I.X NEW IlEAS DEfiNED
• .IMP GOBK
•• PICK ENV
.ESET EQU •
• .JSR OHED
• ANDA ISF'
• IISLA
ASLA
ASLA
• LDX IETAB
• .JSR M2X
• LDAB 18
.SET I LOIIA o.x
• PSHA
• INX
• DECB
• BNE SETI
• LDAB 18
- LDX IEPTR+7
.SETe PULA
,. STAA O"X

• DEX

..

• DECB
• SNE SETe

• .IMP EWEN

•• ENV RATE
.£RAT EQU •
5042 BI· 5B BS • .JSI< OHED
5D45 91 7/1
• STA~ RATE
5D47 1E SA CA - oIMP EWEN

sOlIe

..

sr.""

5D...A
5D4A
5D4A
5D4D
5D4"
5D4F
5D4F
5D52
5055
5D55
5D55
5D55
5&58
SDNI
5DSC
5D5E
5D61
5D61
5D61
5D61
5D63
5D65
5D68
5DM
5D6D
5D6D
5D6D
5D70
5D12
5D7...
5D77
5D71
5D71

51167
5AI4
5D19
5D7C
5D?!
5DIII
5D84
5D87
5DBA
5DIIC
5D8F
5091
5D9"I
509...
5D9...
5DeB
5D'0
5096
50911
5D9A
SD'C
5D9D
5D9D
509D
509F
5DA2
5DA4
5DA7
5DAA
5DAA
SDAII
5DAII
5DAII
5DAD
5DAF
5DBO
5D83
5D86
5D88
5DBS

•• SET STACAT1'"
-STAC EQU •
CE 00 00 • LDX 'DECI
D.- 75
• STX SULK
•• FALL THRU TO
•• STIIRT DficAY
7F 00 7A -DEKII CLR DECF
7E 5C All • .JIO!P OBYT

..

•• SET LEGATTO
.LEGII EQU •
CE 00 00 • LDX ISUSI
DF 75
• STX SULK
• LOAA ISFF
116 FF
97 1A
• STAA DECF
1E 5C All • .JIIP OBYT
••
•• START ATTACK
.ATTK EQU •
116 FF
• LDAA ISn
91 111
• STAA DEC"
CE 00 00 • LDX IANEW
DF 04
• sTX ""IV
1E 5C All • _
OBYT
••
•• SET NOTE PARAMETER
BD 5B BS .SNOT .JsR OHLD
DE 7E
• LDX PROC
A1 OB
• sTAA ONOT,X
7E 511 CA • .JIll' EWEN
••
•• RETURN TO MONITOR. RESTORING ACIA CODES
86 03
.TCLO LOAA 13
5D 11
SD 11
B1 01 58 • STM ATEC
86 81
• LDAA 1S81
B1 01 58 • STAA ATEC
B6 01 59 - LDAA ATED
7F 01 63 • CLR TIMS TURN O,'F INTERRUPTS
CE 00 00 • LOX IPRTA
8D 00
• 8SR UNSV
CE 00 10 • LDX IPRTA+16
8D 00
• 8SR UNSV
71 10 00 • .IMP 51000

••

A6
08
03
A7
A6
A7
39

OE

00
OF
01

•• RESTORE ORIGIN
.UNSV LOAA ORI G.x

>
•
•
•

>.

STAA o.. x
LDM ORIG+I>X
STAA i.X
RTS

•• OSCILLOSCOPE TRI GGER <06 OF WAVE PIA)
86 CO
.OSCL LDAA #SCO
B7 01 511 • STAA WAVD
86 80
• LDAA 1580
B1 01 54 • STM WAVD
7E 5C 1111 • .IMP OBYT

••
••

••

WAVE CALCULATOR PACKAGE

•• WAVE OVERHEAD
• WOHD .lSR OHED
BD
811
48
CE
BD
EE
FF

5B' BB
OF
• ANDA ISF
• ASLA
58 96 • LOX IWFOR
10 70 • .lSR AA2X
,. LOX o.x
00
5' 6C • STX WPTe
•• ARRAY OVERHEAD

5DBS
5DBE
5DCO
5DC3
5OC6
5OC8
5DCB
5DCD
5DCE
5DDI
5DD3
5DD4
5DDII
5DD4
SDD7
5D09
5DDA
5DDD
5DDE
5DEI
5DEII
5DE6
5DE9
5DE9
5DE9
5DEA
5DEC
5DEF
5DFI
5DF4
5DF6
5DF'
5DFA
5DFB
5DFE
SEOI
SE04
SE06
SE08
5EOB

CE
A6
FF
FE
AD
FE
A1
08
8C
26
39
FE
A6
08
FF
39
CE
FF
8D
1E

36
84
B7
86
B7
86
B1
32
39
CE
FF
7F
80
86
B1
7E

59
00
59
59
00
59
00

42 'WARY
-WRY I
6A • STX
6E • LOX
,. ..15ft
6A • LDX

LDX ITWAV
LOM O.X
WPTI
IIPGM

o.x

IIPTI

" STM

o.x

• INK

59 6A • CPX ITWAV+40
EB
• BNE WRYI
• RTS

••

•• SET WAVE REGISTER
59 6C 'WRGS LDX IIPTIl
,. L.DM o.x
00

• INK

59 6C • STX
• RTS
5D D4 'TMPW
59 6E • STX
C4
• BSR
511 CA
• .IMP

..

WPT2
LOX 'WRGS
IIPGM
WOHD
EVEN

•• OUTPUT ,- WAVE REG
.WRUS PSHA
1F
• ANDA 'S7'
01 54 • STAA WAVD
34
• LDAA IS311
0 I 55 > STAll WAVC
3C
• LDAA 1S3C
01 55 > STIIA WIIVC
• PULA
• RTS
5D E9 >WTMP LDX ,I/RUS
59 6E
STX WPGM
01 54
CLR WAVD
B5
> BSR WARY
80
> LDAA 1S80
0 I 54 • STM WAVIl
5C M • .IMP OBYT

•

~,

:>.

t- It ,.

5EOE
5EOF
5EIO
5EI3
5EI6
5EI6
5EIB
5EIB
5EIB
5EIC
5EID
5E20
5E23
5E25
5E2R
5E28
SE28
5E2B
5E2D
5E2E
5E31
5E32
5E35
5E3/1
5E3B
5E3E
5E3E
5E3E
5E41
5EII3
5EII4
5E41
5E49
5E4A
5E4D
5E50
5E53
5E56
5E58
5E5B
SESE
SESE
SESE
5E61
5E63
5E66
5E66
SE66
5E68
5E6A
5E6C
5E6.'
5£6F
5E6F
5E71
5E73
5E75
5E11
5E7A
5E1A

Iro

1,.
ASHA

47
39
CE
FF
80
1£

,,2DS
• HTS
5E DE .DIVW
59 6£ • STX
113
• BSR
5C M • .IMP

48
39
CE
FF
8D
1E

•• VAVE REG ,- WAVE REG.
.wells ASLA
• RTS
5E IB 'IIULW LDX 'W2I1S
59 6E • STX WPGM
96
• BSR WARY
5C AA • .IMP OBYT

FE
AB
08
FF
39
CE

••

e

••

•• WAVE REG I - liAVE REG + WAVEeX)
S9 6C 'VPLS LOX ,"PT2
,. ADDA 0 ... ](
00

• INK

59 6C • STX
>0 RTS
5E 28 .ADDW
n' 59 6£ - STX
SD 5D All • .JSR
7E SA CA • .IMP

••

FE
A6
08
FF
8D
39
CE
FF
1F
BD
86
B7
7E

LOX ,W8DS
IIPGM
WARY
OBYT

WPT8
LDX IWPLS
VPGII
WOHD
EWEN

-. DUIIP WAVE
59 6C 'STWS LDX IIPT2
00
:. 1.DAA O"X
,. INX
59 6C • STX IIPT2
AO
• 8SR WRUS
• RTS
5E 3E 'WSET LDX ISTVS
59 6E • STX WPGII
01 54 • CLR VAVD
5D AA • JSR WOHD
80
• LOM 1$80
01 54 • STM WAVD
SA eA • .JIIP EVEN

••

•• SET TillE SIGNATURE
BD 5B BB _SIGN .JSR OHED
91 7C
• STAA BMAX
7E SA CA • .JMP EWEN

••••

GO TO ORIGIN

DE
EE
DF
1£

1E
OE
81
511 CA

.LOOP
• LDX
• STX
• .IMP

IlE
EE
EE
DF
7E

7E
00
01
81
SA CA

60TO
'GOTO LDX PRoe
"'< LDX 0,,](
• LDX I.X
• STX SAVX
• .IMP EWEN

••••

..

LDX PROC
ORIG.X
SAVX
EWEN

•• I NTERRUPT ROUT I NES
•• KERNEL OF INTERRUPT HANDLER
5E7A"683
'TIlER LDM TMPO
5'A1 5E 7A
5E7C 27 00
• BEQ TMEE
5E7E 711 00 83' • DEC TMPO
5E81 38
• RTI
5EII2 7C 00 116 .TIlEE 1 He LUST
SE7D 04

5UA

FIRST COMPUTER FAIRE PROCEEDINGS
SEilS 3B
SE86
SEII6
SE86 .6
SE81! 21
SElIA '1'11
SE8B 91
SE8D 86
SE8.' DE
5E.1 BC
519. 86
5E96 DE
5E.8 OJ'
SE9A 80
SE9C DE
5E89 Ie
SOE' A6
5EAO 91
5EAe 25
SEA4 £11
SEA1 011
5EA3 03
SEA8 DF
SEAA 96
SEAC SA
SEAE 91
SE80 20
SEB2
SEse
SEBe CE
SSS3 SE
SD66 SE

SESS

> RTI

••
>.

ATTACK INTERRUPT
11
>ATKI \.DAA ItCNT
00
• BEQ APDA
• DECA
> STAA ECNT
11
ES
• SNE TMER
13
> \.OX ENUX
S9 3C > CPX SUST
E4
> BNE TMEft
1S
\.DX SU\'K
04
STX NMIU
DE
• SAA TMEft
13
>APDA \.UX ENVX
00
19
00
01 S6

13
18
03
11
CII

,. LDAA

o.x

> CMPA DENU
• SCS NATT
• STAA ENUD
>NATT INX
•
•
>
•
•

••
••

STX ENUX
\.DAA RATE
ORM '3
STAA ECNT
SRA TMER

NEW ATTACK INITIATION
SE 86 .ANEW \.DX ,ATKI
S2
S2
> ST1\. NMIU
04
S9 3/\ > \.DX P/\TK
73
> STX ENUX
BC
• BRA TMER

OF
SES1 FE
5EBA Dt'
SESC 20
SERE
SEBE
SESE 96 11
5.CO SE BE
SDS6 SE BE
SECO 21 00
SEC2 4A
5EC3 91 11
SECS 26 83
5EC7 DE 73
SEC9 BC S9
SECC 26 AC
SECE D6 1111
SEOO 26 00
5ED8 CE 00
SEDS OF 04
SED1 20 AI
SED9 FE 5,
SEDI 07
SEDC OF 13
5EDE eo 9A
SEED
SEEO
SEED 96 11
5S4D SE EO
SD4B SE EO
5ED3 SE F.o
SEE2 21 00
SEE4 4A
SEES 97 17
SEE? 26 91
SEE9 DE 13
SEEB BC 59
SEEE 26 8A
SEFO FE 59
5E,'3 DF 73
SEFS CE SE
SEF8 OJ' 0 ..
SEFA 1E 5E
SEFD DE 73
SECI 3B
SEE3 19
SEFF /\6 00
SFOI 91 19
SF03 B1 01
5F06 08
SF01 OF 13
SF09 '6 78
SI'OB 8A 03
SFOD 97 17
SFOF 1E SE
51'\2

>.

>* SUSTAIN INTERRUPT

.SUSI \'DAA ECNT

• BEQ UPDA
• DEC/\

,. 5TAA ECNT

• BNE TMER
> \.DX ENUX
31£ • CPX DECY
• BNE TMER
> \.DAB DECF
> BNE DNEC
00 > \.OX ,DECI
> STX NMIU
> BRA TMER
3C >DNEC \.DX SUST

..

• STX ENVX
• BRA TMER

•• DECAY INTERRUPT
>DEC I \'DM ECNT

>
>
>
>
>
40 •
•
3A •

BEQ UPIlA
DECA
STM ECNT
BNE TMER
\.DX ENUX
CPX ENND
BNE TMER
\.DX PATK

,. STX ENVX

7A > \.DX ITMER
• STX,NMIU
1/\ > .JMP TMER
>UPVA \.DX ENUX

,. LDAA

o.. :x

• STAA OENU
56 • STAA ENUIl

,. INX
• STX ENVX

:. LDAA RATE
,. ORAA '3
• STAA ECNT
1A • .JMP TMER

..

•• 'UNC UECTOR TAB\'E,

SF12
SFt2
SBB8
SFI2
SFI2
SFI2
5FI2
5Ft4
SI'\6
SFt8
SFtA
SFIC
5FtE

S'20
SF22
s,e4
5F1!6
5F28
5FeA
SFec
5peE
SF30

>FTAB EQU •

SF 12
-NAME-FORMAT--- - --COMMENTARY--- -- - - ------ - ---.
00 TO 7"
P\.AY SE\.ECTt:1l NOTE
8X
\.ENGTK , . \.TAB(X)
FDB WVEF .OOX •••
WAVE(X) , . NEXT 40 UA\.UES
FOB WSET 910X
KORN , • •AUE(X)
TWAUE , . WAUE(X)
FOB TMPW .IIOX
FOB WTMP .3
KORN ,. TWAUE
FDB DIUW 94
TWAUE , . TWAUE I e
TWAVE , . TWAUE • 2
FOB MU\.W 95
.-DB ADDW 960X
TWAVE , . TWAVE • WAUEIX)
FOB SNOT "XX
NOTE ,- Xx
NOTE , . NOTE • I
FOB INCN '8
FOB IP\.A . .
NOTE , . NOTE - \I P\.AY NOTE
'DB DECN 'A
NOTE , . NOTE - I
FOB DP\.A 9B
NOTE , . NOTt: - \I P\.AY NOTE
FCB WAIT 9C
WAIT UNTI\' T • \.ENGTII
FOB WMEA 9DXXXX
WAIT UNTI\. MEASURE XXXX
FDB \.SET .IlOX\.\.
LTAS(X) •• LL
I'DB OSC\. 9F
TRI GGt:1i SCOPt:

>0-- -

,..

,..
SB C6
SE 4A
50 DE
SO FB
SE 10
SE 10
SE 32
SO 6D
SC A8
SC AF
SC D.
5C DE
SA E4
50 04
5C 19
50 .0

,.
>
•
>
>
•
>
>
•

•
•
•

SF32
5F34
5F36
5F38
S'3A
SF3C
5F3E
5F40
SF4I2
5F44
5F46
5F48
5F4A
SF4C
5F4E
5150
5F5e
SP'54
eooo
5.lte
5fFF
5,E1
5088
5A07
5080

SC
!lC
SB
5B
50
SD
51)
50
50
50
!lC
5C
5C
SE
5E
SA
5E

BOX 1579. PALO ALTO CA 94302
,. FOB BEGS AOXX •••

34
53
5B
F4
IC
412
4A
55
61
41'
ES
FO
FA
5E
66
ED
6F

•
>
•
>
•
•
•
>
>
•
•
>
>
>
•
>

ENDS AI
CA\.\. A2XX
EDEF A30XDDSSAA
ESET A40X
ERAT A5XX
STAC A6
\.EGA A1
ATTK A8
DEKA A.
TEMP ""Xx
TINC AB
TDEC, AC
SIGN ADXX
\.OOP AE
P\.AY AF
GOTO 80XXXX

BEGIN SUBRTN XX 1)t:1'
END OR RETURN
CA\.\. SUBRTN XX
DE. ENV X
PICK ENU X
ENU RATE , . XX
STACCATO MODE
\.EGATO MODE
START ATTACK
START DECAY
TEMPO , . XX
TEMPO , . TEI',,"O • I
TEMPO , . TEMPO - I
SET BEATS PER MEASURE
GO TO ORIGIN'
P\.AY 0\'1l NOTE
GO TO XXXX

~.

>PRTA EQU S2000

liD 00
20 00
liD 00
liD 00
eo 00
liD 00
• END

5FS4

...

FOB
FDB
FDB
FOB
FOB
FDB
FOB
FDB
FOB
FDB
FDB
FOB
FOB
FOB
FOB
FOB

PAGE 127

END - UNRESO\.UED ITEMS'

•••
AA2X
ATED
BMAX
DECN
DIVW
DUME
ENND
EPTR
EXEI
I'SUM
GOMU
INWI
\.EGA
\.OST
NATT
NMIV
NPPR
OilED
PATK
PPTR
SAUY
SEXV
STKI
SUSI
TCLO
TINC
TMPa
UPDA
WAIl<
WAX I
1010110
WRGS
XFUN

SYMBO\.S'
1070
0159
007C
5CD.
5EIO
5.36
5'40
5.3A
SACS
0000
5.FE
SASE
5055
0086
5EA7
0004
SA1F
SBBB
S.3A
0089
00841

scn

00011
SEBE
5017
SCf'O
0083
5EFD
5802
SBII
5DM
5004
SME

ADDW
ATKI
CA\.\.
DECY
DMIN
ECNT
ENTY
ERAT
EXEII
FTAB
GOTO
INWA
\.EN I
\.SET
NOA1
NOAK
NXBT
OIoNG
P\.AY
PROC
SDEII
SIGN
STK2
SUST
TDEC
T\.S1
TMPW
WilDS
WARY
WAXII
WPGr.
WRUS
X\.NG

SE32
SE86
5BSB
S93E
SCB9
0071
5800
504111
SC76
5F111
SE6f'
5AI6
5BA'
5e7t
SB52
5AA8
OOOA
OOOC
SAED
001E
5C50
SESE
0004
S.3C
SCFA
0087
SDDE
5EOE
5DBB
SBID
5.6E
5DE,
5B85

ANEW
ATTK
DONO
DEKA
DNDD
EDEF
ENUC
ESET
EXE3
I'UliC
IIORN
IP\.A
\.ENG
MEAS
NINI
NOCII
NXM5
ONOT
P\.IN
PRTA
SDFG
SNOT
STK3
SUS\.
TEMP
TMEE
TUKE
10121'15
WATI
WDEF
WP\.S
WRY I
XS\.P

5EBI!
5061
5A48
SD4F
SA3f'
5B,'4
0151
SDIC
SBAB
SAil.
0144
5CAf'
SAD6
0070
SCA7
SCF?
0008
OOOB
5A1F
2000
001D
SD6D
0006
5.n
SCE8
5E82
SBE5
5EIS
SADC
5BC6
SEilS
5DBE
5B6C

APDA
BEAT
DECF
DF\.R
DNEC
ENDf
ENUD
ETAB
EXE4
aOBK
INCN
KNOT
\.GNT
MI\.l
NINe
NOTt
OBYT
ORIG
PPNI
RATE
SET!
SRTN
5T1oIS
SVST
TlMG
THEft
TWAU
WADJ
WAVC
Wf'OIl
WPTI
WSET
XST\.

SE'C
0072
007A
5CBE
SED9
0080
0lS6
S8B6
5B58
5B2C
SCAS
SB43
5886
0138
SCAO
5800
5CAA
OOOE
5A83
0078
SD2e
S806
5E3E
S9ED
0161
5E1A
5'42
5B3.
0155
58.6
596A
SE4A
SBA..

ATEC
BEGS
DEC I
DINI
DP\.A
ENDS
ENVX
EWEN
EXEC
GOGO
INTR
KNTt
\.OOP
MU\.W
NINI
NOTE
OENU
OSC\.
PPN2
SAUX
SET2
STAC
SU\.K
SX\.P
TlMS
TMPI
UNSV
WAIT
WAUl)
WMEA
WPT2
WTMP

,

0158
SC34
SEEO
SCCA
SCDE
SC53
0013
SACA
5M'
S910
5A8.
SB43
5E66
SEID
5C.0
SAf'B
0019
5D9D
5A82
0081
5038
SD..A
0075
SC5C
0163
001B
50941
5AE4
015'"
S004
S'6C
SDfB

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 128

NOTES ON MICROCOMPUTER MUSIC
Methodll
Marc Le Brun
Star Route Box 111
Redwood City CA 94062

Introdud/on
In recent years striking results have been obtained through the use of
computers In the production of music. Much of this work has been
conducted In research aettlngs, such as university laboratories, and la
often obtained through extensive utilization of the advanced hardware
and software systems these facilities are able to provide. Indeed It Is
highly unlikely that many of the major achievements In the. computer :nuslc
field would have been accomplisl1ed at all without the high-level support
of these sponsoring institutions and agencies.
Unfortunately, while the· power inherent in these large, expensive,
systems Is probably requisite for research It also tends to areate
difficulties when we wish to apply the results of that research In an
effective, economical, manner. Often new techniques are developed
which work extremely well In the context of a niegasystem but seem
nearly Impossible to Implement on, for Instance, II microcomputer for use In
homes, In schools, or by working musicians.
In the course of my work In this area I have found that It Is In fact
possible to transfer many techniques from the laboratory to the "real"
world, but that to do so usually requires that we expend some effort on
recasting the methods Involved into forms that are appropriate to our
applications. In this paper I will present several points which I believe
bear on the pragmatics of this promising and exciting area and which I
hope will be of use to the growing numbers of microcomputer musicians.

Objectlvell
The computer Is an extremely versatile .Instrument and one of the
significant problems that continually arises In computer music Is how to
deal with that flexibility. Paradoxically, It Is only when we decide which of
the Infinitude of possibilities we will concentrate on, thereby giving up
some freedom of chOice, that we begin to be able to achelve anything at
elr. The question Is, therefore, just what do we want a microcomputer
music system to do for us ?
Certainly there Is no single right answer to this question, in fact It Is to our
advantage If everyone's answer Is somewhat different. There Is a
tremendous ammount of unexplored territory In computer music and the
greater the diversity of approaches the faster those areas will be
developed Into usefulness. It seems though that there are a few clear
objectives, to which each person will then ascribe varying weights.
The first of these of course, is that It sounds good, that Is It should be
capable of producing Interesting, musical quality sounds. This Involves
aesthetic jUdgements, about which there can be only partial agreement. I
believe however that one of the most Important artistic accomplishments
of computer music has been the synthesis of rich, dynamic and evocative
sounds, and It would seem unnecessary and unfortunate to have to forego
such a singularly attractive feature simply because we are working with
smaller systems.
I feel this Is a somewhat Important pcint, In fact It has motivated a good
deal of my reasearches. One of the biggest failings, from II musical
standpOint, of much of electronic music, Is the relative paucity of sounds
employed as compared to those available to the traditional, acoustical
musician. If you listen to the usual square or sawtooth wave. which
pretty much define the palata of timbres available on a cheap analog
synthesizer for any length of time this will be readily apparent. To create
Interesting sounds with the standard analog modules Is an extremely
difficult task. The digital age has· arrived - surely we shOUld take
advantage of all the computer has to offer, rather than self-Imposing past
limitations.

How do we achelve this Impossible dream? .One place to begIn Is with the
actual sound generation and work from there, keeping In mind the various
design objectives. The remainder of this paper will concentrate on digital
synthesis and attendant issues.
The central problem to be solved In many areas of digital synthesis Is how
to attain a given musical or other type of signal within a reasonable cost.
Cost can be measured directly In terms of things like number of chips
needed to Implement a given function in a particular manner, or In terms of
the ammount of time it takes, or Indirectly In terms of constraints on the
signals produced, complexity of the necessary control systems and so on.
Ultimately however all this engineering must pass the acid test • What
does It sound /ll:.tte:ctji;ewaya of,proci~clilg hlOhquality musical louna will grow out.of
'thi.~ w6;~ To date'
have had ollly. very.mall ammount of uperllnoe
with actually' uslrig the.e. methods In the production of mUllo but Inltlel
experlmentl have l!lown them to be quite promlalng, and. we oen exPeot
to .ee them eventually recast In forms appropriate to mlorooompliter
ImpleD1entatlon.

we

John M. Grey
An Exploration of Musical Timbre
DepartPlent of Music Report STAN-M-2
Anon.
Biblical Mathematic.
Dr. Dobbs' Journal of Computer Callsthenlca and Orthodontia v1 n8 8EP
1978
Steve Saunde,.
Improved FM Audio Synthesis Methods for Real-Time Digital MII./o
Generation
Computer Mu.lo JO\lrnal v1 n1 fEB 1977 pp 153-615

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 131

A PIPE ORGAN/MICRO COMPUTER SYSTEM
Jet Raskin

Box511
Brisbane CA 94005

One night I got a call from a man who had been wandering
through the personal computer stores in the area. He was looking for a computer to operate his huge pipe organ. Inevitably
he was given my phone number, since I had been going around to
the same stores telling one and all about how I was working on
a controller for my pipe organ.
There are lots-of gimmicky reasons for wanting to attach a
computer to an organ. The reason that I am interested is that
the combination can provide the performer with a more flexible,
easier to play instrument. And then there are all those gimmicks. As it turns out, using a microcomputer can be less
expensive than conventional console wiring. Before we get
into the sl,lbject too deeply, the "organization" of the king
of instruments should be made clear.
The performer sits at the console. The performer's hands
rest '1m one or more keyboards called manuals. There are
usually from two to foul' manuals. The feet play on a set of
keys placed beneath the bench, the pedals. The console, on
most organs since the late 1800's, is separate from the rest
of the instrument and is connected to it by means of electrical
cables. As with the computer, the console is the "command center" of the instrument. Besides the keyboards there are a
number of other controls on the console that will be discussed
later.
The sounding portion of the organ consists of many pipes.
Each pipe sounds but a single note. There are typically many
different pipes for a given note, each of which has a different
sound quality or timbre. A set of pipes, all of similar timbre, one for each key on a manual, is called a rank. Each rank
has a name, many of which are hallowed by centuries of use.
Some, like Diapason or Bourdon describe sounds that are characteristic of organs and nothing else. Others, such as Trompette
or Blockflote are reminiscent of trumpets and wooden flutes
respectively. Obviously one rank is a minimum for an organ
(renaissance Portative organs had one rank). A small organ
usually has three or four ranks, controlled from two manuals.
The one being installed in my house has 26 ranks. A large
organ will have seventy or more. The organ owned by my friend
mentioned above has 140 ranks. That is very large, and only a
few cathedrals have more.
The complexity of a pipe organ will now become apparent.
Each rank has 61 pipes, as there are 61 notes on a manual.
Thus for a pipe organ of a hundred ranks there are six thousand
one hundred pipes. Each rank is turned off or on by a knob or
switch labelled with the rank's name. These knobs are called
stops (the terms stop and rank are sometimes used interchangeably, but in this discussion rank will refer to a set of pipes,
and stop to the controlling knob.)
A large organ often has four manuals (names Great, Swell,
Choir and Echo or Positiv) each having 61 keys, a 32 note
pedal board , and, say, 100 stop knobs, and a few dozen assorted
controls. Thus there are about SOD controls that the organist
must manipulate.
And now we come to the microcomputer. It must keep constant
watch,on 500 switches. and control some six thousand relays one for each pipe. It must never miss a switch closure or
release, and must operate the correct pipes - sometimes dozens
simultaneously - within a 20th of a second. Is this within the
capabilities of an 8080? As it happens, it is. But not without a bit of tricky I/O design, and some swift algorithms.
For completeness, it should be mentioned that some ranks are
not exactly 61 notes. "Unified" ranks often have 75 pipes, and
some special ranks have fewer than 61. But fortunately these
exceptions are easily handled. The problem is simplified in
some organs (a little) by sets of ranks grouped into "straight"
chests where instead of each pipe having its own electrically
operated valve (a "unit" chest), each rank in the chest has a
valve. Then all notes of the same name (such as all C's or all
r sharp's) have one valve. This loses some 'generality, but
requires fewer valves and electrical connections. For M ranks
of N notes each a "straight" chest requires M+N valves. A
"unit" chest has M*N valves.
'
Organs also traditionally have couplers, which operate
either within a keyboard, or between keyboards. An intermanual
coupler has the effect of operating a note on one manual when
you press a corresponding note on another. (On some old organs
both keys actually move when you press one of them. This may

have given rise to "phantom of the opera" stories.) A coupler
that works within a keyboard plays a note typically an octave
higher or lower than the one you are playing - but on the same
keyboard. Intervals other than an octave also are available on
some organs.
An organ is also separated into divisions. These have the
same names as the manuals, typically Great, Swell, Choir, Echo
and Positiv. The pipes played by the pedals form another div1S10n: the pedal division. Each rank belongs to exactly one
division. In the traditional organ a manual could only play
pipes in its division. You could couple manuals together, but
it was impossible to playa rank in the Swell division from the
Great manual without playing all stops that were pulled in the
Swell division from the Great-manual. This separation into
divisions has no musical benefits, it was done merely to simplify the construction of the switching in the console. The
microcomputer can be used to obliterate the concept of division, thus giving more freedom to the organist who can then
assign any rank to any keyboard independently. This is the
first of a number of non-gimmick improvements that can be
appreciated by any organist.
The switching in the traditional organ is done by the most
incredible collection of electrical, mechanical and pneumatic
switches imaginable. That it works at all, being made mostly
of slats of wood and strips of leather with silver wires for
contacts, seems dubious. It is not suprising that not every
conceivable freedom in interconnection has been permitted the
organist in the past.
The wiring from the console to the pipes over distances
from 10 to over 100 feet reminds one of a cross between the
innards of a computer before the mother-board was invented and
a telephone company switching office. Another major advantage
of the computerized organ is the elimination of most of this
wiring. In a very large organ the cost of the computer system
may be less than the cost of the cabling alone.
,
When an organist plays a piece, the piece (or each section
of the piece) has a characteristic sound quality produced by a
judiciously selected set of stops being activated. A particular collection of stops is called a registration. It is
usually desirable to be able to store such combinations.
There are a number of buttons called pistons which recall combinations of stops. Logically enough these collections of
stops are called combinations or presets. There are often a
few fixed presets, and a number of pistons are provided whose
registration the organist can change at will. Another advantage of the computer controlled organ is that many more presets
will be available. Four kilobytes of memory can store hundreds
of different presets, more than on any conventional organ.
Four kilobytes of memory costs less than one preset done mecha&
ically! And it's a lot easier to install-.-Consider what happens when a single key is pressed. First,
any keys that are coupled to it are also activated on its keyboard as well as on other keyboards. For each of those resultant keys as well as the original key, the applicable stops
must be looked up. If there are two couplers and four stops
activated for each of the three keyboards involved then no
less than 12 pipes must sound. When playing a full chord with
many couplers and stops engaged it is not uncommon for 500
pipes to be operated simultaneously.
A number of schemes were concocted for driving the pipes and
reading the keys. One scheme, which has been used on smaller
organs for computer control, is to have each key send out a
unique code. Each pipe recognizes its own address. The computer receives key-codes as well as stop and coupler codes and
computes the appropriate pipe addresses. A decoder at ea.ch
pipe as wen as a diode matrix or other encoder for the console
is required. Since on a large organ there are over two to the
twelfth pipes, even a l2-bit code would not be long enough.
This would mean assembling two 8-bit words for each p1pe. Putting out over SOD of these in a 30th of a second, considering
the number of steps required in the program, was impossible.
Furthermore, the cost for the decoders at each pipe was prohibitive. This ruled out going to a l6-bit computer, since it
wo~l9n't help the decoder problem, and a larger word size
seemlld to hold few advantages in any other way.
Cost alone ruled out the brute-force approach of just using
a very fast computer. Another way to get high data rates from
a micro was to use direct memory access (DMA) circuitry. With

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA94302

this scheme one DMA device would be scanning the keyboard continuously and putting key depressions and releases in memory.
The main processor would, at its own rate, scan the keyboard
image in memory and construct a list of pipes to be played or
quieted. Another DMA would scan the list of pipes and control
the pipes accordingly. In essence, there would be three computers sharing the same memory. They would run asynchronously,
each going as fast as conditions allowed. This seemed feasibl~
and a DMA design effort was started - and promptly stopped when
a far simpler solution was discovered.
Part of the solution was in hardware. At one extreme of
decoding (as explained above) each pipe has its own decoder.
It would be more efficient for each group of, say, eight pipes
to have a decoder which detects its code, and then accepts the
next byte as controlling eight pipes in parallel. The eight
bit control byte 10001001 might mean to play the notes C, E,
and G while leaving CN, D, DR, ,F and FH silent. This reduces
the number of decoders by a factor of eight, and then operates
eight pipes at a time. This was fast enough in the I/O department, but the time required to assemble the control bytes by
masking or rotation was too great. A micro handles bytes like
crazy, but manipulating individual bits inside them is not
nearly as fast. A number of algorithmns were considered, but
it was apparent that they weren't even in the ball park.
At the other extreme from a decoder for each pipe is the
idea of having no decoders whatever. This idea was put forward
early in the design effort, but was discarded as rediculous.
In the end it became clear that the idea was not only feasible,
but fast and cheap to implement in hardware. It also made the
software much easier to design. It works like this: A very
long serial-in/parallel-out shift register is made. It will
have at least one output for each pipe. Using available 8-bit
shift registers the 140 rank organ's 2000 electrically operated
valves require about 250 shift registers. (The 7000 pipes require only 2000 controlling lines since most of them are on
straight chest~) In effect we build a 2000+ bit'shift register - sort ,of a long skinny tube through which ones and zeros
flow in single file. When all the ones and zeros (standing for
pipes sounding or silent) reach their correct positions a command (strobe) is sent operating all the ~ at once. If the
process is to take 1/30th of a secona;-tne-sniftreg[ster has
to move 2000 bits in that time. But this is a rate of only
60000 bits per second (60KHz) which is within the capabilities
of both the shift registers and the computer. Remember that
these calculations are for a mammoth size organ. Most organs
are significantly smaller and the problems are correspondingly
easier.
A similar approach is used for the keyboards. There exists
a 33 input parallel to serial converter made for electronic
organs. Just two of these IC's would suffice to encode an
entire manual. The 500 controls could be transmitted serially
to the computer in 1/200th of a second at 100 KHz. The interface would require fewer than 20 "critters". Again, this is
for a huge organ. My own horne organ would require only 10
chips for its console.
The hardware can now be summarized. A SOO bit parallel-toserial converter for input, a 2000 bit serial to parallel converter for output, one input port and one output port are
required. Each pipe also needs a power transistor to handle
the .5 amps at 14 volts required by the valves (this i& a typical figure). Some of the larger pipes might require two stages
or a darlington power transistor, but there is no real difficulty in the design. Another side benefit accrues at this
point: Many pipe organs use electro-pneumatic valves for each
large pipe. This is because an all-electric valve opens too
suddenly. To solve the problem the traditional builders had
the electrical valve let air into a small bellows that in turn
operates the valve that lets air into the pipe. A pair of R-C
networks and a diode in the base circuit of the power amplifier
'for each pipe can give the desired slow attack and release
usually obtained by the much more expensive and problematical
pneumatic system. This can amount to savings of over $1000 in
a large organ. It should be mentioned that some organ manufacturers have been successful in,making satisfactory all-electric
valves with appropriate attack and decay curves. They would
not require the R-C networks.
Software design was as gradual as the hardware design.
There were two breakthroughs necessary before i,t was clear that
the 8080 could work quickly enough. When the design was being
done, by 'the way, the Z-80 and other faster processors were
not in production. But the constraints of the 8080 and the
very large organ forced a much tighter and cleverer design than
would have been developed had we had more powerful computers
and a smaller organ. Given the newer computers, of course,
larger and more complex pieces of equipment can be controlled.
,Many industrIal plants have fewer than SOO sensors and 2000
elements that need to be operated in real time. A microcom-

PAGE 132

puter using the techniques outlined here could handle theD!.
The program begins by sweeping in the console settings. To
save time only ~ bit ~ word is used. This wastes 7/8ths of
SOO words, but memory is cheap. The same triCk will be used in
output, eliminating the necessity to pack bits into bytes.
Thus over 2K bytes will be sacrificed to gain speed. There
goes all of $40 in memory costs. It buys us at least a factor
of 5 in speed. It is worth it. While it now seems obvious
that this is the way to proceed, it somehow took'4 months to
find the solution. This is probably because we are so used to
trying not to waste memory. A pipe organ costs from $20,000 to
whatever you care to spend (a million dollars in not unusual),
The computer costs are lost in the small change. --The input and output loops are very simple. Point to a
memory location. Do an input (or output). Move the contents
of the accumulator to that location. Increment the location.
Check for done. If not done do an input (or 'output). And so
on. The loop can be done on an 8080A at 66KHz. Thus theen-'
tire organ can be updated in 0.03 second. The worst we could
live with would be 0.05 second. The 8080 with a 2MHz clock is
just fast enough. An 8085 or Z-80 CPU would be plenty fast.
Again remember that for a reasonable size organ the plain old
8080 would be more than fast enough, and that we are discussing
a worst case design. Any Poly-88 or ALTAIR or IMSAI or SOL
computer could easily handle most pipe organs.
Even with I/O solved there still remains,the problem of,
deciding which pipes are to go on and which to go off. At
first this was a stumbling block in terms of the time it woul,d
take to do the computations. On each console scan, it seemed,
a table of couplers would have to be made up, as well as a
table of stops. A key depression, through the couplers,
results in a number of "virtual" key depressions. Since some
virtual keys, being higher or lower on the keyboard than the
original key, will go off the end of a keyboard, they must be
deleted from the virtual key list. The remaining keys have
then ,to be processed through the stop list to determine which
pipes are to be played. Since the input routines take a total
of about 0.037 seconds the processing must take less than .013
seconds. Just the checking for out-of-range virtual keys
would take longer than this.
The easiest solution to the coupler spill-over problem is to
include a few extra places in the shift register on both ends
of each rank. This allows all the ranks to have the same shift
register length whatever the actual number of pipes. The first
advantage is that out-of-range virtual key depressions need not
be checked for since they fall into unused sections of the
shift register. As with the wasted memory, the cost of the
unused shift registers is small. The second advantage is that
the electronics for every rank, of whatever kind, can be massproduced. This makes it less expensive to build - as well as
making the software easier to write (aside from merely being
faster) .
Aside from satisfying traditional organists, there is no
reason to have intermanual couplers on a computer-controlled
pipe organ. The original reason for including intermanual
couplers was to minimize the limitations imposed by the separation of the pipes into divisions. The computer, by being able
to assign any rank to any manual (or the pedals) eliminates
entirely the need for these couplers, as has ,been pointed out.
The presence of intermanual couplers is retained mainly as a'
sop to traditional organists. It might well be eliminated in
my own organ.
Another choice to be made is whether, to recalculate all the'
pipes to be played, or to just modify the previous state on
each cycle. It was decided to recalculate from scratch each
time to eliminate the possibility of cumulative error. It also
means that keybOllnce is automatically taken care of. In the
slight time between updates an organ pipe cannot even,begin to
sound. A spurious signal for one cycle is effectively ignored.
Continuous pipe-on instructions emitted over a periOd of something like .1 second or more are required before the slow mechanical valves can react. The higher pitched pipes re'spond
quickly, incidentally, and the low pipes sometimes take nearly
a 'second to begin playing. Organists learn to compensate by
playing low notes somewhat early. Without introducing a constant across-the-board delay it does not seem possible to have
the computer compensate for the effect, but it is a place where
some experimentation might be interesting. Experienced organists, of course, might look askance at such an innovation, bu,t
they needn't be told about all our ideas.
To summarize: A cycle of1the computer-organ system starts
by pulling in the state of the console. The second part of the
cycle (yet to be described) calculates the pipes that should be
plaYIng given the state of the console. The third"portion of
the cycle sends the pipe commands along the shift register.
The process is repeated at least once every 30th of a second.
A coupler (of whatever kind) is merely a displacement, which

FIRST COMPUTER FAIRE PROCEEDINGS

is easily calculated since a11 keyboards and ranks are the same
nominal length. Likewise engaging a stop is also a displacement of a distance equal to the difference between the bottom
of the manual's image in memory to the bottom of the rank's
image in memory. Thus these displacements or offsets can be
simply added to yield the offset for a combined coupler/stop
setting-.-An example, with a simplified organ, will demonstrate how
the algorithm operates. Say there is one manual with 10 keys
numbered 1 through 10. They are read into memory locations
(all numbers will be in base 10 for this discussion) 1001
through 1010. The ranks each have 10 pipes, and there are two
of them. The first rank is stored in locations 2001 through
2030. The second rank is stored in locations 3001 through
3030. Remember that the area set aside for each rank is larger
(here three times as large) as the actual space necessary.
There are two stop switches, stored in lqcations 4001 and 4002.
There are two couplers. They are stored in 4003 and 4004. The
first couples up five pipes high, the second down three pipes
low.
When the low order bit in 4001 is on (or, as they say, high)
the program adds 2010 to the key address to get the pipe address. When the other stop is on 3010 is added. If the first
coupler is on an additional 5 is added, the second coupler subtracts 3 (or adds a negative three - it is all the same thing).
The addition is done but once. Say the first stop and the
second coupler were operated, then given a key on at location
1005, to get the proper location to turn the pipe on merely add
(2010-3) or 2007 to the key location (1005+2007)=3012. Indeed
this is the correct pipe.
This brings up another possible freedom given by use of a
microcomputer. When a stop and a coupler are operated, one
gets both the note given by the stop and the extra note given
by the coupler. With a computer it would be possible to give
just the note given by the coupler acting on that stop. Since
each stop could have a whole panoply of couplers attached to
it, the number of buttons would soon become unworkable. For
complete flexibility the organist would have to be provided
with a keyboard and display. One would play the organ by seting up many required presets, with whatever degree of flexibility required, and then the easily hit tabs would not activate stops, but would bring in the organist's choice of registrations.
In the example above choosing both stops and both couplers
would result in having to add six numbers to each key location
to obtain the pipe location. In the actual implementation the
program would, for each manual, do the following:
1. Scan the list of stops, and make a table of addends.
2. Scan the couplers, and add them to each stop, extending
the list of addends.
3. Add the addends to the locations of that manual that
contain a 1 (meaning a key depression).
4. Turn on the low-order bit in the indicated word in the
pipe image.
Inter-manual couplings look just like any other kind of
coupling. Say that one manual is stored in 1001 through 1010,
and another manual at 1201 through 1210. The coupling the
first manual to the second manual merely means adding 200 to
the locations of the first manual. Just which inter-manual
couplers will be allowed'must be carefully specified. If anything is allowed we get the following cat-chasing-its-tail
effect: Manual 1 is coupled to manual 2 at the same pitch.
Manual 2 is coupled to manual lone key higher (a "half step"
higher in musical terminology). Press "C" on manual 1. "c"
gets played on manual 2. This forces "C#" on manual 1. But
this makes "C#" play on manual 2 .... Every key is thus being
played. As hinted at above, intermanual couplings are only
necessary on organs where the pipes are separated into divisions. In the computer controlled pipe organ they can and
should be eliminated. Everything they can do, and more, can be
done by freely assigning ranks to keyboards as desired.
I am not sure that all organists will be convinced by this.
The organ console of the future, as it appears in the light
of the computer mediated organ, looks like this: The manuals
and pedals are built to the usual AGO (American Guild of
Organists) standards.. These standards are excellent, and
permit an organist to travel from one instrument to another
with a minimum of relearning. Instead of the usual arrangement
of stops, there are as many rows of stops as there are keyboards. When a stop is to be assigned to a given keyboard, the
button in the.row representing that keyboard, and in the column
representing. that stop, is pressed. Done. Any particular
registration amy be captured by pressing the "capture" button
and while ho~ding it operating the chosen preset button. The
stop buttons shouid, as on conventional organs, move (or light
up) to show what choices have been made. This is not far from
conventional practice.

BOX 1579, PALO ALTO CA 94302

PAGE 133

The possibilities in a console screen, with alphabetic readout, are endless, and would require another paper this length
to explore. Similarly the gimmicks - from very useful ones
that record (on a disc or cassette) the performance in terms of
keystrokes - to silly ones (for example connecting the doorbell
to the computer, so that the organ plays "Jesu, Joy of Man's
Desiring" when a visitor unwittingly presses the door button)
again would take up too much space for this paper.
The reasons, in short, for using a computer in a pipe organ
are these:
1. Simplification of the wiring of the organ.
2. Greater reliability than conventional switching.
3. Lowered expense in medium and large instruments.
4. Much greater control of the instrument by the performer.·
5. New freedoms in choosing registrations.
Nothing, it would seem, is lost by going to a microcomputer,
and one could keep advantages 1, 2, and 3 above while keeping
the appearance and operation of the pipe organ unchanged, in
case some organist were so hidebound as to not want advantages
4 and 5.
Acknowledgements: Certainly at least half of the ideas expressed in this paper are due to ~y friend and colleague, Doug
Wyatt. All of the ideas were developed in collaboration with
him. Thanks are also due to Jim Brennan, who owns the incredibly large organ so often mentioned in this article, and whose
co-operation and inspiration have been essential to the project

BOX 1579, PALO ALTO CA 94302

FIRST COMPUTER FAIRE PROCEEDINGS

PAGE 134

A COMPUTER CONTROLLED AUDIO GENERATOR
Thoma. E. Olsen
2500 Medallion Drive, No. 57
Union City CA 94587

ABSTRACT
THIS PAPER SHOWS ONE APPROACH TO BUILDING A PIECE OF HARDWARE
WHICH ENABLES A COMPUTER TO PRODUCE SOUNDS THROUGH A LOUDSPEAKER.
THE DEVICE DESCRIBED ENABLES TWO PARAMETERS TO BE DYNAMICALLY
CONTROLLED BY THE COMPUTER: PITCH (FREQUENCY) AND AMPLITUDE
(LOUDNESS).
THE PAPER DISCUSSES THE GENERAL ARCH ITECTURE OF
THE DEVICE, BUT DOES NOT GIVE ANY CIRCUIT DIAGRAMS SINCE
EVERY HOBBYIST WILL PROBABLY WANT TO DESIGN IN HIS OWN OPTIONS.
SPECIFIC KEY INTEGRATED CIRCUITS ARE DISCUSSED AND RECOMMENDED
FOR THIS APPLICATION.
DATA SHEETS ARE INCLUDED.
POSSIBLE
ENHANCEMENTS TO THI,S DEVICE ARE ALSO DISCUSSED .

. INTRODUCTI ON

A SOUND GENERATOR IS A VERY USEFUL DEVICE TO HAVE CONNECTED TO
YOUR COMPUTER.
FOR MUSICIANS WHO HAVE DABBLED IN ELECTRONIC
MUSIC, THE UNLIMITED POSSIBILITIES ARE OBVIOUS.
FOR THE REST
OF US, JUST BEING ABLE TO MAKE WEIRD NOISES IS OFTEN JUST AS
EXCITING.
STAR TREK WITH SOUND EFFECTS IS ONE OF MY FAVORITE
APPLICATIONS BECAUSE IT ADDS A GREAT DEAL OF REALISM TO THE
GAME.
ANOTHER IMPORTANT REASON FOR ADDING SOUND TO YOUR SYSTEM
IS THAT IT ENABLES THE LAY PERSON TO QUICKLEY APPRECIATE WHAT
YOUR COMPUTER CAN DO. ANYBODY CAN UNDERSTAND "MUSIC" JUST BY
HEARING IT.
UNDERSTANDING SOME CRYPTIC PRINTOUT IS OFTEN QUITE
ANOTHER STORY.
FINALLY, GENERATING COMPUTER MUSIC IS A GREAT
WAY TO DRIVE YOUR NEIGHBORS CRAZY.

WHAT IT IS

THE COMPUTER CONTROLLED AUDIO GENERATOR IS A DEVICE WHICH YOUR
/If>!,oaTCltJE COI'ITl?Ol. C..l,flCClIT/?Y
/)/IC

FUNCTION
. Gc#€J(p.rOl?

LO(IJ)SPE/1kEI?

A::JWER
P.NPI.IFIEi?

INT€I(,c/lCE
-f'
CONTI?OI..

"'Vr---i

[)

OIfC
ComPUTE!?

P./TCIi' CO,vT,fOL.C..lI?CClITI?Y

,oA'OG.fA'A'88L£

#,/tJ/O

(TEl/.

!3IOCK t)/,«;,R/i/'9
TNOP')I1S E.

OlSGN

2-23-77

I

I

COMPUTER OUTPUTS DATA TO. THE DATA THEN CONTROLS THE AMPLITUDE
AND FREQUENCY OF A WAVEFORM PRODUCED BY A VOLTAGE CONTROLLED
OSCILLATOR. THIS WAVEFORM IS THEN CONNECTED TO YOUR STEREO
SYSTEM SO THAT YOU CAN HEAR AND/OR TAPE RECORD IT.

HOW IT WORKS

REFER TO THE BLOCK DIAGRAM THROUGHOUT THIS DISCUSSION.
THE COMPUTER OUTPUTS DATA TO ONE OF TWO OUTPUT PORTS. ONE PORT
IS USED TO CONTROL THE FREQUENCY OF THE TONE PRODUCED, WHILE THE
OTHER PORT IS USED TO CONTROL THE AMPLITUDE OF THE TONE.
THE
DATA PATH IS 8 BITS (1 BYTE) WIDE.
THIS MEANS THAT UP TO
256 DIFFERENT PITCHES AND AMPLITUDES ARE SELECTABLE BY THE
COMPUTER.
THERE IS NO INHERENT REASON WHY THE DATA PATH COULD
HOT BE WIDER AND THUS PRODUCE BETTER RESOLUTION. THE MAIN
·PROBLEM IS THAT THE DIGITAL TO ANALOG CONVERTERS START GETTING
A BIT MORE EXPENSIVE· WHEN THEY ARE WIDER THAN 8 BITS.
THE BLOCK LABELED INTERFACE AND CONTROL MUST PERFORM SEVERAL
FUNCTIONS.
IT MUST BUFFER THE DATA BUS WITH SOME TYPE OF
BUS RECEIVERS, AND IT MUST BE ABLE TO DECODE WHEN A BYTE IS
BEING SENT OUT TO IT. AT THIS TIME, IT PRODUCES THE CLOCK
SIGNALS THAT LATCH THE DATA BYTES INTO THE APPROPRIATE
REGISTERS.
THE TOP REGISTER OR LATCH IS USED TO HOLD THE AMPLITUDE CONTROL
BYTE. THE BOTTOM REGISTER HOLDS THE FREQUENCY CONTROL BYTE.
THE OUTPUTS OF THESE REGISTERS FEED THE DIGITAL TO ANALOG
CONVERTERS (DAC). THE DAC'S PRODUCE A CURRENt WHICH IS DIRECTLY
PROPORTIONAL TO THE MAGNITUDE OF THE BYTE AT THEIR INPUTS.
THESE CURRENTS ARE THEN FED INTO OPERATIONAL AMPLIFIER NETWORKS
WHICH ARE RESPONSIBLE FOR CONVERTING THE CURRENT TO A VOLTAGE,
AND SCALING THAT VOLTAGE SO THAT THE DESIRED VOLTAGE SWEEP
RESULTS WHEN ALL POSSIBLE BYTES ARE OUTPUT TO THE PORT.
DESIGNING THIS NETWORK SO THAT IT WORKS PROPERLY WITH THE
FUNCTION GENERATOR IS THE MOST DIFFICULT PART OF THE DESIGN.
IT WILL BE NECESSARY TO KNOW HOW TO DESIGN WITH OPERATIONAL
. AMPLIFIERS IN ORDER TO SUCCESSFULLY IMPLEMENT IT.
THE PROPERLY SCALED AMPLITUDE AND FREQUENCY CONTROL VOLTAGES
ARE APPLIED TO THE FUNCTION GENERATOR INTEGRATED CIRCUIT.
THIS DEVICE THEN PRODUCES THE WAVEFORM ~HICH IS THEN AMPLIFIED
AND HEARD. THE WAVEFORM CAN BE SELECTED AS EITHER SINE,
TRIANGLE, OR SQUARE WAVE.
DESIGN DETAILS

EVERYTHING UP TO THE CIGITAL TO ANALOG CONVERTERS IS PROBABLY
A PIECE OF .CAKE TO MOST COMPUTER HOBBYISTS WHO WOULD
UNDERTAKE·THISKIND OF PROJECT. ACCORDINGLY, I WILL NOT DISCUSS
THESE SECTIONS.
THE DIGITAL TO ANALOG CONVERTER WHICH IS THE LEAST EXPENSIVE
AND EASIEST TO.OBTAIN IS PROBABLY THE MC140S.
THE DATA SHEET
SHOWS BASICALLY HOW TO CONNECT IT. THE INPUTS ARE TTL COMPATIBLE

AND THE SINGLE OUTPUT IS A CURRENT.
THE MAGNITUDE OF THIS
CURRENT CAN BE CONTROLLED THROUGH THE PROGRAM RESISTOR. BE
SURE TO OBSERVE THE DIRECTION OF THIS CURRENT WHEN DECIDING
HOW TO CONNECT IT TO YOUR OP-AMPS.
BEFORE DESIGNING THE AMPLIFIER/SCALER SECTION OF YOUR AUDIO
GENERATOR, YOU NEED TO KNOW WHAT CONTROL VOLTAGE RANGES YOU
WILL NEED TO SUPPLY TO THE FUNCTION GENERATOR CHIPS TO PRODUCE
THE DESIRED RESULT. THE BEST IDEA ·IS TO PLAY WITH THE FUNCTION
GENERATOR BY ITSELF FOR A WHILE BEFORE CONNECTING IT TO THE
REST OF THE SYSTEM. CONNECT TWO POTS, AS VOLTAGE DIVIDERS, TO THE
VOL TAGE CONTROL INPUTS OF TH.E FUNCTION GENERATOR AND BASED ON THE
DATA SHEET, CHOOSE AN RAND C THAT WILL PUT YOU IN THE BALL PARK
FREQUENCY-WISE. YOU WILL HAVE TO DECIDE WHAT DYNAMIC RANGE YOU WILL
WANT FOR YOUR AUDIO GENERATOR. MINE CAN BE SWEPT FROM 3 HZ TO
ABOUT 10 KHZ. BY THE TIME YOU ARE DONE PLAYING WITH THE FUNCTION
GENERATOR, YOU SHOULD HAYE CHOSEN A GOOD VALUE FOR THE RAND C
AND YOU SHOULD KNOW WHAT VOLTAGE RANGE YOU WILL NEED TO SWEEP
THE AM AND FM INPUTS OVER IN ORDER TO OBTAIN THE EFFECT YOU
DESIRE. THESE VOLTAGE RANGES SHOULD BE SOMETHING LIKE. 5 VOLTS
TO 12 VOLTS IF YOU USE THE EXAR CHIP. TRY TO AVOID RESORTING
TO VOLTAGE RANGES WHICH CROSS THROUGH ZERO.
THERE ARE TWO
FUNCTION GENERATORS WHICH I HAVE TRIED FOR THIS APPLICATION.
ONE IS THE INTERSIL S03S AND THE OTHER IS THE EXAR XR-2206.
BOTH OF THESE ARE READILY AVAILABLE (JAMES ELECTRONICS).
I
FOUND THE EXAR CHIP INFINATELY SUPERIOR AND EASIER TO DESIGN
WITH FOR THIS PARTICULAR APPLICATION. ALSO, THE EXAR CHIP HAS AN
AMPLITUDE MODULATION INPUT ALREADY THERE. YOU HAVE TO PLAY
GAMES WITH THE 8030 CHIP TO ACHIEVE AMPLITUDE MODULATION.
REMEMBER THAT YOU ONLY GET 256 FREQUENCY ·STEPS IF YOU ARE
USING AN 8 BIT DAC. THUS, IF YOU WANJED TO BE ABLE TO SWEEP
THE AUDIO SPECTRUM FROM 100 HZ TO 10 KHZ, YOUR RESOLUTION
WOULD BE:
(10,000 - 100)/256
38 HZ
IF THIS IS NOT ACCEPTABLE, YOU WILL HAVE TO USE EITHER A WIDER
DAC, OR SEVERAL 8 BIT DACS WITH THEIR OUTPUTS SUMMED BY THE
OP-AMP NETWORK.
THE FUNCTION GENERATOR GIVES YOU THE OPTION OF SELECTING THE SINE,
TRIANGLE. OR SQUARE WAVE OUTPUTS. THE ADVANTAGE TO USING TRIANGLE OR SQUARE IS THAT YOU GET HARMONICS WHICH ARE NOT FOUND
IN THE SINE WAVE.
THE OUTPUT OF THE GENERATOR SHOULD BE
CAPACITIVELY COUPLED TO YOUR AUDIO AMPLIFIER IF THERE IS A
NON-ZERO AVERAGE DC VOLTAGE IN THE OUTPUT.

"

~

iC!
-4

m

:II

~
im
"V

g
m
m

o

Z

.C')

en

.~

.~

~

6
ONE ADVRNTRGE OF THE XR-2206 IS THAT IT HAS AN FSK INPUT. THIS
COULD BE USED TO IMPROVE YOUR RESOLUTION WITHOUT REQUIRING
A WIDER DAC.
THE FSK INPUT ENABLES YOU TO PROGRAMMABLY SELECT
EITHER OF TWO DIFFERENT TIMING RESISTORS.
YOU COULD USE ONE
RESISTOR FOR THE RANGE 0 HZ TO 5 KHZ, AND THE OTHER FOR THE
RANGE 5 KHZ TO 10 KHZ. THIS WOULD THEN IMPROVE YOUR RESOLUTION
BY A FACTOR OF TWO.

»
,...

d
~

!
~m

iii

PROGRAMMING THE THING
THERE ARE AN INFINITE NUMBER OF WAYS TO PROGRAM THIS DEVICE. A
GOOD COMBINATION OF EXPERIMENTATION, IMAGINATION, AND PATIENCE
WILL CERTAINLV VIELD SOME VERY INTERESTING AUDIO EF-FECTS.
OF VITAL IMPORTANCE IS A GOOD MONITOR PROGRAM THAT LETS YOU
DVNAMICALLV AND RAPIDLV CHANGE PARAMETERS.
THE SYSTEM THAT
I USE TO WRITE MUSIC IS SIMILAR TO "FORTH" AND IS EXTREMELV
POWERFUL FOR THIS TVPE OF APPLICATION.
ONE THING TO KEEP IN MIND IS THAT THE COMPUTER IS MUCH FASTER
THAN AUDIO WAVEFORMS.
THIS ENABLES YOU TO RAPIDLV CHANGE OR
SWEEP BOTH THE PITCH AND AMPLITUDE CONTROL VOLTAGES AND THUS
PRODUCE A VARlET.,. OF INTERESTING EFFECTS. REMEMBER, THE
AMPLITUDE CONTROL PART OF THE CIRCUIT IS NOT INTENDED TO REPLACE
THE VOLUME CONTROL ON YOUR STEREO!!! IT IS USED TO GENERATE
THE DESIRED ENVELOPE OF A TONE BURST AND IT IS VARIED OFTEN,
NOT ONL.,. WHEN THE NEIGHBORS START BANGING ON THE WALLS.

POSSIBLE ENHANCEMENTS

."

!
iC!
-t

m

::II

~

::II

m

"II

::II

~
o

m

m

Z

Q

o

~

~
THE CONCEPT OF USING A CONTROL VOLTAGE TO CONTROL AUDIO EQUIPMENT
IS NOT NEW.
IN FACT, THIS IS HOW THE MOOG, ARP, AND BUCLA SVNTHESIZERS WORK.
THE COMPUTER BEING ABLE TO RAPIDLV AND REPEATABLV
CONTROL THESE VOLTAGES IS .WHAT IS RELATIVELV NEW.
ONE POSSIBLE ENHANCEMENT WOULD BE TO PUT A VOLTAGE CONTROLLED
FILTER (ASSUMING YOU KNOW HOW TO DESIGN ONE) IN SERIES WITH
THE SQUARE WAVE OUTPUT OF THE FUNCTION GENERATOR AND THE INPUT
TO THE POWER AMPLIFIER. A THIRD CONTROL VOLTAGE COULD THEN
BE OBTAINED FROM A THIRD PORT TO CONTROL THE PARAMETERS OF THE
FILTE~

ANOTHER IDEA WOULD BE TO BUILD SEVERAL AUDIO GENERATORS SO THAT
CHORDS COULD BE PLAVED.

~

6
:I>
r

a

g

I
~-

I;m
....
~

CONCLUSION

IF YOU BUILD THIS DEVICE, 1 THINK YOU WILL FIND, AS I DID, THAT
THE POSSIBILITIES ~RE MIND BOGGLING. MAKING THE DEVICE WORK IS
TRIYIAL COMPARED TO THE TASK-OF PROGRAMMING IT TO PRODUCE PLEASING
"I'IUSIC".
IF ONLY I WERE BOT.. A MUSICIAN AND AN E. E. !!!!

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 137

DIALNET AND HOME COMPUTERS
John McCarthy & Les Earnest
Artificial Intelligence Laboratory
Computer Science Department
Stanford University
Stanford CA 94305

1. The Dillnel Concepl

The system looks up Organlk in Smith's correspondent file and discovers that his
computer pseudonym is ·NA T· at a computer called UTEX-CHEM I that Is

Di/J/ntt will be a set of protocols like the ARPAnet protocols that wll1 enable an reached at 512 471-3221 via a 1200/150 baud asychronous modem. It selects an
on-line computer user to send messages to users of other computers, to transmit files
between his own and other computers. and to use other time-shared computers
directly - an using the facilities of the ordinary dial-up telephone network. His
computer will need a suitable modem and must Implement the Dlalnet protocols In
Its operating system. The Stanford University Artificial Inte11lgence Laboratory
plans to undertake an eighteen month study Ind experimental Implementation of
the protocols. with support expected from the National SCIence Foundation. While
we expect the main users of Dldlnll to be time-sharing systems. we hope the
protocols will be Implementable by single user computer systems down to the level.
If It proves possible, or hobbyist computers. We call the system Dlalnet by analogy
with ARPAnet, but unlike the ARPAnet, It reqUires no administrator to "admit"
new members; they need only know each other's telephone numbers.
The ARPAnet connects several hundred computer facilities Involved In Defense
Department supported research and allows users or one system 10 log In on others.
allows transmission of messages between user. of different computers. and anows
Ihe Iransfer or files between computers. More generany, It anows Interaction among
programs In different computers.
These facilities have proven valuable In permitting collaboration between computer
scientists at different sites and In permitting nationwide access to unique facilities
such as the MACSYMA system for computing with algebraic and analytic
expreSSions at M.I.T. It permits a new form of publication In which documents are
kept In the computer, are continuously updatable. are Immediately accessible
throughout Ihe country. and In which comments from readers Ire accessible to
other readers.

outgOing line with a matching modem. dials the number and attempts to transmit
the message. If the transmitting computer cannot elicit a response from the deSired
reCipient. it informs the user that it will try again later and send him a message
when the transmission has succeeded. If the user's correspondent file did not
contain the telepone number and modem characteristics. the user would have to
supply them.
The identity and location of the sender and date and time of the message are
automatically placed at the front of the message. At the receiving end, if the
addressee is logged in on the computer. he Is immediately informed that mall has
arrived and from whom. If not logged in. he will receive the message the next time
he logs In. In either case, he can use the same facility to respond:
mail Smith
David Piranha (DAVE'UTEX-CHEH3) has a student working on
inhibition by anions of anhydrase B_
Following up on this lead. the user types
link dave'utex-chem3
A connection is made to the speCified computer and. if DAVE is logged in. he
immediately receives a message saying
** link request from Smith ~SU-CHEH7 ••
He could then type ·1 ink· and have his keyboard and display effectively linked to
those of the caller. permitting a conversation.
Let us suppose, however. that DA V E is not logged In and the caller Is so informed.
He then types
locate dave@utex-chem3
which obtains the following information from the specified computer:
David Piranha last logged out at 23:47 on 9 Hay 1976. Plan: I
will be out of touch Hay 10 through 16. I plan to visit Hartin
Shumway at the University of Utah on Hay 17 and should return by
Hay 18. Will check mail from Utah.

The usefulness of the ARPAnet has prompted many non-defense installations to
try to connect to it. and in some cases this has been pOSSible. but !Jsually the
institutional and financial obstacles have been insuperable. The main financial
obstacles are the need for a dedicated computer called an IMP costing about
180.000 at each site and the need for dedicated communication Unes rented by the Noting that the current date Is May H. so that there is no point in getting ,he
Department or Defense at great expense from the telephone companies. Some other message there quickly. Smith types
networks have been started, but they generally don't offer the range of services that
night mail dave@utex-cheml
we desIre.
I am interested in your work on anhydrase B. If possible, give'
pointers to online documentation, else give me a call at 415 4974430 (Stanford) or 415 321-7580 (home)_
We propose to design protocols that can be Implemented at any time-shared
computer Installation Dr single user computer system without joining any formal The ·night mail" command causes the message transmission to be deferred until
network. The hardware cost will be from 8500 to 85000 depending on the type of inexpensive nighttime telephone rates are In force.
system and how difficult it Is to connect devices to the computer. For timesharing
iystems, a telephone dialer will be rented from the telephone company so that the Additional capabilities of the Dialnet system can be used to follow up on the above
system can Initiate calls. For Single-user systems where economy Is paramount. the inqUiry. as follows.
user can do his own dialing to initiate a call. There will be programs to transmit
signals and Information according to the protocols. Any Installation implementing • The ability to access remote text files will be provided (with permission of the
owners reqUired. of course). This interactive reading facility will include the
the protocols will be able to communicate with any other. The only disadvantage
addition of "footnotes· to various parts of the text. These footnotes may be
compared with the ARPAnet will be lower speed.
declared private (i.e. belonging to the reader) or public (available to the author
and possibly others).
Like ARPAnet, Dialnet will be most useful to full tl7llt-sAarlng s,Slms or single
user systems that operate 21 hours and have file systems. In such systems. each user
has named disk files that are kept in the system even when he is absent (and • It will be possible to run programs on a remote computer, permitting experiments
with programs developed in other places. This facility will permit the sharing of
therefore remotely accessible), and new files can be created by file transfer from
unique speCialized capabilities over a geographically distributed population.
other machines and on receipt of messages. The usefulness of the message facilities
normally requires that users habitually log In each working day and are most
beneficial when users have Individual display terminals In their offices. Further • File transfers will be permitted. with suitable error detection and correction
features. to permit sharing of data. The communication protocol shOUld be able
benefits accrue when reports are normally prepared at terminals and when
to adapt to a wide range of noise conditions on phone lines.
secretaries use terminals for letters and messages. However, many less advanced
Installations have found the ARPAnet useful and more and more systems are
3. Protocols
acquIrIng economical full time-sharing capability.
While we expect that the first users or Dialnet will be regUlar computer users, the
corresponding ARPAnet facilities have been used by non-computer people. Users
of Dlalnet facilities wlll not be required to kriow how to program, and we expect
Increasing use by others as terminals become more widespread.

In order to make these facilities available, suitable protocols must be designed, and
in the course of this. a number of technical problems must be solved. BeSides the
protocols themselves. which are communication procedures and data structures,
there will be a recommended set of terminal-level commands with syntax prompting
and standard error messages.

In order to make the picture more concrete. here is a scenario of the use of the
system suitable for scientists. Other potential users may imagine their own We believe that we have the experience to produce a set of workable protocols. and
scenarios. The syntax contained in the scenario is not a proposal; we will have to that it is better to start with an Implementation than to standardize something that
think much more before we have such a proposal.
doesn't exist. The latter procedure In recent years has led to gold-plating the
reqUirements to the extent that the standard Is not implementable.
2. Scenario
A user named Smith types on his terminal
ma 11 Organ i II
Do you have any active work there on human red cell carbonic
anhydrase 81

We plan to devise suitable protocols. test them at a few sites. publish them, and
attempt to convince other Instaliations to implement them. Almost certainly. initial
experience will produce a reqUirement for Changes. and standardiution committees
will be formed and set to work. A likely forum for a standardization effort would
be through the ACM to the American National Standards Committee.

FIRST coMPUTER FAIRE PROCEEDINGS

PAGE138-

BOX 1579.PAlOALTO'CA 94302

We pro~ to allow Interaction with ARPAnet sites via TIPs and propose to
discuss with ARPA and DCA whether this will be allowed.
The most general use ,of Dialnet involves a program In One computer ·waklng up·
and Interacting with a program In another machine. Dialnet protocols will handle
human messages as a subcase 0( this. taking Into account the fact that the sU,bcase
will have the most applicali,on for a long lime 10 CO!pe. Messages about where 10
deliver a message sent II" one tlme·sharing system 10 another will be handled as a
special sort 0( message that one program may selld another In cases where the two
programs are not written' together, but each must know a certain' ·public· language.
Thus we will attempt ,10 make a general format for requests. quesllons, and
assertions suitable for ,communlcallon between computer programs. We will stud),
how to make this mesh with communication between computer programs and
people.
4. Research Issues
There are many research issues. and we don't expect to settle all of them In the
time and with the resources requested In this proposal. Since we expect many of
the Issues will be clarlfted by the Initial Implementation. we will concentrate on
"ttlng a reasonable firstlmplementallonlnto experimental use.
Here are some of the Issues we will 5Iud y:
I. What error correction facilities are required 10 make up for the deficienCies of
telephone linea?
2. What Is the minimal necessary burden on the tlme.sharlng computers carrying
out the communlcallon? What IS the trade-olF between bulFer size and compute
lime?
'
S. Can dlal.up telephone communication rates meet most of the needs fo'

communication between computers belonging 10 dllFerent research
organlHtlons?
of: What Is the,best way to handle the fact that dllFerent modem speeds have

dlll'erent prices? Should one strive for • standard speed or can a Wide variety
be easily accomodated? Is the time ripe for I mlcro·processor based modem
that can communicate It any speed up 10 a maximum and adjust Its speed 10
the requirements of the line or the poulbly less advanced modem with which It
communlc,ates?

5. How will the Improved communication alFect research? Since changes will be
slow, how can we tell as early as possible what the efFects will be?
6. What style of Interaction is convenient for both experienced and Inexperienced
users? How can communication programs be madeself.teaching Without being
cumbersome?
.
5. Research Plan
We plan to undertake this project with rather modest staffing. Initial emphasis will
be on designing and implementing experimental prQtocols using exlsllng computer
facllllles at Stanford. We will also rely heavily on the co-operatlon of other
organizations t,hat have expressed Interest In the project both In determining the
protQCOls and In implementing thetn for specific machines. First. we plan to create
an experimental link between the computer facilities of the Stanford Artificial
Intelligence Laboratory (SAIL) and the Low Overhead Timesharing System
(LOTS). The only additional eqUipment needed will be a telephone port with
autodlal capability for the LOTS computer. We expect this Initial development
phase will take about 6 months.
IIi the follOWing six months. we plan 10 test, evaluate, and modify the protocOls.
During the latter part of this period, we plan 10 publish the protoCOlland
encourage additiOnal groups 10 join the Dialnet community.
NOlI: rids d_III,lIt Is te1111
}efJor.

frtllll

our NSF ;ro~sel elld "'elns Stllll,

01 tMt

For lurtAn biforlll(Jtltm contll(t LISt,r EernlSt or /o"n McCertA, /It Sten/ord
Artlfide' 11Il,l/Igtnt' lAboretory, Stell/ord U'IIIIJITSlt" Stell/ord, CcU/orIlJ94JO-';
AR.PANEr tuldr,SIIs: E,fRNEST .SU·,flelld MCC,fRTHY .SU·,f/.
TAts cl«Ullllllt Is'DI,fLNE.BL,fIW71JMCI.SU.,f/.

\,

FIRU'COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302---PAGE 139

CD COMPUTER MAIL?
Raymond R, Panko, Ph.D,
Stanford Research Institute
333 Ravenswood Ave.
Menlo Park CA 94025

During the 1976 31ection campaign. Jiaa, Carter coordinated
hi••t.ff through. new coaaunication medium called "computer
.. il." Whenever Carter'. campaign aircraft landed. an aide would
call into tbe nationwide STSC coaputer network and call up a
prograa named Mailbox. The aide would then transmit ae ••age.
prepared during the flight. receive new me••age ••• nd perhaps
reply to a few incoming ae..age. (1). During the Autumn
c..paign. over 1.200 ....age. were .ent.
The STSC Mailbox program i. only one example of • relatively
new computer application area: the use of computers in human
c_nic.tion. There is nothing new about computer-based human·
communic.tion. per .e. of cour.e. Teletypewriter network. bave
long u.ed coaputer. for SWitching. and even the fir.t time-.hared
computer had a priaativemailboxprogram(2).toletu.er.
exchange brief me..age.. What i. new i. the rate at with which
computer-based human communic.tion .y.tems have been growing in
aephi.tication and power during the la.t five or .ix years.

Historical Trends
Although the STSC Mailbox syste. that Carter u.ed is a
commercial systea. ao.t ccmputer mail developaent ha. been paid
for through research grant. and. mo.t .pplications h.ve been in
re.e.rch and military environment••

caa.unication network.. Many corpor.te ~nic.tion network.
u.e ca.putera merely for .witching. for example. the
international airline. re.erv.tion network. SITA. over which
perh.p. • quarter billion .d.inistrative .....ge. .re exch.nged
e.ch year. A few network•• like Hewlett-Packard'. COMSIS. alae
u.e ccaputer. for coapoaing. re.ding. and filini.
There have been several mail offerings on coaaercial
ttae-.haring network.. BeSides STSC, .t lea.t one other
c_rical time .haring network, TIMlEr, haa begun to att.ck tbe
QOr~ratl! cOlllllUnication m.rket .eriou.ly, with • coaputer .. U
offering, OIlTYM. Mo.t time-.baring networka offer at le.ilt
rud1aentary computer .. il .ervice.
What i. Computer Mail?

In contra.t to traditional aessage-switcbing .y.te...
computer .. U .y.te.. do not aerely tranaait Mssage.. Ccaputer
aaU .ystn. automate .11 a.pect. of .. U handling. They provide
word prooe•• ing tools for ae ..age ca.po.ition and editing. tbus
eltainating the traditional teletypewriter prie.tbood. Tbey
allow di.tribution li.t. to be prepared ea.ily on-line. They
print ae ••age. and al.o file ..ssage. automatically for
.ub.equent retrieval. By autoaating the entire life cycle of
message handling. by providing .iaple operation. and by letting
.ny computer terminal acce.. the .y.tea, coaputer .. 11 bss
brought me ••age technology out of the ba....nt and into
indiVidual office••

The greate.t hotbed of develpaent has been the ARPAIIET. a
nationwide computer network funded by the Advanced Re.earcb
Project. Agency (ARPA) cf the Defen.e Department. During the
1960' •• ARPA funded much of the world'. advanced comp~ter
re.earch. Late in the decade. ARPA began to build a netwcrk. in
When a peraen "log. in" to the computer, tbe exi.tence of new
order to make it. re.ource. aore widely avail.ble within the ARPA aail i. reported if any baa arrived .ince the l ••t log in. If
re.earch community and within the defen.e coaaunity a. a whole. there i. new mail, the .y.tem print. a one- or two-line .ummary
of each ....age. giving it. date, author, and an option.l
The fir.t line. and .witching computer. were in.talled in
author-.upplied title. The u.er can print the.e aeaaage •• anewer
1969, but it was not until 1972 that network protocol. had
them, delete thea, or file thea for l.ter re.ding. The user ..y
evolved .ufficiently to aake the network re.lly u.eful. By l.te then .c.n through old ae..age. or coapo.e new message.. Delivery
1972. however ••t lea.t a quarter of the coaputers on the network times range from a few .econd. to .everal bours.
could exchange ....age.. thanks to a mail system developed at
Bolt. Beranek snd lIewaan (BBII). During the next five years. a
It is caa.on for users to t.ke terminal. along when tbey
rash of newaail .ysteas were built for the ARPAIIET. aost of
travel or when tbey go hOM. Thie keep. thn in touch and allows
which were developed at BBII. MIT. Rand, end the Univer.ity of
thea to handle their corre.pondence whenever they choo.e.
Southern California'. Information Science In.titute (lSI). There
was .1.0 an extremely advanced mail .y.tem developed at Stanford
Re.earcb In.titute. for use in a ltaited c_nity.
Outlook
Today, mo.t ccaputers on the ARPAIIET c.n exch.nge .. ssage.,
thank. to the existence of general network •• il standards. There
are now perhaps 2.000 network mail users. many of whoa are
,The coaaarcial outlook for coaputer mail ie very bright. The
computer scientist •• but ..ny of whoa are nonprogr.... r military average cost of a me ..age v.ries considerably froa sy.tem to
users. Bec.use ARPANET mail systems bave becoae very easy to
.ystem. ranging fl'Oll $0.50 to $10.00. depending upon the
use. the portion of nonprogra..er user. i. growing rapidly. In function. performed. The ratea are .teep. but co.t. are ~.lling
fact. ARPA and the lIavy are about to conduct .n experiment th.t rapidly. It appear. th.t the co.t of a good .ervice will be
could reault in a tran.fer of ARPAIlET ccaputer .. U to normal
.round $1.00 per me ..age within a year or two, and that ca.puter
ailitary caa.unication network.. In addition. one ARPANET aail .. il will be cheaper than po.tage by the aid-1980'. (3.4) •
• y.tem. HERMES. ia offered coaaerci.lly. via the Telenet computer
network.
At po.tage staap price•• coaputer mail oould c.pture a
.ignificant portion of the written ccamunic.tion in corporation.
A .econd .ource of developaent has been computer
__ around a trillion pieces of paper annually in the United
teleconferencing. in which a coaputer eaulate. the di.cipline. cf St.tes alone (4). So it ie not .urpri.ing that many companies
face-to-face group discu •• ions. The fir.t teleconferencing
.re beginning to eye tbe computer mail aarket .eriou.ly.
sy.tem was developed in 1971. under Murray Turoff at the Office
of Emergency Preparedne... Since then. .everal aore
teleconferencing .y.tns have been built. The most widely used
to date haa been PORUM. built by the In.titute for the Puture
Where Do Hobbyie.ts Pit In?
under ARPA and National Science Pound.tion (NSP) .pon.or.hip.
Twenty-eight PORUM conferences were held on the ARPANET from 1972
through 1974. In l.te 1974. a PORUM variant. PLANET. was
Virtually all analy.ts agree th.t computer mail will flourieh
installed on the TYMNET computer network for further
ftr.t in organization••• ince corporation•• the governaent, and
exper1aentation. PLANET is now offered commercially. by
the ailitary can pay the larse bill. needed for .y.tea
InfcHedia, In 1976, Turoff developed the Electronic Information development and operation. Organization. can pay • gre.t .de.l
for computer .. il because they already pay • gre.t de.l for
Exchange Sy.tem. which is being u.ed for experimentation over
Telenet.
pap.erwork.

ne

A third .tre.. of develoJlllent has

COllIe

in corporate

But it atill .eeaa poaaible tb.t computer . . il may develop

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

first in the community, rather than in organizations -- not in
individual homes, because equipment is not in place, and a full
ca.aercial syetem would be expensive -- but in the computer
hobbyiest arena, where computer mail networks oould be used to
exchanee ideas and just ohat, with existing equipment and with
relatively little software development cost.
Bsfore disoussing details, we wish to give several reasons
for saying that hob~iest computer mail is not an inherently
orazy idea. First and .ost importantly, hobbyiests are very
active snd need to communioate. As Dave Caulkins has reoently
estimated (5), there were about 3,000 hobby oomputers and 15,000
computer hobbyiests 1n the United States in 1976. There sre
probably a lot more today. They are spending a great deal of
time and money on their hardware, and many are oapable
programmers.
Seoond, there is a strong hi.torioal preoedent: ARPANET
oo.puter mail itself. ARPA' projects have been serious and
worthwhile efforts, but there has always been a distinot
hobbyiest flavor to the ARPA oontraotor oommunity. Typical ARPA
researchers work on exciting projects such as artifioial
intelligence. They tend to be more strongly committed to
research than to their own organizations, and they tend to work
very long hours. In many ways, the ARPANET research caa.unity
has always been a collection of oomputer enthusiasts. Morevover,
even before the network was oonstruoted. the ARPA re.earch
community was fairly tightly knit, meeting at oonferenoes and
.wapping employers with bewildering regularity.
When the ARPANET was
community communication,
blo.somed as soon as the
ARPANET mail development
hslf of all .a11 systems
time.

PAC'..E 140

I will sketch two possible scenarios for hobbyieat oomputer
mail's possible evolution. In the first, "HAM Computer Mail"
would evolve in the limited hobbyiest community. In the seoond,
nCB Computer Mail" would be broadly aooessible in the o~nity.
HAM Computer MaU
HAM radio, despite its long popularity, has never been
large. Its stiff entrance requirements, inoluding lioenaing
testa and the purohasing or buUding of expensiveequipaent, have
limited its size. Analogously, if hobbyiest oomputer mail i.
oonfined to highly sophistio.ted oomputer user. of the type that
now populate the oommunity, the,n hobbyiest oomputer maU i.
likely to remain small, like amateur ,redio.
Nevertheless, amateur oomputer mail will almost
oertainly appear first among ourrent hobbyie.t., ,beomuse
hobbyie.ts have oommunioation need., the ability to 'de.1gn,and
implement a oommunioation sy.te. and, I suspeot, a atrong
inolination to do so.
Teohnically, two features will have to be added to
current hobby computers to implement HAM computer mail. The
first is message-handling software, to let individuals oompose
messages, prepare distribution lists, read incoming .ess..... aDd
file inooming messages for later reading. This i. an intere.tinC
problem, but it raises no substantial barr~ers other than hard
work. As on the ARPANET. good mail programs. once oreated. would
probably be adopted rapidly by the hobbyie.t oommunity.

created, it provided a natural tool for
The other needed feature i. networking, and this ia
and, as noted above, computer .ail
network became operational. While much indeed a problem. The simplest solution would be for a hobbyieat
computer club, such as Homebrew, to collectively purohase a
has been deliberately funded, perhaps
me..age-.witching co.puter to handle party-line communioation,
have been written in people's spare
private .essage transmission, a bulletin board, and so on. U.era
would then need acoustic oouplers, so that they could phone into
the ....age oomputer periodically.
Although such statistics are not kept, it is generally
believed that the ARPANET is used mostly for message
The problem with this approach is that it requires
communication. Again, for balance, we reiterate that ARPANET
somebody to purchase the message computer. An individual club
projects, despite their hobbyiest air, have been geared toward
could do this most easily, since it has communication need. and
pragmatic goals.
many progr....rs who lack computers to work on. On the 'other
A third just';fication for considering co.puter maU is that hand, hobbyiest clubs tend to be low-budget operations. Another
approach would be for some hobby computer manufaoturer to install
corporations are likely to be quite slow on the uptake of
computer .ail. While excellent software is available and price. a ....age computer as a way ot stimulating sales and discovering
trends. Weyerhaeuser did something like this in ttbe
market
are already attractive, the corporate environment will not be an
easy one to enter. First, telecommunications in corporations is 1960's, when it funded a number ot communes. Weyerhaeuser's
by-and-large a low level function in the hierarchy. Emphaais is funding paid ott quite lavishly, because it di.covered the
on thrift, not innovation, and innovation is generally a painful emerging indoor plant market and plunged into it.
process. While some large organizations are innovative, it
remains to be seen how rapidly theae pace setter. will adopt
Potentially the best approach would be tor some
computer'mail or how rapidly other companies will follow.
entrepreneur or club to set up a .e"ese-.witcbing oomputer, tben
Moreover, current computer mail systems, de.pite their
charge users for service. On current time-sharing systems,
sophistication, are not yet well-adapted to the needs of
however, billing is extremely expen.ive. 'Some breakthroughs in
corporations (_).
charging practices would be needed to provide service oheaply yet
get users to pay their bills.
A fourth, and to .y mind deciSive, reason for considering
oomputer mail is the recent growth of CB radio. In the early
If a separate messese computer is not fea.ible, the
1970's, trucking and recreational vehicle users began to provide alternative is to create a network of individual hobbyiest
a market tor cheap and useful CB equipment. Soon, CB began to
computers. Other speakers in this se.sion disous. this
grow wildly. About one U.S. household in 10 now has one or more possibility and I will gladly deter to their discu..ion.. .inoe I
CB rigs, and growth is oontinuing at an astounding rate.
find the idea of a voluntary distributed oomputer network to be
mind-numbing.
CB is being used primarily in a party-line mode, in which
changing groups of people chat, usually annonymously. Party-line
Let me do something uncharaoteristio ot oon.ultants and
conversation has one major advantage, for radio sellers: it
venture an opinion on how HAM computer mail will mo.t likely oome
provides an instant community of users. In contra.t.
about. In my crystal ball. I see a club like Homebrew oombiniac
person-to-per.on message .ystems require either a closely-knit
its due. and a grant from a computer manufaoturer'or telephone
community within whioh traffic will naturally be high or a very oompany. to purohase a minico.puter. Why'.houlda hobbyiest olub
large user base so that new users will hsve someone to talk to. purohase a "large" minico.puter instead ot .taying with mioro.?
In the party-line mode. whole communities need not make a
Because only about one co.puter hobbyie.t in three. by,.y orude
deci.ion to Join. and potential u.ers will automatically have
estimBte. now owns a co.puter or shares one. The bUlk'ot all
someone to talk to. Of course once a party-11ne community grows hobbyiest club .e.bers are programmers who would be comtortable
large. per.on-to-person co_unioetion can flourish.
with a mini. These "neked hobbyie.t." oould progr.. t,he _se• .,e
computer and handle the Bundanitie. ot accounting ,nd billing.
Computer conterencing ofters some party-line featurea,
User. ot the cpoperative message cOmputer would need only a
although mo.t systems are fragmented into numerous private
terminal and acoustic coupler; and they WOUld have an ,"in" for a
conferences. In fact, the first major conferencing system was
small outlay. 'HobieStl! with computera, in turn. oould use their
called Party-Line. Most successful conferences (rated by user
own oomputer tor message composition and reading, using the
satistaction) have a free-wheeling air, and in at least two
message computer only as a switoh. Their servioe te_a would be
conferencing systems, public ·grafUti n conferences have
reduced beoause they would use the message computer lese heavily
dominated tratfic patterns.
a~ each session.
This approaoh--using a cooperative .. ssage
computer--seems ideal, because it could make all club m..bers
active ,users. instead of partiCipants. If 'a coop computer is
How Mi&ht Hobbyiest Computer Mail Evolve?
purchased, furthermore, it could be a general time-.haring .yet..
for other forms of .oftware development.

FIRST coMPUTER FAIRE PROCEEDINGS

CB Computer Mail
While HAM radio has remained an arcane hobby, CB radio
has srown to becolle one of laerica's major communications media.
The reasons for CB', success are co.pletely straishtforward: a
CBris can be purchased for under $200, and its operation is
sillpl1city itself. Sillilarly, if cOllputer mail is iIIplemented so
that anyone with a terminal and a pre-paid account can use the
systell, the resultant ·CB cOllputer mail· service is likely to
spread rapidly and srow far beyond the hobbyiest lIarket.
'In many ways, CB cOllputer mail would be easier to
taplement than HAM cOllputer lIail. It could have the size to
,netyork several lIeMUe, !lOlIputers. an.d, so raduc,e telephone
charses to users, by lIaking all calls local calls. its size
could also allow sillplified billing, say throUSh major credit
cards.
If CBcOllputer ma1l is to becolle extrallely widespread,
it may'have to be illpletlented by the local telephone company,
lIuch l1ke dial-a-joke and tille-of-day services. If the costs of
oomputer "il fall as low as I believe they will (3,4), the
revenues sained by the basic lIessage unit charses will be
sufficient to justify the service. Moreover, if services are
indeed illplemented by telephone collpanies, resional and national
interconnection will be possible and, quite probably,
sufficiently lucrative for early developllent.
How would the current hobbyiest cOllllUnity sreet CB
cQIIPuterllail? My suess is that they will view it with
considerable distaste, lIuoh as HAM radio operators have little to
do with CB radio. Perhaps hobby cOllputerists will pull back
cOllpletely, but I think this would be a srave error. Hobbyiest
cOIIputins is passing froll a hardware era, I believe, to a
prcsr8lllling era, and it will ultillately enter a service era.
Whether the current hobbyiest community follows the mainstre.. or
becolles an isolated elite is one of the 1I0St critical issues now
facins the community. CB computer lIail could well be the
crucible in which the long-term shape of hobby cOllllUnity is
proofed and shaped.

Conclusions
It appears that cOllputer lIail, which developed primarily on
the ARPANET, has the potential to form an iIIportant cOllllUnication
lIediuII for the cOllputer hobbyiest cOllllUnity. There are BIIple
software concepts available for the des18n of hobby cOllputer mail
systells, but networking is a .. jor problell area. Hobbyiest
cOllputer lIail lIay be restricted to serious hobbyiests, in which
case it lIay retia in forever an arcane 118diUII, analosous to HAM
radio. On the other hand, if hobbyiest computer lIail can be
opened up to casual users, it lIay becOlle ·CB computer lIail· and
spread as rapidly as CB radio.

References
1. Holuea, JoM,"Collputer Tied Carter, Mondale Campa18ns,·
The Washington Star, p. A-3, Nov8llber 21, 1976.
2. Crisman, P~A., ed., The COllpatible Tille-Sharing Systell, A
Prosram.er's Guide (2nd Ed.), The MIT Press, Callbridge,
Massachusetts, 1965, Section AH.9.05, quoted in Stuart:L.
Mathison and Philip M. Walker, COllputers and
Telecollll\lnications: Issues in Public Policy, Prentice-Hall,
Inc., ~ngelwood Cliffs, New Jersey, 1970.
3. Panko, Raymond R. (Ra3y), The Outlook for Computer 'Message
Services: A Prelill1nary AssesSllent, TelecollllUnications
Sciences Center, Stanford'Research Institute, Menlo Park,
Califol'llia, unpublished draft, March 1976.
4. Panko, Raymond R. (Ra3y), ~The Outlook for Computer Mail,"
to be p~~~i~ed in the Journal of TelecOllllUnicationa Policy.
5. Caulkins, David, ·A COllputer HobbyiestClub Survijy," Byte,--pp 116-118, Vol. 2, No.1, January 1977.

Box 1579, PALO ALTO CA 94302

PAGE 141

FtRST COMPUTER FAIRE PROCEEOINGS

BOX1679,PALOALTOCA 94;ID2-

-'f».~~~ 142'

COMMUNITY MEMORY - A "SOFT" COMPUTER SYSTEM
Lee Felsenstein
1807 Delaware St.
Berkelev CA 94703

"Whether or not humans will be alive on our
planet will probably be resolved by cosmi~ evol- ,
ution as earl~ as 1985. We don't have to wait until
2025 to find out."
-- Buckminster Fuller
This discussion is based upon the premise that the
trends within western industrial society which lead to
greater degrees of interpersonal isolation and fragmentation must ba reversed if the judgment of "cosmic evolution" referred to in the initial statement is to be fav.orable to humanity. The tendencies leading toward the
erosion and breakdown of community and toward the centralization of the means of communication ~- the lifeblood of
cOmmunity -- must be overcome. This reversal is beginning,
slowly and appropriately without centralized direction,
in what appears to be an evolutionarily sound manner.
So far this movement towards the re-establishment of
community has proceeded without a significant technological component. Until very recently this has made sense,
since the prevalent technology is organized along hierarchical lines and all design criteria point development
towards larger systems in which the human being has become more and more an interchangeable part.
Recently, however, discussion has developed of
"soft" or "appropriate" technologies, better suited for
local, ~centralized control. Tools or systems of this
Bort are usually designed on the assumption that a wider
range of criteria must be considered than in standard industrial design, and that efficiency in a societal context rather than in an industrial context may dictate a
design which seemingly violates industrial rules.
The computer has typically symbolized the centralization and mystification which are the antitheses of soft
technology. Frighteningly expensive, it was served by
ranks of experts who mediated every interaction with it
according to mysterious rules.Every quantity and quality
in the universe was to be reduced to strings of binary
bits and manipulated at the speed of light as invisible
charges or fields. The results could not be questioned
by a non-expert.
This image has suffered severe damage at the hands
of personal computer activity. It has been demonstrated
that computers will sell as consumer-priced goods, that
certification and formal training are not necessary for
their use and application, and that involvement with them
does not turn one into a tunnel-vision hacker or a mumbler
in machine-language mnemonics. The machines do not bite
and do not cost money when not turned on.
The scale and complexity of computers having been
reduced to human levels, they may now enter the new area
of Boft technologies. As mentioned previously, wider
ranges of design criteria can now be employed to bring
about efficient functioning of a system in a societal
rather than an industrial context. The movement toward,
decentralization and the regeneration of community may
now take advantage of program-controlled electronic
equipment.
'
Orie such "soft" computer system which is currently
under development by Loving Grace Cybernetics is,
Community Memory, a nonhierarchical, information-exchange
system intended as a community information utility. An examination of the design criteria of this system may help
further to define the new area of soft computer systems.
Unlike other information utilities, Community Memory
(hereinafter CM) is not designed to be the primary conduit of information exchange. Rather, it is intended to
facilitate information exchange through existing channels,
mostly those of a non-broadcast nature. "Broadcast" is
here used to describe information exchange on a centralized, replicated basis with little opportunity for reverse
flow. Print media, large theatrical performances, and wall
posters all qualify as broadcast media. Of the non-broadcast media face-to-face conversation is the primary example, amplified by modern transportation, postal and telephone systems. CM is designed to exchange "pointer information" through the computer system to facilitate nonbroadcast communication through these existing media. Thus
the, user need not reduce all of his/her human contact
to strings: of ASCII codes.
CM is designed to be st.uctured as a network of
regional nodes at which the main processors and storage
ara lqcatad. Each region serves a number of local in for-

mation centers where people may walk in and use the system'
directly, without operator intervention. Items may be entered into the public data base using a free-association
keywording system in ,l!/l1.ich the machine uncJ;i,tic~lly ,accepts any string of te,.t as a keyword and generatesdictionaries ,referencing ~hat 'item to those keywords. Searching is a 'matter of guessing a keyword used by the person'
entering ,the item and calling for it singly or as part of
a concatenation of keywords. The machine responds with
the number of items found under that keyword and WaitB
eitheJ; for an amendment to the keYW0J;d set and II new search
or for an order to display in bdef (first line,S only)
or in whole the set of items found. theBe transactions
take place on a video display teJ:m1nal which is part of
the local intelligent teJ:m1nal. Local floppy disc buffer
storage, allows quick sorting of intermediate files.
"
It is important to note that the CM system does not
make judgments about the informational content of the
items or the keywords, but acts only as a high-speed
,
filing clerk. The'necessaJ;y systematization is the province of human aSSistants and the good sense, of the person
using the machine. The external assistance may be provided
in the form of asked-for advice from an'attendant or in'
the 'form of access to cross-indexes compiled by "gatekeepers": people who perform such a crosti-1:eferencihg
function as a vocation.
Designers of industrial-type systems'will object
that such a sloppy cross-referencing 'arrangement will inevitably yield a system which does n otmake all the possible correlations and which runs at less than 100 percent
effectiveness. This is true, but it sets'the system apart
as a soft system which is more capable of capturing the
attention and trust of the lay usership:'than one which'is
up to the industJ;ial standard. BesIdes.-: a system for
which' each encounter is an adventure is more likely'to
serve as a "live" information-exchange medium than one
in which the user must rearrange his/her world-view to
coincide with that'of the system designer.
Similarly, the possibility that one user will insert
incorrect information into ths system which might result
in haJ;m to others is real and does not necessarily yield
to a technical solution. In "hard" systems this possibility is impeJ:m1ssible -- the information would have to be
passed along a hieJ;archy of checking, verification and
correction. In this "soft" system the only response to
the possibility can be that some effort can be expended
to prevent or minimize such occurrances, but that the
system must not be ssen as a fountainhead of validated
information. One might as well read the information
written on a wall or posted on a bulltein board; the truth
or accuracy of the information is to be determined by the
recipient. Caveat emptor, in brief.
One of the most important aspects of the system

is its "myth" -- .the sets of understandings which people

hold regarding its nature and use. This myth deserves as
much attention as any other aspect of its design. Some
better word will have to be found to describe the local
information center as which the system will be available,
but we don't yet know that word. Certainly it should not
include the word "center" since th1s attacks the concept
of decentralization., Much work remains to be done in this
area.
CM will require a set of explicit undeJ;standings
regarding its governance and availability -- a constitution, in a sense, including a user's bill of rights. In
cases where an operator of a local center is accused of
violating these understandings relief muSt be available
through arbitration and inspection. Equslity of access
for all persons and institutions would obviously be a
cardinal principle, for example. Trust in the system
would quickly be destroyed if people believed that secret
sorts and bulk dumps weJ;e being performed for businesses
or government, and the system must be organized to peJ;mit
it to resist pressures for such preferential treatment.
All of these conSiderations must be incorporated
into the design process of this soft system. Since wider
goals than industrial design goals are being PUJ;sued, the
design process cannot stop at the walls of the machine '
room. Indeed, the process of design itself remains to
be designed for these types of tools and systems.
It is not through negligence that I have failed so
far to raise the question of how the system will pay for
its operation. General MotoJ;s is not in the business of
making cars, it is in the business of making money. It
does not make money in orderto make caJ;S, but the reverse.
We are all the poorer fOJ; it in societal terms. We are not
designing CM to make money. Its survival and growth must
be dependent functions tied to its usefulness to the
community. There are plenty of ways in which the system
could be run to bring in adequate income for its survival
and gJ;owth, especially since processors are an integral

FIRST COMPUTER FAIRE PROCEEDINGS
part of all it. hardware, and a great many branch, points,
could b. made conditional upon the deposition of a nickle
ill the alot. ,
Sillc. one of the most important vehicles of co_unity
Irowth is small-scale localized ecollomic activity, and
.illce the primary purpose of CM is the d.velopment of
COIIIIIUI1ity, it is fitting that its growth be closely related to this activity which is the very symptom of its succ•••• In caees wh.re the necessary economic activity does
1I0t take place at the level at which people feel ~U8tified
in payinl a bit of their cash flow for the system s continuation and growth, then the system should not be, artificially be kept afloat., 111e design of any soft system
must allow 'for a healthy amount of failure.
CK will be structured so that the distinction between
"fun" and "serious" uses will be as small as possible. To
use the phrase of Ivan IUich. it will be a "convivial" system. 111e information centers will be amalgsms of branch,libraries. game arcades. coffee houses. city parks and post
offices. Unused terminal capacity will be made available
for laming or simulations. Amateur electronics or computer
enthUsiasts will be encouraged to learn first hand about
the innards of the equipment and the software. 111is should
result in a much shorter meen-time-to-repair than would
be the case if access to the insides of the system were
restricted to "qualified service personnel".
Community information utilities are moving very slowly
if at all, a symptom of, their industrial, "hard" design.
"Some designers and theorists throw, up 'their hands and declare that "the public is not ready" for such systems. A
soft aystem design such as Community Memory may well prove
that previous desilna were not ready for the public.
I will end by returning to the last paragraphs of the
discu•• ion by Buckminater Fuller (published in the Spring
1975 CoEvolution Quarterly) from which I obtained the opening atatem.nt. Fuller was responding to a newspaper's
question of what the world would be like in 2025;
"Whether humanity will pass its final exams for
such a future is dependent on you and me, not somebody we
elect or who elects themselves to represent us. We will
have to make each decision both tiny and great with critical .elf-examination - "Ie this truly for the many or just
for me?" If the latter prevails it will soon be "curtains"
for us all.
"We are in for the greateat revolution in history.
If it's to pull the top down and it's bloody. all lose. If
it is a design science revolution to elevate the bottom and
all others as well to unprecedented new heights, all will
live to dare spontaneously to speak and live and love the
truth, strange th ough it may seem."

Lee Felsenatein
Loving Grace Cybernetics
1807 Delaware St.
Berkeley CA 94703

BOX 1579, PALO ALTO CA 94302

PAGE 143'

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1679, PALO ALTO CA A4302

PAGE 144

DESIGN CONSIDERAnONS FOR A HOBBYIST COMPUTER NETWORK

David Caulkins
Cable Data
101 Walch Road
Palo Alto CA 94304

Introduction
This paper is divided into two sections.
1) A brief tutorial on computer networks; and
2) A discussion of possible designs for Personal Computer
Networks (PCNETs - a term coined by Einar Stefferud).
Computer Networks - The 2S¢ Lecture
History.
The research that.!II8de computer networks possible was done
The first
computer network of any consequence was the ARPANET, brought
from the concept stage to operation largely through the efforts
of Larry Roberts (then head of the information processing
section of ARPA) in the late sixties and e~rly seventies.
One of ARPANET's most valuable facilities is the message
service - the ability to send a message (generally a file of
English text, although almost any file can be sent) from one
"mailbox" in a network computer to another such "mailbox" in a
different computer. This doesn't sound very dramatic, but it
is surprising how powerful and efficiency-improving such a
message exchange facility is. What keeps ordinary message
services, such as telephone, telegraph and mail, from working
as well seems to be a combination of factors. too slow (mail);
often hard to catch someone in the office and/or pierce the
screenS of secretaries (phone); hard or time consuming to use
(mail,telegrams); lack of a positive indication of message
delivery (mai1,te1egrams); expensive in terms of characters
per dollar (telegrams,phone); etc. A computer based message
system overcomes most of these difficulties.
People regularly using such a system rapidly develop a
whole new communication style. Most messages are brief - 500
characters or less. Message text is composed by the sender at
his terminal without the filtering and delay of secretarial
intermediates, and style tends to be· much more informal and
direct than conventional media, such as business letters.
Message system users move rapidly toward a computer-based
personally oriented file system containing messages, distribution lists, text files, etc. The difference is one of kind,
not just of degree.

by

PaulBa~an· at ~~d· in the early sixties [1].

Details of Network Function.
Figure 1 is a diagram of a network with a connectivity of
3. There are 16 nodes (A-Q) and 26 links (1-26). Suppose the
network uses dial-up· phone links, and that node C sends a single
packet (of a format like Figure 2) message to node P. C uses
a routing algorithm to select one of its neighbor nodes (F,G
and D) - G is picked as being on the most.direct route from C
to P. C initiates a phone call to G and transmits the packet.
When G has successfully tested the packet for correctness (by
means of the error detecting Cyclic Redundancy Code) it returns
a short "I-got-it-OK" (or node-to-node ACK) packet to C. I f
C and G have no further packets for each other, the phone call
is terminated and G initiates a phone call to M. When M has
successfully received the packet it returns an ACK packet to G.
G can·now use the buffer space occupied by·the.message packet
passed to M for new packets. After all G-:-M traffic is disposed
of, the.G-to-M call is terminated and M initiates a call to P.
Since P is the destination, it originates two -ACK packets - the
usual node-to-node ACK to M, and an end-to-end ACK addressed to
C. When C receives this ACK it knows the message made it all
the way to P. If a transmitting node fails· to receive an ACK,
it retransmits the packet. In this way, messages passing
through the net can be made to have an error rate substantially
lower than that of the links themselves.
Figure 3 shows the network of Figure 1 with 1 nodes (A,B,
E,G,H,M and N) out of service. Messages can still flow from
C to P by either of two paths. Thus, even networks of low
connectivity (3) can function in the absence of many nodes.

16

Operation.
Some definitions will be useful in discussing networks:
Circuit Switched Network - A network in which a direct circuit
connection is set up between communicating nodes.
Connectivity - The number of links terminating at a particular
node.
Demand Access - Allocation of transmission bandwidth on demand.
Distributed Computer Network - A collection of geographically
distributed and autonomous computers sharing common
transmission and switching media.
Hop - Transmission of a packet from one network node to the
next.
Lin~ - The communication channel between two adjacent nodes.
Node -. A computer system capable of receiving, testing, storing
a~ transmitting packets using one or more links to other
nodes.
Packet - A short block of data used to carry information
through a distributed computer network. Packets typically
contain three kinds of information. the data or message to
be transmitted; addressing and control information; and
data integrity checking codes.
Packet Switched Network - A network in which packets are routed
• from the originating node through intermediate nodes to
the destination node.
,
Protocols - Sets of conventions (formats, control procedures)
which facilitate all levels of intercomputer communication.
Includes electrical interface conventions, line control
procedures, digital communication network interfaces,
inter-process communication conventions, and application
level (e.g. file·transfer, database retrieval, etc.)
standards".
(Many of these definitions are derived from· a list developed by
Vint: Cert: {2].)

i4
Connectivity 3 Computer Network
Figure 1

Bytes
100 - 500

{16

MESSAGE

POSSIB~E

Figure 2

HOBBYIST PACKET FORMAT

I

s}

CRC

I

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 145

1) The network to be composed of geographically
distributed nodes, each consisting of a personal
computer equipped with low cost network int.erface

o

o

hardware and a standard Network Support Software
(NSS) package.

o

2) The network to provide modest size message or
file transfer between any two active network nodes.
3) Low or zero cost inter-node communications.
4) The network to be distributed; no requirement
for computational, storage or control resources
external to the nodes.

5) Reasonable network reliability even though
operating with noisy communication channels and
with a fraction of network nodes lIout of service. 1I
Positive acknowledgement to the message originator
upon successful transmission.

6) Network architecture and protocols designed to
allow expansion of capabilities without step
change requirements in node hardware.

o

7) Network designed for automatic operation to
take advantage of higher probable availability of
node hardware and communication link bandwidth
during late night and early morning hours.
If I had to boil all seven down into one it would be: The network must be cheap and reliable.

19

o

o~----------~o

Reduced Network
Figure 3

.

2

PCNETs could also be implemented using radio links.

A

---1.0)----'0,----0---

similar system has been in operation for some time.
The ALOHA
packet radio demand access system was built at the University
of Hawaii by Norm Abramson, Frank Kuo and others.
It is a time
sharing system in which communication between many terminals
and a central computer is carried out on two radio frequencies;
one for terminal-to-computer communication and the second 'for
computer-to-terminal communication.
Terminal-to-computer communication is carried on in a novel way - any terminal with a

new packet ready simply tran'smits it.

When this packet is

received by the central computer and checked for correctness,

an acknowledgement (ACK) packet is sent back to the originating
terminal.
If two terminals happen to transmit packets during
the same time interval, the packets "collide;" neither packet

4

will be correctly received and no ACK packets will be sent.
In this case each terminal waits for a randomly selected period

of time and retransmits the packet for which no ACK was
received.
The random periods are important; if both terminals
waited the same period, the retransmitted packets would again

collide. Mathematical analysis shows that this scheme allows
up to 18\ full utilization of channel capacity before packet
collisions become too frequent for reasonable channel use.
Performance can be improved (if the electromagnetic propagation
time between sender and receiver is a small fraction of the
packet transmission time) in several ways; two seem particularly

applicable to PCNET:
1) Slotting. All nodes maintain a clock indicating the
start of each packet interval.

Packet transmission is started

only at the beginning of each interval. This means packets
will either overlap completely or not at all. Slotti~g
increases channel utilization to about 37\.
2) Carrier sense.

A node with a packet ready to transmit

looks to see if carrier is present on the channel; if so the
node waits and tries again later.
For more background on computer networks'and packet radio,

see references 2 through 13.
Personal Computer Networks
Why should a personal computer network be built?

Several

reasons come to mind:

1) It should be fun.
2) It is socially desirable; by providng personal computer
users the means to gossip, exchange software, participate in
message based conferences, create community information
exchanges, etc., the American penchant for communications can be
used to maintain and perhaps even accelerate the growth of
personal computer use.
This can result in a significant fraction of the U.s. population becoming "computer literate. 1I

I think there are a number of attributes a personal
computer network should have (caveat: there seem to be as many
views of what a personal computer network should be as there

are people interested in the subject - for example, see [14] so the following list is not meant to imply consensus).

Network Connectivity
Figure 4

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 146 .

Design Elements

radio frequencies used, a control path is provided for sensing
In my view the PCNET will have three major design elements: the presence of received carrier. The radio receiver and
transmitter complete the set of equipment required. These
the node hardware, the node software, and the inter-node comcould operate in the UHF band (for purposes of comparison, the
munication links. Let me consider each in turn.
ALOHANET uses frequencies close to 400 MHz). The transmitter
Node Hardware:
should be able to provide a good signal level at the receiver
A possible node hardware block diagram is shown in Figure 5.of a neighbor node 10 to 25 miles away, using a simple omnidirectional antenna. CB equipment with this kind of performance
It consists of a processor (8080 or equivalent capabilities)
is available today for less than $200. It is not unreasonable
with memory space for the NSS and message buffers, off-line
to hope that simpler (single frequency) transceivers. for Packet
storage for messages whose destination is this node, full
radio might cost about $500, even though initial production
duplex serial interface, and some signals for communication
runs would be much smaller than those for .the CB market.
link control. The node of Figure 5 is intended for use with
dial-up telephone system links. The MODEM translates between
digital signals and FSK tones for voice phone line data
Packet
transmission. It should be capable of operation in both
NODE COMPUTER
originate (initiating Calls to other nodes) and answer
(accepting calls from other nodes) modes. The ring detector
-Processing
signals the node computer that ringing from an incoming call
lJo 8080
has occurred. The off-hook control allows the computer to
-Full Duplex
take the phone "off the hook," terminating the ringing and
Serial X Face
opening the line for the incoming data. For out-going data
-Memory
the computer sets the MODEM to "originate," takes the phone
- -Message ",4KB
of~.hpo~before dialing, and the dialer translates computer
Buffer Space
s{gnals into touch-tone or dial-click dialing signals. After
Carrier
--Network
dialing is complete the computer waits until the ring detector
Detect
Support ""4KB
shows that ringing has started and stopped at the dialed phone,
Software
indicating that the target node has gone off-hook. The
-Offline Storage
computer then checks for the proper "hand shake" of FSK s·ignals,
indicating that the two MODEMs are successfully communicating.
The whole process (from off-hook to end of "hand shake") should
take only a few tenths of a second. If no ring signal is
Node Hardware B·lock Diagram
detected or if correct MODEM communication is not established,
(packet radio system)
the computer goes "on-hook" (hangs up) and tries again. The
Figure 6
number of re-tries before another neighbor node is picked is
one of several network parameters to be "tuned" for optimum
performance.

DIAL-UP PHONE SYSTEM
MODEM

NODE COMPUTER
"Processing
~8080

-Full Duplex
Serial X Face
-Memory
..... --Message "'4KB
Buffer Space
--Network
Support ~4KB
Software
-Offline Storage 1---->,.1

RING
DETECTOR
DIALLER

OFF-HOOK
CONTROL
VOICE/DATA
SHARING

Inter-Node Communication Links:
Three inter-node media seem to me to have possible uSe in
a PCNET.
1) The dial-up phone system. Even in a simple point-topoint PCNET over long distances message costs would be low.
During the late night 60% discount period coast-to-coast (Bay
Area to New York City, for example) rates are 21¢ for the first
minute and 16¢ for each additional minute. At 30 characters
per second a typical message of 500 characters would cost only
6¢; less if it were combined with other messages so the average
cost were closer to 16¢ per minute.
A regional PCNET (where a region comprises an urban area
of 10,000 square miles or less with contiguous local call
areas of about 10 mile diameter throughout the 10,000 square
miles) can be built using store-and-forward techniques. Each
node has a number (3-6) of neighbor nodes within its local
call area. Figure 7 shows the Southern California region with
a network of 40 nodes (connectivity 3; 10 mile links) superimposed on it. Messages could travel from OXnard to San Diego
in about 18 local-call hops.
.
2) Radio links. ALOHA and other packet radio system
(references 8-13) experience proves the practicality of packet
radio. A packet radio PCNET would benefit from increased,link
bandwidth and freedom from dependence on the telephone system.
This seems to me an area where radio amateurs have an

Node Hardware Block Diagram
(dial-up phone system)
Figure 5

interesting opportunity, becaus~ commericallyavailable radio
equipment is expensive and not well suited to this application.
There are also spectrum space difficulties, discussed in more
detail below.
3) Satellite links. This is clearly a more remote
The last unit of the phone based node interface hardware
possibility than the other two. There are promising developis the voice/data sharing (VOS) box. Since most PCNET nodes
ments; the radio amateurs plan to orbit a synchronous satellite
wilr"have only one dial-up phone line, the VOS provides means
in about two years. Ground station costs are dropping conto share the phone line between normal voice activity and
tinuously and might well be within reach of personal computer
PCNET operation, with voice calls being given priority. Direct enthusiasts within the same time frame.
plug connection of the MODEM and other devices to the phone
Software;
line simplifies design and lowers cost. Such connection is
possible in California and New York without a phone company
The PCNET Network Support Software (NSS) would implement
supplied Data Access Arrangement if the devices .to be connected the network protocols. It is premature (to say the least) to
have been certified by a licensed electrical engineer.
describe the NSS in any detail before the protocols are
An alternate node design for a PCNET using packet radio
specified. 'Some general comments may be made; the NSS must
links is shown in Figure 6. The processor is the same; only
be a standard, carefully debugged and tested, "bullet-proof",
the interface hardware changes.
piece of code. A person wishing to use his system as a PCNET
The MODEM is designed to operate at the higher' da.ta rates node would receive his copy of theNSS from some form of PCNET
possible on a radio link - ALOHA system experience indicates

Control Center; with the correct node interface equipment the

that 9600 baud is not unreasonable. In order to implement
carrier detect schemes for optimizing demand access to the

NSS could be bootstrap loaded'from a nearby active PCNET node.
Some NSS functions seem to be required for almost any set

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 147

of protocols:
o Routing - selection of the optimum neighbor node
for mess~ge transmission.
o Check code generation and checking.
o ACK packet generation.
o Store-and-forward packet buffer management.
o Link interface control.
Regulatory Issues
My background is in computer system design; my knowledge
of the legal and political areas of communication system control
by the Federal Communications Commission (FCC) and State Public "~~~~
Utilities Commission (PUC) is that of a layman and is very
limited. With this caveat, let me offer a few thoughts on
these matters.

,ji
il

II

1
II

\

40 Nodes

Connectivity '= 3
Each Link';! 10 miles

";')

I~

, "..... '1
' ~ '-x 1

... '

,.. ~-.'"-'--~ji

OXNARD

/~
-I

\~
Regional Network
Figure 7

"j

"~Il,

\~

i

i

SAN~.
DIE1

Operation of a dial-up phone based PCNET at night and on
weekends when the phone system is essentially idle would have
almost no impact on phone system use statistics and in consequence should attract minimal attention, regulatory or otherwise. Such a PCNET should be carefully defined as not-forprofit and recreational; any other type of service would almost
certainly fall under PUC or FCC jurisdiction.
It is probably a mistake to design a PCNETcritically
dependent on phone company tariff loopholes like unlimited
free calls within a local call area. Such tariffs are baseq
on voice call statistics; any change in statistics reflecting
increased data traffic should and would cause the phone
company to change the tariff.
More advanced PCNETs using packet radio or satellite links
would require FCC allocation of operating frequencies.
Negotiations for such allocations typically take large
quantities of time, money and lawyers.
I hope that someone more knowledgeable than myself is able
to give these issues the attention they deserve.
Conclusions
Creation of a not-for-profit personal computer network
appear.s feasible today. Figure 8 shows the geographical distribution of computer hobbyists as of January 1977. The big
circles labeled (1) indicate large concentrations of
hobbyists; the smaller circles labeled (2) indicate smaller
concentrations of hobbyists; and (3) indicates a state with
some hobbyist activity. The New York/New Jersey, Los Angeles
and San Francisco Bay areas look like good candidates for
regional networks. Figure 9 shows what might ~ the next step;
linking the (1) and (2) hobbyist. concentrations into a
national PCNET.
Figure 10 shows the ARPANET as it was in August of 1976;
the four boxes indicate high concentrations of host computers,
interface message processors (IMPs) and terminal IMPs (TIPs).
Not surprisingly, three of the four boxes coincide with the
(1) concentrations of Figure 8.

References
[1] Baran, P. "On Distributed Communications Networks,·
First Congress of the Information Systems Sciences,
November 1962. IEEE Transactions On Communication
Systems, Vol. C 6-12, Issue 1, March 1964, pp. 1-9.
[2] Cerf, V.G. "Research Topics In Computer Communication,"
in Computers and Communications, Proceedings of the
Federal Communications Commission Planning Conference,
November 1976, AFIPS Press.
[3] Crowther, Heart, McKenzie, et aL
SWitching. Network Design."

*

"Issues In Packet

[4] Frisch, I.T. and Frank, H. "Computer Communications, _
How We Got Where We Are." *

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

[5] Gerla, M. and Eckl, J.
"Moving Bits By Air, Land and
Sea - Carriers, Vans And Packets." *
[6] Lam, 5.5. and Kleinrock, L.
"Dynamic Control Schemes
For A Packet Switched Multi-Access Broadcast Channel."

*

[7] Retz, D.L.

"Operating System Design Considerations For
The Packet-Switching Environment.
*
11

[8] Binder, Abramson, Kuo, et al.
-: A Retrospective." *

lIALOHA Packet Broadcasting

[9] Fralick, S.C. and Garrett, J.C.

"Technological Considerations For Packet Radio Networks. 1I *

[10] Kahn, R.. E. "The Organization of Compute~ Resources Into
A Packet Radio Network." *

[11] Kleinrock, L. and Tobagi, F.

"Random Access Techniques
For Data Transmission Over Packet-Switched Radio

Channels." *
[12] Frank, H., Gitman,I. and van Slyke, R.
System - Network Considerations .. "

[13] Fralick, Brandin, et al.
Broadcasting." *

"Packet Radio

*

"Digital Terminals For Packet

[14] Wilber, M.
"A Network of Community Information Exchanges:
Issues And Problems," San Francisco Computer Faire
Proceedings, April 1977.

* From the National Computer Conference, May 1975,
Vol. 44.
Biographical Note - Dave Caulkins
Dave Caulkins has worked on computers for longer than he
cares to remember, with one short digression into the
biofeedback business. He is currently involved with
electronic mail systems at Cabledata Associates.
In the past
he has worked on a number of distributed computer systems,
including the ARPANET, a microprocessor based satellite
system for the military, and a large office automation system.

PAGE 148

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 149

A NETWORK OF COMMUNITY INFORMATION EXCHANGES ISSUES AND PROBLEMS
Mik.Wilbur
920 Dennis Drive
Palo Alto CA 94303

At>5tra~t

This paPer describeS a teleco~mun1cation network
Or1ented
specificallY
to_ard personal ~omputer
uSels. The e~phasls IS on technicdl aSPects of the
network,
tne paper also briefly discusses the
motlvatino co~s1detatlons and some economic, social
and legal aspects of su~h a net.

FE_" THiS PAPFM it you"re interested In cOming to
the conference session devoted to it.
I th1nk I
Would
be
~isuSlnq
the conferenCe sess10n by
presenting this same material aga1n bUt vocally, and
So I Inten1 to use th1s mater1al as background for
the discussion In the conference SeSsion.
1"11
Spend the first few minutes reviewing the salient
point', but I ~on"t read the whole paper to you.
Preface
J offer yOU tnjs Paper in the hope that
You can
Profit by mi experience with computer communicat10n
and my thouontb on hOw we coula brlng Some of 1ts
faCilities into the world ot perSOnal computers.
The motlvatln? l~eas were the subject of my Byte
article and are brletly summarized here.
GOOd
Communl~ation can tacilltate tree
prOqram Sharing,
al10wlno a community at ~sers to build on the work
Of an authOr and then become authors themselves.
~oOd
co~~unlcation
can
also let a product"S
prOSpective buyerS profit by the experience of tne
product"s
former buyers.
If the ~ommunlcatlon
tacllitles are decentrallzed, then 1t IS nard for a
Imall grouP ot ceople to control what is said or how
1t is presented. lhat"s ~hat this .paper Is about:
Settino UP SUCh a facility that is speCifically
Oriented tow~rd a .ide and diverse commUn1ty of
PerSonal c~mputeI users.
Ut course, In the late
seventieS, it oould be a waste of effort to ignore
the experiencf 01 the ARPA net; hOWeVer, it WOUld
alSO ~e a waste ot effort to SlaviShly Copy the ARPA
net,
because
that net is prediCated on some
alsumptlors th~t iust don"t apply to the Personal
com~unity.
A large portion of thiS paper is devoted
to an effort to separate tne applicable parts of the
ApPA net experience trom the 1nappllcable parts. On
With it.

I.

IntrOdUction

Fersonal co~puters tend to have onlY modest
amounts of PloCeSSlno po~er. In response, varioUS
PeOPle have opened time sharing serv1ces oriented
to.ard
perSchal COmputer users.
Traditionally,
these time sh~rlnu houses have offered strictly
computatinnal
services,
sucn
as games, cross
Comptlers ari microProcessor sl~ulatlon Proqrams.
Add1tionally, thoUqh, these COncerns could otter a
CI~ss Of services ~hlch ~e ~ould call
a "eom~unity
'ntorm~tion
~xchanoe·,
a computeriZed vers10n Of
bulletin hOards, yelloN pages and mailboxeS.
(The
n,me waS I~spired bY ~Ichael Rossmanl most of the
Ideas cone from the ~esource One system described by
ColStad
anJ LiP~in.)
Note th~t the Com~unlty
information lkch~n;e COUld be out one Of many
SerVic-es o.t"led bY tne tl",e Sharinq nouse. In
taet, a S~dll Ll~ CoUld be run in such a Way that
the h~st time sharin~ house dOeSn"t eVen"S~5pect Its
Presence. '~dl is, One cO~ld .set ~P a CI~ With only
a
s~~ll
lroup
Of users and de~onstrate its
feasibllltv netor. attempting to enlist the support
Of the peo~le runnln~ tne host.
The ld~~ ot Inter~st nere 15 an outgrowth of the
Dasic notion at ~ CI~: since the perSOnal comPuter

community is wideli d1spersed geOgraPhiCally, It can
greatlY
Denet1t from a dispersed CommUnication
tacilitv. The mailbOx aspect at the CIE idea" can be
expande~
to inclUde the not10n Of moVing messages
from one CIF to another.
In fact, CIE"S can be
11 nk ed toqetner In a network to move a meSSage frOm
the source elL through several 1ntermediate CIE"s
Until It tinall~ reaches the desired destination

elE.

that"S an expensiVe proposition: phone lines cost
money, and it ~ould be foollsn to have
them
continuously open to serve a load consisting Of
perhaps 20,000 messages per day with a total length
Of
maybe
~,OOU
Pages.
However, there is an
alternative that Could fill the bill at a mUCh lower
Cost without degrading the performance 50 mUCh as to
make 1t useless. lhat 1s, eaCh CI~ could hOld its
traffiC until late at nignt when the phOne ratel
drop and then call a few hearbY eIE"s.
During a
Call betweeO eIL"s, each could" determine Which
trafftc is aolng in the general direction of the
Other, and tnen they COUld forward the appropr1ate
meSSages. ] f the callS at the network periPhery
took place 1ust atter tne rates drop and again just
betore thev rlse and the calls near the center at
the net tOoK place tOMard the center of the time Of
low rates, messages could propagate across the
coUntry over~lQ~t.
There are ~anY PoSsible waYs one could 1mplement
a ell net.
They all have their advantage~ and
d1sadvantaQeS with respect to one another.
Of all
the
cOnc~lvable
tmplementatlons,
this
paper
~onsiderS those that are
Cheap,
easy,
lec;lal,
tun, and
UsefUl
to the eXclusion ot all others.
(ACrOnym addicts
might wish to c~ll tnese tne e~LFU cr1terla.) I
think (and sincerely hope) that there Is at least
one of toose implementat10ns.
Tne Problem 1s to
flna it. 1 haven"t found it yet, so this paper 1s
inStead a suromary at what love foUnd out about
tlndlnCl i t .
2.
2.1.

F1aCi(qround
A User"S

Vie~

Ot the ARPA Net

The ~RPA net connects computers together, and all
communication over the ARPA net Is
Ultimately
communic-ation bet.een programs. the mast UsefUl of
thOSe pr09raOlS, hOWeVer, 1s one ",hose pOtential was
Qu1te
Unsus~ected
at
the
time the net was
constlucted: it sendS messages of a fe~ hundred
words from one person to another. that program has
SpaWned a tantastlc Variety of proorams to handle
files of messages, to automat1cally notifY the
recipient Of a messaQe" to read the sender, tOPic
and other reCipients from a message neader and
autOmatiCallY
construct
a
response,
and
to
autOmatiCallY forward messages from One computer to
another as a person rooves around. That IS a meaSure
Of
the
Iffiportant
role tne program Plays in
connecting peOPle to peoole.
The facjlity has evolved into a verY useful form
over the years.
A modern message sender will
alternativelY acceot text tro~ the Teletype, from a
file (or any comblnatiOn) or, on command, fire up a
text editor an th~ meSSage gathered so far. A
modern
messa~e
file
handllnq
program
will
select1velY print Out entire messageS or one-line
SummarieS Of messaoe headers; it Will also, on
Command, Call the mess~ge-sendin~ progra~, perhaps
Initiallzino it to tOrw~rd or respond to tne message
most recentlY e~aminej. rinallY, d mOdern top-level
command intrrrreter NIL1, on your option, Qive a
Short warnjllg le.g.,
(you tlave new mail)) after
ObeYing aco~~and if it"s true and fiVe minutes have
elapsed Since tne last ~arnlng. Tne total effeCt Is
that peOPle ~now .hen their messages drr1ve and can

FIRST COMPUTER FAIRE PROCEEDINGS

reSPond in a

~dtter

BOX 1579, PALO ALTO CA 94302

Of minutes.

The AKPA ~et provides another facility that Is
a1&o quite useful: it can transfer whole tiles f!..om
one computer to anotner. fhe tYPical waY rePorts
and ot~et lang documents get sent through the ARPA
net is that the authOr N111 use the mail .facilities
to tell people .nere the file can De found and Why
it might be at interest.
Then anY interested
Parties ~et COPieS of the tile at their leiSure. Of
course. the file copYing facility also Narks for
Programs and is almost always the vehicle by whiCh
Programs are shared among people attaChed to the
AJIPA net.
While the
ARPA
net
provides
many
other
facilities. these two are the most usefUl. They
WOUld alSo be verY USeful tacilities to have In a
netWork
oriented
to personal computer peOple.
FortunatelY, they wOUld De the easiest to dUplicate
in a way t~at .ould be cheap enough to ~ake them
accessible to indiViduals.
2.2.

A Comparison Nlth the AKPA Net

A qreat deal of effort went into the AKPA net
and Ne need to discern whiCh of its
aspects _aUld be usetul to a Cl~ net and whiCh would
not.
develop~ent.

The ARPA net .as built to serve a commUnity of
Perhaps
ten thousan~ people. Of whom maybe a
thOUsand WOuld be aetlve users. About 110 computers
are
noW connected to the net. alo~g With 25
ComputerS oriented SpeCificallY tONard terminals,
they were located tn about 70 dlfterent places. In
all, the net NarK has 57 I~P's (cOnnection points)
PlUS
t~o
sdteillt. linkS.
The addr.ss space
orlgln~llv 8l10wed tor as ~any
as b4 IMP's, eaCh
SerVing UP to 4 computers, tor a total of 256
computers. «(h. restriction has since been lifted.)
~y
contraSt. a Ct~ net should probablY alloW for
more CIE"S' perhaPs 16 bits could be uSed for· the
address.
Tnen the location CoUld be cOded into the
.ore sianiflcant bits In such a way that onlY the
htghest· DttS
ot
a
distant address need be
interpr.ted to diSCOVer the general dIrection in
WhiCh to ,ena a ~.ssage.
Then, as a message
appr08ched its destination. more bits Could be
interpreted 8S e net, the way tWo Processes

In the case Of a CIt net, one Should at least
separate the protOCOlS between neighboring CIE's
from
the
protocols
between
the
source and
destlnatiOIl ot a wessage. The interactions between
a CIE and its SUbSCriber should De left COmpletely
out of the deSign Of a CIE net: each CIE Will be
hosted by a computer system that was cno.en for
econowic or logistic reasons and will have Its own
Idiosyncrasies that should be aCCOmOdated at the
option ot its SUbScribers. Between CIE's, however,
ProtocolS should be speCified that allOW room for
reaSonable a-mounts ot var iat Ion. ~'or eXample, there
must be a protocol describing hON characters are
handled: it shoula allOW for eaCh CIE to treat the
Other as a half-dUplex terminal or a f~ll-duplex
terminal with a person at it and snould prOVide for
acknowlpdge~ent
or retransmission Of each line Of
Characters. At the next level up, there Snould be a
Protocol specityih~ the format ot meSsages between
CIE's: sUch [essageS may be concerned With th~
connection itself le.g., 1 have SOme traffiC for
You, can You take It?). or they may represent
meSSages going Det~een CIE'S (e.~., Here is a
meSSage frOm CJE mumole to Cl~ foooaz.). ~ach level
Of protOCOl speCifies control information (e.g., I
qot line &9 UK; ~end me another one.t and a data
field (e.g., the line of characters): the next level
up talks about the fOrmat Of the data field.
Th-lS kinj Of mOdUlarHY is terribly helPtulWhen
a diverse grOUP ot people are trYing to build a
Sy&-tem- they tful definition Of Ideas.
It
alSO forces explicit definition ot the Inter~ctionl
bet1lieen thp levels ana
the
requirement.' and
guarantees that gO along with them. FinallY, and
perhaps most importantlY, it restricts the range o~
PoSSible
interactiOnS
In
a ~ay that focuses
attention in more worth~hile directions.

The Cll protOCOlS shOUld be rigorOuSlY definedj
and the o~flnitlonS Should be taken seriously.
There ~houl~ be some facility bY which-someDOdY 'can
test a pUrported protocol and eas1ly discover -any. of
the more ohvious bugs in It.
The danger
in
Undetected DUgS may be worse in a CIE net than in
Other enVironments Pecause t~o effects may well
Coincide.
firs·t, there will probably be a small
number of wi1ely usea protocol implementations In
the net; peDPle ~IIl be more likelf to use someone
else's Implp~pntatlon than to write on~ ot their
Own. It one Of the popular implementations contairis
an undetpcted bUg, then many
people
can
be'
inconv.enienced
~hen
some other pOpUlar program
SUPPlies it the .inputs i t needs to miSbehave.
Un
the ot~pr hand, it informality characterizes the CI~
net las it rrot'1:bly "ould), the.n the buggY program's
auth~r
may well not be available to fix it. AIS0#
the posslblp rise Of mutually unintelliqlole local
dialects would be a great inconvenience to peopie
WhO want t,o , especially in groups, is very different
from studying technical material on your own. I
hope I can encourage those of you who hesitate
to share your hobby with the kids by giving
you enough pointers on teaching to get you going.
For you who have already started to demonstrate
your systems to children's groups, I hope you
can use some of my ideas to make your presentations
more successful for both you and the kids.
How to Contact a School or Kids' Group
The most difficult thing about finding
groups to talk to is that it involves several
"cold" telephone calls to strangers at strange
institutions. Host adults find the world of
schools and children's organizations very remote
from their present day experience. Even seasoned
parents are often intimidated by these institutions. Just finding a local school to contact
can be a frustrating chore. Try the phone book
under Mycity Schools in the white pages for a
start. If you are directed to look under the
name of the individual school, don't give up most cities have a Mycity High and the nice lady
in the office there can give you the names of
the other high, Jr. high, and elementary schools
in your vicinity. Explain to that lady that you
have a presentation on computers and you would
like to contact the President of the P.T.A., as
well as the math, science, electronics, business,
and vocational education departments to see if
any of their teachers would be interested in
inviting you to talk to their classes. Assure
her that you are a public spirited citizen with

PAGE 156

nothing to sell. You just want to share your
fascinating hobby with the kids and teachers.
If possible, get the names and numbers of all
these individuals and try to contact them by ,
phone. Teachers may not be able to take a call
during school hours so be prepared to leave word
for them to call you back between 2:30 and 3:30pm.
When you reach the teacher or P.T.A Mom, tell
them without ONE WORD OF COMPUTER JARGON that
you have built your own small computer and you
would like to bring it to school to show the
kids. Briefly describe your presentation ( we"ll
talk about that in a few minutes ) and when
they sound confused say that it will make more
sense when they see it. If the person is hesitant
about turning you loose on their kids. it helps
to offer a pre-session for the faculty or parents.
This will also payoff because you can then keep
the grownups from hogging the terminal during
the kids' presentation. (An intriguing computer
game can make the most conscientious teacher
fo~et his role!)
Finally, set up a date and
time. Be sure to get exact directions to the
classroom you will be visiting including access
from parking lot and number of stairs to be negotiated. Also warn the teacher of your needs
for tables and electrical outlets.
My class presentations are always short, and,
from a hobbyists point of view, totally without
real details on computer hardware or programming.
No matter how simple or entertaining you try to
l)e some kids will get bored. Forty-five minutes is
about as long as you can ask a class to sit down
and pay attention. Fifteen minutes of talk with
unlimited hands-on is usually very successful.
If at all possible, arrange with the teacher
to move your system to an unused room after your
formal presentation. The hall, the nurse's room,
or the principal's office might be availa')le. Tqere
you can entertain the enthusiastic kids sent to
you by the teacher in groups of three or four
without the hecklers who were bored earlier. If
you are a beginner at working with kids you don't
need to try to learn to control a class of thirtyfive active children right away!
Try to leave yourself plenty of time after your
presentation just in case someone gets really hooked
right away and wants to stay after school. ~e
sure they call home for permission to stay if
you don't want their parents to oppose their new
interest from the start. Also it's nice to reserve
some'faculty time without kids around so that
the teachers may let their ignorance show without
blowing their image in front of their students.
That will happen soon enough anyway_
Other children's groups are similar to
schools. Try 30y and Girl Scouts, the YM/WCA
Hycit)' recreation department, Teen Clubs, Ham
radio clubs, etc. It may take some perseverance
to locate the names of the leaders of these
groups but ask your friends and neighbors. When
you contact the schools ask about what special
interest clubs there are on campus. Also, ask
to be put on the speakers list for each school.
When the other teachers hear what a hit you are
they will want to invite you to their classes too!
Composition and Character of Various Groups
What you can present to any given group of
children is very much a factor of who the people
in the group are. I would like to refer to groups
of kids by approximate age but that can be very
misleading. An eight year olds' Model Rocket Club
may follow you into the rudiments of assembly
language programming in an hour and a half. A
high school class called Introduction to Business
Hachines, on the other hand, can be bewildered
each time they must push the carriage return.
Therefore, please consider my references to age
groups as developmental stages and remember
that physically adult., bodies often hold minds
with five year old skills when it comes to computing.
Also, don't expect most groups to be preselected
on the basis of interest in computers. After

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 157

they play dumb. The rest are 1ikelr to appreciate
it 1f you start at their level and et them
proceed at their own pace. Don't judge them
by your own high standards.
High ·schools are already full of coaputer
freaks waiting to be discovered and welcomed
into the fold of computer hobbyists. If you
Let's take a look at kids by age groups tap into one of these goldm1.Ms in a math or
starting with the youngest, five and six year olds.
electronics class you can really go to toWn.
( .Kids younger than five love computers too but
show them every hell and whistle 'your systemthey are awfully difficult to work with in groups.)
can muster. These kids ~.n.ll stay up all night
Most fives can count to ten but are hazy on
trying to figure out what you said. Let them
know that you are willing to teach them what you
what "greater than " and "less than " mean •
They can probaoly type their names, very slowly.
know and you can count on them to show you how.
Don't expect them to be able to read. Fives
Non-computer highschoolers can be viewed either
like noise and pictures. joy sticks (1) and
as younger kids or as adults depending on their
turtles (2). They often come up with original
social maturity. Remember, they deserve just
interpretations of yOur instructions and it may
as much care as the ten year olds even though
be difficult to disuade them from eXperimentation.
you may not find them as rewarding to work with.
In other words, if there is an exposed switch on
I usually have my little kiddie I1IIJ.teria1
your system. they'll push it. They will not be
available when approaching adults. ~lts think
very good at watching other kids ~ut if you have
they ought to know something about c~ters but
prepared some tasks which are truly at their
most often their knowledge is filled with gaps
level they may demand a thirty minute turn each.
and misconceptions. On top of this, adults are
In short. five year olds bare a strong resembloften just plain afraid of machines; If you tell
ence to several computer hobbyists of my acquaintance. them you are going to start with your kindergarten
I have found that chaos can be avoided by
presentation they will probably giggle about
asking the teacher to start some favorite activity
what a good idea that is and relax a little.
on the other side of the room after you have let
Later they will come up with thoughtful questions
everyone see the inside of the computer and printa?out real world applications of systems like
ed a Hunny. The teacher can then send you kids
yours and their effect on economic and social
two at a time. Let each one play one short
conditions.
game and write one sto~. Take the names of
The reason I dwell on the characteristics of
those who don't want to stop and let thea come
the children you are likely to ?e working with is
to the nurse's room later for another. longer
that I believe they are all potentially intelligent
tum.
and enthusiastic people. My negative descriptions
Seven. eight. and nine year olds ( 2nd and
reflect only their degree of "turned-offness"
3rd grades ) are into reading short texts and
not their mental capacity. Recause "computers "
can handle four function arithmatic using whole
is a new field in which most of us are beginners
numbers. Occasionally I am appalled at their
every kid has a chance to grow and explore within
total lack of logical ability. This has nothing
it. You ~y turn someone on with a presentation
to do with the intelligence of the children themaimed at his personal interests. You may serve
selves. Rather it reflects whether or not thinking
as a model of the kind of person he or she would
is considered a valuable skill in their school
like to become. In this field everyone is a
or home environment. You may be the first person
little bit stupid so no one needs to feel stupid.
who has ever suggested that these children reason
for themselves. Of course. you may find you
Material I have found Appropriate to each Grgup
have stumbled onto a lively group you are hardpressed to keep up with.
The specific. content of your presentation
Ten. eleven. and twelve. year olds ( 4th.
can ,e largely the same for any group exeept the
5th. and 6th graders ) begin to show definite
high school computer freaks. How you present
differentiation into intellectual versus nonthat material, how much you can cover, and what
thinking patterns of behavior. This is an exreaction you expect from each group changes
citipg age to introduce to computers because a
immensely. Of course,' your hardware capabilities
bright ten has all the mental apparatus needed
~1ave great bearing on what you can show.
to understand electronics and programming. furIf you have just a computer on a board with
no games, I would stick to those groups which
thermore. he usually hasn't discovered the disexpressed
interest in computer hardware. If
have
tractions of puberty yet. The non-thinking kids
you have a terminal and three or four games you
of this age are often still open to learning
can access you can probably prepare a demonstration
techniques of problem s.olving and logic. Computer
for anyone.,
games or a fascination with soldering things
I always take the cover off the computer
may be the spark they need to reawaken the excitment
of learning and exploring. Average kids at this age and show everyone the chips and PC boards. Little
ones just look. ~rom about eight years old on
will probably be fascinated with your system if
up I explain IN Ot~LINE ONLY how chips and boards
it can do anything beyond blink lights. The bright
are made. Putting an IC under a microscope is
ones will be bored because they want you to go
fun too. Then I spend a few minutes with the
faster and show them more. The non-learners
concept of a system - here's the terminal. the
will continue to sit in the back row and throw
CPU with .arithmatic, logic, and control. and the
spit balls. Be especially alert for the child
core memory. This is the computer's magnetic note
who seems painfully slow at reading or r.sponding
pad ( we call it a tape recorder ) where it writes
but who shows a lot of interest or perseverance.
down the rules to each of the games it can play.
I keep hearing successful engineers mutter ... My
If you have lots of time you may want to bring
God. where would I be now if I hadn't discovered
along some useless hoards and some soldering irons.
electronics when I was eleven?"
Taking boards apart and randomly reassembling
,
By junior high age the division between
them is a good manipulative task for upper elemen~
thinking and non-thinking has become more entrentary and junior high kids.
ched and more subtle. The thinkers divide into
If you have rigged your machine with a
math. verbal. artistic. and human relations
speaker and.music program (3) this is a good time
specialists. The non-thinkers may have areas
to show it. Most people do not have a clear idea
of expertize such as sewing, automobile repair.
of how a speaker works so you will have to explain
or msste~ of a musical instrument. but they
the whole thing. ·Watch out for incomprehensible
conceive of themselves as basically unable to
words like "square waves" and "frequency".
understand what you are saying to them. People
After this short hardware orientation I
exhibit this trait throughout adolescence and
plunge right into computer games. Most kids will
adulthood. Don't buy their line. The smart ones
are rarely the geniuses they would have you believe. spend between twenty and forty hours playing
games if given free access to a library like 101
Some of the others are merely disinterested so

all. it was th.e teacher! not the kids who invited
you. Occasionally you'l be lucky and get a classfull of interested and intelligent people but a
wide spec~rum of attitude and ability is more common.
Success is three or four enthusiasts. not all
thirty.

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

Basic Games (4). During this time they will
greatly improve their reading and interpretive
skills ( if they can't con someone else into doing
all the reading for them). Their logic will
acquire a new degree of sophistocation. In a
group setting where they must take turns at the
terminal and explain games to their peers their
social skills grow rapidly. Even during a short
school visit you c~n see the seeds of these
changes begin to germinate.
I start everybody out on "Guess My Number"(S)
because how they approach the game gives me a clue
to the level of the group. If noone discovers
the ~inary search, I can forget about introducing
programming in this first session.
Fives will enjoy Guess between 1 and 9.
Show them the numbers on the keyboard and make
sure they see that "too high" means choose a
number farther left and "too· low" means choose
a number to the right. A six to ten line "Story"
program (6) which asks for their name, favorite
food, color and playmate, then types out a short
story will be a hit, especially if you have hard
copy to let them take home. Snoopy's and Bunnies (7)
are good too but print out one for each child
~efore you arrive at the school and just do the
teacher's copy in class. Very low skill real-time
games may work for fives too. Pong is too difficult
for many of them but Race Track (8) used as a
maze instead of a race is fine. Sharp fives
may also he able to play Diddle (10) on an Altair
front panel. Of C~lrse if you have graphics you
can keep anyone amused by generating patterns for
a while.
If you have an ASR33 Teletype you may find
that this is more interesting to your younger
groups than the computer itself. They love the
noise and rarely have had much chance even to
type on an electric typewritter. The paper tape
will introduce the idea of coding and the kids
will love to punch secret message tapes and
read them back on local.
gy the way, many schools have closed circuit
T.V. If your CRT is small or you are using a TTY
for output it!s nice to hook up a simultaneous
display on the school's large monitor. This
eliminates a great deal of pushing.
This same material is equally good for seven
to nine year olds. If you have time you can
introduce another game or two for them. Unless
your group is used to playing aempetacav. games
they may have trou',le comprehending that they
are supposed to he developing skill at solving
the puzzle presented by the game. Many of my
students find it sufficiently satisfying to get
the answer at all. I sometimes have a hard
time convincing them to play the game again, trying
for a hetter score. Th~y seem to view the computer
as a competitor rather than as a game board on
which they play against the program·ner. If you
have two person games available you can make this
point a little more easily.
I like to introduce programming to these kids
by talking ahout giving instructions. A neat
demonstration is to have the kids tell you how
to make a peanut butter and jelly sandwich while
you are blindfolded. Have all the ingredients
ready on·a table in front of the class. You
start by choosing an instruction set with·the kids.
Try: move arm up,doWn, right, left, forward, back;
grasp object touched; rotate hand, palm up, palm
down. Then let the kids callout instructions
to you until you get the sandwich made. The
final test is to write down the instructions on
the blackboard, then bring in a new person and see
if he can accomplish the task blindfolded if you
read only the words on the board. If you are lucky
the kids will begin to see how much pre-programming
they bring to a task and how "simple-minded"
the computer is.
Some of these kids may he interested is going
on to simple ~asic Language programming. Print,
in·put. and if-then will let them write math quizzes
using impressively large numbers. However, unless
you are working with a special interest group or
"gifted" students you are not likely to get past
the game playing stage. I've seen a kid play TicTac-Toe (11) for an hour a day for four days.

PAGE 158

He didn't even want to change games until he had
this one mastered. You see, he wasn't just
playing ric-Tac-Toe. He was reading, typing,
learning to operate the computer, and manipulating
the social situation which provided the computer
access all at the same time.
Intermediate grades ( ages ten to twelve )
are likely to hegin to show an interest in computer
applications and simulation games. ~tany of them
will thrive on logic games like Bagels (12).
They can also handle real time games with considere',1e skill. Running out of time is my biggest
proalem with these kids., I have enough projects
lined up in my computer awareness curriculum to
visit a classroom at this level once a week for
the whole school year. In the first viSit,
though, it is show the hardware, play two or three
games, talk a',out what a program is, and mention
some real world applications like "lanks, point·of
sale, and school registration.
When you face your first junior high class
you are going to have to decide whether your
olJjective is to "teach something" ahout computers
during your first visit or just let the kids have
fun. I tend to choose the latter since I Imow thatthey will search out "hard" information once they
are hooked on computers. I flesh out my games with
Hamura~i (13), or Hunt the Wumpus (14) and bide my
ti~e until someone asks a"lout programming.
Ofte.
you will get inquiries ahout huilding home systems
like yours. These kids don't usually have much
money so one graphic demonstration is to have your
system configured so that you can tear it down to
a bare ~ones kit in front of them. This is What
you can get for $SOO. This is what you can do
with it. Add this $200 board and you can do this.
Continue adding parts and money until ,OU are back
to playing Hamurabi. This can be a discouraging
demonstration ~ut it is realistic. Hopefully, we
can save them some of the heartaches we experienced
in our naive beginnin~s.
&ld now on to high school. Many older teenagers
already know some electronics and/or computing.
Those who are interested will benefit from elementary discussions of hardware and software configuration. The non-computer kids will need the same
soft introduction you gave their younger siblings.
If you are interested in on-going projects with
kids and computers, get the high school kids on
your team right away. They can serve as assistant
leaders for younger groups and can often manage
the organization of their own cluhs with you as
a consultant. Discuss your project ideas with them
during your first visit and let them know that
there will be plenty of time for playing computer
games later.
On-Going Projects
One forty-five minute show-and-tell session on
homebrew computing is likely to yield two or three
candidates for some form of continued contact with
the machine. The younger kids will be ~asically
interested in a chance to play more games. Remember that twenty to forty hours I mentioned earlier?
Their teachers may see the potential for computer
aided instruction or a continuing class in computer
literacy. Unless this is a field of particular
interest to you, you will probahly want to serve
only as an advisor to a teacher or parents group
to help bring this about. The advisor role is
crucial to the success of such a project. However.
the leader of this endeavor is going to have to
dedicate many hours a week to make it happen. An
ongoing, in-school project will involve obtaining
space in the school to house the system or terminal.
supervision·in the computer room during and after
school ( if you don't have after school h~s the
kids will hreak in to use the machine anyway ••• ).
planning a "curriculum" which sounds convincing to
"educators", arranging for timeshare services or
building/buying a micro, and financing the whole
package. It takes a coordinated effort on the
part of one or two teachers, a few students, a
sympathetic administrator, ,and someone who knows
quite a lot about computers and programming maybe you.

FIRST CqMPUTER FAIRE PROCEEDINGS

Perhaps you would be happier tackling a
slightly smaller project? Scout troups offer
a merit badge in computer science. If you are
willing to be their resource person you can help
a lot of kids get a foot in the door without
making a major commitment of time and energy.
You may find you haVe the makings of a
computer games cluh or an after school class
in programming which could meet at school or at
your house. ( Moving your system can get to be
a drag after a while.) Since the eq~~~ment is
yours. you get to call the shots on how often
the club can meet, where. and whether there will
be dues to maintain or expand the system. If
this is to be a school sponsored group. be sure
to check with the principal about rules. regulations
and use of school property. You will prohably
need a faculty mem,er to co-sponsor the group
although that person may not have to attend every
meeting. If you form a non-schoo~ related club
make sure you contact the parents and explain
your plans to them. Be clear about what you
are willing to offer so that the· club 1s fun for
you and not just a pain in the neck. You need
not institute a formal organization with constitution
and by-laws. but a one pager explaining your purpo.e,
who is invited to join. and what members respons~
ibilities are will avoid confusion and possible
hard feelings later.
Those of you who love hardware will get a kick
out of getting together with the kids who want to
build their own systems. You can teach them as
much as you know and then serve as a liason
person to· set up sessions with "experts" you meet
through your larger area computer clubs. Of
course your services as chauffeur to meetings,
computer stores, and conferences will be invaluable.
Many parents are ready to prOVide money to get a
kid started on his own kit but they don't know
how to help him or her find the people and resources
needed to successfully build and use the system.
Your willingness to become a group leader ( maybe
not leader, just resident responsible adult ) will
earn you the respect and gratitude of the kids and
their parents as well.
A few words to the wise about entertaining
sizeable groups of people in your home. Check with
your insurance agent to make sure you have the
proper liability coverage. Also don't tempt fate
hy leaving money around or calculators unaccounted
for.
.
Hints on Successful Presentations
I'd like to finish out this discussion with
a few suggestions to keep in mind while you are
preparing your firs~.Yisits to kids groups.
1. Make sure your equipment works. Have a
dress rehersal which includes disassembling
your system, driving it a distance equal to
the trip to the school, at equal temperatures.
Set up and give your show for friends and
neighbors. Arrange this at least two days
before your school trip. If you have to dehug
your system you'll have twenty-four hours to do
it and still be able to give twenty-four hours
cancellation notice if you hlow it.
.
2 •. Prepare your "lesson plan" carefully and
specifically for the group you'll he addressing. Some people can wing it comfortably.
Others find themselves tongue-tied in front of
that bunch of expectant young strangers.
Worst of all is to discover that your audience
isn' t understanding one word of what you are
saying to them.
.
3. Therefore, DON'T. USE COMPUTER WORDS even
if you explain them first in your presentation.
People don't learn a new language that fast.
Cqmputer vocabulary IS a better means of communication than ordinary English ~UT ONLY FOR
COMPUTER FREAKS. ·If necessary, write out the
whole text of your talk and underline every
instance of computer jargon. Think up e,nonyms
now. Later you won't .be able to come up with
alternative words. It there are no noncomputer t070rds to express your thought. simplify your talk. You can introduce those

BOX 1579, PALO ALTO CA 94302

PAGE 159

computer concepts in your second visit with
this group.
4. Tryout your presentation on flome noncomputer, or ~,etter still, anti-computer people
and encourage them to be painfully honest when
you loose or confuse them. You will need some
experience dealing with detracters. ~ try
it out on someone of the same age as· the group
you will visit just to 1,e sure you have judged
their skill level correctly. 5. Don't expect to get much information
across on a first visit. If the kids see
the computer, touch it, play one game, that's
enough. Your o'Jjective is to help demystify
the computer, not to snow them with how much .
you know.
6. Don't introduce Startrek or Jambl1ng games
in class. You'll never get the Kids' attention
back.
7. Wait for questions to arise in your learner.
When a question happens in someone you know
there is a place for the answer. Otherwise,
you may never know when the input buffer has
overflowed.

That is a lot of what I know about sharing computers with kids. I'd he glad to talk or correspond
further with any of you on this subject. It's fun.
Seeing a face light up in front of a terminal is
like giving a present to someone. It satisfies
the evangelism that lurks within ~y of us. So,
find a group to visit, learn as much as you can
about them before you go , and prepare your presentation accordingly. You'll be a hit with the
4-H Sewing Circle, the Co-op Preschool and the
Advanced Placement Physics Seminar alike.
Footnotes
(1)
joysticks - I am using this as a generic term
for any device which allows input through a lever
or moveable table top instrument. Cr~co makes
one for Altairs.
(2)
turtles - A turtle is a motorized device
which moves around· the floor under keyboard or
program control. It looks something like a turtle
and can barry a variety of sensors to previdefeedback to the computer. See " Twenty Things to Do
with a Computer" by Seymour Papert; in Educational
Technology Magazine, Morristown, N.J. vol. 12,
April 1972, page 9 to 18
,
.
(3)
music - see the following articles in
Peoples Computer Company, P.O.Box 310, Menlo Park.
Ca. 94025. Vol 3 #5 Steve Dompier's Music Program
Vol 4 f/3 Minuet in G Major b.y Cynthia
Beyer
Vol 5 #1 A Musical Number Guessing Game
by Kurt Inman
(4)

for

lisc;i.tI~"

of games see ..
101 Basic Games by David ~l; Digital
Equipment Corporation 1 Maynard, MllRS,·

19/5

"reative Computing Magazine; PO •.Box 789-m
Morristown. N.J.07960
regplesComputer CompanY; P.O.Box 310
Menlo Park,Ca.94025
wnat tg Do After YOu Hit Refurn; Peoples
Computer Company, Menlo P~a. 1975
(5)

Number Guess - What to Do, page 116

(6)

Stroy - listing from LO*OP Center, Cotati, Ca
94928

(7)

Snoopy and Bunny - 101 Basic Games l1sting frOm
LO*OP Center, Cotati, Ca 94928

(8)

Racetrack - I can't find a listing in time for
pu~licat1on.
Ask your friends or LO*OP

,\:

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

(9)

oops! - I messed up my numbering system •••

(10)

Diddle - see PCC Vol 4 #4 page 8

(11)

Tie-Tae-Toe - 101 Basic Games. page 219

(12)

Bagels - What to Do, page 117

(13)

Hamurahi - What to Do, page 140

(14)

Hunt the Wumpus - PCC Vol 3 #3 page 24

vita.

LIZA LOOP

Ms. Loop is the founder and President of the Board of
LO*OP Center, Inc., a California non-profit educational
corporation. She is acting director of the LO*OP Center,
President of the Sonoma County Microcomputer Club and
President of the Cotati Chamber of Commerce.

For the past two years Ms. Loop has been engaged in
explaining computers to lay people and education to computer
professionals. She has taught "Meet the Computer" classes,
Basic Language Programming, and Pilot Educational Programming
in Cotati-Rohnert Park Elementary Schools, Petaluma and
Santa Rosa gifted students' programs, and in private classes

of both adults and young people at LO*OP Center. She has
lectured to schools, civic groups., and college classes in
Sonoma County. She has personally developed the curriculum
for these courses as well as a computer orientation course
for office personnel now under consideration by the American
Management Association.
Ms. Loop's articles have been published in several
journals of national circulation within the microcomputer
industry. LO·OP Center, Inc. serves as publisher of one
of these, the Pilot Information Exchange.
Ms. Loop was educated at the Dana Hall School in Massachusetts and at Cornell University. She completed her
Bachelor's Degree at Sonoma State in 1970 with a major in
Philosophy. Her minor concentrations were math and physical
sciences. She has since pursued courses in Education and
trained on DEC, Hewlett-Pa'ckard, Wang, 'and Data General
small computers as well as large time-shared systems.
Currently Ms. LOOP is enrolled in the Master's program in
Management at California State College, Sonoma, and is teaching
units on computers within courses in Management, Psychology,
and Education. She is a member of the Lawrence Hall of Science
at U.C. Berkeley, the California Association for Educational
Data Processing, and the Oregon Council for Computer Education.
Ms. Loop lives in Sebastopol, California
Jonah (3) and Solomon (5).

wi~h

her sons

PAGE 160

FIRST COMPUTERFAIRE PROCEEDINGS

PERSONAL COMPUTING & EDUCATION:
A TIME FOR PIONEERS
Thomas A. Dwyer
Soloworks Lab
311 Alumni Hall
University of Pittsburgh

Pittsburgh PA 15260

INTRODUCTION

BOX 1579. PALO ALTO CA 94302

PAGE 161

Here are four of them.
1. There Is Regular Recognition of Unplanned Learner Accomplishments. I recently visited a school that passes the enthusiasm test outlined at the beginning of this paper with a grade
of A-plus. The first thing that the teacher said to me was,
"Say, I want you to see what (student's name) here has been
doing with difference tables, and then you've got to look at
some of these graphs (name) has produced - and would you believe
that (name) has now got a program running that simplifies
Boolean express,ions with the Quine-MCCluskey method - he'll have
to explain it to you, I don't understand it at all. .. etc."
Needless to say, this teacher's students were standing ten feet
tall. Also needless to say, they wanted to talk my ear off
several times over, describing what thei' had been doing in this
unique computer math class.

The use of,microcomputers in education is closely associated
with the personal computing movement. So we have the interesting situation in which a well-extablished enterprise must
decide how (or whether) to handle a promising young upstart
from the other side of town. The problem is to rule on the
merits of a liaison.
Eventually someone will decide that the answer lies in the
Dne of the most powerful contributions of computers to edumagic word "evaluation". From then on it's likely to be concation is the way in which they make possible student accomfusion time. The reason is that evaluation projects tend to
immediately zoom in on methodology. They worry about the "how" plishments worthy of recognition. Computer-related innovation
that does not capitalize on this capability is really missing
of evaluation much more than the "why" or "what".
the boat.
This problem can even arise when the methodology is fairly
broad. For example, one open-minded way to evaluate a new idea
is to talk to the regular users (not developers) of the system. 2. The Role of the Teacher has Changed. The example I just
If these users are found to be consistently enthusiastic, or if gave quoted a teacher as admitting that one of his students was
using a technique about which the student ,knew more than the
they are anxious to spr'ead the word to others, there is a good
teacher. The schools that are going places with computerchance that something worthwhile is going on. If the new idea
related innovation always seem to have learned this lesson is concerned with education, and if the students involved are
that teachers and students bring complementary talents to a
found to be engaged in such unusual practices as asking to
stay after hours, or to come in on Saturdays, it's safe to con- learning situation, and things get really interesting when
everyone admits this.
r.lude that something extraordinary is in the wind.
Contrary to what one might think, respect for the teacher
Now for an apparent paradox. If we should attempt to evalgrows significantly in such an environment. Contrary to what
uate the worth of "computers in education" by using this useris
sometimes said, technology creates a greater need for human
enthusiasm test, we would get rather uneven results. Probing
more deeply to find out why, we would soon find that people were teachers than ever, but they must be special people. They muS4
in particular, be able to flourish in a learning situation
using the same words (and machines) to mean (and do) very difwhere both teacher and student will add to their respective
ferent things; that when applying computers to education there
understandings almost daily.
is a wide range of possibilities, and that there is all the
difference in the world between them.
Now that microcomputers make it possible for many more
3. The Content and Style of Successful Computer-Related
educators to get involved in these issues, it may be timely to
Curricula Are Open to Innovation. Another way to say this is
take a quick look at what the options are. We should not
that the "add-on pathology" has been avoided. Innovation has
assume that past R&D in computer assisted instruction has the
generally been more successful in places where "new" courses
answers. It's also timely to note that classroom instructors
have been developed (e.g. Computer Science or Computer Math)
are much more inventive than assumed by some R&D models. The
than in places where a standard course has had the computer
contributions teachers and students have already made to personal "added on", with nothing being replaced, removed, or revised.
computing prove that.
There are a lot of reasons why this is so. In the add-on situation, students are being penalized for using the computer; all
WHAT MIGHT GO WRONG?
the new work is added to the old. Secondly, many of the problems presented in pre-computer curricula are pretty silly (if
There is a simple test for spotting problem areas in the use, John has twice as many apples as Mary had after Mary gave four
less apples to •.• etc), and using the computer to solve these
of computers in education. The trick is to mentally erase all
the machinery and technical talk from the picture, and then ask only propagates an error.
What works best is a fresh look at both curricula and
whether what is being done is in fact what one's philosophy
advocates. If it is found that what is taking place is more an learning environments - a look that takes maximum advantage of
emulation of traditional school practice than a move toward ones several completely unique capabilities of computer-related
learning. For example, major (and quite fascinating) projects
educational ideals, then it's a wrong use. It's a use that
doesn't understand the difference between personal computers as can be imbedded in curricula at any grade level, once one understands
how the computer naturally leads to a problem-solving
extensions of the human intellect and spirit, and "gadgets"
that mechanize sterile techniques derived from past expediencie~ philosophy based on the use of subroutines (what some· people
call "procedures"). At Soloworks, we have also found great
A wrong use of computers can also be spotted by a glaring
inconsistency between what's possible, and the simple-mindedness value in using physical devices that students can control with
of what's actually done. It's not that a computer can't be used the computer. This almost always ends up involvirig several
disciplines. It's really a rewarding learning experience to
to drill a student in the memorization of facts and formulas;
it's that major concentration on such a use misses the potential find that the physics of heat, the mathematics of large linear
systems, and the joy of cooking have something to say to each
of far deeper roles. Computers shine in learning environments
other. The success of computer-related, innovation is directly
where they serve as exploratory companions; as impartial verirelated to a willingness to innovate at all levels and in all
fiers of a student's latest effort at synthesizing a general
directions.
procedure; as a focus of celebration and exhuberance when they
Dne of the most interesting forms'our curriculum work at
finally obey (literally) thousands of precise commands.
Soloworks has recently taken is the development of "microcourses". A microcourse is defined as a cluster of ,imodules".
WHAT CAN GO RIGHT?
The key module in the cluster is one which presents the student
The surest sign that a computer-related educational program
with a challen~ing problem . . Then other modu~es are developed
is on the right track is the presence of "educational complexity"to support ach1ev~ment of th1s challenge •. Fmally, there are.
at the local level. By this I mean that the program evidences
m~dules th~t exam1ne.a genera~ t~eory der1ved from these spec1a great amount of thought about all the factors that go into a
f~cs .. Not1ce. how th1s order 1S Just ,~he reverse of that purfresh approach to learning (and instruction), and that the resued 1n a typ1ca~ COl~ege cou~se. It s wh~t we.cal~ a top-down
sponsibility for this renewal is in the hands of the teachers
~pproa~h, where down means 1n the same d1rect10n ~hat great
and students involved. Meta-organizations (such as computer
1nvent1On has always moved. Why should school be d1fferent?
networks, or educational R&D centers) are important too" but as (Two}ooks that, illu~trate this approach a~e ::Software To~ls".
servants of teacher/student groups, not as their masters.
and ~ Amateur s GU1de to ~ersonal Comput1ng , both pub11shed '
The criterion that there be "complexity" in the local plan
by Add1son-Wesley Co., Read1ng, Mass. 01867.)
is best illustrated in terms of what is going on in the class4. The Best Things Happen Where the Tail Hasn't Wagged the Doi
rooms of a number of pioneers. Although the detail varies,
It is sad to report that vested interests, both political and
several common "discoveries" seem to characterize their work.

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

economic, can and do get involved in computer-related educational innovation. Education deserves better than this. The
going is tough enough when something new is tried without
muddying the waters with non-educational factors.
There now exist microcomputer hardware and software systems
that provide an excellent match to the requirements of the
educational world. Trying to convince oneself that technology
developed for other purposes (e.g. administrative computing) is
just as good is an exercise in sel f-deception. It's simply not
a good idea.
On the question of money, the only way to go into computing
is to allocate the right money for the right system. Using
microcomputers, far less money than it takes to equip a science
lab or gym is needed for initial outlay. A yearly maintenance
b,udget calculated on the basis of a lab fee per student should
also be budgeted - again at about the same level as is now
being spent for a physics or chemistry lab. A budget line-item
to add new features (e.g. graphics capability) each year is also
sound planning.
CONCLUSION
A quiet revolution is taking place in education. Th~ ingredients are microcomputer technology, dedicated teachers, the
curiosity of students, and a lot of common sense. The examples
I have given say something about the way in which this common
sense manifests itself in those places that are leading the way.
The real contribution of personal computing to education is that
it is making it possible for many others'to join in this move
to new frontiers.
As mentioned earlier, microcomputers have made the cost of
pioneering reasonable. Using the cost of an average school
gymnasium as a reference point shows that a computer lab is
quite a bargain. The athletic analogy also helps solve the
evaluation problem. Students using well-equipped computer labs
in the manner advocated here would soon be making a name for
their schools. And how do you argue with a winning team?
The pioneers will know that there are better criteria of
course, and have the security to make their own evaluation. For
them the metaphor will have a deeper significance. The word
gymnasium comes from the Greek "gumazein" which meant "to train
naked, unfettered". And that's what educational computing is
about; an unfettering of the imagination and intellect, a
freeing of the capability to learn. A single microcomputer can
become a gymnasium of the mind, an arena for the imagination.
It's a bargain no school should resist.

PAGE 162

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 163

THE THINGS THAT WE CAN DO WITH A MICROCOMPUTER IN EDUCATION THAT WE COULDN'T
DO BEFORE
Lud Braun. Professor
College of Engineering
SUNY It Stony Brook
Stony Brook NY 11794

Where We Came From
Betore l.965, educators who wanted to have their students
use a computer to enhance their learning in a course sent
their students to k~-punch machines at the local computer
center which practiced that atfliction call.ed batch processing.
This computing mode was made necessary by the high cost and
operational compl.exity ot computers in that era. This was
great tor computer-center directors who could boast ot 95%
util.ization tactors tor their machines, but it was l.ousy tor
the students and tacul ty who were lucky it they got l.0% util.ization tactors tor their time.
About l.965. along came Kemeny, Kurtz and others who decided that batch processing was a terribl.e waste ot peopl.e
power and that there had to be a better ~. The "better
~" which th~ devel.oped was call.ed time~. The computer cost was shared among a group ot people, as in batch
processing; however, instead ot serving users serially as in
batch mode (with its resulting queue and l.ong turn-around
time), users essentiall.;y, were serviced in parallel., and efficiency ot util.ization ot people time increased dramaticall.y.
Another advantage ot time sharing which was important to
educators, and which was due l.argel.;y to the cl.everness ot
Kemeny and Kurtz in their design ot the BASIC l.anguage, was
the capabil.ity which existed tor interaction between the user
and the computer. Many ot the interesting appl.ications ot
computers in education in the l.ate l.960s and earl.;y l.970s
(including the Huntington Tva simulations) had substantiall.;y
more impact (and, in some cases, onl.;y became possibl.e) because
ot this interactive capabil.ity.
By about l.968, educators (including this author) began to
notice the DEC PDP-8 which was designed originall.;y as a laboratory computer. Such minicomputers had most ot the advantages ot time sharing, plus a cost which was signiticantl.;y
l.ower (over a 3-5 year period) than time sharing * and they
added two other signiticant advantages to educat~rs:
l.. The user was in total control ot the computing
environment, rather than being subject to the
high priests ot the computer center; also no
l.ocal computer bum could crash the system or
steal or modify programs bel.onging to others.
2. The minicomputer was inexpensive enough that a district could :!!!!l. a machine rather than rent it. This
meant that the interested teacher on1;y had to talk
his administration into springing tor computing
bucks once, rather than having to go back every year
and being subj ect to budget cuts, etc. *
We are in 2AA** and are just beginning to perceive diml.;y
the outlines ot the possibil.ities ot the microcomputer revol.ution; however, it, already is cl.ear that the microcomputer
has added some new advantages over those ot the minicomputer,
which is better than time sharing, which is better than batch
processing, which is better than no computing at all.. We'l.l
l.ook at some specific advantages in Section 2, but there are
a coupl.e ot general advantages ot the microcomputer which are
worth mentioning here:
1. The cost currentl.;y is about one third that ot an
equivalent minicomputer and it is coming'down
rapidl.;y. The cost ot semi-conductor memory (the
most expensive component) tor a microcomputer has
dropped by almost a tactor ot three since the
spring ot 1975. By 5AA prices should be, down, by
~ tactor ot 5-l.0; and by l.OAA, we mq be in
an era ot "zero-cost computers" where computers
wil.l. almost be throw-a~ items. Wil.l. this mean
that every student will. own a personal computer?
Who knows? It is interesting, however, to specu-

2.

1.

*This cost advantage has been diminished signiticantl.;y by the
introduction ot time-sharing minis l.llte the DEC PDP-l.l./45
and the HP 2000 series machines.
* Even so, the teaCher sometimes has probl.ems. I know one
teacher who used rolls ot paper towe1s in his teletypewriter because his administrators didn't order tel.etype
paper tor him.
nAA stands tor Anno Altair. January, l.975 is to=o and is
the time when the Altair was announced. It marks a real
mil.estone in educational computing.

------

late on the ettect ot this kind ot development.
The education community still is reeling trom the
impact ot the $1.0 pocket calculator.
Let's hope
that we are better prepared tor the $l.00 PDP-l.O
than we have been tor the $10 calculator!
The microcomputer weighs under thirty pounds (it
we assume that it incl.udes a keyboard and that the
displ.~ device is a TV set with a video tap -- at
home or in school). This means that the teacher
can carry it into cl.ass under his arm, or that he
can take it home over a weekend, or that he can l.et
his students take it home! We have come a l.ong w~
trom the time when this author pl.us a strong
student jackassed just a teletypewriter between
his ottice on the tourth floor and his cl.assroom
on the eighth tl.oor. (We never got a hernia, but
we came cl.ose many times.) ,This ,portabil.ity j,s
extremel.;y attractive: It has meant that tor the
past year, the author has been abl.e to do computing in his classroom without worrying about
whether or not the room has a tel.ephone to call
the campus computer or whether the campus computer is in one ot its blue tunks, or whether
one ot the campus c,OIIIPuter phreaques has invaded
his tiles.

It is clear to this author that the d~s ot time sharing
and ot minicomputers and batch in educational computing are
numbered and that by 10AA (and mqbe as soon as 5AA) the
microcomputer will. dominate educational computing -- except
tor a tew appl.ications l.ike data-base manipulation and largescale CAI (even here, with CCD and magnetic-bubble memories
and video discs, time sharing mq be in trouble).
In Section 2, we shall. l.ook at some special teatures ot
microcomputers which either have not existed betore or have
been prohibitivel.;y expensive until. now.
2.

Some New Goodies with Microcomputers
Because ot the unique character ot the 8080 microprocessor and the versions ot BASIC which have been written tor
it, it now is possible to increase substantial.l.y the degree ot
interaction between the computer and the user over what could
be accomplished previousl.y. In Altair 'BASIC, there is a command with the torm INP(N), which tel.ls the computer to read
the present val.ue ot the signal. at Channel. N (there are 256
possible input channel.s). There are two basic kinds ot things
that we can do with this command. The simpl.er ot the two is
the moditication ot program operation bw entry ot a character
trom the k~board (which is channell; Le., N=l). In this
mode, we can use statements ot the torm
IF INP(1)=80 THEN INPUT "P=";P
This statement* temporarily hal.ts execution ot the program
when the user hits the P key during program execution and requests that the user enter some new value ot the parameter P.
AS soon as the new P is entered, and the user hits Carriage
Return, the computer continues execution trom the point where
it was halted, but with the new value ot P. This teature is
useful, tor exsmpl.e, in the solution ot ditterential. equations
where a parameter changes suddenly. One such case is the simulation ot respiratory mechanics with respiratory resistance
changed dramaticall.;y during an asthma attack.
Another kind ot appl.ication invo;Lves the use of a
Crollll!lllCO ~7A A-D Converter* plus the INP command. It we
connect the output vol.tage ot a potentiometer to Channel. 31.
and insert a statement ot the torm
X=INP(3l)
into the program, we can change the value ot X used by the
program continuousl.;y by varying the potentiometer. This capabil.ity permits us to treat the digital. computer as it it is
an analog computer.
It we take advantage also ot the D-A or digital-toanalog converter capabil.ity ot the ~7A and the OUT command
in BASIC, we have the capability ot displ~ing the computer
results in analog torm as well.
The combination ot the ~7A and INP and OUT commands
opens up a new dimension in the use ot the digital computer

-----,---*The number 80 is the ASCII equival.ent of the l.etter P.
*Such a converter takes analog (or continuous) signals as input' and converts them into digital torm so that the computer
mq handle them.

--,-_.,,'-.-_._--

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

which ~be ex~lif1ed by an interesting modification of
the ubiquitous Lunar Lander simulation. In most impiementations of this pro$l'8m, the computer asks how much fuel the
user wants to burn during the following second. The computer
prints out the velocity of the lander, its altitude, and the
relilaining fuel at the end of the time interval, and asks the
uSer to enter his next decision about fuel.
Using the D+7A and INP and OUT commands, we can modity
the Lunar Lander so that:
a. the user enters the fuel to be burned continuously
using a potentiometer and INP command,
b. the computer, using the OUT command, displ8¥S the
remaining fuel, the velocity, and the altitude on
three voltmeters which might be labeled "Fuel
Gauge, n "Speedometer," and "Altimeter," resp.
This capability will make a whole range of· computer simulations much more realistic for the student. Essentially, the
combination of the microcomputer arid the D+7A board converts
the digital computer into a very powerful general-purpose
analog computer without the normal problems of the real analog computer. This mS¥ prove to be one of the most exciting
educational applications of the microcomputer once we fully
understand how to use this capability.
Some of this author's students have used an Altair 8800 B
microcomputer in an interesting W8¥ as a component in several
engineering design projects. These projects· are:
. a. The design of a device to convert printed text
into a set of electrical signals to stimulate the
skin of the abdomen and to replace the lost visual
sense by another sensory channel. The microcomputer
here is suppleillented by the Cromemco Cyclops digital
camera, which converts visual images into digital
signals which are processed by the computer to determine the patterns of excitation of a set of skin
electrodes.
b. The design of a typewriter which can be operated
by severel;r handicapped people who cannot use a
conventional typewriter.
c. The development of a biofeedback system to permit
victims Of cerebral palsy to control muscle tremors
which they cannot control normally.
There are other exciting capabilities which this author
hasn't yet had the time to explore, but which seem to offer
exciting possibilities for the educator. Among these are the
'J!V dazzler and other graphic devices, speech generators, ,.
speech recognizers, and music synthesizers.
What new things are In store for us in this area! it is
difficult to predict, but if the past two years is BlIY indication, the possIbIlitIes boggle the mind!

PAGE 164

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 165

CLASSROOM MICROCOMPUTING:
HOW ONE SCHOOL DISTRICT LEARNED TO LIVE WITH THE STATE OF THE ART
Peter S. Grimes, Curriculum Supervisor
San Jose Unified School District
1605 Park Ave.
San Jose CA 95126

Introducti on
Last year was a memorable year in San Jose Unified. The cost
of computers had finally dropped to a price we could afford.
After many years of dashed hopes we were able to demonstrate
that an amount of money which did not seem unreasonable
(about $25.000) would purchase an amount of student computing
power that was significant in terms of student contact and
curriculum impact. This investment. together with an older
8-user PDP 8/E time-share system, would place two computer
terminals in each of our six comprehensive high schools and
one computer terminal in each of our seven junior high schools.
The paper that follows is the story of how we achieved this
goal and coped with the attending problems. Ordinarily this
would seem to offer nothing more than a droll recitation of
how a school district purchased eleven microprocessors for
use in its mathematics classrooms. I was assured, however,
that we were at the threshold of a new era of classroom
computing and that our early experience with the new state of
the art would be useful information to other schools and
school districts contemplating the introduction of the microcomputer into their curriculum. We have run into some unexpected difficulties which you can avoid repeating. We have
given much thought to the role of the microcomputer in education. We have gotten involved with teacher inservice which
is important to the operation and use of a microcomputer as
contrasted to the operation and use of a time-share terminal.
We are very familiar with costs and can give some good advice
on what you will need in the way of hardware to get started.
We also have opinions about obsolescence. product support,
maintenance. and assembling your own system which should help
you form a reasoned opinion about microcomputers and education.
We are excited about what we have done this year! We have
formed a deep commitment to the future of classroom microcomputing. The micro-miniturization of digital electronics
continues to progress rapidly. The day of inexpensive
computing has arrived. Its effects on the curriculum will be
profound. We truly believe that we are in the midst of a
revolution of unusual significance to our culture. Since we
view what is happening as positive and beneficial. we are
convinced that the appropriate policy for our schools is to
advance in concert with what people are doing. The tide of
change is sweeping in rapidly. We should start to prepare
for the future now rather than be engulfed later.

Classroom Computing in San Jose Unified
Back in 1972 we purchased a PDP 8/E 8-user time-share system.
Starting with several terminals in only two schools. we
gradually expanded the system to its full 8-user capacity.
By 1974 we had one terminal in each high school and several
junior high schools. Programs to utilize the terminals
rapidly proliferated. With the additional help of programmable pocket and desk top calculators. our high schools
introduced programming into the mathematics elective curriculum. and junior high schools introduced computer literacy as
~ component of their required mathematics program.
Although this computer facility was very limited, it did
provide the incentive for teachers to become acquainted with
BASIC and it did lay the foundation for further development
as hardware prices dropped to within an affordable range. By
the 1975-76 school year it became apparent that with the
advent of microcomputers, a significant price breakthrough
had occurred. With encouragement from top level administration. we purchased an IMSAI 8080 machine in March 1976 and
evaluated it for a major expenditure program during 1976-77.
After some tinkering with the teletype paper tape reader, the
system ran without fault for eight months (when the paper
tape reader failed and we had to add an audio cassette I/O
for system loading).

By May 1976 we had concluded that microcomputers were reliable. that excellent BASIC interpreters were available and
that enough money could be made available to significantly
upgrade our computer resources. Price, reliability, and
software were the major ingredients of this determination.
But just as important to our considerations was the fact that
the phys i ca 1 'presence of a complete computer sys tem, as
contrasted to a time-share terminal, opened up vast new areas
of instruction which were previously out of reach (system
operation, assembly programming, and computer science, for
example). At a cost of about $3,000 for each system (we were
still committed to teletype terminals last year) we could
afford to place a computer in each junior and senior high
school.
The decision, then, was to enter into a two year program
which would provide one computer terminal in each of our
seven junior high schools, two terminals in each of our six
senior high schools, and a roving terminal for our elementary
MGM program. Moving toward this goal, we have purchased, as
of March 1977, a total of ten IMSAI 8080's and one Polymorphic 88 (the Polymorphic was a less expensive machine
which we wished to evaluate). Most of the machines were
configured with 12K of RAM and an MIO to interface a teletype
terminal and audio cassette for system program storage. We
chose the ASR 33 teletype terminal because students could
save programs on paper, a point which we thought to be
psychologically significant for the neophite programmer.
However, we did configure one IMSAI and the Polymorphic
system with a vidio interface and TV monitor, and two other
IMSAI's with Lear Siegler serial CRT terminals. This was
done partly to save money and partly to evaluate the suitability of systems which do not produce hard copy. As for
software, all of the installations are using 8K BASIC interpreters (which most math teachers consider minimal) with one
exception. We are using 4K ROM BASIC for the elementary
roving system. Although ROM is expensive, it does avoid the
hassle of loading the BASIC interpreter after each power
down--and 4K BASIC is perfectly adequate as an introductory
language for elementary students. To date, our elementary
system has operated flawlessly for six months with no operating difficulties on the part of the elementary teacher or
student.
During the 1977-78 school year we will need to acquire several
more systems to meet our two year goal. The advent of microcomputer time-sharing, however, may enable us to add more
terminals than originally planned. (Cromenco, a local manufacturer, is introducing an 8-user time-share microcomputer
for the school market.)

The Microcomputer Has Put Us in a State of Altered
Consci ousness
When we purchased our PDP 8/E system four years ago, we
weren't familiar with the rapid progress taking place in the
field of large scale integration. As a result, we were still
thinking in terms of expanding our time-sharing system in the
fall of 1975. Our goals were rather modest, consisting of
the development of computer literacy in the junior high
school mathematics program and continued expansion of our
support of computer programming in the senior high school
curriculum. When we became aware of the microcomputer, our
thinking underwent rapid and radical change.
With single terminal BASIC speaking systems available in the
price range of $2,000 to $3,000, it was quite obvious that
time-sharing systems were no longer cost effective. We
recognized that time-sharing, in situatlons where large data
bases had to be maintained, was still valid, but we also
recognized that our envisioned use of computers for instruction did not require data base access. It was clear to us
that even tutorial and drill and practice CAl, both of which
have fairly large memory requirements, could easily be accommodated by the relatively inexpensive ($1,000 - $2,000 range
with prices still going down) diskette mass storage systems.
Since our only reason for instructional time-sharing in the
first place was cost reduction, and since microcomputer
systems were each less expensive than the addition of a
single time-sharing terminal, we completely reformulated our
rationale for the use of the computer in the classroom.
After a few weeks study and interaction with local institu-

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA. 94302

tions like the Peoples' Computer Company and the Lawrence
Hall of Science we came to these conclusions:
•
•
•
•
•

•
•

Computers and computer concepts (DIP, CAl, Information Retrieval, Problem Solving, Computer Games)
should be introduced to elementary pupils.
Computer literacy should be forthrightly introduced
into the junior high school mathematics curriculum.
Computer programming and computer operation experiences should become a regular feature of the senior
high school elective mathematics curriculum.
A new course, Introduction to Computer Science,
should be added to the senior high school mathematics curriculum.
The use of computers as an instructional tool
should be extended into other curricular areas as
rapidly as resources permit (science, business,
social studies, for instance). Such uses would
include simulation, drill and practice, and problem
solving.
Broaden the definition of computer to include
programmable pocket and desk top calculators.
Modify the existing mathematics curriculum so as to include the obvious effects
that easy access to computers will have:
i.e., the phasing out of logarithms and
trig tables and the phaSing in of pocket
calculators as the source for these
functions; phasing out of the slide rule;
phasing in of iterative and recursive
mathematics techniques.

The logic which compelled us to make the above recommendations
were based on these very probable future developments:
•

•

•

•

Continuing micro-miniturization and the associated
drastic drop in costs will make computers and
related devices commonplace at work and in the home
(BASIC speaking pocket computers, home computers,
computer T.V. games).
Microprocessors will become common as control
devices in consumer products (microwave ovens,
home washer/dryers, electric typewriters, television, automobiles, clocks, watches, cameras).
Digital electronics will become a very large new
career area spanning all degrees of sophistication
and preparation in research, design, assembly, and
service.
Present industrial and commercial uses of computers
will expand dramatically (data processing, information retrieval, word processing, and process control)

The above points indicate that vast numbers of people will
need to become familiar with computer concepts of varying
degrees of sophistication. Millions of people will work in
the area of digital electronics as operators, service technicians, programmers, engineers, and research scientists.
Our entire population will become comsumers of digital
electronic devices. Indeed, as computers invade the home and
become as readily available at work as the typewriter and
calculator, various degrees of computer competency and knowledge will become survivor skills in a society characterized
by the commonplace application of digital electronics to
everyday life. It is this conviction that leads us to the
conclusion that computer literacy must become part of the
core curriculum of public education, that the effect of cheap
computing on the existing mathematics curriculum must be
accomodated, that computers and related devices should become
instructional tools, and that computer career electives be
included in the course of study at all deliberate speed. Our
students must be prepared for the new world which is going to
be so dramatically molded by digital electronics.

To Assemble or Not Assemble--That is the Question
Two years ago ALTAIR (MITS) brought forth the 100 pin bus and
the 5" x 10" "plug in" printed circuit board. Following
explicit instructions, it was envisioned that a novice could
assemble a complex CPU, 4K RAM memory, or serial I/O interface. After all, LSI had reduced enormously complex circuitry to small dual-in-line packages of N number of pins
which could be soldered into precisely matching plated through
holes in a PCB. True, there were still discrete components
such as resistors, capacitors, diodes and power regulators,
but they were easily handled. What was important was that

PAGE 166

complex logic circuitry had been reduced to functional
sealed units which were easily assembled as long as due
respect was given to the possibility of cold solder jOints,
bent pins, solder-bridges and the like. Thus~ with some
dextrous skill, even a 7th grade junior high school student
should be able to assemble a 4K or 8K RAM memory. plug it in
and have it work!
But wait! Is the real world really like that? We have had
numerous students and teachers assemble with results mostly
negative. The product more often than not does not work.
Sometimes the cause of malfunction is obvious. Indeed, look
for solder bridges and improperly inserted pins. Just as
often, however, the problem resides in a faulty DIP. I am
informed, for example, that a standard DIP such as a 2102
memory chip has a 5% failure rate in commercial kits. This
projects a probable failure rate of about P = 0.9625 for an
8K memory. The problem, then, is to have the expertise to
locate the failure. If one does not have the expertise. then
one must find it and then pay for it. Our assembling experience has been that whil e debuggi ng is commonplace and expensive (the going rate is over $20 per hour). we usually end up
paying less in total (kit plus cost of debugging) than the
cost of an assembled unit. Yet the satisfaction of a successful assembly is miSSing. and this can be a potentially devastating experience for a young student. Of course, one can pay
more for kits with hi-re1 components. but competition being
what it is. "high quality" is not presently a common characteristic.of the kit market.
Now, multiply the chance of a board assembly failure times
the number of assemblies in a microcomputer and then add the
complexities of the necessary input-output devices and one
begins to get a picture of the problems encountered in assembling and starting up one's own microcomputer system. Even
when a microcomputer is purchased from a reliable vendor.
troubles abound. One of our pre-assembled installations. for
example. had the following chronology of problems:
1.

2.
3.

4.
5.

Teletype printer errors
Memory failures during "burn-in"
Wrong microprocessor--a NEC 8080 was substituted
for an INTEL 8080. We found the BASIC interpreter
would not run with the NEC 8080.
Faulty teletype paper tape reader which characteristically dropped several bits during the course of
reading in an 8K byte tap~.
Fa 11 ure of a major microcomputer hardware manufacturer to release a bootsttap loader for its cassette
110 device (needed to circumvent the faulty teletype
paper tape reader which we were never able to
adjust).

Altogether it took us three months to get the system up and
running because of the time it took to obtain reliable technical help and the delays involved in trouble shooting and
getting spare parts. Of course we discovered some of the
problems ourselves. For example, after repeated telephone
calls to the manufacturer we were told: "Oh. you must have
one of those NEC processors! Our BASIC doesn't run with the
NEC 8080."
If you choose to' assemble for its educational value. however'.
help is available. Vendors and manufacturers are. beginning
to provide debugging and repair services of a quality and
cost which makes assembling your own system verY,worthwhile.
You will learn a great deal and your cost will still probably
be less than a fully assembled system. But there will almost
certainly be frustrations. Your system in all probability
will not work on completion of assembly. You will need help.
There wi 11 probably be 1engthy del ays and you wi 11 not be
able to determine the cost in advance for a burned-in successfully running system.
These problems can be extremely vexing and, because of the
delays, costly to morale. You will have to make your decision
whether to assemble or not to assemble based on such factors
as:
•
•
•
•

The educational va I ue to be gai ned
Availability of repair money
Your ability to trouble shoot and debug (which
very few educators can do)
Your tolerance for delay and other frustrations.

If we had this year to do over, we would do things differently.
We would not have assembled as many systems to save money; we

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579. PALO ALTO CA 94302

PAGE 167

would not depend on teletype paper tape readers for system
paper tape reader and punch.
program input; and, we would have purchased more functioning
systems complete with terminals and audio cassette input/output. Microcomputer mass storage is provided by the new diskette
storage systems. They have large file capacities (lOOK to
250K character storage) for data and program save. Assembled
diskette storage devices presently cost in the $1,000 and
Recommendations for Making Your Purchase of
$2,000 range including interfacting and software file manageMicrocomputers a Pleasant Experience
ment, but these prices are still subject to fairly substantial
reduction over the next year or two as technology and producIn purchasing your own microcomputer systems, I would recomtion gear up for the potential market.
mend the following:
The best microcomputer system, of course, would be a combination of hard copy and mass storage, but the cost of such
1. Do not rely on teletype paper tape readers (the ASR
33) to read in system programs such as a BASIC
systems would be in the $4,000 to $5,000 range at which point
interpreter. While some TTY's work, others do not.
we are back to examining the cost effectiveness of timeThey are quite satisfactory for saving short student
sharing.
generated programs, but lengthy tapes Simply multiply
the chance of failure to the point of near certainty
Before making a decision, you should compare microcomputing
and a down system.
costs to the rental for a time-share terminal. A typical
2. We have found CRT devices to be entirely satisfactory time-share .termina1 will be linked to a computer supporting
as student terminals provided the student can save
up to 32 teletypes. With SUPER BASIC and very ample file
programs on cassette tape. We have used commercial
storage, the average charge is $300 a month including all
CRT's (such as the Lear Seigler), television monitors communications costs and terminal maintenance. This monthly
with vidio boards and modified home television
rental computes to $3,600 a year, a charge which makes microsets. They all work with high reliability compared
computer systems very attractive.
to the teletype.
Adding additional fuel to the fire, an exciting announcement
3.
If youare buying an assemb1 ed system, I would
is being made this very month (April 1977). Cromemco, a
suggest you buy a complete turn-key installation
with a 90 day or longer warranty and a fixed delivery local microcomputer manufacturer, will market an 8-user timeshare microcomputer. Starting at about $3,000 for a basic
date. Don't do as we did by purchasing terminal
single-user system, additional user terminals (hard-wired
and microcomputer separately. That simple error
teletypes or teletype simulating CRT terminals) can be added
caused us months of delay in establishing our
for about $1,200 each, including all interfacing. For an 8systems because one vendor was not responsible. It
user system, fully assembled and installed, the cost per
is a simple fact that technicians representing
terminal would be aboubt $1,400. That's not bad for a teletype
different vendors have a very difficult time getting
system!
together. Even when computer and terminal are
purchased from one vendor, but separately, you may
What about maintenance costs? At this time our experience is
encounter extra costs and delays if the purchase
rather limited. We set aside $3,000 for this year's support
does not include installation and successful interfacing.
of our 11 microcomputers and terminals (including teletype
maintenance). It appears that this figure is within the ball
park. I think that $300 per year per single user system will
be about right for next year's maintenance budget. You
Costs and Configurations
should add about $100 to this amount for hard copy systems
using teletypes or other printers because they require periodic
attention for cleaning and lubrication.
A minimal performance secondary classroom microcomputer will
need to consist of the following components:
What about future costs? I hear talk of major manufacturers
Component
coming out with $500 "sealed units" which would drive T.V.
Approximate Cost
monitor terminals (or perhaps use home T.V. sets with antenna
Kit
Assembled
input). Software would be provided by plug-in ROM's. This
Central processor
figure seems not unreasonable to me. I would expect a good
$ 200
$ 300
12K of memory
BASIC with all functions intact, but no user program storage.
450
650
I/O interface (for cassette
Such systems would be ideal for general problem solving,
200
300
programming instruction and computer gaming and would make
recorder)
Cabinet and power supply
microcomputing in the classroom a forgone conclusion.
200
300
Vidio board
200
300
T.V. Monitor
150
150
Audio cassette recorder
100
100
Keyboard
Lack of Standardization
100
150
Miscellaneous cables and hardware 50
50
Operating system
They say every rose has its thorn. This is certainly true of
100
100
8K BASIC
microcomputing. Although microcomputing will have extraoro
o
dinarily desirable effects upon the public schOOl curriculum,
$1750
those very desirable effects may be significantly delayed by
$2400
the lack of standardization.
The opera.ting system is a software substitute for a front
panel. It enables the operator to manipulate the computer on
By being first on the market with a microcomputer, Altair in
the T. V. monitor instead of fl ipping switches and observing
effect established a defacto standard with their 100 pin bus.
All well and good. Different manufacturers could market
display lights on a front panel. A hardware front panel,
instead of an operating system, will cost from $100 to $200
devices which were hardware compatible with each other and
extra in kit, or from $200 to $300 extra assembled. The
reap the obvious benefits of an expanded market created by
BASIC interpreter and an assembler are either included free
such standardization. But things have not turned out to be
with purchase or 1isted separately at a low price, generally
that simple. We find that Altair BASIC will not operate with
well under $100.
an IMSAI I/O unless hardware alterations are made. Another
example of incompatibility is finding a BASIC interpreter
If the preceding is minimal, what would be considered better?
that will work with a Polymorphic vidio board in anIMSAI
machine. IMSAI basic won't; Polymorphic BASIC won't;. but
Two items: hard copy and mass storage. If a teletype were
Altair BASIC will (with modifications). What we are finding
substituted for the T.V. monitor and vidio interface, the
is that contrary to claims of the manufacturers true hardware
additional assembled cost would be about $700 (reconditioned
compatibility does not exist. While this may not be a large
teletype cost of $900 less $450 for the vidio interface and
problem to computer hobbyists who have the technical skills
T. V. monitor pl us $250 for a front panel (a hard copy system
to make hardware and software modifications·to accommodate
must have a front panel for computer control)). There are
the incompatibilities, there are large potential markets for·
much better hard copy printers on the market than teletypes-general computing in which lack of standardization will be
they print faster (30 characters per second vs. 10 characters
very harmful. The public school market is one such example.
per second) and are somewhat less expensive to maintain, but
Lack of standardization has certainly caused us problems by
they are more expensive at around $2,000 and do not have a

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

creating unexpected delays, added expenses, and reduced
selection of software options.
The problem, of course, lies in the added expense of custom
fitting a desired component into a system of different manufacture. Perhaps of even more significance is finding someone
to do the work for you. A perfect illustration of this
situation is the addition of audio cassette I/O. Seemingly
simple, it turns out to be quite complex. Not just any
cassette recorder can be used. The cassette interface board
must be "tuned" to match the recorder. Tapes dumped from one
system cannot be reliably loaded into another, thus severely
inhibiting program interchange. Software to load and dump is
'not readily available (we have had to pay for the development
of special software for our IMSAI's). Of even more importance
is the fact that very few BASIC interpreters allow user
developed BASIC programs to be saved. The save routines are
generally completely separate from the BASIC interpreter, are
awkward to use, and usually require the user to exactly
specify that portion of memory he wishes to save. Microcomputer users desperately need cassette file commands to become
a standard feature of BASIC interpreters. But this cannot
happen, of course, until cassette 1/0 technology becomes
standardized.
Perhaps of even more importance to the standardization dilemma
is the proliferation of BASIC interpreters. BASIC has become
the language of choice for large numbers of general purpose
computer users who program in the interactive mode. It is
certainly the lingua franca of public school classroom computing. And its popularity contin~es to increase as many of
its disadvantages, as compared to other languages, disappear
with steady improvement. BASIC has now evolved into SUPER
BASIC with added commands and functions, better format control,
more string manipulation, file capabilities, etc. But its
continued development has been accompanied by loss of uniformity.
Some systems use "" " for 1i ne "crunchi ng", others use ":".
One system will use "?" as a symbol for print, another the
"!". The conventions for the randomize function tend to be
quite different from one system to another. The list of
differences continues to grow as each microcomputer manufacturer releases his own version of BASIC. While this
competitive development encourages the continued improvement
of BASIC, it inhibits the exchange of programs in BASIC.
This is a significant problem in education. The Huntington
Project simulations, for example, were written in DEC BASIC.
But DEC BASIC is not compatible with any of the microcomputer BASIC's. Thus. a very signif~cant potential educational use of microcomputers, SIMULATION, is, at least for
the time being. stopped dead in its tracksl It is-almost
impossible for the end user to make the conversion. The
supplier, lacking the resources to translate into a dozen
or more versions of BASIC, does nothing!
Please bear in mind that I am not talking about "special
features" such as memory allocation, line length, and peek
and poke. Such special features can be added to BASIC interpreters while still maintaining downward Compatibility. The
problem lies in the lack of standardization in basic BASIC.
Aside from the fact that various user groups have their own
compelling reasons for more standardization, the microcomputer
industry itself must recognize that its failure to establish
a basic level of standardization will markedly inhibit information exchange which will in turn just as markedly inhibit
market expansion. If such a standard can be established, it
is a forgone conclusion that users will cooperate. The
Huntington Project, for example, will then be able to translate
their much desired simulations into a version of BASIC which
all users can use.

product Support
People have expressed the fear that some microcomputer manufacturers will not be around in a few years to support their
products. Some will have failed, some will be purchased by
larger firms, others will have dropped out of the market in
order to concentrate on other products. All of these things
will surely happen. Many of today's manufacturers will not
be here in five years to back their products. But this
really is not much of a problem because these manufacturers
are not providing very much support for their products now.
The low cost of microcomputer products is partly due to the

PAGE 168

deliberate absence of extensive product support. How can
such a state of affairs exist. you may ask. Quite simply,
the number of people engaged in digital electronics has now
reached the point where there is a sufficient surplus to
service the new markets created by micro electronics.
Hardware and software serviceS are now being provided b~
local computer stores. While not as commOn as radio and T.V.
repair shops. they are growing in proportion to the business
available. In addition, a large number of engineers and
technicians are moonlighting for fun and profit. So •..•• if
anyone advises you to postpone your involvement with microcomputing due to lack of product support, be assured that
they are setting up a straw man. There is a great deal of
product support, and it is growing in pace with the size of
the market. As with many consumer products, the support
services are provided by the vendor and small entrepeneur.
Small computers are rapidly becoming consumer items and will
be serviced accordingly.

Wh~t

About Obsolescence?

I don't think there is any question that a microcomputer
purchased today will be technically obsolete in five years.
But that does not mean that you cannot continue to use it for
years after. Our PDP 8/E time-share system is now technically
obsolete. But it is still less expensive to maintain than to
replace it. Even though it has ferrite core memory and lacks
the LSI devices that make microcomputers so relatively inexpens i ve, a11 of thi sis transpa rent to the user. Programming
and other computer science concepts have remained essentially
the same for years. I would estimate that it will be five or
more years before maintenance costs for the 8/E will exceed
the replacement cost. And application deficiencies should
not be noticeable for an even longer period of time. The
same should be true for today's microcomputers. Such long
life is not true for many business and industrial applications
where other factors such as throughput have extreme importance.
The low sophistication requirements of pre-college educational
use, however, argues for relative long life.

Teacher Inservice
To date, educational computing has mostly been a time-sharing
affair. The central computer was operated by a specialist.
The teacher or student did nothing more than turn on the
terminal. Microcomputing is somewhat different. There is a
computer to operate. How is the BASIC interpreter loaded?
What is a bootstrap? How are computer memories organized?
How do computers compute? What does the front panel do? Why
do we have to learn hexadecimal? These questions must be
answered and the skills learned by the teacher so that he or
she can be responsible for the operation of the microcomputer.
Because of pre-service experience and because we have had a
small time-sharing system for four years, mathematics teachers
in San Jose Unified were well acquainted with BASIC and
computer programming in general. They also had some expertise
with binary and octal arithmetic because these topics were
introduced into the mathematics curriculum as part of the
"modern math" improvements of the 60's. But operating a
computer? Our teachers were completely unprepared! What
teacher ever expected to have a computer system for classroom
instruction within his or her lifetime?
To rectify this situation we contracted with Don Inman of the
People's Computer Company in Menlo Park, California. For
nine two-hour sessions every Monday after school last fall,
over thirty secondary mathematics and science teachers voluntarily gathered together to learn about microcomputers from
Don. Believing hands on learning to be the only way to go,
each of our secondary schools (13) purchased a small single,
board microcomputer of local manufacturer called the Data
Handler. Made by Western Data Systems of Santa Clara, California, it cost $160, used a 6502 microprocessor, had a hex
keyboard for input and control and employed LED's to display
output and the data and addres,s busses. These microcomputers
were purchased as kits, assembled by the teachers and then
used to learn about computer architecture and operation,
machine level programming, input/output routines, etc. Most
of these same teachers are continuing with another series of
nine meetings this spring. The Data Handler microcomputers,

FIRST COMPUTER FAIRE PROCEEDINGS

by the way, are being used by students when not being used by
teachers.
Next year many of our teachers hope to participate in a
National Science Foundation funded Microcomputer Teacher Inservice Institute to be conducted by the Lawrence Hall of
Science (if their institute proposal is approved). This
institute, to the best of our knowledge, will be the first
ever offered to secondary teachers. Just think, when people
ask where it all started, we can say that it started right here
in the Bay Area. That's a good feeling and a good thought upon
which to end.

BOX 1579, PALO ALTO CA 94302

PAGE 169

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 170

THE CONSTRUCTION, OPERATION, AND MAINTENANCE OF A HIGH SCHOOL SYSTEM
dream system." Our cheap system cont:ain~d ~j1e
ALTAIR 8800 with: 8K RAM memory, one RS232
interface, a fan, and 8K BASIC. The. I/O
device was to be the SWTPC CT-1024 wh.i,ch,we
Melvin L, Zeddies
1854 Pacific 8each Drive
would also construct. It was to include an
San Diego CA 92109
RS 232 serial interface, and a manual cursor
control. The actual T.V. for the display ,was
donated by the parents of one of the students.
ABSTRACT
Our dream system contained: The,ALTAIR
8800, 20K RAM, 3 RS232 serial interfaces, fan,
Developing ,a computer system from kits was
vectored intercept, and a cassette tape interface,
a very stimulating educational experience for
two CT~1024's, each with a manual cursor control,
high school and junior high school studeJ?ts.
and a screen read. Also, we hoped to purchase
There were, however, problem area~: fund~ng,
an "old" (reconditioned) typagraph, model 3, so
bureaucratic red tape, and a mult~tude of
that we ~Jould have the capacity to produce hard,.
skeptics. Overcoming these problems lead to
copy when needed.
'
the formation of a self developing group of
We felt either of these two systems would
students who were anxious and very able to
provide a beginning and that from ,them we could
solve problems in the administration of schools,
build additional pieces of equipment as both money
thp i.nstrllctional programs, career development,
and items became available. We would also attempt
while they attempted to create a new computer
to build a system, whereby we could provide comscience instructional program.
Juter services to others on the high school campus;
Personal computer systems available in
for
example the physical education ,an9 science
kit form provide a foundation upon which to
departments. Also in our minds was the possibility
challenge the educational programs in o,ur
of freeing ourselves from the timesharing system
schools, and human, as well as technological
we were presently uSing, and paying for at a rate
change.
of about $2200 per year. We realized that we would
probably have to do some software development,
especially if we wanted to timeshare "our" system.
However, we were prepared to launch into that aspect
once we had our system in operation,.
The recent development, and marketing of
Our next step was to locate funds an,d obtain
personalized computer system kits is destined to
the necessary authorizations to be able to use them
force changes upon educational institutions that
for the purchase of our system. No one in the ,school
have not' been remotely anticipated at this time.
system seemed to know what we were talking about, at
Students will arrive at the door of the school
t:1is stage. No one knew who would have to authorize
with an ever increasing store of experience and
such, a purchase because all EDP equipment was purknowledge of computers. This will create a
chased by the EDP Department for their use only.
demand for new courses, updating of existing
Finally, after some time and several discussions we
courses in a radical manner, and will require
COnvinced the principal to authorize the purchase
teachers and administrators to become familiar
with instructional funds, thereby avoiding the EDP
with the language and thought patterns of the.
Department and prodUCing a new procedure. Now the
computer age student. We are not only referr~ng
problem of identifying a particular sum of money for
to high schools, and college levels, we are
such a ourchase was approached.
including junior high schools, and elementary
In California there are two types of cateschools, even the kindergarten child will be
gories for the purchase of school items, capital
coming to school with a computer background.
outlay and instructional supplies. Generally speakThose of us who can remember back several
ing capital outlay is used for permanent, non- .
years recall the term "generation gap" which was
consumable items, while instructional supply mon~es
used rather generously to cover many aspects of
are used for the purchase of items that are conhuman behavior. l'le are now at a point in history
sumable and/or changed in the instructional program.
where we need to consider a "computer gap." Our
We convinced the principal that since our system
generation (those of us over 30) does not have
would come in kit form it should be classed as inan "easy feeling" about "the computer", the
structional supply, as are other kits, such as radi~,
younger generation does. Their entire life span
calculators, etc., that the industrial arts departhas been coincidental with that of the computer.
ment purchased of a regular basis. He agreed to the
The younger generation accepts the computer in
instructional supply argument and we then proceeded
the same "taken for granted manner" as we did the
to obtain "spending rights" to as much instr1lcti~nal
car and the radio. They see implications and
supply funds as possible. We traded with other
applications that we will not see, they will plunge
schools who had over spent in a category where we
ahead into areas that we would never even consider
had underspent, etc. I'le also traded, teacher
venturing into. We do not have a "background"
assistant time for instructional funds"and exthat allows us to include the computer in explora:,;lored every possible source of funding short of a
tions in a natural and unlabored manner, as the
Federal Fundina proposal. The sources of funds we
younger generation does.
considered included; curriculum consultants, innoWhat must we d07 I would like to describe
vatj:on grants, P.T.A., industrial sources! fund
what 'we have attempted to do at one high school,
raisina activities of all types, and trad~ng away
in one school district, with one teacher and
some of our next years funding.
apprOXimately six stUdents.
To our surprise, we found within a very
In late February 1975 several students and
short time and a few key trading deals, we ¢ould
their teacher met to discuss a recent article that
purc,hase our dream system plus a floppy disc.
had appeared in a "do it yourself" magazine,'it was
Our troubles ~lere not over thpugh. Ille had purchased
an announcement of the MITS ALTAIR 8800 computer
the ,typograph and it had just bee l1 delivered when
kit. We had all read the article and had agreed
a directive was issued by the EDP Department
to 8et together to explore the possibilities of
stating that all purchases of EDP equipment must
obtaining such a kit. It didn't take long for us
be cleared through their office. vie took them
to agree, it seems we had already made up our minds. literaly, and since our system was not equipment
All that remained for us to do was to settle upon
there was no need to have the cleared.
the characteristics of our system and look for the
Our system was ordered in Ma.rch 1975, and
money to pay for our "dream." A week later we
it c,ontained: the ALTAIR 8800, with three RS232
again met and agreed that we needed to make a
interfaces, 20K RAM, a floppy diSC, disc controller,
telephone call or two for some particulars. We
Extended BASIC, a cassette interfa~, two SWTPC
'
made calls,'one to MITS and one to SWTPC; both
CT-1024's each with screen read and manual cursor
were more informative that we antici'pated.
control.
,
We drew up listings of two systems; the
The first kits to arrive were those for the
first was the Cheapest, and'the second was "our

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 171

SI'ITPC CT-1024' s. These kits went together without
own maintenance. The only problem we could
difficulty and worked the first time they were
envision was developing an ongoing supply of
fired up. \'Ie now began to use these (CT-1024)
technician/students to insure the well being of the
for I/Os on the timesharing system, and allowed
system. This problem was solved by developing a
the students to check them out over night and
small group of students into certificated maintenance/
also over the weekends. The only complaint came
operators. The training cycle was to include
from parents who were concerned because the student
several students from each grade, with the sophopmores
who had checked the terminal out would arrive home
working with experienced juniors and seniors. These
with a group of students who did not leave until
students upon completion of a specific training
the early morning hours. They would keep the phone
program were to be licensen ~s svste~ maintenance/
line in use from the time they arrived until the
operators. Only licensed personnel were allowed to
parents forced a system shutdown, sometimes as
perform diagnostic work on the system, pull boards,
as late as 1:00-2:00 A.M. Our SWTPC terminals,
replace components, and checkout the system.
in spite of being carried around and banged about,
The original authorization for this course
continued to function quite well. After two years
was given by the principal of the school, however,
of operation, we have only had to replace a few
the central office personnel were reluctant to
of the keyboard switches, everything else remains
authorize it because it did not fit into mathematics,
in operation without modification of any kind.
science, industrial arts, and a computer science area
Several months later our ALTAIR 8800 arrived, (and still does not exist at this time). We even
and with great fanfare and the taking of pictures,
tried to have our course considered as a career
it was unpacked and looked at with great anticipation~ducation experiment, but that was also turned
vie even put the front panel together and propped
down. We were finally considered to be interit in the case so we could see what "it" really
disciplinary in nature and therefore, the junior
looked like. Many students stopped by to see
administrator was designated to oversee the
what we were doing and to look at our front panel.
course.
The construction of the ALTAIR went along
The official course title, "Computer
quite smoothly. The only problems encountered
Technology 1-2", was approved finally. The
during the construction involved trying to locate
course included:
the latest field changes and incorporate them into
1. The development of computers in the
our system. Then there were several transistors
historical sense, including the
soldered in wrong, a fe~l ICs were upside down, and
impact upon humankind, with c:onjectures
a few ',lisread capacitors. Problems were also
for the future.
caused by solder bridges and flakes of solder, but
2. The foundations of computer mathematics
these were found by using a strong light and small
including basic Boolean Algebra and
wire brush. Finally, after only three weeks, it
Logic, stressing TTL.
was time to apply power to our system. IT didn't
3. The electrical circuits that are used
quite work they way it was supposed to.
in hardware including, AND, OR, NAND,
The most difficult task was getting all the
NOR, FF, also ICs with LSI, and MSI.
bugs out. It took us about a month of work, checkir
4. Components of a computer system at the
and rechecking everything in each part of the systen
block level including basic components
to get to function properly. This troubleshooting
such as CPU, memory, etc, also the diSC,
period pointed up tr.e necessity of keeping an
cassette interface, and other peripherals.
operation log, detailed notes on troubles, a
5. The component level of computer systems
skepticism in believing schematics, and double
that includes individual functioning of
checlcing everything, taking nothing and no one for
components in all sections of the computer
granted. Some of the problems we encountered were:
system. This level is one below the
several parts were missing, the schematics were
block level of each board or assembly.
wrong for the 4K memory boards, the memory ICs
6. The use of test equipment includes the
arrived three weeks after the baords and did not
YOM, Dm~, Oscilloscope, IC tester and
work at the proper speeds, the factory field change!
handtools. The interpretation of data
were not sent to us, and finally, the suggested
is also a portion of this section.
(bv the factory) change in the deposit circuitry
7. Troubleshooting the system includes
didn't work.
the block level, co~ponent level,
The task of getting our system to function
component replacement, and system
properly presented a problem that required the .
checkout.
development of a systematic approach, and emphas~zec
8. Comprehensive examinations to cover:
the need to be aware of one's assumptions. One
Theory of computers, computer operation
of the most common assumptions we made which
and checkout, and troubleshooting.
caused us difficulty was that there was only one
Those students satisfactorily completing this course
deficient part causing the problem. One never
are to be granted a license to operate and maintain
knovis if this is true until the system is again
the computer system at Morse High Schonl.
working well, and the possibility of multiple
The materials used in the preceeding course
malfunctions cannot be overlooked.
include: Kemeny, J. Man and the Computer, Streater,
Troubleshooting also demands the use of
Integrated Circuit Logic Elements, and the system
test equioment. Our system also included a
manuals for MITS ALTAIR 8800.
digital m~ltimeter, an IC tester, and oscilloscope,
At the present time the computer has been
as ~lell as the needed handtools. The use of these almost totally neglected as a useable tool in the
instruments and the interpretation of their ininstruction program of most schools, only isolated
formation again dema'nded some knowledge of the
exar.lples exist of the use of computers in the
theory of the computer system (note also the
instruction program. The advent of personalized
assumption that they are functioning properly).
computer systems will force the schools to include
The students at this point began to obtain a
it into all areas of the curriculum. Our system
thorough understanding of TTL and how the computer provided us with some very important insight into
was supposed ,to function.
the use of computer systems, these inSights are:
h'hen our system finally worked as we thought
1. Young children can understand the internal
it should it was a great feeling for all of us.
workings of computer systems.
We had accomplished a truly challenging task; had
2. Students at all levels can develop very
done what many thought we could not do. Those
sophisticated sofblare in a relatively
people who had supported us, skeptically, were very
short period of time.
impressed. \~e were all filled with a real sense of
3. Students are very creative in the use of
accomplishment and pride in our achievement.
the computer.
As soon as our system was in operation the
4. Students can be very helpful in solving
EDP Division issued another directive, they would
some of the problems at a particular school,
not authorize any parts of our computer system to
especially when USing a computer.
be placed upon the normal district maintenance
5. Adults(teachers and EDP personnel) can
contract. This was great, because we had the
become very threatened when students start
knowledge, experience, and equipment to perform our
using EDP equipment in creative ways.

FIRST COMPUTER FAIRE PROCEEDINGS

PAGE 172

BOX 1579, PALO ALTO CA 94302

all areas.

6. Develop a counseling service that would
handle the mundane record keeping for
the counselors.
7. EDP attendance, dumping information onto
cassettes for easy storage. Maintaining
an entire year of attendance records,
which would be of immense benefit to
the administration of the school.
S. Programming students into classes, also
stored upon cassettes for further,

that can be replaced by a computer deserves
such a fate.

8. Students gain insights and understandings
in areas by beco~ing involved in computer
applications in those areas.

9. What ooppens (almost always good) many times
when students and computers interact can

not be anticipated.

ir.1plementation.
Toe proposed courses are:

fequired

some software development however.

5. Development of heuristic applications in

7. Any teacher, administrator, or EDP person

These ~oints of awareness lead us to develop the
following courses of study to be used with our
computer system.
However, at this time because
some teachers and administrators can not understand
the need nor the content of the proposed courses,
an official authorization has not been given for their

Tliis

to the science department.

6. The computer may solve some problems, but
its use generates many other problems that
need to be resolved.

reference.

No doubt more applications exist and have
already been explored, but the fact that students
were using their energy, and talents in a positive
way to solve some of the school's many problems
was very important.

COMPUTER APPLICATIONS IN NATURAL SCIENCE. This course
woulrl provide the student with the opportunity of
exploring computer applications in the areas of:

mathematics, including: numerical analysis,
nu~ber theory, ordinary and partial differential
equations, modern algebra, matricies, geometry, etc.

The schools are in for a tremendous amount of
change, forced upon them by the availability of cheap
computer systems. The students who attend schools
now and in the future will have an ever Increasing
familiarity with computer systems. At this time
it is possible to develop a functional computer
system from kits with high school and junior school
students constructing, operating, and maintaining

CONPUTER APPLICATIONS IN THE BEHAVIORAL SCIENCES.
This course would ~rovide the student with the

such a system.
The use of

opportunity of exploring computer applications in

the curriculum of the schools will require some
additional courses being made available to students.
Teachers will need to realize they may never be
able to understand the products of IT\any students
in the area of computer science.

biology, phYSiCS, chemistry, and any combination

of these areas.
COHPUTER APFLICATIONS IN !·:ATHENATICS. This course
would provide the student with the opportunity of
exploring computer applications in the area of

the areas of pSYChology, political sCience, history,
economics, sociology, anthropology, as well as
combinations of these fields.

CONFUTER APPLICATIONS IN BUSINESS. This course would
provide the student with the opportunity of exploring
computer applications in t:le areas of: marketino.
finance, management, advertizing, or any combination

of these areas.
HEURISTIC APPLICATIONS OF COr·IPUTER SCIENCE. This
course would allow the student to explore applications
in such areas as: music, art, dance, literature,
counseling, etc.

CONPUTER TECHNOLOGY.

This sequence of four semester
courses would provide the sutdent with the opportunity
of learning the tr.eory, operation, and repair of
?ersonal computer systens.
Also provided is the
opportunity to design a small computer system,
experimenting with circuits common to the industry.

personal computer

s~'st~ms

in

Personilized computer systems are here, NO\oJl

The battle behleen the big vs the little system is
over.

Guess who had won?

BACKGROUND/BIOGRAPHY
Nel vin L. Zeddies was first .ini tiated into
the computer faternity in 1957 through the courtesy
of the U.S.Army and Fort Bliss, Texas. He has
continually "played" with computers since that
time, constructing a tlcrude" computer with junior

Finally, the opportunity of constructing one's

high school students in 1966. In addition to
teaching mathematics in the San Diego schools,
he has been involved in many NSF Institutes in

own system is also provided.

mathematics and computer science as a faculty

INDEPENDENT STUDY IN CONPUTER

LANGUAGES.

This

course l;!ould al101tl tr.e student who desires to

study a computer language other than BASIC, FORTRAN,
or COBOL, the opportunity of developing a fluency
in a language such as, ALGOL, PL/1, APL, RPG, etc.
INDEPENDENT EXPLORATIONS IN COlcPUTER SCIENCE.
This course would allow the student who desires to
acquire a deep understanding

of computers and

computer technology, to work at the compiler/
translator/interpreter level of programming.
These courses were to be in addition to

the regular offerings: Introduction to Computer
Science, a course in BASIC programming; FORTRAN IV

a course in programming in FORTRAN.

These two

courses were the only ones available to students
within the current curriculur.1.
The, preceeding courses were to be phased into
existance over a period of several years, and were to
be offered during one time block with different

students stUdying different courses within the same
class. Credit would be granted upon completion
of their course work and demonstrated kno>lledge
of the contents of the course. This de~onstrated
kno\>lledge would usually take the form of a
demonstration for the instructor on the equipment or

the presentation of appropriate software

Currently on leave from the San Diego

scnools, he is serving as professor of mathematics
and computer science at United States International
University, where he has also served as Assistant

Dean.

He is currently developing the area of

pe,rsonalized computer applications at U.S.I.U.
He is rr.arried, and he and his Wife, Marcia, have

two children of the computer era, Marlene (9), and
V,ark (7). He has an A.B. from San Diego State
College, N.A. and Ph.D. from United States Internationa
International University, also a post doctoral
year of study at U S.I.U.'s Institute for
Educational ~;anagement. He is presently interested
in humanistic r"athematics, reading instruction
for small boys using computers, and technological
extensions of humankind.

BILBIOGRAPHY
Kemeny, John.

Nan and the COJ"puter.

Ilew York:

Charles Scribner's Sons, 1972.
Streater, J. vi. Integrated Circuit Looic Elements.
New York: Howard 'II. SC\ms, Inc., 1974.

items.

Where can your system be used in the school
program to enhance the learning of students? \ve have
found there are a variety of applications, ~any of

which demand some form of mass storage and a large
core.
(Our. system had 20K of core.) Our thinking
was along the following lines:
1. The phySical education department liked
to have their statistics kept and we would
do it for theM.
.
2. Some diagnostic information relating to
the behavior of our teams, and the
opposing teams could be analyzed by our
syste~,
Our students had developed
software to be used in basketball, and
baseball which had proven to be helpful.
3. Simulations for the natural and social
science classes could be developed and
used with our system.
~.

mer.ber.

A timesharing service could be offered

Ze:ddies, 1'-1. L., et. al.

Indi vidual i-zed Tnstruction

for Gifted Students using Computer TimeShare Systems. San Diego: San Diego City
Schools, 1974.

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 173

EDUCATING PEOPLE ABOUT PERSONAL COMPUTING: A MAJOR PROGRAM AT THE LAWRENCE
HALL OF SCIENCE
Bob Kahn & lee BerlTlln

.....rence Han of Science
University of California
Berkeley CA 94720

*Agreatly expanded and more general version of this
paper entitled: PubUa Aaaess to Personat Computing:
A NBIJ1 Rote for Scnenae Museums, is publ ished in
COMPUTER Magazine of the Insitiute for Electrical and
Electronic Engineers Computer Society, April, 1977.
Traditionally, one thinks of the museum as a
repository for stuffed animals, art, and artifacts from
the present and past. The science museum Is often a
maze of exhibits (frequently automated by push buttons
and floor mat switches) illuminating various aspects of
science, history, or technology. Likewise, a popular
mass media image of the computer depicts a row of
magnetic tape drives lining the walls of an air-conditioned,
false-floored, glassed-in room where specially trained
computer operators and programmers huddle around a central
console of . bllnking lights.
From an educational standpoint, both the museum and
early generations of computers, whose Image is depicted
above, have shared a common characteristic: they have
tended to be static and passive. They have offered the
public little opportunity for participation or access to
technology. A museum visit often' involves a lot of walking,
looklng,and listening, but' I ittle touching or participating.
And, for those who do not already use computers In business,
school, or the university, public access has generally been
vicarious, or limited to computer output only.
However, computer technology has advanced considerably
beyond what the public has experienced, and some sclencetechnology centers are re-deflnlng their traditional role
as a community showcase and repository~ This paper discusses
ways in which the Lawrence Hall of Science is making
modern computers accessible and understandable to the general
public.
Slowly, people are becoming aware of the potential power
computers have in areas beyond business and data analysis.
With good software, the computer can become a personalized
tool for extending the mind: a personal laboratory for
simulated experimentation, an artistic medium, an information
retrieval system, a gaming opponent and personal entertainment center, a teacher, a sophisticated editing facti ity,
and of course, a programmable calculator--all in the same box.
This is the essence and the power of· personal computing.
When people (particularly children) have been exposed to
personal computing, they search out and demand access to It.
This demand is evident in the proliferation of homebrew
computer clubs, microcomputer kits, hobby shops, and computer
hobbyist newsletters. But awareness of personal computing
power must spread far beyond the hobbyist movement.
While one no longer needs a crystal ball to foresee a
computer in every home, it will still be a number of years
before everyone's television becomes a terminal. In those
intervening years, it is imperative that adults and children,
not Just professionals and hobbyists, achieve a reasonable
level of computer awareness or oomputer Ziteracy. Computer
literacy has been well defined In a recent report by
Roy Amara'et al. for the Institute for the Future as
the understanding of bqsia aomputer functions intemrs of
",hat aomputers aan and aannot do. with partiautar attention
to their potentiat. aSI4etl. as their timits. in meeting
human needs. Whi Ie many recent books and films have
attempted to speak to this need, computer literacy can be
more quickly and effectIvely achieved by giving the general
public direct, hands-on access to computers in a nonthreatening, rel"axed learning envl ronment.
One type of Institution that Is Ideally suited to
provIde public access to computing is the science-technology
center--not the traditional science museum described
earlier, but an emerging new type of activity-oriented
community learning resource devoted to furthering the
public's appreciation for the methods, tools, and principles
of science and scientific research. Unlike the traditional
museum, the hallmark of science-technology centers Is
disaovel'lf learning or teaming saienae by doing saienoe.
Instead of rows of glass cases protected by signs and
security guards, modern science centers encourage visitors
to touch objects, manipulate controls, participate in
workshops and classes In an Informal, non-school mu,eum

environment. Clearly, interact.-ve computers and computer
terminals would be right at home in such places. Indeed;
most science-technology centers recently built or still
in the planning stages have made proviSions for computerrelated exhibits and activities.
Of the 167,000 children and adults who visited the
Lawrence Hall of Science (LHS) in 1975-76, more than 27,000
(or 16%) of them came specifically for the'purpose of
gaining access to computers through various workshops,
classes, visiting school programs and regularly scheduled
public usage hours. In addition, LHS Is engaged In providing
an educational time-sharing service to local schools. The
LHS (NOVA aOO-based) time-sharing computer system presently
reaches more than 40 schools and educational Institutions
in Northern California including a Montessori school,
elementary, Junior and senior high schools (both public
and private), the California School for the Deaf, Junior
colleges, four-year colleges, and some departments of U.C.
Berkeley and U.C.L.A.
The Lawrence Hall has put considerable thought and
effort into building a computer education facility that would;
simultaneously meet the needs of public visitors and vtst~lng
school groups and extend computing out to local schools and
the San Francisco Bay Area community, Including a new program providing home access to computing at low cost. On a
smaller scale, LHS Is following In the footsteps of Dartmouth
College, adopting the philosophy of Dartmouth's president,
John Kemeny In his book, Man and the Computer. Kemeny
describes Dartmouth's computing facility as an Intellectual
resource for the community, like a library, where computing
power is freely accessible to the community.
On such a philosophical basis, over the past six years,
LHS has defined three major objectives for Its computer
education program:
1) To educate children and adults about the milieu of
computers in an enjoyable, Intriguing, non-threatening learning environment;
2)

To offer the public hands-on computing at low cost;

3)

To develop an exportable educational program of
computer activities that will serve as a resource for
schools and other learning centers and public
educational Institutions.

Lawrence Hall has attempted to meet these objectives through
a variety of activities and programs. Several terminals
are openly accessible to visitors In Lawrence Hall's exhibit
areas. These terminals offer a limited selection of games
and simulations. Two of these terminals form an Integral
part of a new exhibit on energy uses and alternative sources.
LHS has an extensive program for visiting school children, and the Hall's two computer terminal rooms (each
containing ten teletypes) assure that each individual ,student
receives a maximum amount of hands-on experience during hls/
her hour in the computer laboratory. The two computer terminal rooms are also used for after-school and In-service
classes and for public computer access. LHS offers a complete
series of computer classes (to more than 1000 children and
adults) throughout the year. The courses are designed to
meet the needs and abilities of students at various ages from
eight years to eighty. They cover topics from computer
literacy for children and adults, to programming and theoretical and applied topics In computer science.
However, exhibits, courses, and workshops provide limited
or structured access. LHS also offers unstructured actess
to computers. People who simply wish to sit down' at a
terminal and execute any program of their own choosing from
the Program library or even write their own programs (often
exercising skills previously learned in workshops and classes)
may do so on the weekends, Thursday evenings, and Friday
afternoons. At these times, Lawrence Hall opens one or
both of its computer-terminal rooms to the public at a cost
of $1.50 per hour. A person simply buys a ticket which
reserves him/her a terminal for an hour (half-hour tickets
are available for 75¢). Furt!1ermore, LHS has allocated some
ports on Its time-sharing system for home use by its members at a monthly rate comparable to Its educational rate;
a much lower rate Is available to members wishing home access
restricted to evening and late night hours.
The Lawrence Hall of Science represents an active
campaign by a science center to educate the members of its
COIIIllunltt about the power of personal computing. It'provldes
for, Increased public awareness of computers in an informal

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

learning environment; it also offers options for more Indepth, formal learning through classes. Host important, it
offers an opportunity for personal exploration of Interactive
computing through freely accessible, but structured exhibits
and through direct, unstructured, self-motivated hands-on
access, including access to individuals in the privacy of
their own homes. For the mid-1970's, this represents a large
step toward making computer power available to the community.

Robert A. Kahn has been the director of the Computer
Education Project at UC Berkeley's Lawrence Hall of Science
since'June, 1972. During this time he has also been studying
for his Ph.D. in education. As part of a Haster's project,
Kahn developed an introductory computer course for 8-10
year old children. He is currently interested in facilitating
informal learning in' the museum environment.
Lee Berman is coordinator of computer activities at
the Lawrence Hall of Science. He is responsible for
Lawrence Hall's computer outreach program, and in this
capacity, he maintains constant communication with and
provides support for more than 40 schools and educational
uS.ers on the Lawrence Hall time-sharing system.
Being a candidate for a Ph.D. in romantic poetry,
Berman has naturally gravitated toward computers. His
responsibilities also Include editing the LHS computer
newsletter, EducationaZ Computing, and maintaining the
LHS library of computer programs.

PAGE 174

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 175

CAl ANSWER PROCESSING IN BASIC
response. Blank the answer variable.
to calling routine.
4.
Franz J. Frederick
Education Building. Room 112

West Lafayette IN 47907

Return

If no match in step 3, check to see i f all keywords have been com.pared without success. If
so, print an incorrect response message, record
indication of incorrect response and record the
student's actual response. Blank the answer
variable. Return to the calling routine.

CALLING PROGRAII DESIGN
The presentation deals with the implementations

of algorithms for keyword answer processing and phonetic
answer processing. The algorithms are implemented as
subroutines in extended BASIC. Completely commented
listings are included.
There are over 30 computer-assisted instruction
languages in existence. Of these only one (PLANIT) is
"machine independent" to major extent. None are available
currently (publicly at least) for use on micro-computers.

The design of an answer processi,ng routine is dependent

to some extent upon the design of the calling program.

Most CAl languages treat lessons as blocks of information
to be presented to the student. The block may be composed
of (1) information to be displayed, (2) question, (3) specified answers to be compared to a student's response and
(4) actions to be performed dependent upon the quality of
the students' response.
A suggested block in BASIC would be as follows:

The major design intent of these languages was centered
around the notion of providing certain basic computational
capability for use by teachers. It was assumed that these
teachers should be able to use the language without being
experienced programmers. It was also assumed that the primary
use would be tutorial based upon sets of questions and
answers.
The first efforts at answer processing involved exact
answer match. After initial experimentation, teachers began
to discover that exact answer matching simply was not
effective for many types of tutorial lessons. For example,
the student's answer to a question might have the same words
in a different order and therefore be counted wrong. The
exact answer match implicitly required exact order as well.
This dilemma lead to the development of keyword answer
processors. In this case, the author specified a keyword
and if that word occurred anywhere in the student's response,
the response was considered correct. Embellishments
quickly became necessary and included such things as (1)
multiple keywords and (2) allOWing the keyword to be embedded
within a larger word. This latter feature allowed the
student to respond with the plural form or past tense of
the authors' answer and still be considered correct.
After some further experimentation teachers began to
find th~t exact order of keywords was indeed important and
desirable for some. lessons. Consequently, the next major
embellishment of keyword processors allowed stipulation of
exact order or no order. These developments in keyword
processors were not only very useful in the standard automated lesson but opened the way for experimentation with
simulated conversational interaction. The counselor-patient
types of simulations became possible providing the teacher
could specify reasonable anticipated questions or question
sequence which could reasonably occur in real life situations ..
The developments were rather useful in computer-assisted
instruction applications but basically were available only
in CAl languages. Dle actual implementation, of answer processors usually treats the processors as language functions
with parameters.
With the advent of low cost micro-processors and in
particular the advent of multi-user micro-processor systems,
the ideal of low cost CAl in the classroom seems possible.
The only generally available higher level language currently
on micro systems is of course BASIC in more or less extended
versions. BASIC does not have, however, embedded answer
processing functions except at the exact answer level. This
means that the CAl author must create his own code to do
these functions and repeat it extensively through a lesson
or create generalized subroutines for these functions.
Recognizing that it may be some time before a micro
CAl language is generally available and that extended BASIC
with string functions is likely to be a defacto standard,
the author designed a generalized keyword subrou.tine in
BASIC. This subroutine was designed to allow specification
by the author of up to five keywords and to allow the author
to specify how many must be matched in order to be considered
correct.
The keyword algorithm is as follows:
KEYWORD ALGORITHM

1.

Compare each author keyword with student's response.

2.

If a keyword matches, increment the match counter.

3.

Cc;nopare the match counter with the authors'
specified number of matches. If equal, print a
correct response message, record indication of
correct response and record the student's actual

EXAMPLE OF "BLOCK"
500
505
506
510
520
521
530
540
550
560
570
580
590

PRINT "NAME A PROPERTY OF COLOR"
REM---STUDENT RESPONSE VARIABLE IS A$ AND IS THE SAME
REM--- IN ALL BLOCKS
INPUT A$
REM--R IS NUIIBER OF BLOCK IN THE PROGRAM; K IS THE
REM---NUllBKR OF KEYWORDS TO MATCH
R-9 : K-l
REM--AUTHOR SPECIFIED KEYWORD
A$(l)=''HUE''
A$(2)~"VALUE"

A$(3)-"INTENSITY"
REM---CALL KEYWORD SUBROUTINE
COSUB 7000
DESIGN OF KEYWORD SUBROUTINE

The keyword subroutine presented in this paper
requires the following extended BASIC features.
1.

STRINGS (length at least equal to 70 characters)

2.

MID$(A$,I,J)

3.

LEN(A$)

The keyword subroutine requires the following
unique variables.
1.

K2 (number of matches)

2.

K (number of keywords to match-see BLOCK design)

3.

K1 (actual number of author keywords)

4.

A$ (string variable which holds student answer)

5.

R$(I,J) (string matrix used to record student
responses and performance record)

6.

A(5) (numeric matrix used to hold length of
keyword strings)

The keyword routine uses only two temporary variables
(I and J). They are used as loop counter variables.
The keyword subroutine .allows the following keyword checkS.:
1.

Specification of single keyword match from
field of 1 to 5 author specified keywords.

2.

The key word is treated 8S a root .keyword
consequently it will allow the occurrence
of the keyword with prefix and/or suffix
in the student response.
KEYWORD PROGRAM LISTING

1 REM --- CLEAR VARIABLE SPACE AND' ASSIGN 1000 BYTES TO STRINGS
2 .CLEAR 1000
9 REM --- DECLARE NUMERIC AND STRING MATRICES
10 DIM A(5) ,A$(5) ,R$(10,3)
95 REM --- FIRST "BLOCK" OF INSTRUCTIONAL MATERIAL
96 REM
DISPLAY QUESTION AND REQUEsT RESPONSE
97 REM
A$ IS USED AS A GENElIAL ANSWER VARIABLE FOR ALL
98 REM
IIBLOCKS"
.
100 PRINT: PRINT: PRINT "WHAT IS ONE PROPERTY OF COLOR";: INPUTE A$
105 REM --- THE VARIABLE "R" IS USED TO NUMBER THE BLOCKS AND
106 REM
IS SUBSEQUENTLY USED AS AN INDEX TO THE .STUDENT.
107 REM
RECORD MATRIX "R$(R,C)'"
108 Rl!II
THE VARIABLE "K" IS USED BY THE TEACHER TO SPECIFY
109 REM
THE mlMBER .OF KEYWORDS REQUIRED FOR A COmCT RESFONSE

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

110 R=l:K=l
115 REM --- THE SUBSCRIPTED STRING VARIABLE A$ (N) IS USED BY
116 REM
. THE TEACHER TO HOLD THE KEYWORDS CONS IDERED TO BE
117 REM
CORRECT ANSWERS
120 A$ (1}="VALUE" :A$ (2}="IIUE" :A$ (3}="INTENSITY"
125 REM --- CALL KEYWORD PROCESSOR SUBROUTINE (THE SUBROUTINE
126 REM
JUDGES CORRECTNESS OF RESPONSE AND AUTOMATICALLY
127 REM
RECORDS THE INDICATION OF CORRECTNESS IN R$ (R, C)
130 GOSUB 7000
195 REM ---. ANOTHER INSTII-VCTIONAL "BLOCK" BEGINS HERE. TIlE
196 REM
STRUCTDRE IS THE SAME AS FOR BLOCK 1 (R=I).
200 PRINT: PRINT: PRINT "NAME TWO PROPERTIES OF COLOR"
210 INPUT A$
220 R=2:K=2
230 A$ (1}="INTENSITY" :A$(2}="VALUE" :A$ (3}="HUE"
240 GOSUB 7000
295 REM --- "BLOCK 3" BEGINS HERE AND HAS THE SAME STRUCTURE
296 REM
AS THE PRECEEDING BLOCKS.
300 PRINT:PRINT:PRINT "NAME ALL THREE PROPERTIES OF COLOR"
310 INPUT A$
320 R=3:K=3
330 A$ (l}=''HUE'' :A$(2)="INTENSITY" :A$ (3}="VALUE"
340 GOSUB 7000
495 REM --- TIlE NEXT STATEMENT CONCLUDES THE BLOCKS SUPPLIED
496 REM
TO TEST THE KEYWORD PROCESSOR SUBROUTINE.
500 GOTO 9999
6994 REM
6995 REM --- •••••• TIlE KEYWORD PROCESSOR SUBROUTINE ••••••
7000 K2=0
7005 REM --- DETERMINE TIlE LENGTHS OF THE AUTHORS KEYWORDS
7010 A(I}=LEN (A$ (1»
7020 A(2}=LEN(A$(2)}
7030 A(3)=LEN(A$(3)}
7040 A(4)=LEN(A$(4)}
7050 A(5}=LEN(A$(5»
7055 REM - - DETERMINE HOW MANY KEYWORDS WERE SUPPLIED FOR
7056 REM
TEST BY THE AUTHOR.
7060 FOR 1=1 TO 5
7070 IF A(I)=O THEN 7090
7080 NEXT I '
7085 REM --- THE VARIABLE Kl CONTAINS THE ACTUAL NUMBER OF
7086 REM
KE,(WORDS IN THE AUTHORS LIST
7090 K1=I
7095 REM --- COMPARE THE NUMBER OF KEYWORDS SPECIFIED FOR MATCH
7096 REM
WITH THE NUMBER OF KEYWORDS IN THE LIST. IF
7097 REM
K IS GREATER THAN Kl THEN ASSUME ALL IN THE
7098 REM
LIST MUST MATCH.
7100 IF K:>K1 THEN K=Kl
7110 1=1
7115 REM --- CHECK TO SEE IF CURRENT KEYWORD BEING TESTED
7116 REM
IS EMPTY (IE, HAS NO CHARACTERS), IF SO TERMINATE
7117 REM
THE TEST SEQUENCE.
7120 IF A(I)=O THEN 7200
7125 REM --- COMPARE THE CURRENT KEYWORD WITH ALL SEQUENCES OF
7126 REM
CHARACTERS IN THE STDDENTS' ANSWER.
7130 FOR J=1 TO LEN (A$)
7140 IF MID$(A$,J,A(I)}<>A$(I) THEN 7150
7141 REM - - IF MATClI, INCREMENT MATCH COUNTER
7142 K2=K2+l
7144 GOTO 7160
7150 NEXT J
7155 REM --- COMPARE MATCH COUNTER WITH THE NUMBER OF KEYWORDS
7156 REM
SPECIFIED AS NECESSARY FOR CORRECT RESPONSE.
IF
7157 REM
EQUAL, PRINT POSITIVE MESSAGE FOR STUDENT. IF NOT,
7158 REM
CHECK TO SEE IF ALL KEYWORDS IN LIST HAVE BEEN
7159 REM
HAVE BEEN TESTED.
7160 IF K2=K THEN PRINT "RIGHT":GOTO 7230
7165 REM --- IF ALL KEYWORDS IN THE LIST HAVE BEEN TESTED, PRINT
7166 REM
NEGATIVE MESSAGE TO THE STUDENT.
7170 IF 1=5 THEN 7200
7180 1=1+1
7190 GOTO 7120
7200 PRINT "WRONG! II
7205 REM - - STORE INDICATION OF WRONG RESPONSE IN THE STUDENT RECORD
7206 REM
MATRIX.
7210 R$(R,3)="-"
7220 GOTO 7240
7225 REM --- STORE INDICATION OF CORRECT RESPONSE IN THE STUDENT RECORD
7226 REM
MATRIX.
7230 R$(R,3}="+"
7235 REM --- STORE ACTUAL STUDENT RESPONSE IN THE STUDENT RECORD
7236 REM
MATRIX
7240 R$ (R, 2) =A$
7245 REM --- BLANK RESPONSE VARIABLE.

7250 A$=" "
7255 REM --- RETURN TO THE CALLING "BLOCK".
7260' RETURN
9999 END

Answer processing using keywords represents a very
powerful tool in the development of conversational
simulations. Programs can be devised which can carry on
a useful conversation in a lim! ted context.

While keyword answer processing opened new horizohs
in the developme!1t of tutorial lessons, teachers began
to encounter problems with students who could not spell
or who could not type accurately. These problems lead
to a concern for some sort of answer processor which could
phonetically encode the responses and thus avoid some

PAGE 176

basic problems'in typographic errors and spelling errors.
A very basic but interesting phonetic answer processor
algorithm was developed through a project funded by the
National Science Foundation. The proje.ct resulted in
the development of a CAl language called PLANIT. I twas
to be ll machine-independent ll • It successfully met that
goal with the only restrictions being a 24 bit word size
(minimum) and access to a FORTRAN IV compiler. The
phonetic algorithm used in PLANIT is quoted verbatim in
this paper.
The general algorithm for a phonetic answer processor
in BASIC is as follows:
BASIC PHONETIC PROCESSOR PROCEDURE

1.

2.

Disassemble the answer or response string into
single character strings.
Sequentially convert each single character string
into its t phonetic equivalent using the PLANIT
PHONETIC ALGORITHM.

3.

Reassemble phonetic characters equivalents into
a single string.

4.

Return to calling program for comparison of phonetic
equivalent response to a phonetic equivalent answer
specified by the lesson author.
DES IGN OF PHONETIC SUBROUTINE

The phonetic answer processor subroutine requires the
following extended BASIC features:
1.

STRINGS (length at least equal to 70 characters)

2.

MID$(A$,J,I}

3.

LEN(A$}
PHONETIC ENCODING AND FORMULAS PROCESSING*

PHONETI C ENCOD ING

The phonetic encoding process is accomplished in four steps:
Step 1 - Letter Equivalent:
All letters are transformed into their letter equivalents. Any
remaining characters including blanks are unchanged. The letter
in Row 1 is transforI!led into the letter immediately below in Row
2. PLAN!T ignores all other characters.
Row 1
Row 2

ABCDEFGHIJKLMNOPQRSTDVWXYZ
ABCDABCHACCLMMABCRCDABHCAC

(original letter)
(letter equivalent)

Step 2 - The H Replacement:
Each H in a word is transformed to the preceding letter provided
the character is a letter. If not a letter (e.g., a blank), H
is unchanged.
Step 3 - Elimination of Successive Identical Consonants:
All but the first element of an uninterrupted sequence of a single
consonant is eliminated, (e.g., CC=C, TT=T).
Step 4 - Elimination of As:
All vowels, transformed into A's, are eliminated except if A is the
first character of the word to be encoded. The final word contains
only consonants and a leading A if there is one.
Examples:
Original Word

Steps

4

1
PHONETIC
HAZARD
ON-LINE
AWHILE

BHAMADAC
HACARD

BBAMAOAC
HACARD

AM-LARA
ABHALA

~LARA

AAAALA

BAMADAC
HACARD
AM-LAMA
AAAALA

EMDC
HeRD
AM-LM
AL

The phonetic subroutine requires the following unique
variables:
1.

B$

(phonetic encoded answer)

2.

A$

(string variable to hold student response)

3.

R$(I,J)

(string matrix to hold student performance
records)

*Bennick, F. D. and C. H. Frye "PLANIT LANGUAGE REFERENCE MANUAL", System
Dev. Corporation TM-(L}-4422/002/01, Oct. 1970.
(APPENDIX E)

FIRST COMPUTER FAIRE PROCEEDINGS

4.

B$(73)

(string matrix used to hold individus1
characters from student response or author
answer)

The phonetic subroutine uses only two temporary variables
They are used as loop counter variables and index
pOinters for matrices.
(J and K).

The phonetic answer processor subroutine is designed to
be called to process both the authors' answer and the
students' response (on separate GOsua calls). The phonetic
response processor can handle character strings up to 70
characters length with embedded blanks and punctuation. The
only restriction is that the use of a comma in the students'
answer may produce a syntax error depending on which BASIC

interpreter you use.

PHONETIC RESPONSE PROCESSOR LISTING

1 REM --- CLEAR VARIABLE SPACE AND ASSIGN 500 BYTES TO STRINGS
2 CLEAR 500
9 REM --- DECLARE STRING MATRICES FOR PHONETIC SUBROUTINE
10 DIM B$(73)
15 REM --- DECLARE STRING MATRIX FOR STUDENT PERFORMANCE RECORDS
16 REM
THE R DIMENSION REFERS TO THE NUMBER OF "BLOCKS"
17 REM
ENCOUNTERED BY THE STUDENT. THE C DIMENSION REFERS
18 REM
TO (1) BLOCK NUMBER, (2) ACTUAL RESPONSE, AND (3)
19 REM
THE RESULT OF COMPARING RESPONSE WITH ANSWER
20 DIM R$(30,3)
70 B$(O)-" "
80 1-0
95 REM --- FIRST "BLOCK" OF INSTRUCTIONAL MATERIAL.
96 REM
PRESENT QUESTION - - 100 PRINT "WIIO WAS THE FIRST PRESIDENT OF THE U. S."
105 REM --- THE VARIABLE R REFERS TO THE BLOCK NUMBER.
106 REM
THE VARIABLE I IS USED TO INDICATED THE NUMBER OF
107 REM
ATTEMPTS IN THE LESSON. THE MATRIX R$(R,C)
108 REM
IS USED TO HOLD A RECORD OF THE STUDENTS'
109 REM
PERFORMANCE BLOCK BY BLOCK.
110 R=l:I=I+l:R$(I,l)=STR$(R)
115 REM --- A$ IS USED TO HOLD THE AUTHOR SPECIFIED ANSWER
120 A$-"WASHINGTON"
125 REM --- GOTO PHONETIC SUBROUTINE AND CONVERT ANSWER TO
126 REM
PHONETIC REPRESENTATION. RETURN IT IN B$.
130 GOSUB 8000
135 REM --- MOVE PHONETIC REPRESENTATION FROM TEMPORARY VARIABLE
136 REM
B$ TO P$.
140 P$=B$
145 REM --- REQUEST STUDENT RESPONSE TO THE QUESTION.
146 REM
A$ IS AGAIN USED TO HOLD DATA TO BE PASSED TO
147 REM
PHONETIC SUBROUTINE.
150 INPUT A$
155 REM --- STORE STUDENTS' ACTUAL RESPONSE IN RECORD MATRIX
160 R$(I,2)=A$
165 REM --- GOTO PHONETIC SUBROUTINE AND CONVERT RESPONSE TO
166 REM
REPRESENTATION. RETURN IT IN B$.
170 GOSUB 8000
175 REM --- COMPARE B$ WITH p$.
180 IF P$<)B$ THEN 210
185 REM --- RECORD CORRECT RESPONSE INDICATOR
190 R$(I,3)-"+"
195 REM - - PRINT FEEDBACK MESSAGE TO STUDENT
200 PRINT "RIGHT!": GOTO 230
205 REM --- RECORD INCORRECT RESPONSE INDICATOR
210 R$ (I, 3)="-"
215 REM --- PRINT FEEDBACK MESSAGE TO STUDENT
220 PRINT ''WRONG!''
225 REM --- PROCEED TO NEXT FRAME
229 REM
END OF TEST OF PHONETIC SUBROUTINE
230 GOTO 9999
7996 REM
PHONETIC SUBROUTINE
7998 REM --- SET UP VARIABLES FOR COUNTERS
8000 K-1:J-1
8002 B$." "
8005 REM --- PLACE EACH LETTER/CHAR IN ANSWER INTO SEPARATE CELL
8010 IF J>LEN(A$) THEN 8200
8020 B$(K)-MID$(A$,J,l)
8022 REM --- TRANSFORM ANSWER LETTERS INTO LETTER EQUIVALENTS. BLANKS
8024 REM
REMAIN UNCHANGED. LETTERS TRANSFORMED AS FOLLOWS:
8026 REM
8028 REM
ORIG. ABC D E F G H I J K L M N 0 P Q R STU V W X Y Z
8029 REM EQUIV. ABC DAB C HAC C L M M ABC R C DAB H C A C
8030 IF B$(K)-"E" OR B$(K)="I" OR B$(K)="O" THEN B$(K)-"A"
8040 IF B$ (K)-"U" OR B$ (K)="Y" THEN B$ (K)="A"
8050 IF B$(K)="F" OR B$(K)-"P" OR B$(K)="V" THEN B$(K)."B"
8060 IF B$(K)-"G" OR B$(K)-"J" OR B$(K)-''K'' THEN B$(K)-"C"
8070 IF B$(K)="Q" OR B$(K)="S" THEN B$(K)."C"
8080 IF B$(K)~"X" OR B$(K)-"Z" THEN B$(K)-"C"
8090 IF B$(K)-"W" THEN B$(K)="H"
8100 IF B$(K)="N" THEN B$(K)="M"
8110 IF B$(K)-"T" THEN B$(K)-"D"
8115 REM - - TRANSFORM H INTO PREVIOUS LETTER UNLESS IT BEGINS WORD
8120 IF B$(K)="H" AND B$(K-1X>" " THEN B$(K)-B$(K-1)
8130 IF B$ (K)-"A" THEN 8150
8135 REM --- REPEATED CONSONANT DELF.TED

************

PAGE 1"

8140 IF B$(K)-B$(K-l) THEN B$(K)-" '~'K-K-1
8145 REM --- REPEATED A DELETED
8150 IF B$(K)-"A" AND B$(K-1)-"A" THEN B$(K)-" ":K-K-1
8155 REM --- DELETE A AFTER CONSONANTS
8160 IF B$(K)-"A" AND B$(K-1X>" " THEN B$(K)-" ",K-K-1
8165 REM --- A AFTER A BLANK ALLOWED (EG AT START OF A WORD)
8170 J-J+1
8180 K-K+1
8190 GOTO 8010
8200 FOR 11-1 TO LEN (A$)
8220 B$-B$+B$ (M)
8230 NEXT M
8240 RETURN
9999 PRINT,PRINT ......... END OF PHONETIC SUBROUTINE TEST ••••••••• ",END

Dr. Franz J. Frederick 1s an associate professor of

The li~ting of a sample mini-lesson (one BLOCK) and
the phonetic subroutine follow.

***
********

BOX 1679, PALO ALTO CA IM302

Media Sciences in the Depart....nt of Education at Purdue
University. He teaches courses in Computer Assisted

Instruction and Information Science. 11I.e.e courses are
centered around the use of micro-computers in the schools.
His home computer system is based on a SWTPC 6800 board
set with 16 K of RAM, a KC standard 300/600 BAUD tape
interface, 128 characters per line 16 line video terminal.
and a servo controlled plot tins robot.

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

TELEMATH
Lois Noval
Novel,lnc.
8401 Aero Driv.
Sen Diego cA 92123

Instructional games introduce an element
of excitement into the learning environment, a welcomed motivational tool.
TELEMATH represents a cooperative endeavor
between Noval,· Incorporated and the San
Diego Unified School District to develop
and test a computer based educational
system. This audio-videographic system
presents drill and practice game activities
to complement instruction in basic mathematics computation.

"Way to go, Billy!" A cheer goes up as the
drag racer moves closer to t.he finish line.
Enthusiasm radiates from the corner of the room
as teammates work together in an effort to bring
their car to victory.
The students are playing an exciting, new
educational game, TELEMATH. These "action" games,
displayed on a television monitor, present
challenging mathematics problems to the students.
Teams race to enter their responses on calculatorstyle keyboards. The first correct response is
rewarded by exciting game action, moving the team
closer to victory.
"Today, games and their pleasurable
effects are enjoyed by players of all ages,
occupations, social and cultural groups.
Whether games are the outgrowth of a
natural activity, or contests contrived
to accomplish a particular goal or objective, or diversions engaged in for fun and
excitement, they continue to motivate,
interest, excite, inspire and provoke
young and old."
from "What's in a Game?" by Howard G. Ball
in The Elementary School Journal Sept •. 1976.
From the pinball craze to the successful
Othello, games are becoming an increasingly popular
form of chall.enging entertainment. Games bring out
the competitive nature in each of us. The origin
of games has been attributed to man's desire to
amuse and challenge himself. Whether'we are playing
against another individual, or striving to improve a
personal "all time" high score, games help to bring
out that little bit of show-off found in everyone.

PAGE 178

ipate in the learning process. Games afford
.students an opportunity to work together. Competing in stimulating game activities, students mature
socially as well as academically.
Integrated into the educative process, games
can be designed to complement classroom activities.
Students can use game activities. to work on areas
in which they are weak, reinforcing previous instruction. To insure maximum effectiveness, game
activities should be. selected which make a contribution to classroom lessons.
Formed barely six years ago, Gremlin Industries,
Incorporated has grown to become the recognized
.
leader in wall game design and manufacture for the
coin games industry. Common sense engineering design
has lead to Gremlin's reputation for reliability,
known throughout the coin games industry.
Based on a mutual interest in developing
computer-based educational games, Gremlin Industries,
their sister corporation, Noval, Incorporated, and
the San Diego Unified School District joined together
in the development, testing and implementation of
the TELEMATH system. FollOWing district-written
curriculum .guides, teachers and programmers cooperated in developing appropriate game activities to
complement classroom instruction in mathematics.
Noval's committment to education brings with it
years of experience in the electronics industry and
a working knowledge of the educational process and
game design.
The TELEMATH system is currently being piloted
by over 500 students in the San Diego area. The
project has been funded under an ESEA Title IV-C
grant to the San Diego Unified School District. A
self-contained, compact microprocessor system has
been developed to deliver district-written curriculum for small group instruction in mathematics
computation. The major objective of the project
is to improve mathematics computational skills of
fourth and fifth graqe pupils through use of
computer/videographic instruction.
Eight schools are involved in the TELEMATH
project, widely separated by geographic location
within the city, by socioeconomic neighborhoods and
by the ethnic makeup of their student bodies.
Students at the fourth and fifth grade levels have
been selected at random to participate in the
project. Target students spend one hour each week
in a math lab environment, participating in
instructional game activities. Four objectives have
been established in the experimental design:
1)

TELEMATH target students will master 80'
of the computational objectives in which
they receive instruction;

Game arcades, featuring a variety of coinoperated games, have enjoyed great success in the
past few years, coaxing quarters from the competitive public. Th.e tremendous sales of PotlG and
other home television games are but only another
indication of the vast interest in entertaining
games. The home electronic video market has
expanded from 100,000 games sold in 1975 to ~ales
of over 3 million games in 1976. A conservat1ve
estimate projects sales of over 10 million games
by 1980. These figures reflect a,:, ~ncreased amo,;!nt
of leisure time devoted to compet1t1ve game plaY1ng.

2)

TELEMATH target students will score significantly higher than the control group'
on an end-of-year post-test;

3)

TELEMATH target student.sin above-average
schools will, on the average; score at or
above their highest mean score; those in
'below-average schoolS will, on the average,
reduce the gap between the national norm
and their preceding three years by'
one-third (as measured by the CTBS arithmatic computation section);

Games which exploit this competitive spirit
can play an important role in the educational
process. Instructional games are gaining wide
acceptance among the nation's educators, and for
a very good reason. Games can provide unique and
stimulating learning experiences for students of
all abilities.

4)

TELEMATH target students will, on the
average, score significantly higher than
the control group on the end~of-year
CTBS arithmetic computati'!n section •.

The instructional game introduces an element
of excitement into the learning environment.
Highly motivating competition generates enthusiasm
from students, who become eager to actively partic-

Again, these are only project objectives. The
project has just passed. the miaway point of its
first year; as yet, no statistical data has. been
compiled. We can, howeyer, .state that the enthusiasm that students and teachers alike have displayed for the system is overwhelming. In one

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 179

project school, sixth grade pupils not involved
in the project are permitted to use the equipment
after school hours. One slight problem has arisen the system is so popular, students must sign up
a month in advance to reserve the system for their
use!

vanced student. A random digit option is offered by
some activities. The random digit set from which a
problem's digits are chosen may be changed t~ drill
students on specific combinations. These options
revert to values preset for the activity if the
teacher does not desire to change them.

TELEMATH is a creative solution to an important
educational problem, the decline of computational
proficiency. A computer audio-videographic instructional system controlled by a microprocessor,
TELEMATH serves as an ideal alternative to the daily
classroom drill. This self-contained system
displays game activities through a medium which is
associated with pleasure - television.

The microprocessor technology used in Gremlin
wall games and in our new generation of video games
forms the basis for our educational system. This
simple and reliable engineering design has been
tested and refined over six hardware generations.
The primary design goal ·is to be cost-competitive,
vital not only in the game business but in the
educational market as well. As a sister corporation
to Gremlin, Noval shares in their buying power which
yields a lower system cost. Performance has not
been sacrificed for this cost reduction. TELEMATH
hardware has been field tested for over a year, not
only in educational systems, but in thousands of
Gremlin games around the world.

Exciting game activities, designed for small
group instruction, are displayed on a television
monitor. The system's graphic capabilities go
beyond the standard character set (letters and
numbers) to allow realistic representations for
special effects. A "writeable" character generator
permits each program to create figures appropriate
to the game design. The system also makes effective
use of sound which contributes to game action.

Unlike many other systems for computer-assistea
instruction (CAl), TELEMATH is a cost-effective
system, well within the budget capability of most
schools. Unlike a computer terminal, TEL&~TH is a
Each activity program is read into the system
stand-alone system, not tied via telephone to·.a
from a strip of film containing bit patterns which
large, expensive time-sharing computer. Although
"program" the computer. The use of film as a protime-sharing systems play an important role in
gram storage device is both inexpensive and reliable. education, most school districts do not have the
The simplicity of film loading and the durability of funds to take advantage of their offerings.
the film itself permit~ the students to operate the
system themselves.
.
TELEMATH systems are compact and self-contained.
Easily moved from room to room on a small cart, the
Dual calculator-style keyboards allow students
system can be shared by a number of classes within a
to enter their answers to problems which are shown
school. \ihereas most CAl terminals can be used by
on the screen. The digits, 0-9, are represented on
only one student at a time, the TELEMATH system is
the keyboard, as are symbols for each of the operamost effective when used by small groups of students.
tions (+, -, x, ~),decimal point, comma, equals,
Students can use the TELEMATH system with minimal
greater than, less than, yes and no. Three special
supervision. This helps free the teacher for work
function keys are also included: ERASE, which
and activities with other students, an important
allows the student to delete an incorrect entry;
consideration for today's crowded classroom.
ENTER, which concludes each student response; and
The TELEMATH philosophy is based on providing
"?", which can be pushed at any time during a game
exciting educational activities to large numbers of
to display "help instructions," an explanation of
students at a price school districts can afford.
the game activity.
Our .first library of activities deals strictly with
mathematics - computational skills objectives in
Upon completion of the film loading, the game
particular. Our aim is to expand the mathematics
~itle appears on the screen.
At this time the
activities to include libraries in measurement, the
students have two options. First time students can
metric system and geometry. All new libraries of
push "?" on their keyboards for an explanation of
activities will be compatible with the standard
the game or they can push "ENTER" and begin the
game activity. The teacher also has several options hardware system. There will be no need to upgrade
or expand the hardware, the only cost involved
whic& can be exercised at this point in the program,
being the purchase of the new activity films.
explained in a section which follows.
At the beginning of a game activity, each
player or team of players is instructed from the
screen to identify .themselves by entering their
name initials via a simple numeric code. These
initials, which are used to distinguish player
scores, serve to personalize the system. Students
become. more involved in the activity when they are
represented by their own initials on the scr~en.

We at Noval are enthusiastic about the future
of the TELEMATH system. Reliable engineering,
coupled with our experience in the game·industry
and the assistance of local educators, make
TELru~TH an innovative development in the field
of educational computers.

Students race to enter the answer to problems
displayed on the screen. Correct responses are
rewarded by exciting game action; if a student
answers incorrectly, the correct answer is displayed
for drill reinforcement. Students can compete
against each other, either individually or· in teams,
or a single student can compete against the computer.

Lois Noval, a programmer actively involved in
the development of the TELEMATH system, is a
graduate of Purdue University 'with a BS degree in'
Math Education/Computer Science.

The versatility of the TELEMATH system allows
the teacher to tailor the mathematics drill to meet
the needs of· individual students. Game activities
make use of preset options which the teacher may
change as required. For the teacher to .exercise
one or more of the options, a code sequence known
only to the teacher must be entered.

REFERENCES
Ball, Howard G. "What's in a Game?", The Elementary
School Journal, Vol. 77, No. 1 (September 1976),
p. 42-49.

Davis, Sam. "More Games from National," Electronic
Engineering Times, February 21, 1977.
"Factory Report: Gremlin Industries," Reflay
Magazine, Vol. 11, No.2 .(December 1976 , p. 20-:-22.

Two options are available to the teacher. Each
activity allocates the amount of time that a student Frost and Sullivan, Inc. The Coin Operated and Home
Electronic. Games Market, June 1976.
has to enter a response to a particular problem.
This time may be increased to provide the slower
Information and Planning Associates. Electronic
sfoudent a longer period in which to respond, or
Toys, Games and Amusements, June 1976.•
shortened to create a speed drill for the more ad-

FtRSTCOMPUTER FAIREPROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 180

STUDENT RECORDS SUBROUTINE FORCOMPUTER-ASSISTED INSTRUCTION LESSONS IN
EXTENDED BASIC
Franz J. Frederick. Assoc. Professor
Education Building. Room 112
Purdue University
West Lafayette IN 47907

1.

Identify the information to be retained.

2.

Specify matrix layout required to maintain the
information.

3.

Identify items to be manipulated ,or defined for
each question/answer block presented.

4.

SpeCify information to be presented in a summary
report form.

5.

Specify completed record report form.

ABSTRACT
The presentatiori deals with the implementation of
an algorithm for creatingand'revlewing student performance
records within a BASIC CAi lesson. It reviews student
oriented performance records. A design which implements
teacher needs in a student records procedure is outlined.
The procedure is implemented ,as (1) a lesson presentation
strategy and (2) a set (if two subroutines allowing complete
or abbreviated reviews of student performance. Completely
commented listings are included.
Computer assisted instruction lessons can be written
in almost any computing language. Why then are there
specialized computer-assisted instruction languages? The
answer is threefold. One, CAl languages typically have a
limited set of cO\lllDllIlds'. Two, CAl languages usually have
some special answer processing functions. Three, CAl
languages usually provide facilities for recording student
performance and for providing a copy of those records for
the teacher. Virtually all CAl languages are interactive;
those which aren't tend to come under the rubric of computermanaged instruction (CMI).
As useful as CAl languages can be for teaching, none
exist (publicly at least) for use directly on any of the
popular micro-computers. BASIC on the other hand is avail'able in more or less extended versions on the more popular
micro-computers. While BASIC is a general purpose computing
'language and does not have the built-in CAl functions, it is
possible to generate these capabilities through subroutines.

The design presented here is predicated on a machine with
no disk or a machine with a BASIC which permits storage of
arraY/matrix data.

1.

It is often possible thai a learner might
encounter the same question/answer item more than
once. Therefore, it is useful to know the actual
sequence encountered by the student. It is also
occassionally very useful to see the students'
actual response to an item. Another useful item
of information is some identification of which
block of information was encounter. Last but by
no means least, one needs the result of the response
judgement.

2.

The first purpose described above can be accomplished
by the use of simple correct and incorrect answer counters
of the form:
line II R-R+l

(Right Answer)

or
line II W=W+l

(Wrong Answer)

Matrix layout.
It is probably most convenient to use a two
dimensional string matrix for storage of the
performance record.

The author has arbitrarily designated the matrix as
R$(R,C).

This presentation will concentrate on the design of
student performance records subroutines in BASIC.
There are three major purposes for maintaining records
of student performance. One, the learning process is enhanced
when the learner knows immediately of the quality of his
performance. It is also of particular value to the learner
to know of his performance relative to the total task or
lesson. Two, the teacher can more effecti~ely guide the
student in learning if the teacher has reco,rds which indicate
the student's performance with respect to specific items.
Three, the teacher can use performance records to assess the
effectiveness of the learning materials - i.e., the teacher
can identify those areas of the task needing re-design.

Information to be retained.

1

2

3

+

1

1

BASIC

2

2

YES

-

3

2

NO

+

ROWS 4
5
6

7

$QUIT

n

EXAMPLE OF RECORDS MATRIX
3.

The appropriate counter is incremented after judging the
students' response. At the end of the program, the lesson
author would probably use something similar to the following
code:
Line II PRINT ''YOU GOT ";R;" RIGHT WITH ";W;"

WRONG~"

Line /I PRINT "YOUR OVERALL PERFORMANCE WAS "; INT
«R/R+W)*lOO);" % CORRECT."
The proc,edure just described is entirely student oriented,
ie, no records are kept for teacher use.
The second and third purpose for maintaining performance
records is to make information available for teachers.

Items to be defined or manipulated in BLOCK.
Most CAl languages treat lessons as discrete
"chunks" of information. The "chunks" may be
either information to be printed or questions and
answers or a combination. We will refer to such
an arrangement as a "BLOCK".
Tne structure of a block would appear as
follows:
Line # R-n (Defines number of block)
Line (I 1=1+1 (The Ithtime the student has encountered
an it~; used as a row index to records
matrix)
Line

STUDENT RECORDS DESIGN
The design of a more pervasive student records procedure
may be summarized as follows:

R$(I,l)-STR.$(R) (Stores a string representation
of the block number in the
,r~cord lllatrix)
Line /I PRINT "WllAT IS THE MOST AVAILABLE MICRO-COMPUTER
LANGUAGE,"
(I

FIRST COMPUTER FAIRE PROCEEDINGS

Line II INPUT A$

9059
9060
9070
9075
9080
9085
9090
9095
9100
9110
9115
9116
9120
9130
9140
9150
9160
9170
9180
9190
9200
9300

Line # R$(I,2)-A$ (Store student answer in matrix)
Line II A$(l)·"BASIC"
Line II A$(2)·"EXTENDED BASIC"
Line II IF A~$(l) AND A~$(2) THEN LINE lin
Line II R$(I,3)="-": PRINT ''WRONG!''
Line # GOTO LINE #n+1
Line In R$(I,3)-"+":PRINT "RIGHT!"
Line lIn+l GOTO NEXT BLOCK
NOTE:

4.

After last block, Set 1-1+1 THEN R$(I,2)"$QUIT"
(This signals the end of the entries in
the matrix)

Summary report.

PAGE 181

REM
PRINTS TOTALS AND PERCENTAGE OF PERFORMANCE.
FOR 1-1 TO 100
IF R$(I,2)-"$QUIT" THEN 9120
REM --- PRINT ITEM (BLOCK) NUMBER AND RESPONSE INDICATOR.
PRINT TAB (5) ;R$(I,l) ;TAH(20) ;R$(I,3)
REM --- COUNT CORRECT RESPONSE
IF R$(I,3)-"+" THEN R-R+l
REM --- COUNT INCORRECT RESPONSE
IF R$(I,3)="-" THEN W-W+l
NEXT I
REM --- SET N COUNTER TO ONE LESS THAN I BECAUSE LAST ITEM IN
REM
STUDENT RECORD IS USED FOR FLAG FOR END OF RECORD.
N-I-l
PRINT
PRINT "TOTAL ANSWER BLOCKS SEEN: ";N
PRINT "TOTAL INCORRECT ANSWERS:
";W
PRINT "TOTAL CORRECT ANSWERS:.
"; R
PRINT"
PERFORMANCE PERCENTAGE:
";INT(R/N.I00);"%"
PRINT
PRINT "- - - - - - - - - - - - - - - - - - - - - - - - - -"
PRINT:PRINT:STOP
PRINT: PRINT: PRINT " ••••
STUDENT PERFORMANCE .RECORD··FOR·";N$;"

*.

****"

The summary report should print a report
heading and the columnar headings - ''block number"
and "judgement". It should also print the total
number correct, total number incorrect, and a
performance percentage.
5.

BOX 1579, PALO ALTO CA 94302

Complete report.
The complete report should include a column
for the actual response as well as all the data
for the summary report.

The subroutines are actually only the routines used to
print the contents of the records. The records are actually
generated through the "BLOCKS". The subroutines are executed
after the student completes his lesson by typing GOTO n where
n is the starting line number for the desired report.
The following listing shows the subroutines and two
example "BLOCKS".

9310
9320
9 325
9326
9330
9340
9350
9360
9370
9380
9390
9400
9410
9420
9430
9440
9450
9460
9470
9480
9490
9995
9996
9999

STUDENT RECORDS PROGRAM LISTING
10 CLEAR 500
50 DIM A$(5)
60 DIM R$(100,3)
80 PRINT:PRINT:PRINT "
CAl LESSON AND DEMONSTRATION OF STUDENT RECO
RDS
It
90 PRINT:PRINT
100 INPUT ''lIIIAT IS YOUR NAME"; N$
110 1-0
115 REM ••••
FIRST BLOCK IN LESSON
120 R-1:I-I+1:R$(I,l)=STR$(R)
130 PRINT "NAME THE MOST POPULAR LANGUAGE ON MICRO-COMPUTERS CURRENTLY"
140 INPUT A$
150 A$ (l)="BASIC"
160 A$(2)-"EXTENDED BASIC"
170 A$(3)-"MITS RASIC"
180 A$(4)-"BK BASIC"
190 R$(I,2)=A$
200 IF A$()A$(l) AND A$()A$(2) and A$()A$(3) AND A$<)A.$(4) THEN 250
210 R$(I,3)-"+"
220 GOTO 270
250 R$(I,3)="-"
260 REM ••••••• SECOND BLOCK IN LESSON ._._. . . . . .
265 REM --- NOTE THAT THIS BLOCK REQUIRES THE STUDENT TO GET THE ANSWER
266 REM
CORRECT BEFORE HE CAN MOVE AHEAD IN THE LESSON.
270 R-2:I-I+l:R$(I,l)-STR$(R)
280 PRINT "IS IT AVAILABLE IN ALL MICRO COMPUTERS"
290 INPUT A$
300 A$ (l)="NO"
310 R$(I,2)-A$
320 IF A$-A$(l) THEN R$(I,3)="+":GOTO 350
330 PRINT "TRY AGAIN!"
340 R$(I,3)-"-":GOTO 270
350 GOTO 9995
9000 REM --- STUDENT RECORD PRINT SUBROUTINES
9002 REM
(1) SUMMARY FORM (INCLUDES BLOCK NUMBER AND RESPONSE
9003 REM
INDICATOR)
9004 REM
(2) COMPLETE STUDENT RECORD (BLOCK NUMBER, ACTUAL
9005 REM
STUDENT RESPONSE, AND RESPONSE INDICATOR)
9010 PRINT:PRINT:PRINT " •••
STUDENT PERFORMANCE RECORD FOR ";N$;"

*••*

***"

9020
9030
9040
9045
9046
9047
9050
9055
9056
9057
9058

*••*.***.

_.*

'

*.*

PRINT TAH(18) ; "(SUMIIARY FORM)"
PRINT
PRINT "BLOCK NUMBER";TAH(lS): "ANSWER JUDGEMENT"
REM --- R IS THE VARIABLE USED TO TALLY THE CORRECT RESPONSES.
REM
W IS THE, VARIABLE USED TO TALLY THE INCORRECT RESPONSES.
REM
N IS THE VARIAHLE USED TO COUNT THE TOTAL RESPONSES.
PRINT:R-O:W-O:N..O
REM - - MAIN LOOP USED TO ExAMINE STUDENT PERFORMANCE ITEM BY ITEM
REM
INPORMATION EACH ITEM IS PRINTED ON A LINE.
REM
WHEN "$QUIT" 1S FOUND IN THE ACTUAL ANSWER AREA FOR THE
REM
LAST ENTRY IN THE RECORDS MATRIX, THE PROGRAM THEN
.

***.

PRINT TAB (18);"(COllPLETE RECORD)"
PRINT
REM --- PRINT BLOCK NUMBER, ACTUAL RESPONSE AND ANSWER JUDGEMENT F
REM
EACH ITEM
PRINT "BLOCK NUMBER"; TAB (15) ; "ACTUAL RESPONSE"; TAB (50) ; "JUDGEMENT'!
PRINT:R-O:W-O:N-O
FOR I-I TO 100
IF R$(I,2)-"$QUIT" THEN 9410
PRINT TAB (5) ;R$(I,l);TAB(15) ;R$(I,2);TAB(55) ;R$(I,3)
IF R$(I,3)-"+" THEN R-R+l
IF R$(I,3)-"-" THEN W-W+l
NEXT I
N-I-l
PRINT
PRINT "TOTAL ANSWER BLOCKS SEEN:
";N
PRINT "TOTAL' INCORRECT ANswERS:
"; W
PRINT ''TOTAL CORRECT ANSWERS:
"; R
PRINT "
PERFORMANCE PERCENTAGE:
"; INT(R/N"lOO) ;"Z"
PRINT
PRINT "- - - - - - - - - - - - - - - - - - - -"
PRINT:PRINT:STOP
I-I+l
R$ (I ,2)-"$QUIT"
END

Dr. Franz J. Frederick is an sssociate professor of
Media Sciences 1n the Department of Education at Pu~due
University. He teaches courses in Computer Assisted
Illstruction and Information Science. These courses are
centered around the use of micro-computers in the schools.
His home computer system is based on a SWIPC 6800 board
set with 16 K of RAM, a KC standard 300/600 BAUD tape
interface, 128 characters per line 16 line video terminal,
and a servo controlled plotting robot.

FIRST.COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 182

A QUESTION-ANSWERING SYSTEM ON MATHEMATICAL MODELS IN MICROCOMPUTER
ENVIRONMENTS
Milos Konopasek & Mike Kazmierczak
School of Textile Engineering
Georgia Institute of Technology

Atlanta GA 30332

Abstract
The
QAS
language
enables
the
user to
communicate with the computer at the level
of
mathematical relationShips rather than sequential
programs.
Once the
information on a mathematical
model is stored, the QAS operating system accepts any
relevant
question
and
produces
an
answer.
Successful implementation of a simplified version of
QAS on Compucolor microcomputer widens the prospects
of applications of personal computers as knowledge
storing media and problem solving tools.
The paper outlines basic concepts of the QAS.
The versatility and flexibility of the Compucolor QAS
is illustrated by an extensive sample conversation.

I n t rod u c t

ion

optionally, one or more arguments.
There are 13
operation codes available in the Compucolor QAS.
The first group of operation codes
models:

deals

with

LM - displaying the list of models available from the
loaded modul us;
RM

reading the specified model
information into QAS operating program;
OM - displaying the listing of the assigned model.
The second group of operation codes serves for,
the
formulating and reformulating the question after
a particular model information is read in:
AI  
assigning a
specified property with a specified value to
the input subset;
RI  '- removing' a specified property
from the input suhset;
AO  - assigning a specified property
to the output subset;
RO  - removing a specified property
from the output subset.

The Question Answering System on Mathematical
Hodels
(QAS)
is
a powerful knowledge-oriented
interactive language originated at the University of
Manchester Institute of Science and Technology in
Manchester, England, a few years ago.
The languageis
available at several large computer installations and
its further development is going on in Manchester and
a t Georgia Institute of Technology.
EX

The next two operation codes
initiates solving the problem and printing the
results;
The idea of QAS represents,
in some, sense, ST - terminates the conversation.
significant
upgrading
of
the
human-computer
relations.
The QAS user does n,at require writing and
Finally, there is a group of operation codes
inputting the program as a sequence of instructions for displaying the information on the current status
to be followed by the computer.
Inst.ad the QAS user of conversation:
formulates
and
inputs a set of variables
(or
·properties· in QAS jargo~ and a set of equations DS  - displaying the list of defined
linking the properties.
He then asks questions hy
(i.e.
input or evaluated)
properties and
specifying which properties are given and which
their valueR;
properties he wants to be evaluated and printed out. LI - displaying the
list of input properties and
The computer automatically finds out the route of
their values;
solving the problem for a particular subset of given LO - displaying the list of output properties;
properties (input suhset)
and comes up with the LU - displaying the list of undefined properties.
answer.

Several single entries with the same operation
There are many programs and program packages code may be combined in one compound unicode entry
which do much the same for highly
specialized consisting of an operation code followed by single
applications and for limited varieties of input data. entry arguments separated by slashes:
The QAS differs
from any of the~ by offering a
general framework capable of dealing with models of
 l1.
any kind and purpose in a uniform way.
Several unicode and single entries separated by
The QAS provides a lot of problem-solving power semicolons may be c~mbined in one multicode entry.
at a
low expense in terms of required user's skill
and computer's resources.
It has been realized that
Besides the answers, the computer's responses
this is exactly what a lar~e proportion of the users include diagnostics of syntactic and semantic errors
of microcomputers and personal computers are after. in user's entries',
messages about inconsistencies
and
Consequently a simplified version, of QAS has been detected during the resolution of a model,
implemented on Compucolor microcomputers built by messages on under:determinacy or overdeterminacy of
the
probl
em.
Intelligent Systems, Inc., Norcross, Georgia 30071.

OAS outline and conversation rules

Sample conVersation

In the QAS, a model represents a basic unit of
information, comparable with a program in BASIC or
other high level programming language.
The model
consists of a list of properties, a list of equations
and, optionally, a related data base for
relevant
empirical constants,
notes etc.
The models are
stored and accessed by the QAS operating system as
data.
They may be grouped in moduli afcording to
their nature and purpose.

An annotated ·sample conversation in Appendix
exemplifies the main concept of QAS and the practical
aspects of its C~mpucolor version.
The conversation
covers 10 different topics from elementary math,
geometry,
physics, chemistry and economics collected
in the demonstration. modulus.

During the demonstration session
the
QAS
responded to over 40 compound and single user's
entries and answered 30 questions, most of them with
The user-computer conversation contro.lled by multiple output, input or both (an equivalent of 100
QAS operating system goes through a sequence of single answers).
The user changed the topic of the
user's entries and computer's responses.
Each user's conversation 12 times.
His entries in the Appendix
entry consists of a two-letter operation
code and, are underlined.
They were composed of some 1000

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 183

characters. Our comments are framed.

PhD from Manchester. England.
Mike Kazmierczak studies Textile Chemistry.
The asterisks at the property names in the For the last two years he has been interested and
computer's responses indicate elements of
input active in computer programming. system analysis and
subsets. We were not able to show the enhancement of software development.
computer-user communication peculiar for Compucolor
QAS: user's entries are echoed in green characters.
the answers appear in enlarged yellow characters, and
white, purple,
red and flashing red characters are
Reference
used for inconsistency messages, prompts etc.
(1) Konopasek. M., ·An advanced question answering
system on sets of algebraic equations·,
in
'Proceedings
of
the European Conference on
How does the QAS work?
Interactive Systems'.
ed.
D.
Lewin, Online
Publications. Uxbridge. England, 1975.
The demonstrated flexibility and versatility of
QAS is based on two interrelated original ideas:
1)
representing
a mathematical model by elementary
equations linking up to three listed or auxiliary
properties:
2) an algorithm for automatic resolution
of a set of elementary equations by a consecutive
APPENDIX
substitution procedure.
For example the 19 elementary equations of the
·Circle Geometry· model is represented by a 4x19 RUN
»>COMPUCOLOR QUESTION ANSWERING SYSTEM«<
integer matrix:
additional information includes 5
numerical constants, 5 integer parameters of the
Our first enquiry, after loading the QAS
model, 10 property codes, the model name, and also
operating system
and
the
demonstration
full property names, original constitutive equations
modulus.
is about the list of available
and notes to be displayed when required.
models:
In
the
current Compucolor QAS the whole? ~
QAS MODELS: DEMONSTRATION MODULUS
operating system is writtp.n in BASIC. There are two
TEMP - TEMPERATURE CONVERSION
parallel arrays, one storing all the property values
UNIcq - TRADITIONAL AND METRIC UNIT CONVERSInN
and the other indicating the status of the property
TRIAN - ELEMENTS OF TRIANGLE
(given, evaluated
or
undefined).
During
the
CIRCL - CIRCLE GEOMETRY
resolution of the model all the elementary equations
QUADR - QUADRATIC EQUATION
are consecutively examined and solved whenever a
PROJ - CLASSICAL PROJECTILE PROBLEM
single un de f.i.ned property appears.
ELPRM - ELECTRICAL PROPERTIES OF MATTER
CHEMl- CHEMICAL COMPOUNDS
A more deta iled description
of
the
Q AS
LOAN - LOAN REPAYMENT PLAN
operating system is beyond the scope of this paper.
BREPO - BREAK EVEN POINT
Some more information may be found in (1).
We can pick up and ask questions on any of
the models. Let's ask. for an easy start, to
convert boiling point of water 100ne to OF:
then we remove TDC from input subset and ask
what is body temperature 98.6°F in °C and OK.
A fter that we let read in and display the
projectile model.

Con c 1 u s i o n
Our first experience with the microcomputer
version of QAS amazes everybody including ourselves.
It is hard to believe that one gets that level of
intelligent response from 8k BASIC + 8k OAS operating
?
system + some space for the model information.

R~I

TEMPjAI TDC 100jAO TDFjEX

ANSWER:
TDF
212
The Compucolor QAS is now ready to ·learn·
models from various scientific
and
engineering
disciplines,
and to be used for investigating and ? RI TDCjAI TDF 98.6jRO TQFjAO TDClTDKjEX
solving problems in a way described in the preceeding
37.
ANSWER:
TDC
chapters.
Further development of the microcomputer
310.15
TDK
version of QAS will very much depend on the interest
and response of the users' community.
There are
R~I
PROJ
j
D~I
?
numerous features of the ·big· QAS which can be
conveniently
implemented
in
the
.nicrocomputer
PROJ - CLASSICAL PROJECTILE PROBLEM
environmentD entering new models and data bases in
free source format, iteration procedures for solving
INITIAL VELOCI'rY OF PROJECTILE (M/SBC)
1 VEL
sets of simultaneous nonlinp.ar equations and for
MAX HEIGHT OF PROJECTILE TRAJBCTORY (M)
2 H
optimization, sensitivity analysis using approximate
ANGLE OF OEPAR'rURE (DEG)
3 ANG
partial derivatives of output properties with respect
RANGE (M)
4 RNG
to input properties, accepting definite integrals and
5 TIME TIME REQUIRED TO TRAVEL THE RANGE (SEC)
differential equations in the models etc.
On
the other hand the development of QAS-like
higher level languaqes for large computers
may
benefit from the micro-QAS confrontation with the
needs and limitations of the users of personal
computers.

Authors
tlilos Konopasek is teaching at Georgia Tech.
He has been been involved in computer applications in
textiles and elsewhere for 15 years.
His current
research interests and activities cover interactive
systems, computer aided desi')'" pattern pack.ing and
covering and nonlinear mechanics.
He received his
first degree in textile technology from Leningrad and

1
2
3

H=.05097*(VEL*SIN(PI/180*ANG»**2
TIME=4*SQRT(.0 5097*H)
RNGzVEL*COS(PI/180*ANG)*TIME

? AI VEL 400/RNG12000:AO ANGjEX
ANSWER:

ANG

23.6843

How does the range change if
increases to 25 degrees?
Let
properties be printed:

the

all

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

?RI RNG;AI ANG 25;1'.0 ALL;EX
ANSWER:

*VEL
H

*ANG
RNG
TIME

What is the radius,
arc and chord in a
Circular sector with the same area and a
central angle equal to the last a? toet's ask
the model CIRCL:

400
1456.57
25
12494.5
34.4654

? RM CIRCLjDM

What is the range in miles? We can use the
unit conversion model UNICO:
? RM UtHCO;AI 14 12494.5 ;1'.0 1011 ;EX

ANSWER:

1011

PAGE 184

7.76372

Let's ask a few questions about triangles:
? RM TRIAN;AI ALPHA 62.8/BETA 75.26;1'.0 GAMMA/C;EX
***Il~SUFFICIENT DATA FOR C
DEFINE A
OR B
OR REC
? OS GAMMA
GAMMA 41.9398

CIRCL - CIRCLE GEOMETRY
1
2
3
4
5
6
7
8
9
10

R
0

P
A
PHI
L
SRA
STA
STH
STC

CIRCLE RADIUS
CIRCLE DIAMETER
CIRCLE PERIMETER
CIRCLE AREA
CENTRAL ANGLE (DEG)
ARC LENGTH
SECTOR AREA
SEGMENT AREA
SEGl1ENT HEIGHT
SEGMENT CHORD

2
3
4
5
6
7

D=2*R
p..PI*D
AzPI*R**2
L=PI/ l80*PHI*R
SRA=PHI/ 360*A
SIN(PI/360*PHI)=STC/2/R
STH-R-SQRT (R. ·2- (STC/2)· *2)
STA-SRA-STC/2* (~STH)

4

PDW/T

1

The two angles are, of course, not enough for
evaluation of C and the QAS prompts what
properties should be added to the input
8
subset (including the radius of escribed
circlel). The angle GAMMA has obviously been ? AI PHI 28.95521SRA 6.05154 ;AO R/L/STC; EX
calculated and its value was displayed when
asked for.
ANSWER:
R
4.8938
L
2.47315
Let's define the side A and print out all the
STC
2.44691
triangle elements including the triangle area
and the radii of inscribed, and escribed
Another
question:
What
is the minimum
circles:
cross-sectional area of an aluminum conductor
40 m long for maximum resistance of 25 0 hm?
? AI A 2.5 ;1'.0 A/B/ALPHA/BETA/RIC/REC/AREA;EX
Let's read and display the model first:
ANSWER:
*1'.
2.5
? RM ELPRM; OM
n
2.71833
C
1.87862
ELPRM - eLECTRICAL PROPERTIES OF MATTER
*ALPHA
62.8
*BETA
75.26
CURRENT (AMP)
1 I
GAI4MA
41.9398
2 R
RESISTANCE (OHM)
AREA
2.27099
DIFFERENCE OF POTENTIAL (VOLT)
3 V
RIC
.639991
LENGTH OF CONDUCTOR (101)
4 L
REC
1.40542
CROSS-SECTIONAL AREA (MM2)
5 A
RESISTIVITY (OHM.M)
6 RS
Supposing that
instead of ALPHA the CE2 is
7 W
ENERGY (JOULE)
given and we want to examine the influence of
B T
TIME (SEC)
BETA in the interval between 60 and 80
POWER (WATT)
9
P
degrees. We can use a multiple assignment
mode and get all the results in tabular form.
1 I=V/R
If the a
is not removed from the input
2 R=RS*L/(A/10**6)
subset a
contradiction is indicated and OAS
3 P-I**2*R
prompts what to do about it.
? AI C 21BETA 6 60 64jRO ALLjAO B/GAMMA/AREA;EX
***CONTRADICTORY DATA
REMOVE A
OR C
OR ALPHA
OR BETA
? RX ALPHA; EX
"BETA
60
64
68
72
76
80

B
2.29129
2.42204
2.55028
2.67579
'2.79835
2.91779

GA~!MA

49.1068
47.9175
46.6459
45.3052
43.9061
42.4571

AREA
2.16506
2.24699
2.31796
2.37764
2.42574
2.46202

NOTE: DATA BASE WITH VALUES OF RS FOR MCaALUMINUM
CARBON COPPER GERMANIUM GOLD IRON LEAD
MERCURY PHOSPHORUS PLATINUM SILVER SULFUR
? AXMC ALUMINIUM/R 25/L 40;AO AjEX
**.MC ALUMINIUM NOT LISTED
* •• INSUFFICIENT DATA FOR A
DEFINE RS
? AI MC ALUMINUMjEX
ANSWER:

A

.04208

(The word ALUMINUM was misspelled at first
and consequently the input subset was short
of RS.) What would be the current, power and
energy loss per hour if we replace aluminum
by copper?

How do the a, fJ, Y
and area change if we
assign b-5? The cos.i.ne theotem does not like
(a+c»b and relevant message is printed.
We? AI MC COPPER/A .04/V 121T 3600;1'.0 I/li/P;EX
reassign c and get the solution:
***CONTRADICTORY ilATA
REMOVE R
? RI BETA;AO ALPHA/BETA;RO B;AI B 5 ;EX
OR L
***S IN OR COS > 1
OR A
? 1\1, C 5; EX
OR RS
ANSWER:

ALPHA
BETA
GAMMA
AREA

28.9552
75.5227
75.5227
6.05154

We forgot to. relllove from the input subset the
resistance R which, of course, would change.
? RI R;AO R;EX

FIRST COMPUTER FAIRE PROCEEDINGS

ANSWER:

I
R
*1'.
W
P

.740741
16.2
.04
32000
8.88889

1 RM CHEMl: AI El AG/E 2 SB/E3 SiLl

107.88
121.76
32.066

? 1'.0 PlIP2/P3;EX
***INSUFFICIENT DATA FOR P1
***INSUFFICIENT DATA FOR P2
***INSUFFICIENT DATA FOR P3

1 !&.
1 Al

? Al

? RM

?

PAGE 186

? RM LOANiAI PR 13000/PER 8/1 R 60S/PAYS 1 ;1'.0 PAY/AMT;EX

In
the
model
CHEMl
the non-numerical
properties "Kind of element"
El. E2 •••••
are supported by data base with all the
values of atomic weights.
Let"s ask for
percentages Pl. P2 and P3 of silver. antimony
and sulfur in stephanite A9SSbS4; we can list
the input subset after assigning the elements
and see that indeed the atomic weights are
there:
*AW1
*AW2
*AW3

BOX 1579. PALO ALTO CA 94302

ANSWER:

PAY
AMT

? AI PAYS 12/PAY 150;Rl
ANSWER:

2135.08
17080.7
PI~I~

PER
*PAY
AMT

;1'10 PF.R;EX
10.0648
150
18116.7

11hat will the quarterly installment PAY and
the total amount repaid AMT be for principal
sum of $4.500 loaned for 2.5.10.15 years at
an interest rate of 7. 8 and 9'1 The ·PAYS·
is misspelled and rejected; we list the input
subset and find out that all the rest of it
is O.K. Then we correct the PAYS and proceed
with output
specification and execution.
Note the modification of the print-out format
in multiple assignment mode!

? RI ALL:AI PI{ 4500/PER 4 2 5 10/PAIS 4/1 R 3 7 8
***PROP PAIS UNKNOWN
? LI
*PR
4500
Strange situation; no prompt indicates that
7
a 9
*1 R
the input subset is short of more than one
*PER
2
5
10 15
property.
Listing of undefined properties
shows that we missed the numbers of atoms in ? AI PAYS 4;RO ALL;AO PAY;EX
The following question is about
a molecule.
a
total weight of stephanite containing 1500
PAY
lb of silver and the corresponding weights of
7
*1 R
8
9
antimony and sulfur.
Finally.
the UNICO
*PER
model is used for converting the weights in
622.228
630.865
639.528
2
pounds to metric tons.
274.377
281.764
5
289.229
167.658
10
160.1 75
175.298
W1 W2 W3 TW GMW P1 P2 P3 P4 Nl N2 N3
123.519
131.433
139.566
15
N1 5/N2 liN 3 4 ;EX
? no PAY;AO AMT;EX
68.3283
ANSWER:
Pl
15.4239
P2
AMT
16.2478
P3
7
*1 R
8
9
*PER
Wi 1500:RO ALL;AO TW/l'I2/I'13 ;EX
4977.83
5046.92
2
5116.22
5487.54
5635.:17
5784.58
5
ANSWER:
112
3311.598
10
6406.99
6706.33
7011.9
356.685
113
7411.14
7885.99
8373.97
15
TW
2195.28
Four questions on a "Break even point" model:
UNICO;AI LB 3 338.6 356.7 2195.3;1'.0 T;r::X
What is the ct-itical volume of production if
the fixed cost FAC.
cost per unit CPU and
or
*LB
sales revenue per unit SRPU are $14.000. $34~
.153586
338.6
and $485 resp~ctively? l'Ihat profit PRF can we
.161796
356.7
expect if the sales volume increases to
.995771
2195.3
SV=120? How should the cost per unit CPU
change in order to secure a profit of $4.000?
The quadratic equation model not only can
How. under these conditions. may the price be
find the roots of a quadratic equation.
reduced if the sdl~s volume SV=150. 180. 210.
Following the basic concepts of QAS,
we can
240?
ask
for the values of anyone or two
coefficients aiven one or both roots:
? RM BREPOiAI FAC 14000/CPU 340/SRPU 485;1'.0 BEP;EX

RM QUADR;AI A -4/B -6/C 18;1'.0 Xl/X2;EX
ANSWER:

Xl
X2

-3
1.5

l\NS~-lER

8

*X1
X2

ANSI~ER

6

3

A
8

·Xl
·X2

-2.18182
.545455
3

-2.75

Now something on loan repayment: What is the
installment PAY and total amount repaid AMT
for principal sum PR of $13.000 loaned for a
period
PER=8 years at an interest rate
IR=6.5% with PAYSool installment per year?
And how would the PER and AMT change if we
pay $150 per month?

96.5517

:

BEP
PRF

96.5517
3400

? AI PRF 4000iRl CPU;AO CPU;EX

-1.5

ANSI1ER:

? RI 1'.:1'.1 X2 -2.75;1'.0 A;EX
ANSWER:

BSP

? AI SV 120 ;1'.0 PRFjEX

? RI 8;1'.1 Xl 3;1'.0 B;EX
ANSWER:

:

CPU
BEP
·PRF

335
93.3333
4000

? AI CPU 33'5/SV 4 150 180;IU SRPU;AO SRPU;EX
*SV
150
180
210
240

SRPU
455
435
420.714
410

BEP
116.667
140
163.333
186.667

FIRST COMPUTER .FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 14302

Finally, we return to CHEMl
model
and
demonstrate !tR versatil.lty !)y asking (a) .how
many grams of potassium chlorate KClO, must
be decomposed to give 0.96 '1 of oxygen, and
(b) what is the percentage composition of
sucrose and glucoRe. Then we t.erminate the
lconversat ion.
? RM CHEMl
? AI El KlNl l/E2 CLlN2 lIE3 O/M3· 3/10
ANSWER:

TW

.96jAO TtljEX

2.45114

? Rl ALLjRO ALL:AO Pl/P2IP3;AI B1 C/B2 liIlD 0
? AI Nl 121M2 22/N3 ll;EX;AI Nl 6/N2 12/N36;EX;ST

READY

ANSWER:

PI
P2
P3

42.1059
6.47838
51.4157

ANSWER:

P1
P2
PJ

40.0007
6.71396
53.2854

PAGE 188

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 187

USE OF A PERSONAL COMPUTER IN ENGINEERING EDUCATION
2. Graphics Programming in BASIC
Roger Broucke

The 64 graphic signs are normally numbered from 0 to
63 (decimal) or from 0 to 77 (octal). For instance, the
sign in Figure 1 is normally number 25 (octal) or 21 (decimal). The sign 0 is all white while 63 is black. In
using these signs for curve-plotting we will use only six
of the 64 available signs. They are the six characters
that have only a single black bloc. Their identification
numbers are 1, 2, 4,10,20, and 40 (octal). Let us note
that more complicated graphics signs can be constructed
by logically OR-ing the above six signs with each other.
This will turn out to be important in our software{Fig.2).
Before a curve can be plotted for a function such as,
for instance, y = sin(x) , it is necessary for the user
to define the upper and lower limits for both the abscissa
x and the ordinate y. In other words, we assume the
four numbers ~in' xmax and Ymin' Ymax to be given by
user. This defines the user's plotting surface and coordinate system, as Shown in Figure 3.
It will be convenient to introduce a new system of
screen coordinates (x s ' Ys) as shown in Figure 4. As
we see, Xs is an integer increasing from 0 to 47 when we
move down on the screen, while Ys is an integer increasing from 0 to 63, left to right on the screen. This system
is particularly easy to use for plotting with the Video
board. We assume here the minimum version with 32 characters on a line. The reader will have no difficulty
adapting our formulas to the 64-character line (ys
from 0 to 127).
63

Aerospace Engineering
ENL·414B
University of Texas
Austin TX 78712

1.

In troducti on.

When, in the beginning of 1974, Intel's new 8080
microprocessor was announced, with an impressive cycle
time of 500 nanoseconds, it rapidly became clear that
we were entering a new era in computing. Indeed, just
about one year later, in January 1975, the ALTAIR, a
general purpose computer based on the Intel 8080, was
announced and made ava·i1ab1e in kitform.
In November 1975, we decided to evaluate this new
type of research tool by actually assembling and testing
such a computer. It has now been working since January
1976 and it is being used regularly for small research
projects and for teaching purposes in the department of
Aerospace Engineering and Engineering Mechanics at the
University of Texas in Austin.
The computer has been purchased with our own funds
and consists of a CPU, 14K of static RAM, lK of ROM, a
serial I/O port with IBM Selectric, a Keyboard, a Tarbell Audio Cassette system and a Polymorphics Video
system with a standard T.V. set. We believe that this
is about the minimum configuration that will allow the
solution of most small research projects.
The software we use mostly is an operating system
residing in lK of ROM, a resident assembler and text
editor as well as a BASIC interpreter. Besides this we
also wrote a Fortran-4 Cross assembler which works on the
y
CDC 6600 computer. It should be said that due to its
short wordlength (8 bits) such a computer turns out to
o
be fairly slow in scientific applications. The software
floating point operations take an average of 5 milliy max -+--seconds each, with the standard IBM-360 format (8 + 24
bi ts) •
The power of such a system is seriously increased
by using the Audio Cassette Recorder as mass storage for
y min -+-Compilers, assemblers and user-type programs. The system uses a tape density of 800 bits per inch and transmits 1500 bits per second. This allows us for instance
47
to load the BASIC interpreter in about 35 seconds. However, the most attractive feature of these inexpensive
computers is the flexibility of interfacing with a standard TV set for graphics and numerical displays.
The Video System can display 16 lines of 64 characF,igure 4
Figure 3
ters on the screen and 128 different characters are available. Besides this, 64 special signs are available for
The conversion from the user coordinates (x,y) to
graphics applications with a screen resolution of 48
the screen coordinates (xs'ys) can be easily performed
lines by 128 columns. This feature makes it extremely
with
the formulas
attractive for classroom applications. We intend to
describe here a variety of applications which have been
implemented sofar in relation with the activities and
courses offered in the school of Engineering in Austin.
" • INT
As was said before, we use 1K of ROM-memory for storage
of several utility programs such as the software needed
to drive the video system. However, besides this machinelanguage software we also use a flexible graphics subroutine written in BASIC. We have used this subroutine
Y, • tNT
for most of the applications that are described ~e10w and
for this reason we will first describe the principles of
our graphics methods. (Section 2 following.)
where INT means that we take the. integer part of this numAs the reader will see, many of our applications reber. It should be noted that Xs and Ys are the coorquire the numerical resolution of systems of ordinary difdinates of a particular black block on the screen, corresferential equations and we will thus describe one of our
ponding to a pOint (x,y). Next we transform Xs to
most standard subroutines for this purpose in Section 3.
Th~ remaining sections will describe some typical applithe line number x~ and Ys to the character number
cations.

"

r' [;::;m'~;

r' [~~~,~.

40
32
Figure 1

20
16

10

4
4

8

Figure 2

2
2

'1 octal
1 decimal'

· FIRST COMPUTER FAIRE PROCEEDINGS
y~

BOX 1579, PALO ALTO CA 94302

by the formulas

x~ = INT (;s]; y~ = INT (~,
in consequence of the facts that we have three blocs per
line and two blocs per character. Finally. we have to.
determine' the address in the screen memory of the byte
containing the representation .of the point (x,y) • Let
us assume that Ao is the address of the· fi rst location
of the video memory. This corresponds to the point
xs = ys =0 andi sin the upper 1eft corner on the
screen. In our present .system we use Ao ~ 31744 (deci1IIIll) = 76000 (~ctal). It is known thatAo should always
be a multiple of 210 = 1024. In our case Ao = 31*2 10 •
This gives us the last one K of memory that can be used
with PEEK and POKE in'the MITS 8K-BASIC language. For
any given point (x,y) , the memory address can then be
computed with the formula
A = Ao + 64x~ + y~ •
'Let us now consider the question of choosing the appropriate bloc, among the six shown in Figure 2. corresponding to a given' point (x,y). First we will determine
if a left bloc (octal 40. 20, or 10) has to be used or a
right bloc (octal 4, 2, or 1), according to the 10's
given in Figure 2. We can verify that a right or left
code oc can be computed as follows
a = Ys - 2*(ys/2) = ys(MOD 2) •
When a = 0 we have a left bloc, while when a = 1 we
will have a right bloc. Next we have to make the selection between an upper, middle, or lower bloc according
~o the code
II = Xs - 3*(x s /3) = Xs (JIOD 3) •
The values O. 1, and 2 respectively correspond to the upper, middle, and lower blocs. The 10. number 1, 2. 4, 8,
16, or 32 can thus be determined as a function of a(=AL)
and il(=BE) with the use of three lines of BASIC programming:
130 10=4: IF BE=l THEN 10=2
140 IF BE=2 THEN 10=1
lSO IF AL=O THEN ID=INT(8*10 + O.S)
The constant O.S is added in the last statement. in order
to force the integer value (INT) of a number such as
7.99999 to be 8 rather than 7. Let us· also note that the
above three statements can be replaced by a single statement (which ~ however result in slower execution times)
such as:
130 10=INT((8-7*AL)*2t(2-BE)+0.S)
or also the following statement
130 ID=INT(2t(S-3*AL-BE)+0.S) •
As was said above this single statement may be slightly
slower due to the presence of the exponent. We again
add a quantity O.S before taking the integer part because
of the possibility of a negative round-off'error in the
exponent subroutine.
To put the appropriate block 10 on the screen at the
address A(=AO) we could use a statement such ,as
170 POKE AO,IO •
However, this destroys the five neighboring blocs and it
is thus better to "OR" the new bloc with whatever is already present:
170 POKE AD. PEEK(AD) OR 10 .
To do this, one should initially erase the whole screen.
This can be done with a Single line of coding, of the
following type:
100 FOR 1=31744 TO 32767.: POKE I.O:NEXT I •
To finish this ,section we display below a short program
which ,illustrates all the principles which have been
explained. The sample program plots the function
y = sin(x) , (statement 117). The statements 102 and
103 give the upper and lower limits of xa'ndy:'
Xl, X2, Yl, and Y2. The statement 104-determ1nes the
number of pOints to be plotted or the vertical resolution on the screen. All the other statements have

PAGE 188

been previously explained. By adding·a RETURN statement just after line lSO, we obtain a floating subroutine, starting at line 120, having a point X,y as
input.
l~~ FOR 1=31744 TO 32767
l~l POKE I.
: NEXT I
1~2 Xl=-6:X2=6
le3 Yl=-1.2:Y2~+1.2
le4 NP=l
leS OE=(X2-Xl)/NP
le6 FOR X=Xl TO X2 STEP DE
117 Y=SIN(X)
12e XS=INT(47*(Y2-Y)/(Y2-Yl»
122 YS=INT(63*(X-Xl)/(X2-Xl»
124 AL=INT(YS-2*INT(YS/2»
126 BE=INT(XS-3*INT(XS/3»
13e ID=INT(2t(S-3*AL-BE)+.S)
14e AD-INT(31744+64*INT(XS/3)+YS/2
lS~ POKE AD, PEEK(AD) OR 10
16e NEXT X
17~ END
3. Numerical Integration of Systems of Differential Equations
1n BASIC
We will show here a subroutine for the numerical integration of systems of ordinary differential equatio~s on
a small computer. It uses the standard fourth-order line
Runge-Kutta method. The subroutine is written in BASIC
and, thanks to the use of.multiple statements on a line
it is coded in only ~ lines. It is a general purpose
subroutine for the integration of a system of an arbitrary number of first-order differential equations. It
is well known that second-order systems can be reduced to
twice the number of first-order differential equations.
The listing of the subroutine is shown below. It
starts with the statement number 970 and should thus be
called by the statement: GOSUB 970. Each call to the
subroutine will perform only one integration step and return to the main program. There are three important Input
Parameters that must be defined before entry in the subroutine:
DT is the integration step size.
NEQ is the number of variables or equations.
XO is an array (with dimension NEQ) containing the
initial conditions for each integration step.
The output consists of the array Xl with the
values of the variables at the end of each integration
step. The dimension of Xl is also NEQ. The main
program should transfer the content of Xl to XO at
the end of each integration step, as the output Xl
gives the initial condition XOfor the next step.
The subroutine uses three other symbols U, F , and
o which are arrays used for intermediate storage.
The user should declare them with a dimension equal to
NEQ in the main program, together with the two other
arrays XO. Xl •
The Runge-Kutta subroutine calls another subroutine which has to be written by the user for each particular application. This subroutine evaluates the
right sides of the differential equations, i.e., the
derivatives of all the variables. The derivative subroutine is called byGOSUB 700 and has to start with
the statement number 700. The input to the subroutine
is the array U (set by the Runge-Kutta subroutine)
and the output is the array F.
As an example let us assume that we want to integrate the system of two simultaneous differential
equations

x=i-i.
Y=2xy.
We then have to write the derivative subroutine:
700 F(l) = U(l) * U(l) - U(2) * U(2)
701 F(2) = 2.0 * U(l) * U(2) .
702 RETURN
We also give below an example of a main program
that would integrate the above system with a given
step DT and NST steps per solution. This program
will print a line at 'each integration step.
The statement 110 erases the screen first and
the statement 16S plots the solution on the screen
by calling the video subroutine explained in the pre-

FIRST COMPUTER FAIRE PROCEEDINGS

vious section.
102 DIM XO(2),Xl(2),U(2),F(2),D(2)
103 NEQ=2
105 INPUT NST,DT,XO(1),XO(2)
110 FOR 1=31744 TO 32757:POKE I,O:NEXT I
115 T=O.O
150 FOR N=l TO NST
155 X=XO(1):Y=XO(2):GOSUB 1115
170 GOSUB 970
175 T=T+DT
lBO PRINT T,Xl(1),Xl(2)
190 FOR 1=1 TO NEQ:XO(I)=Xl(I):NEXT
200 NEXT N
210 GOTO 105
97~ FOR 1=1 TO NEQ:U(I)=X~(I):NEXT I:
GOSUB 7~~
971 FOR 1=1 TO NEQ:D(I)=F(I)*DT:U(I)=
X0(I)+.5*D(I):NEXT I:GOSUB 700
972 FOR 1=1 TO NEQ:F(I)=F(I)*DT:D(I)=
D(I)+2.*F(1):U(I)=X0(I)+.5*F(I)
973 NEXT I:GOSUB 70~
974 FOR 1=1 TO NEQ:F(I)=F(I)*DT:D(I)=
D(I)+2.*F(I):U(1)=X0(I)+F(I)
975 NEXT I:GOSUB 700
975 FOR I~l TO NEQ:Xl(I)=X0(I)+(D(I)+
F(I)*DT)/5.0:NEXT I:RETURN
999 END

4.

BOX 1579, PALO ALTO CA 94302

Earth:

Xl = -p , Yl = 0 ,

Moon:

x2 = 1 - p, Y2 = 0 ,

PAGE 189

so that the origin is the Center of Mass of the system.
In BASIC the integration time on the Altair is 2 seconds per step. In the above equations. of motion, the
dots indicate derivatives with respect to time. Figure 5 displays a typical orbit in the Earth-Moon system.
The use of the computer and T.V. display in the
classroom allows us to make orbital mechanics experiments in courses that used to be theoretical and
highly mathematical only, without any associated laboratory. These experiments are helpful to get the students acquainted with many abstract concepts (such as
equilibrium points and Coriolis Forces).

..",-

/

Orbital Mechanics Applications
The micro-computer is most useful in Orbital
Mechanics because of its capability to display orbits on the T.V. screen in real time. By Real Time
we mean that the display is dynamical and that the
motion of a particle is visible on the screen as it
is integl-ated in the computer. This gives the student the correct intuitive feeling of the speed.
Among the first experiments to be made is the Kepler
Problem. In order to have the maximum connection
with the real world, the problem is introduced to
the student by illustrating the motion of a rocket
launched from the surface of the earth. The Earth
is assumed circular. The question's of maximum range
and minimum initial energy are explained and illustrated first. Next the problem of elliptic trajectories and escape are naturally introduced. Finally
the complete discussion of the elliptic, parabolic,
and hyperbolic solutions of the Kepler problem is
made.
Another orbital probelm which is an order of mag-lj),
nitude more difficult is the restricted three-body
problem. We introduce this in the undergraduate
classes with the example of a spaceship traveling in
the Earth-Moon space under the gravity effect of both
the Earth and the Moon. The applications to a space
colony stationed at a Lagrange Point is impressive to
the student. This example a.11ows us'to illustrate
the concepts of rotating Coordinate Systems, equilibrium points ( = Lagrane Points), centrifugal forces
and Coriolis forces. With the program that was made,
it is possible to let the student visually discover
all the equilibrium solutions by placing a satellite
with zero velocity on the T.V. screen and observing
its motion.
This problem also allows an excellent introduction of the notion of Coriolis Forces. When the orbit
is generated on the screen it is very easy to note
that the spaceship seems to be influenced by an artificial fprce which is proportional to the velocity and
perpendicular to it. On the T.V. screen this is visible because of the loops in the orbit (the satellite
usually appears to deviate or turn to the right!).
The orbits are obtained in the computer by numerically integrating the equations of motion

X-

2y - x = -(1 - p)(x - xl)/r~ - p(x - x2)/r~

y + 2x

- y = -(1 - p)y/r~ - py/r~

with a classical fourth-order Runge-Kutta method. The
parameter p is the Earth-Moon mass ratio and in the
rotating coordinate system which is used, the Earth
and the Moon have the coordinates:

"
5.

-Figure 5

Non-Linear Mechanics Applications.
In the applications to Non-Linear Mec~ani~s we
find many complex non-integrable systems which have no
analytical solutions and which are too complicated to
be studied, even on a large digital computer. For this
reason, we have studied several simplified non-linear
systems which can be integrated on a small computer,
while they still have most of the essential properties
of the large systems. In other words we have attempted to find the most simple non-linear dynamical systems which are still non-integrable by analytical means
or by quadratures. These systems have two degrees of
freedom and they are represented by very simple equations of motion. They can thus be integrated numerically on a small computer and the solutions can be
displayed on the T. V. screen. These systems have very
little physical meaning, except that they are perturbed harmonic oscillators in two dimensions. Up
to now we have studied a half a dozen of these systems in detail. The solutions all have the standard
property of the large scale non-integrable systems.
These properties can be explained very easily to the
students by displaying the integrated solutions on
the T.V. screen in the classroom.
An example of such a non-integrable conservative
system is given by
x = -Ax - a(y2 _ £x 2 )
y = -Ay - 2a xy ~
where A, a , and £ are constants. We have made
detailed studies corresponding to (A=l, a=l, £=1)
(A=l, a=l, £=0) , or (A=O, a=l, £=1) and several
other values (Figure 5).

FIRST COMPUTER FAIRE PROCEEDINGS

_-4

......~i:::;-::;7".J1J11--,"'1
I.

•

Figure 6

~-r:Jto~

.t-;.J

PAGE 190

BOX 1579, PALOAL TO CA 94302

Xl

=

X COS a - s(y - xm)sin a ,

X2

=

X sin

,,-"'fa

~""~..Q2J-q....
Figure 7

+ s(y - xm)cos

a

The object here is to start with a given arbitrary
point (x, y) and generate the new point (xl' Yl)
which becomes then the input point in order to generate a new pOint (x 2' Y2) with the above formulas,
and so on. Thousands of successive pOints may be generated and displayed on the T.V. screen. The interest
of the real-time display is that the students get an
idea on how certain structures evolve or how some
points are generated in a well-defined order. Without
the real-time display, the student will see only the
final pattern with all its points and he will thus miss
much important information.
The above transformation is area-preserving when
S is +1 and it reduces to the Henon-transformation
when the integer exponent is +2. The only input for
this program is the factor S ,theexponent m, the
rotation angle a , and the initial point (x, y) .
We use as Plotting limits the values -1 to +1 for
both coordinates. The student can experiment with
different initial pOints in order to discover such
structures as islands, regular curves, irregular (ergodic) patterns, and fixed points. The machine generates about 5 to 10 points per second, which seems
to be an appropriate speed to allow the mind to memorize the construction of a pattern. Some typcia1 results are shown in Figures 8 and 9 .
I

r:;r'

I-a _

a

•

Io
Figure 8

6.

Electromagnetic Applications.
A similar application which has been implemented has to do with the motion of a charged particle
(electron) in the magnetic field of dipole. This
is an important problem in the undergraduate mechanics courses because it illustrates the phenomenon
of forces which are perpendicular to the ve10cityvector.
The equations of motion in this problem are

~

Y=

+ax/r 3 •
In these equations, a. is a constant which is proportional to the magnetic moment of the dipole and
the charge of the electron. The solutions usually
display a large number of almost circular loops but
the velocity is constant (in magnitude). A typical
solution is shown in Figure 7.
7.

= _a.Y/r 3

,

Area Preserving Mappings.
In order to illustrate some important mathematical transformations which occur in the study of nonintegrable dynamical systems, we have p~ogrammed the
following mapping on the Altair Computer:

II

.

II .... '

.-.;.....

rI

=-'4-

... .....

. -t

I

... ..

·1 . . - ·~

., .,.":~~-'

.....

".
I'

•••-

-

Figure 9

FIRST COMPUTER FAIRE PROCEEDINGS

THE MICRO<;OMPUTER EDUCATION PROCESS:
WHERE WE'VE BEEN AND SOME GUESSES ON
WHERE WE'RE GOING
Merl K. Miller

Matrix Publishers
207 Kenyon Road

Champaign I L 61820

BOX 1579, .PALO ALTO CA 94302

PAGE 191

Programmable LSI I/O chips
Interfacing to: analog devices, keyboards,
displays, cassettes, etc.
Software Design· & Implementation
Four implementation methods
Editors, assemblers, compilers
Assembly vs. high level languages (FORTRAN, BASI~
PL/M)
Integrating and Testing the HW and SW
What really useful tools are available
What tools should you build yourself?
Isolating and fixing HW and SW bugs
Technical Survey of Microprocessors and Microcomputers
Intel, Fairchild, Motorola, National, Rockwell
Signetics, Texas Instruments, Zilog, and '
others including the new LSI minicomputers
Boardlevel microcomputer systems - PROLOG, PCS,
CONTROL LOGIC, WARNER/SWASEY, and others
A systematic, application-oriented ·approach to
selecting the right microprocessor family
Selecting Development and test Equipment
Logic analyzers
SW simulators
Specialized microcomputer debugging equipment
Microcomputer development systems
Peripherals to buy
How to Get Started
What equipment to buy first
Pitfalls to avoid
Good information sources

As the hobby field moves away from its hardware orientation
the need for education grows. Although much can be learned
fro~ books, there is a growing interest in formal computer educat~on.
The education can be divided into three major categor1es: the short course, the university course, and the correspondence course. Correspondence courses are not fully developed but we will discuss one of them. However, in this paper
we will focus on "university" type courses and short courses.
A short course may be offered by anyone, but they are usually
of~ered by professional short course companies.
These companie~
such as Pro-Log, usually offer sophisticated courses. Pro-Log
offers an engineering oriented Microprocessor Architecture
course for either the 4040 or the 8080. Topics covered are as
follows:
Design Methods and Techniques
Modular Design - Top down structuring, bottom up
solving.
Integrating program design with hardware design.
How to use subroutines.
Patching - A simple pencil and paper method of
making program design changes.
Memory mapping - How to layout programs in memor~
Course 125 is a two-day course that assumes you have a basic
Documentation
ground~ng in microcomputers.
Each student receives a complete
How to prepare block diagrams and system flow
8080 m1crocomputer system to use during the course. In this
charts from product specifications.
course you learn each new programming concept immediatelY as it
The program assembly form - How to use it in the
i~ developed by the instructors.
Comparison of the most popular
design process. Symbology, conventions, visual
m1croprocessors are made when appropriate. Topics covered are:
design process. Symbology, conventions,
visual aids. Suggested standards.
Introduction to the ICS Microcomputer Training System
How to redline programs.
Hardware configuration
What the drafting department should do.
How to use the keyboard/display and built-in
Input/Output
commands
Connecting the microprocessors to dedicated I/O Exercise: Loading and executing a simple. program
Gates., lights, switches, shift registers, A
Exercise: Displaying results
to D and D to A converters, and other external
Software Fundamentals and Basic Techniques
loads. Includes program techniques for scanThe instruction cycle
ning, switch debounce, and noise rejection.
CPU register instructions - Exercise: Simple
Connecting microprocessors to peripheral I/O: TTY,
arithmetic
RS 232, printers, terminals.
Conditional testing and loops - Exercise: TimeMemory mapped I/O.
delay program - Exercise:· Testing individual
Interrupt.
bits
General
Storing/retrieving data in memory - Exercise:
A comparison of pupular microprocessors - 4004/
Sorting a data table
4040, 8080, 6800, and F8.
Simple I/O - Exercise: Using a·programmable I/O
The role of computer aided design - Assemblers,
port
compilers, high level. languages.
Subroutines - Exercise: A calculator program.
Advanced Software Techniques
If you are a computer store owner, ~ou may want to start a
Interrupt handling - Exercise: A vectored,
course of your own. Before we look at how you might start a
priority-interrupt response subroutine
short course of your own, let's examine a company that offers
Real-time programming - Exercise: Organizing the
both short courses and correspondence courses. Integrated ComI/O
puter Systems, Inc., was formed in 1974 specifically to teach
Block I/O - Exercise: Real-time input of a data
microp~ocessor short courses.
Two courses should be of partitable
cular 1nterest to you even though they· assume some scientific
DMA I/O - Exercise: Programming·a display
or engineering background. Course 102 is a one-day technical
Multiple precision arithmetic - Exercise: 16introduction and survey. Emphasis of the course is on design
digit addition
and development including: processor selection, I/O and softProgram Design
ware design, software implementation, development and test
Systems analysis
equipment, and what pitfalls to avoid. Topics covered are:
Specifying the program
Design approaches (top-down, structured programIntroduction
ming, modular design)
What is a micrOProcessor? a microcomputer?
Where High-Order Languages Fit In
Identifying suitable and unsuitable applications
BASIC
Fundamental Microcomputer Concepts
FORTRAN
Terminology
PL/M
Software (SW) - how it works; how it's developed
Macro's
Hardware (HW) - Basic microcomputer configurations
Utilization.of System Development &Test Equipment
The microcOlilp.uter design cycle
PROM programmers
The Hardware
Logic analyzers
Microprocessor architectures (4, 8, 16-Bit and
Debugging tool s
slices)
Full microcomputer development. system with
Memory systems design·- ROM, PROM,. RAM, CORE
peripherals
Input/output organization (programmable I/O,
Final
Problem - Implementing a Real-Time Traffic
interrupts, DMA}
.
Contro.11er·
Build or buy?
Specifying the problem
Interfacing to the External World
Partitioning the HW and SW
I/O port design

I"

"-

DATA_ltI..,.

,I

"

..-

,,
,

INSTRUCTION REGISTER

rl I'II

~---

MAPf'INGPRQM

-- -----, 1

CODE
MUX

Am211111

NEXT

ADOftESS
CONTROL

-

Am2911
uteRO-

PROGRAM
SEOUENCER

I

I

:-

Am2911
MICRO-

PROGRAM

•
I-

SEQUENCER

1

1

' .. IITS

J.

•

~

...,.11
MICROPROGRAM
SEOUENCER

J

H

OPERAND

SE~~

I
I

~r-

SHIFT

MIIX

I

r--'-

PIPELINE REGISTER

VECTOA

....P

PROM

IL

IJ
JRS

{}

Am2OO'

r---

t

-

......,

,--

BIPOLAR
MlCR<>

-

PROCfSSOR

PROCESSOR

I

I
'U'FER

ru
I I

SHIFT

MIIX

,

IJ l
STATUS
"EGISTU

1"

:0

~r-

~

~

C!

iTt
21
... 7'

>-

>-

>-

-

/

1&8115""~ ..

~

12.BITS

I

-Ccc

"'"

\
\

_I

~

DATA

CONTROL

G

Ammo
Cn + 4

' - - Co

'UFFER

~f<'"
06.BITS

-4 ~

I'

~

/

salTs

4

.

""~.
/

L-< cc

-

DATA

CONTROL

r

(
Pp-p-.

G

Ammo

L-<

---r

Cn + 4

Co
Cj

y

Ci+ 4

~1

~7

DATA
CC

pO-

L-<

CONTROL

G

0-

'----

U

r-

Ammo
Cn +4

Co

y

Ci +4

."

8·SITS

~r
~

m

m

t:I

Z

k7
CC

DATA
FULL
eMPTY

CONTROL

Cn +4

Co

en

~

~

.~

y

i--'

~

Ci + 4

I

4-SITS

Ii)

Am2930

Cj

I.

Am2920
a.SIT REGISTER

ADDRESS SUS (16 SITS)

g

~{

•

Cj

I.

12-SITS

4-aITS

\

(7
Pp-p-.

m

Am2920
eBIT REGISTER

Am2920

I

~

21

'7

8-81T REGISTER

,/.

/'

f-'L{

R'GOSTER
12-Am29201

J.

,/.

-

........'

IlIIOLAR
MICROPROCESSOR

1f-BITS

(7
PRIORITY
INTERRUPT

--

Am"'"

BIPOLAR
MICROPROC!SSOR

t---

\

Am29"

-

BIPOLAR
MICR().

,9-81T

'---

II

~

{}

A,8&81T

MICROPROGRAM MEMORY

'--r-

K.

-,."

•
II

-

..

A

IUS INTERFACI! REGISTER

I

rl

CONTROL

~ CON.'~~

y

~

r-

A

4~---'

Am29Q2

D

{j.

~

!2
"

Figure 1. Typical 16·Bit Microcomputer Design.

..IS~

m

CONTROL IUS

\.,

»
r-

g

Am2920
8-SIT ~EGISTER

U

o

V

FIRST COMPUTER FAIRE PROCEEDINGS

SW design including flow-charts
Design critique
Program implementation (using subroutines developed in class earlier)
Testing and debugging
Completing the documentation
Where to Go From Here
ICS also offers all of their course in a "home-study" mode.
For example, their new "ICS Self-Study Microcomputer Training
System" includes a complete ready-to-use microcomputer with
keyboard and display, educational monitor software, and a selfstudy text/workbook. The ICS courses are ideal if you want the
thorough background necessary for teaching classes in your computer store.
Now, let's turn out attention to how you might offer a
short course in your club 'or store. One easy way would be to
buy Digital Equipment's audiovisual course entitled "Introduction to Minicomputers". This audio/filmstrip series teaches
computer fundamentals to beginners. It is designed to be used
with the LaBelle Courier l6T playback unit, and is intended for
groups of about 10. Description is as follows:
17 programs
10 sets of student workbooks
10 student guides
10 sets of tests and answer sheets
1 managers guide.
This would lay it all out for you but it may be too expensive for your means. An alternative would be to attend a short
course or university course yourself and then devise your own
course. Such a course could be based on your knowledge of the
various equipment available and a group of appropriate books.
Following the table of contents of a book is also a good idea
if you supplement it with examples appropriate to your equipment. The most important thing about offering any course,
though, is to be well versed in your subject. You may want to
get someone from a university to help set up the course.
Let's turn our attention to the university type course.
Universities, junior colleges, and technical institutes are
just now starting to offer courses in microprocessors. Unfortunately most of these courses are offered as senior electives
and assume a good background in electrical engineering. A
typical course might look like this:

II
III
IV

V
VI

Review of Computer Fundamentals
a. number systems
b. computer organization
c. memories
d. 2's complement
Assembly Language Programming
Introduction to the 8080
Hardware Organization
a. pin functions
b. status information
c. machine cycles
Interfacing
System Components

This is excellent for someone who has the right background.
but it would be more applicable to most people's needs if it
could be taught at a less sophisticated level. Here is an
example of a less sophisticated course that is taught at Notre
Dame:
1.
2.
3.
4.
S.
6.
7.
8.
9.
10.
11.
12.
13.
14.
IS.
16.
17.

Introduction
Basic machine structure
Stored programs
JUMP instructions
Use of memory for data storage
System Utility software
Uses of terminals for input and output
Editors
Symbolic assemblers
Subroutines
Microcomputer architectore
Interface devices
Interrupts and real-time clocks
Peripheral equipment
Comparison of various processors
Minicomputer vs. microcomputer
Resident software vs. cross-assemblers and timesharing services
If your local college or university doesn't offer a microprocessor course, you may be able to convince them to offer an
appropriate one, if you follow these suggestions:

1.

2.
3.

BOX 1579, PALO ALTO CA 94302

PAGE 193

Find out who teaches digital electronics in the
Electrical Engineering or Computer Science department. He is most likely to be ther person who
teaches a microprocessor course.
Contact the division of continuing education and
tell them of your interest in taking such a course.
Contact the digital electronics person and ask him
where you could take such a course.

This can usually be accomplished by three phone calls.
As the microprocessor continues to change so does the need
for more precise information. Few people projected the phenomenal growth of microcomputers in time to react to the changing
market. As a consequence, the education function has lagged
behind woefully, but there is hope. It seems reasonable to pr&
dict that the education "business" will boom in the same way
the hobbyist business did.
Initially, education will move a lot faster than the market
because it is already far behind the needs. University courses
now taught on the senior level will be taught at the freshman
or sophomore level within two years, which is an enormous jump
,for universities. Short course' 'companies will offer a variety
of introductory courses aimed at the beginner and the number of
computer store courses will probably double within the next six
months.
The types of courses offered will also change dramatically.
Currently most courses are aimed at microprocessor hardware.
New courses will, by necessity, be concerned with computer
fundamentals and software. There is already a trend beginning
in these two areas. Watch for two new courses in particular:
assembly language programming and digital electronics. All in
all the next two years should 'be very exciting for computer
Elducation.

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 194

MICROCOMPUTERS: A NEW ERA FOR HOME ENERGY MANAGEMENT
Mark Miller
821 Walnut St.
Chico CA 95926

As efficient us~ of natural resources becomes more
important and electronic costs go down, micr.ocomputers will become more common in our dally lives. An
area of immediate application is energy conservation
and collection. In some climates utility bills for
heating and colling may be eliminated by the use of
appropriate building design and low cost microprocessor control systems.
The energy losses in most buildings generally occur
in the following order of importance:
1. Excess air infiltration and ventilation.
2. Conduction through the roof and walls.
3. Conduction and radiation through windows.
Most of the energy escaping through the roof and
walls may be stopped by high grade inSUlation. The
net energy flow through the windows may be reversed
by prudent placement and active control techniques,
described later. The energy lost through air change
may be reduced by an order of magnitude or turned
into a net gain by providing optimum ventilation continuously. For buildings in mild winter climates,
the required heat imput may come entirely from the
active windows and incidental sources like appliances
and the metabolic heat of occupants. In areas of
severe climatic conditions, fuel requirements may be
reduced by over 83 percent, making so18i energy
systems economical for almost everyone.

In the event of hardware addition or change, the control program may be changed by the supplier or the
technical user. The software consists of modular algorithms which can be selected to suit individual
applications.
The systems use real time interupt
generators to service the subprogram modules. OVerride switches in the output circuits are provided for
manual control.

Some system design considerations are building location, power or fuel availability and building use.
Two application examples will be described. The
'Bangor house' is a modest rural dwelling in the
Sierra Nevada foothills. It will rely on locally
generated electricity. Thermal comfort will be provided by a modified 'drumwall' solar heating system.
Several 50 ga1lon drums positioned adjacent to the
active windows will store thermal energy. The rate
of energy release will be controled by a partition
between the drums and the living space. This allows
the storage mass to attain greater efficiency by
using higher differential temperatures. A C-MOS
logic system was chosen for its low power consumptio:D
and high reliability. This system will use ultrasonic motion sensors to determine occupant activity
and ventilation requirements. Humistors will monitor
relative and differential humidity. Thermist.ors will
check temperatures of the thermal storage drums and
air temperatures. A solar cell will provide data on
The target insulation 'R' value of 30 is not diffie
available solar energy. Magnetic reed switches will
cult to impliment in new construction. Existing
indicate the position of the active window panels.
homes may even be upgraded to this level with plastic On the output side, model aircraft type servos act~
insulation.
uate ventilation louvers and control the draft ot the
backup woodburner. Relays control the window panel.
The 'active windows' consist of double pane glass on drive motors.
the south facing walls. Insulation panels or shutters close automatically when solar heating or
The system designed for P.D.M. Associates provides
night-sky cooling systems are not operating. These
some contrasts to the rural Bangor dwelling. P.D.M.
panels have a metalic coating that reflects addicontracted the renovation of two condemned buildings
tional solar energy into the building when they are
situated in an older urbanized location. Work is
open. This technique is also suitable for retrofit
nearing completion on the building and it's modified
applications.
roof pond solar energy system. Proposed use of the
structure is a retail alternative energy devices outMost buildings ventilate at about 10 times the recom- let and office space. The Fairchild microcomputer
mended rate of 5 c.f.m. (cubic feet per minute) per
was selected for this application because it has an
person. 2 Reduc i ng ventilation from 250 to 50 c.f.m. I/O oriented architecture and is suitable for decimal
at an outside temperature differential of 17 degrees number handling for the status readouts. The data
C (30 degrees F) saves 6400b.t.u. per hour or 45.5
acquisition section features a unique analog-digital
kilowatt hours per day. This equals about $1.80 per conversion scheme. A resistor type digital to analog
day with electric heating. Energy needed for humid- converter is driven from a C.P.U. I/O port. This
ification is not included in the example. Reducing
program controled analog reference signal is red to
the air change rate further when the building is un- several comparators who's outputs are connected to
occupied enhances savings.
the other C.P.U. I/O port. This port is sampled each
time the digital to analog converter is incremented.
The microcomputer system functions include:
With all control functions generated by the C.P.U.,
1. Monitoring human activity and air quality and. a simple multichannel medium speed analog to digital
providing appropriate ventilation control.
converter is realized. The sensors of the Bangor
The ventilation system may also be used to
house are duplicated in the P.D.M. building. Howaugment the cooling system in the summertime ever the dynamic occupancy characteristics of a
by cooling the building thermal masses with
commercial building mandate the use of additional
night air.
sophisticated sensors such as gas transducers to
2. Humidi tycontrol.. In some climates, indoor
determine air quality.
humid1tycontrol may be necessary. In all
cl1mates,relative humidity is an important
The prototype systems cost thousands of dolla.rso
variable for ventilation control programs.
Even at these costs, the energy saved can pay for
3~
Control of the active windows, solar water
the system in about 6 years. As production and
hea ters .or similar devices with da ta from
standardization evolve, soae systems will sell for
solar and thermal sensors.
a few hundred dollars •
. --4. Providing_ a readout on the energy status of
. the building. Of particular interest are
Some problems associated with systems of this kind
building thermal 10ad1 stored energy available and occupancy. This data is also stored arel 1. Lack of local maintenance facilities, espefor future use.
cially in remote areas. This problem is min5. Providing control for any auxilliary funcimized somewhat by use of a two card system
tions like wind electric systems, backup
with removable program storage units. These
heaters, lighting circuits, irrigation syscomponetsmay be changed and returned thrOUgh
tems, intrusion alarms, fire sprinklers or
the mail by.the user. About 20 minutes each
whatever.
month is required for cleaning of the sensors

FIRST COMPUTER FAIRE PROCEEDINGS

and lubrication of the actuator drive mechanisms.
Non standerd instalations. Since building
and climatic situations vary greatly, a
standard software design maybe impracticle
in some cases.
Low end ventilation. Air infiltration rates
low enough for periods of low ventilation
requirements may be hard to obtain. This
is especially true in older buildings and at
windy locations. Double door vestibule type
entries and vapor barriers in all exterior
walls and roof are required. Somemanufacturers are claiming good results with sealant
and paint type coatings~ Special attention
must also be given to window seals to reduce
infiltration around the edges.

2.

3.

Fairc hi Id p-g
c

3851 P.S. U
"Sv

(

>1%

Driver P... llup 0,*;0")

Vo

'fN

I/O

L~B
r
I

;;tR

tlR

I

I

R
I

~------

...

Resistor D.A.C.

Ana 1o", (.. pu +5
fro"" S~nsor,

In summary: By structurally integrating the building
and the energy collecter-storage system, and utilizing intelligent control techniques, great thermal
efficiency and economy should be realized. The increase in system efficiency made possible by high
technology controls is essential ~o the simplification of the overall system. This allows substantial reduction of solar hardware. For many buildings
in California, recurring fuel costs for heating and
cooling can be practically eliminated without a gross
investment in hardware.
Energy system control is an exciting application for
home microcomputers. Others are doing work in this
area. Correspondence is encouraged. I may be
reached at;
Box 763, Chico California 95926
Area 910-31.2-6102/891-1300.
Mark Miller is a member of the International Solar
Energy Society and the Association for Computing
Machinery. He is currently working on a speCial
major program in energy systems at C.S.U.C. and is
an industrial consultant with Microbyte Computer
Systems.
References:
1.

American Physical Society; from "Hearings
Before the Subcommittee on Energy Research
Development and Demonstration of the Committee on Science and Technology, U.S. House ot

BOX 1579, PALO'AL TO CA 94302

Representatives."
2.

PAGE 195

Energy indoors section,

DUbinl Fred S., "Guidlines For Saving Energy
in Ex sting Buildings," 197,.

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 196

THE EMPEROR HAS FEW CLOTHES - APPLYING HOBBY COMPUTER SYSTEMS TO SMALL
BUSINESS
sales volume of 40-100 million as compared to the typica.l 1-7
mi 11 ion vo 1ume of the hobbyi s t computer company.

Michael Levy
Jethro

40 Boston Post Road
Wayland MA 01778

Present hobey/home computi ng systems are 1imi ted
in application to small businesses by problems with
hardware, software, and the character of classic
programmers and small business entrepreneurs. A
suggested method of analytical simul ation is described to successfully apply present equipment to
this expanding market.
When y~u open a. e!ectronics trade paper now you can usually find
an artIcle detaIlIng the tremendous projected growth of small
bUSiness computer systems. The siren song has sounded and one
has visions of an unlimited burgeoning market with growth compounded at 40%, and an estimate for the year of 1.8 billion dollars. By comparison the equivalent hobbyist market is estimated
to be only $200 million, or about 10% as large. The marketing
cry of, "all we have to do is get 10% of the market" is heard
throughout the industry, and another rash of imcompetent hardware
salesmen are pushing hardware to people who are neither qualified
to use it, nor have the slightest idea of how to get value out of
it.
The purpose of this paper is to define the eligible small business in terms of size and purpose, and to discuss prudent limit~tions imposed by hardware, software, and the nature of prospectIve programmers and small business entrepreneurs. Finally I
would I would like to discuss a possible successful application
of the available equipment which is consistent with the inherent
limitations of the present hardWare, software, and people.
Reams have been written about the definition of small business
and its characteristics. Its purpose is to produce on a timely
consistent basis, at a profit, a service or product suitable for
the intended use. It is usually managed and owned by a person
who is a specialist in some particular aspect of a product or
service. He or she is most usually a clever marketer, or a
superior technician or expert in his or her chosen field. When
presented with the usual situation invol~ing limited. data, high
risk, and no time, the successful surviving entrepreneur will
demons trate experi enced i ntuiti ve judgment.
The very small bUSiness is a place for mature intuitive judgement, not a place for the simple execution of a proscribed and
defined routine. It exists to meet a specialized need which cannot be met by a larger company. Usually it fits into a chink or
seam in the market place where size of market is considered not
suitable for a larger company, or where entry into a new market
would pose an unacceptable threat to an existing profitable
large company market. For instance, l.B.M. is slow to introduce
new technical developments because to do so prematurely would
threaten their existing rental and lease base. Smaller computer
companies are always nibbling at the edges of l.B.M. 's market
share. In short, these small companies are characterized by
great flexibility and adaptability to rapid change.
The preceeding description is not a good definition of a programmable algorithm, nor is it a very fitting description of the
classic business data processing applicatitons.
Hi s tori cally these have been the sacred seven: Accounts payab 1e,
Accounts receivable, Inventory, Sales analysis, Payroll, P & L
and Trial Balance, and General Ledger. Specifically I will try
to exami ne the 1imitati ons of present mi croprocessor based hardware as applied to these and similar data processing applications.
When I.B.M. introduced the system 3 they did so after careful
study o·f their intended Market in the cOlllllercial data processi ng fi e 1d. They characteri zed thei r market as small to medi urn
sized business founded by a simgle entreprenuer or family
group about the time of the depression and now being managed
by second or third generation offspring. I.B.M. is very sensitive to the parochial and patriachal nature of these companies,
and has designed a straight forward and simple operating system
and language that could be used and applied well by inside
company talent. It uses large amounts of core and storage,
and has extensive peripheral support. It is targeted at companies ranging in volume from $1,000,000 to $10-20 mm, with
the smaller System 32 now di rected towards companies with volume in the range below $1,000,000.
I.B.M. has been joined by five to ten major competitors in the
lower or System 32 range and essentially many of these companies will try to sell to anyone, no matter how small, that is
interested and appears to be able to pay the equipment bill.
To supply an economic perspective these companies have a modal

We have available cheap CPU power in the so called hobbyist
micro field. It is slow, and the peripherals are expensive and
not standard. The present real limitation is random access
storage. Remember it is a classic data processing environment
with which we are dealing. The computation is usually trivial,
but the file and record handling is very complicated. Think of
the small business system as being composed of three parts. The
electronic file cabinet, the file clerk and the typist. The file
cabinet is the disk or floppy. The CPU/program is the file clerk,
and the typist is the printer. In the hobbyist or home computer
system the only element now present in a simple packaged system
is the file clerk.
Since our primary DP task will be record and file handling storage becomes a paramount problem. Our experience has been that
a very small manufacturing concern can easily eat up 5 megabytes
of on-line storage without difficulty. Typical applications
involving this level of storage involve cost data, invoicing
and receivable records, and production orders.
Floppies in general will not be sufficient, and at the very
least 3 floppy drives are needed (a program drive, a "read
data" drive, and an update or "write data" drive.
For the hobbyist or home computer market this is the "Catch22" problem. The low volume, low cost item is the microprocessor. The peripherals and storage media, being electromechanical, are still bought by the pound. The commercial
sys tems manufacturers recogni zed thi s some time ago, and utilized some of their financial resources to go into the peripheral business. Presently you may go to a commercial system
manufacturer and by a packaged dual floppy system including
tube and printer for ~ than the cost of th-e equivalent system packaged and wholesaled by a hobbyist manufacturer. After
all, the commercial system manufacturers also know where to buy
Z-SO's, B080' s, and 6800' s. Thi s s i tuati on may be eased in the
future when a greater proporti on of the system is composed of
electronics. For instance, when charge coupled devices or
bubble memories can be substituted for mass electromechanical
storage then there will be a competitive advantage for very
sma 11 sys tems .'
There are some additional problems concerning the use of hobbyist
systems ina small bus iness envi ronment. Servi ce and spare parts
availability are a problem. The small businessman's model is
probably typewriter or adding machine repair. He just calls and
someone comes quickly and fixes his problem. Mailing defective
pri nted ci rcui t boards back to the factory is not hi s styl e.
Depot spares and service will have to be provided locally for the
small businessman. Hardware support for small business is expensive, but it must be provided by the manufacturer or dealer
in order to be successful in the small business market.
In the software area the situation is even more drastic. The
home computer and hobbyist market is characterized by lack of
standardization and a really deplorable lack of systems utilities. Conventional business systems come equipped with utilities such as sorts, file managers, report generators, program
cata 1ogi n9 systems and screen menu prompts. These system uti 1i ty
standards save the applications programmer from having to start
every job from scratch. You can of course do without these tools
jus t as you can di g a trench, if necessary, with a spoon. Cl early
it is more cost effective and faster to use a shovel.
Software can be di vi ded into systems software, whi ch is not
directly applicable to the solution of the immediate problem, and
applications software which is applicable to the current problem.
The sys terns software presently avai lab 1e for the home/hobbyi st
market comes from three major sources: Bundled with the hardware; normal commercial channels. involving high prices, restricted access and low volume; low charge, high volume "public
domai n" software.
Most of the hardware manufacturers have available, for low or
no cost, a bundled BASIC interpreter, an assembler/editor, and a
video monitor which operates with their particular system. While
most of these products are similar, there is· in reality no standardi zation except for that imposed by the fact that most of the
manufacturers are us i ng the BOBO, Z-BO or 6800 mi croprocessors.
The majority of the disk operating systems are slow, and are now
being supplied, bundled, by the disk subcontractors to the CPU
manufacturers who then mus t interface them with thei r hardware.
The package assembled in this manner, instead of being designed
as a unit from its inception, is bound to be an operational
comp romi s e.
The bundled software which is included with the hardware is
largely intended to be a sales aid. There is little or no interest on the part of the manufacturers to make the investment
necessary to supply systems utilities such as sorts, file managers etc.

FIRST COMPUTER FAIRE PROCEEDINGS

The nonna1 commercial channels which produce commercial software
at high cost have largely concentrated on assembler/editors.
There have been a nwooer of compi 1ers wri tten for Fortran and
other special languages. Very little is available commercially
in terms of the classical business application programmers tools.
The price is high for most of what's available, and the creators,
who are by now aware of some of the past history of proprietary
software problems and controversies in the hobbyist market, have
carefully restricted access by means of formal licensing programs.
Making software available by means of reasonable price and wide
distribution from independent software houses has been proven
practical by the sale of various Tiny Basic's, Basic Etc. along
with other interpreters. It is lIlY contention that this is the
only practical channel for the development of adequate application programmer tools. Non-trivial three array sort and merge
routines, video monitor prompting routines, and report generators
are critically needed in order to do applications programming on
an economical and efficient basis for very small businesses.
There are, in particular, two really important utilities without
whi ch the use of hobbyist or home hardware will really be impractical in small business programming. An ISAM (index sequential
access method) file handler, and BASIC cross compiler or
"cross translator." The ISAM method is a classic "tree" method
file handler which allows the rapid retrieval or storage of an
individual data record. These file handlers exist for most of
the successful mini-based business systems, and there is even one
which is written for a proprietory interpreter in extended BASIC.
The low cost random access data system that is required by many
small business programming applications is easily achieved using
an ISAM system. There should be a wide market for this kind of
program, and the developer will find it profitable I'm sure.
The second necessary aid is a BASIC cross compiler. This would
be a "front end" program for which the input would be some. conmon
version of BASIC source language statements. The output of the
cross compiler should be then be passed to a cross assembler to
produce object code for the user speci fi ed mi croprocesser. Even
more exi ti rig would be a further i nterconnecti on with a PROM programmer. A bus i ness programmer cou 1d then enter hi s code a t a
time sharing terminal to a host computer, or directly to a mini
and walk away with a programmed PROM which he could then pl ug
into a simple microprocessor based system. It would be a very
simple and economical way of providing easy-to-operate appl ications pro grams to small business. Most important, the programs
woul d not be processor dependent and coul d be recompil ed and
applied to new and faster hardware as it became available.
Separate from systems utilities are the standard applications
packages which I previously described as the "sacred seven."
Unfortunately for very small businesses they are a procrustean
bed. Always, in order to be salable to a wide range of customers
the package is written to be as general as possible. That creates
a form of "package Catch - 22" in that a very small business
will, by definition, have use for only a small specific part of
the general program. For instance, the selection of the option
in a receivables package between an "open item system" or "balance
forward" approach may iJlJ1lediate1y obsolete 50% of the package.
This then leads to the paradox - to be salable a package must be
general. To be efficiently usable a program must be specific.
For very small businesses, which tend to be unique, and owe their
very existence to a high degree of specialization, standard packages probably do not have much applicability without a hugh
degree of custom.modification. It is disappointing but true that
the majority of small businesses are better off with a tried and
true manual sys tern, s ta ffed by people who have operated it successfully for years, then they are when they go to a computer
system for their standard accounting procedures.
Having neatly, if not adequately, disposed of hardware and software I would now like to .comment on what I see as the most
serious barrier to the successful use in business applications
of this high quality inexpensive hardware. I prevous1y described
the small business entrepreneur as a specialist of some sort,
either in marketing, or in the particular technical skill represented by the service or product that he sells. He does not control the business by formal analysis, or with the classic financial controls and budgets that you find in a larger company. His
"span of control" is established by artful perception, intuition,
and detailed experience. He does it by "feel" and judgment and
he iterates hi s experi ence in an ana 1og rather than a di gi ta 1
manner. Small business people do not tend to think in algorithms, and trying to arrive at a definition of one can be traumatic to an aspiring system analyst.
.
Business information in a small business is of two types; histori~
cal and analytical. Most hardware and software people seem to be
concentrating their efforts on the historical accounting data.
The entrepreneur· knows instinctively, if not intellectually, that
his real need is for analytical information to help him decide
the future, not record the past. The continuous survival of the
company is proof enough of existehce of the manual historical
records.
Into this volatile situation comes the amateur systems analyst in
the form of the computer hobbyist who is .100~ing for some way to
justify the existance of a computer system, and to obtain some

BOX 1579, PAtO ALTO CA 94302

PAGE 197

revenue in order to buy his next piece of hardware. In his book,
Computer Power and Human Reason, Joseph Wei zenbaum has wri tten an
elegant description of the arch-prototype hobbyist programmer.
He calls them "compulsive programmers." I cannot think of a more
unlikely combination then the classic entrepreneur and the compulsive programmer. The hobbyist programmer uses his machine as
an "intellectual snowmObile." He's fascinated with the noises
and rhythms and he dri ves it around wi thout much regard for the
disturbance that he causes, or for the permanent distortion of
someone else's environment. In a strange way, these highly enthusiastic people who say that they are going to free people from
the tyranny of the small business routine, are in an arrogant
manner, repeating the same people-crunching behavior that the'
population has come to resent in utility billing and credit card
operations. Remember the dictionary definition of hacker, as
Dr. Weizenbaum points out, is "one who cuts with repeated i$regu1ar or unskillful blows."
Is there then any sensible cost effective way in which present day
hobbiest hardware can be effectively utilized in very small business? Probably the best way for the personal computer to be
utilized is as an aid to supplying analytical information. The
small business manager customarily makes his decisions based on
incomplete and marginal information. Usually they involve uncertainty, high risk - a penalty for a bad decision, and a high payoff for a good one. This is a situation in which a clever iterative simulation will do wonders. It is in effect a ,"super" game,
and present day hardware is perfectly suitable for this kind of
application.
The value of a simulation may be that it is a substitute for experience, People who have good judgment, acumen, and insight
will have their intuitive business decision-making improve as
more decisions are made and experience is gained. Simulations
can substitute for actual decision-making experience without risk
or the cost of error. Perhaps the value of computer simulation
is that it allows the rapid evaluation of alternative courses of
act·lon and the practice in making the necessary associated decisions.
If the systems analyst is experienced and sympathetic, and can
listen intelligently to the businessman's problem, he can· usually
find an area of the very small business where the entrepreneur
realizes he needs some help. This will usually be an area where
there is some repetitive task which is taking up a great deal of
his time, and where that task is not being done well and he
re.a1izes it.
Some eligible functions of small business are quotation models,
bidding/product pricing decisions, job cost, marketing product
mix, proposals, raw material mixes, forecasting, cash flows, and
break even analysis.
An example of a quotation simulation for a small plastics factory
follows. The original purpose was to mechanize a laborious but
carefully designed manual costing system in which the cost algorithms could be identified and programmed - a major point.
The program was designed to do the following:
1.

To make routine a tiresome clerical job.

2.

People can prepare a price without having to
know the company's current overhead, margins
or other confidential information.

3.

To establish a real "refusal" price at which
the business was not really acceptable under
any circumstances. This really is an aid to
marketing since they eventually come to agree.
Management has then eliminated one of the age
old internal arguments between sales and finance.

4.

After everyone bel i eves, it can be an ideal
marketing device. A responsible salesperson or
executive can price on the spot, eliminating the
need for the clumsy "elephant ballet" that goes
on every time a customer requests a quote i ;e.
back to the factory etc. Management can allow
this because the program is always consistent.
As a matter of fact when very small portable
BASIC speaking units are available I would not
be surprised to see them become as· common as
as calculators ina salesman's kit.

5.

People are willing to redo quotations because
it is not laborious to do so - an example of

the iterative benefit of using a simulation.
6.

It provides a rational approach to quantity

discounts and to tool amortization since an
amortization curve 1s built into the program.
The program works simply. A pricing format sheet is appropri- '
ate1y filled out (figure 1) and the data is then entered via terminal or screen console. The program then prints the pricing
format, and goes on to produce a print out (figure 2) which dis-

BOX 1579, PALO ALTO CA 94302

FIRST COMPUTER FAtRE PROCEEDINGS

PAGE 198

Figure 3 shows the corresponding cost algorithms actually contained in the program. Algorithms 1), 2), and 3) correspond to
"Method 1," "Method 2," and "Method 3." The" pri ce 2. a1gQri thms"
correspond to "Yl," "Y2," "Y3" on the print out. The program
also averages the two subgroups and finally prints out an average of the pri ces.

plays the main components of the price: material, labor, employee benefits, the total direct costs, and finally
calculation of
the per piece direct costs.
The program then calculates six different prices each of which
vary in some aspect of volume dependency, or in their percentage
of labor and material.

Figure 3
Figure 1

PRICE ALGORITHMS

eM.tomer Namt
Put De,criptiaA

~R:AJ~~o' Labor + Ma teri a 1)

l)

0...

4.2 x labor + Material

3)

BREAKDOWN:

Labor

III au..._

II

ComDOUd COlt
(6) luen'l, S/ ..
5)

i, il

S/1~.

,I
ii

Ii

..

.a

,

Ii

2)
II
II:

;i

"
"
"
"

I,

"I
J>

II I

"I

;" ...
i.,·
"'.~

.........

I,

:

I

ii

;11::

I

"I

i!

II
II I

":1

'"
12,
ho

I •• n.

0 ' ."

.z 0..11..

"

....

. n. n,..

'I
Ii

·v,

""

ii

I

I

+,

I;,

!:I!
,

SALES ALGORITHMS

1

'

Sales

•

4.9 Direct Labor

(3)

Material + 3.25 D.L. (Act.)

Material + 4.2 O.L. (Est.)

(2)

=
=

2 (Material + D.L.) (Act.)

2 (Material + O.L.) (Est.)

(l)

•

1.3 (Material + 1.2 D.L.)+D.L. (Act.)

1.4 (Material + 1.2 D.L.)=O.L.)(Est.)

ii

"il

I"

"

I

".

I,

"" III
II
'"

Tooliiuz Value

,ml ' ? v.

I

I

3 x Labor + Material

~

I

ij

3)

'i


(:1.8)
(2:1.)

QUANITY I~UOTED
MOST HE'LL PA'r'
GRAMS OF COMPOUND
COMPOUND COST
INSERT *:!.
INSERT 112
OTHER MAT
TOTAL TOOLING MARKET VALUE
ESTIMATED 2 'r'EAR PART VOLUME
POST MOLDING *:!.-PCS/HR
POST HOLDING 112-PCS/HR
MAIN HOLD - II OF CAVITIES
MAIN HOLD - CREW SIZE
MOLDING MINS
SET UP AND START - DA'r'S

MATERIAL
:1.02. 7238

LABOR
EMPL BEN
2:1.3. 6708 42. 734:1.

:1.606

ADD

$

(4)
(5)
(6)

3.2
2
3

(7)

(3)

:I.
3000
2000
60
200

(:1.0)
(:1.:1.)
(:1.3)
(:1.4)
<1.6)

4

(:1.7)

:I.

(18)
(2:1.)

.5

5

TOTAL DIRECT
359. :1.288

PIECE PRICE
TOTAL ORDER CONTRIBUTION
METHOD :I.
.859:1.
859.:1.995
500. 0706
METHOD 2
.754:1.
754. :1.705
395. 04:1.7
METHOD 3
:I.. 050:1.
:1.050. :1.484
69:1.. 0:1.95
'1':1.
. 7:1.2:1.
7:1.2. :1.777
353. 0489
'1'2
.6464
646.43:1.9
287. 303
'1'l
.7809
780. 923:1.
42:1.. 7943
AVERAGE K
AVERAGE '1'
AVERAGE
. 1il878l949530S7 .7:1.3:1.776220563 . 8005085586825
VOLUME IS . 5 OF EXPECTED

(:1.)
(].)

2
52

3 TO PIECE FOR TOOL

PER PIECE
.359:1.
PERCENT
.582
.5238
.658
.4957

.4444
.540:1.

I.UA/H TY I~UOTED
MOST HE" LL PAY
GRAMS IJF COMPOUND
COMPOUND COST
INSERT lI:I.
INSERT 112
OTHER ~lAT
TOTAL TOOLING MARKET \'ALUE
ESTIMATED 2 YEAR PART VOLUME
POST MOLDING U-PCS/HR
POST HOLDING 112-PCS,-'HR
MAIN HOLD - II OF CAVITIES
MAIN HOLD - CREW SIZE
MOLDING MINS
SET UP AND START - DAYS

MATERIAL
:1.02. 7238

LABOR
210. 0614

EMPL 8EN
44 0122

:1.000
2
:1.04
2. 2
2
3
:I.
3000
2000
60
200
8
.5
.5
5

TOTAL DIRECT
354. 7975

PIECE PRICE
TOTAL ORDER CONTRI8UTION
.8472
847. 2885
492. 4909
.745
390. 277=
745. 0749
679.4334
:I.. 0342
:1.034. 23:1.
.7025
702. 5768
347.. 7792
'r'2
283. S3S
.6386
638. 6356
1'3
4:1.4. 7'36
.7695
769. 5536
AVERAGE K
AVERAGE Y
AVERAGE
. 87553:1.5265587 . 7035887:1.58063 . 789'360:1.2:1.:1.825

METHOD :I.
METHOD 2
METHOD 3
'r':1.

VOLUME IS . 5 OF E:uter speech
recogni tion laboratory is available tV'hich achieves the

o
iii

~
..I

w
>
w
..I

-10
-20

W

>
j:

«
..I
W

a::

-30
-40
-50

performance of the very expensive research laboratory
systems of the late 1960s and early 1970s, and performs as well as presently available commercial units,
at a modest fraction of the cost of the commercial system.

luI

Personal computer users may expect recognition

rat.es in the mid 90 percent range on isolated words,
with a 16 word vocabulary operating in real time.
These systems provide the personal computer user the
opportunity to delve into a fascinating area of computer science research and to devise his o",n original

solutions to the problems of speech recognition.

0

-10

Personal Computing Speech Recognition Systems

Today's personal computing speech recognition sy-

-20

stems are designed to recognize isolated words, or

words with at least 100 milliseconds of silence separating the individual utterances. These systems typically operate in tt.,wordboundllvowel stress>8

In all rule specifications, capital letters indicate phonetic segments, while lower case letters indicate features or
stress specifications. COllDllas or "/" marks sepsrate references
to different matrix columns. If the situation described by
this rule.is found in the matrix, a glottal stop and its features are inserted as a new column at the position indicated by
the adjacent "/" marks in the rule. It is of interest to consider the large number of rules that would be needed to state
this modification if they were expressed in terms of phonetic
symbols rather than the feature "vowel".
The next 2 rules change the pronunciation of Rand L when
they occur after a vowel.
R1H:
Rll:

RX +. vowel/lV
LX • vowe I ILl

The final pair of rules in this group adds an end-glide to
any diphthong depending on whether the diphthong is marked by
the feature "front".
R1J:
R1K:
space

1
1 1
1
1 1
1
1 1

+
I

IY
IH
EH

AE
AA

AH
AD
OW
UH
UW
AX
IX
ER
UX
OH
AW
AY
OY
EY

RX
EL

1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1

1
1
1
1
1
1

1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1

1
1

1
1 1
1 1
1 1

W
WX
R
L
LX
WH
M
N

NX

p

T
K
KX
B

o
G

GX
OX
F

TH
5

SH
V

OH
Z

ZH
eH
JH
HH
Q

EH

EN

1
1
1

1
1
1
1
1
1
1
1
1
1 1 1
1 1 1
1 1 1
1 1
1 1
1 1
1 1
1 1 1
1 1 1
1 1 1
1 1 1
1 1
1
1
1
1
1
1
1
1
1
1
1
1
1
1 11

These rules contain examples of combinations of features to be
located in a matrix column. This can be interpreted as a bit
masking problem, observing the bit polarities of the various
features.

1
1
1
1
1 1
1
1
1
1
1
1
1
1
1

1
1
1
1

1

1

1
1
1
1
1
1
1
1

YX .. dlphth front/!
WX .... diphth -front/!

RULE GROUP 2
The rules in group 2 perform the major phonetic modifica-.
tions which are necessary for the sound structure of English.
The first 5 rules in this group set consonant stresses for certain consonant cluster patterns as a means of controlling the
durations of these consonants. A scheme of marking negative
stress values is used to cOllDllunicate additional information to
the duration rules in the next group.

1

R2A:
R2B:
R2C:

1
1

R2D:
R2E:

1
1

stress=1 .. Icons/vowel stress~.
stress=-I,-1 .. IS,plos -voice stress••1
stress=-I,-1 • Iplos or (fric -voice),llquld or nasal
Ivowel stress••
stress=-I,-I,-1 .. IS,plos -voice, I iquld/vowel stress••
stress=-I,-1 4= IT or D,SH or ZH/vowel stress••

Several of these rules contain multiple units within the slash
marks, indicsting that some modification is to occur at each of
the enclosed columns providing all conditions are met. The
parentheses here indicate logical operator priorities rather
than optional units as in linguistic notational conventions.

Four more rules in this group modify the pronunciation of
certain phonemes depending on the consonant or vowel environment. A T or D occurring between two vowels is softened to the
phonetic unit known as a flap. This is a single, quick tap of
the tongue indicated by the symbol DX. The following vowel
Table 1
Phonetic Feature values assigned to each phonetic symbol must be unstressed unless it is at the beginning of the next
word. The vowel UW is rsised to UX when it follows a consonant
in which the tongue .is moved up to touch just behind the teeth.
RULE GROUP 1
Of the three groups of rules in the system, the first group This has the effect of lowering formant 1 and raising formant 2.
has the least dependence on the feature categories. Several of corresponding to a higher tongue position during the vowel.
K and G are modified to alternate forms which have lower forthe rules in this group could in fact operate on the level of
units before the features have been assigned. These are spell- mant 2 and formant 3 when they are followed by a back vowel
ing convention rules. Six "duIlDllY" symbols are defined as valid where the tongue must move to the back of the mouth.
input units, which are chaziged into the correct phonetic seqDX .. vowel/T or DI (opt I ona I word bound ,vowel) or
ences by these rules.
R2F:
vowe 1 s·tress=.
RIA:
- .. 1,/
R2G:
UX .. denta 1/UWI
RIB:
AX,L. IELI
KX ~ IK/vowel -front
R2H:
AX,H. IEHI
RIC:
GX .. IG/vowel -front
R21:
RID:
AX,N. lEN I
R1E:
T ,SH 4= ICHI
The next 2 rules in group 2 account for the fact that
R1F:
D,ZH./JHI
voiceless aspirated stop consonants lose their aspiration
either when· preceeded by an S or when they come at the end of a
In reading these rules, A .. /BI indicates that if unit B
word. This is accomplished by changing them to their·voiced
is found in the unit sequence it is replaced by A. Note that
counterparts, which do not have aspiration by definition,
in 5 of the 6 rules just listed, this involves the insertion of
a new. column into the matrix. When a new matrix column is inR2J:
add qto phonetic unit code. SIp los -voicel
serted, the new feature values must of.course be looked up and
R2K:
add q to phonetic unit code4- Iplos -volce/wordbound
entered into the matrix as well as the unit itself. The "/"
marks are used to bound the portion of the matrix curr.ently
The phonetic unit codes are assigned so that the voiced unaspopen for modification.
~r.ted stops are located just after the voiceless stops which
are detected by these rules. As with all rules, the xeatures
The next rule in this group specifies that a glottal stop
are changed along with the phonetic code.
.
is to be inserted before ~ stressed vowel at the beginning of a
word if the previous word alao enda with a streased vowel.
The final cluster of 3 rules in group 2 haa s similar
Y

YX

1

1

1
1

FIRST COMPUTER FAIRE PROCEEDINGS

effect to the previous pair, except that here only the ploaion
and aspiration features are changed instead of changing the
phonetic unit as a whole. This is the first case encountered
where a rule only changes a few features and not the whole
unit. Later on, when the features are being interpreted to
generate the synthesizer control parameter data, lack of the
plosive feature will result in a shorter time being allocated
to the aspiration portion of the consonant, while the aspiration feature will determine how much hiss sound is produced
during that interval. These rules have the following effect:
first, deleting both plosion and aspiration when the stop is
followed by a second stop, whether or not the following stop is
at the beginning of the next word; second, deleting the aspiration when the stop is followed by WH or HH, whether or not the
WH or HH is at. the beginning of the next word; and third,
deleting the aspiration when the stop is not at the beginning
of a word and is followed by an unstressed vowel.
R2L:
R2H:
R2N:

-plos -plosa .. /plos/optional wordbound,stop cons
-plosa ~ /plosa/optional wordbound,aspirant
-plosa • -(wordbound or sllence)/plosa/vowel -strs

RULE GROUP 3
The rules in group 3 are entirely concerned with the computation of sentence timing structure. Concerning intelligibility of the output, this is without doubt the most important part
of the entire system, altho the pitch control parameter (F~),
generated in the next step, also has an important role in the
perceived quality. The initial (or target) timing structure is
determined by a dual table of duration values. Each phonetic
symbol has associated both ·a long and short duration depending
on whether that unit is stressed or unstressed. One of these
duration values is inserted into each matrix column depending
on the stress value currently stored at that column. This
initial duration assignment is considered to be a part of group
3 altho it is not a rule in the usual sense.
The first rule of group 3 is concerned with the tendency in
English pronunciation to meter out the timing of unstressed
syllables so that stressed syllables occur at roughly equal
intervals. In other words the durations are adjusted so that
the major temporal pattern moves from stress point to stress
point.
R3A:

between wordbound or • or silence change the duration
of each stressed vowel by (2*NV+3)/(5*NV) where NV Is
the number of vowels In between

The final vowel of a word and all units from there to the
end of the word are lengthened.
R3B:

dur*1.5 4= /Iast vowel of a word, ••• /wordbound

Vowel duration is changed if followed by an unvoiced p10sive, a voiced fricative, or by RX or LX followed by a consonan~
R3C:
R30:
R3E:

dur*.6 • /vowel/plos -voice
dur*1.25 40 /vowel/fric voice
dur*.5 ~ /vowel/RX or LX,cons

The duration of W, R or L, with a negative stress value and
followed by a vowel is lengthened by 20 msec if it is preceeded
by an unvoiced plosive and the length is set to 90 msec if it
is preceeded by an 5.

BOX 1579, PALO ALTO CA 94302

PAGE 211

The durations of adjacent p10sives are cut in half, even if
a word boundary comes between them.
R3N:

dur of plosives*.5 ... /plos/optlonal wordbound/plos/

It is difficult (no doubt impossible) to state a complex
rule without an equally complex rule description language. In
order to present the rules here without having to define an
elaborate notational system, I have taken the liberty of expressing some things in English. In most of the rules which
are presented here as clusters, there is some degree of commonality which should be used to advantage fn·writing code to
realize these rules. I leave it as a'pYob1em for the interested reader to express these sets of rules most efficiently in
flowchart form.
.
Up to this point in processing the speech sequence, the
entire string had to be stored and processed as a whole because
of the nature of the rule scan. These steps of building up,
testing, and modifying the matrix need not occupy much memory
space and should run fairly quickly. By the time this paper
appears in print, the actual space and memory requirements
should be available.
GENERATING THE SYNTHESIZER CONTROLS
We will now discuss in somewhat less detail the mechanisms
used to generate the synthesizer control parameters. The first
control function to be produced is the pitch parameter (F~).
This is the only parameter which requires any scanning back and
forth in the matrix; all the rest can be generated strictly .
from left to right. For this reason, the F~ parameter is handled separately from the rest, and is computed first. Once that
parameter is completed and stored in the output buffer, and the
remaining parameters have been computed as far as the first
phonetic unit, it is at least theoretically possible to begin
playing the ·speech data out to a hardware synthesizer using an
interrupt-controlled update rate. Whether or not this is
possible in reality depends on the processing speed at which
the remaining parameters are being computed.
GENERATING THE F~ PARAMETER
The plan followed in this model of the F~ function is. based
on a few simple rules. The under1yfng principle is that each
time the amplitude of voicing parameter (AV) is switched on by
a voiced segment of speech, the F~ level starts off. at a midrange value of 120 Hz. For as long as·the AV control remains
on, the pitch drifts slowly downward in an exponential decay
fashion toward 100 Hz. Superimposed on this basic downdrift
pattern are "intrusions" which raise the F~ level in smooth
upward arcs during all stressed vowels. The degree of pitch
raising depends on the stress value up to maximum of 160 Hz at
the peak of the arc for a vowel with stress-I. In addition,
near the end of a phrase, a final rising, level or falling contour is added depending on the punctuation mark used to end the
sequence, whether question mark, comma or period, respectively.
A new end-point level is determined by adding 40 Hz for a
question mark or subtracting 40 Hz for a period. A linear ramp
is then constructed from the previously computed F~ level at a
point 300 msec before the end of voicing to the newly determined end-point level. This linear ramp is then added to. the
original F~ curve. This is shown in figure 2.

--- .- .. _--- ........ - --~,
,
phrase ended with comma

R3F:
R3G:

plos -volce/(W or R or L) stress (III!
vowel
dur=90 msec ... 5/(W or R or L) stress <'/vowel

dur+20msec •

All consonants with negative stress values ate shortened.
R3H:

dur*.8 ... Icons stress<1II

The durations of certain stop,fricative combinations are
fixed.
R31:
R3J:
R3K:
R3L:

dur=70,60
dur=70,50
dur-60,40
dur=40,30

msec .. IT stress >',5H stress)1II
msec ~ /0 stress> fI,ZH stress> 11/
msec ~ IT stress-fl,SH stress-'/
msec ... /0 stress=',ZH stress-'/

The durations of certain nasa1,p1osive combinations are
fixed.
R3H:

dur=30,30 msec ... /(H,P .or B) or (N,T or 0) or
(NX,K or KX or G or GX)/

piaure 2

End-of-phrase pitch parameter (Fit) cont.ours

It seems worthwhile to consider at this point the effect on
the listener of different models for F~. In human speech, the
pitch contour is used to communicate a very wide variety of
emotional and physical facts in addition to certain linguistic
information about the stress structure of the utterance. Since
the softwar·e ~tem has no access to any of these esoteric,
external factors (even if we did know .how to model the effects)
the speech output Must necessarily be rather bland in that
respect. The tendency seems to be for linguistiCS researchers
to overestimate the influence of the linguistically· re1at.ed
variables such as stress patterns in trying to account for the
wide range of variations caused by external, ,non-linguistic
facts. In a synthesis by rule system, the·influence.Qf stress
values on the F~ parameter can easily be modified by changing

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579. PALO AL TO CA 94302

the frequencies mentiened in the last paragraph. Reducing the
stress peak frequencies weuld give the .output less .of a singseng quality. Alternatively, if se desired, the pitch .output
ceuld be made cempletely flat by skipping this F~ calculatien
entirely and putting a censtant value inte the F~ parameter.
GENERATING THE OTHER PARAMETERS
The mest essential .of the remaining synthesizer centrels
are, by far, the three fermant frequency centrels (Fl, F2 and
F3). These must be relatively smeeth curves during the entire
phrase, at least with ne abrupt jumps while the amplitude .of
veicing (AV) is turned en. These centrels alse bear the main
lead .of determining the cerrect vewel quality at each instant
during the utterance when there is veicing.
In .order te achieve efficient ceding within 8 bits and fer
minimum hardware cemplexity in the Cemputalker medel CT-l Synthesizer, the fermant infermatien on parameters Fl, F2 and F3
is ceded net as frequencies in hz, but as a reciprecal leg functien of frequency. Then, to eliminate cemplicatiens .of extra
cenversiens, all formant infermatien threugheut the synthesis
by rule system is ceded using this reciprecal relatienship.
Keep in mind when reading graphs such as figures 3 and 4 that
the fermant scale is inverted frem the usual fermant frequency
plots. Alse, all three parameters are plotted .overlaid .on the
same scale to save space. This convention requires some relearning for these .of us accustemed to reading plots .of formant
frequency vs. time, but it seems advisable te plet the parameters just as they are actually used in the system.

lower priority, the HH determines that the vowel will have full
centrel over the transitions. This effect ~e seen in the
graphs in figure 3.
Once the formant parameters are cemputed for the duration
of a segment, it remains .only te fill in the various amplitude
control parameters (AV, AH, AF and AN) and the fricative frequency setting (FF). All of these parameters are controlled more
or less directly by bits set in the feature matrix. For example, when a consonant is encountered with the plosive feature
set, a pulse is set up on the AH control. The time of release
of the plosive burst is computed depending on the plosive aspirate feature. Provided the following consonant is not also a
stop, this pulse is then stored at the computed release time.
Voicing and nasal amplitudes simply move thru smooth arcs to
predefined levels if the corresponding feature bits are set.

£

AH

In spite

.of this, I still think .of formants as frequencies and referred
te frequency scales in the preceeding discussiens .of rule behavior.
HH

EH2

PAGE 212

ow

F3

.,.- ...

"...

.,' .".----,.'

. . _ • • • : \ . . . . : : : . : . . . 8; • • • • • • • • • • •

t

F2
Fl

AH

F(Il

F3
F2

Fl

F0

AV

Figure 4

AV

,'0
Figure 3

Synthesis parameters generated by Rule

The basic pattern for the fermant frequency parameters is
determined by a table .of formant settings for each of the phonetic units in the system. Values from this table are taken as
targets to be appreached during the duratien of each phonetic
segment. This sequence of target values is then smeothed
across each segment beundary depending on a system .of prierities assigned te each segment. Each segment is assigned an
initial time constant and a terminal time censtant, which, together with the relative prierity of each, determine hew it
interacts with its neighboring segments. The neighber with the
greater priority imposes its time constants and boundary crossing points on the transition. In most cases, the higher ranking units actually have the weakest cenditions, thus guaranteeing .that they will be ".overtaken" when they occur next to a
lower priority segment. As an example of this, HH has a high
priority, but no control over the boundary cressing value. As
a result, when HH .occurs next to any vowel, which would have a

Parameters extracted frem human speech
"helle"

HOW GOOD IS IT?
As an illustration .of the parameter output of a rule system
of the sert described, figures 3 and 4 present sets of parameters generated by the program and recovered from actual human
speech, respectively. The examples .compare the two versiens .of
the werd "hello" as produced by these two methods. In the synthesized version in figure 3, the phenetic segments are marked
with ASCII characters just as used to generate the word. The
input to the program was the string "HHEH2LOW," which was followed by anether phrase. In the human versien in figure 4, the
segments are
rked using the International Phonetic Alphabet
(IPA) symbols as well as the nermal English spelling. The human version was also spoken as a part of a longer phrase.
While there is quite a lot of difference in detail, the
.overall shapes are reasonably similar. The major difference
one sees immediately is in the timing structure. While the
.overall length of the human version is 130 msec shorter, the
length of the OW vowel is the same within 10 msec. The first 3
segments make up this difference, particularly the
which is
barely more than ~ the length of the computer generated EH. .
The primary reasen fer this is the 2 stress specified on the EH

e,

FIRST COMPUTER FAIRE PROCEEDINGS
vowel. This was necessary to get even the small rise in pitch
seen during that vowel. The generated F~ curve during the remainder of the word is disappointing to say the least, and
shows nothing like the expressive contour seen in the human
version. The differences in F3 during the L are probably not
significant, altho it's interesting to note that the synthetic
version accurately follows the "textbook" pattern for an L,

while the human version shows the R. quality only in F1';and F2.
Of greater interest is the dip in voicing amplitude during the
human t. No doubt the perception of an "J" would be improved
if the rule system generated such a dip (rise in frequency)
during an L sound.

BIOGRAPHY
Mr. Rice holds a B.A. in Linguistics from UCLA (1969). He
has been involved in research in acoustic phonetics for the
past nine years, which included the opportunity to work in
Sweden and Finland during part of 1974. He is currently a
partner of Computalker Consultants in Santa Monica, CA, involved with the design of speech synthesis circuitry and related
software. His interests include speech production, digital
signal processing, microcomputers, and occasionally such
pursuits as sailing and SCUBA diving.
REFERENCES
1. R. Carlson and B. Granstrom, "A phonetically-oriented programming language for rule description of speech",
Proc. Speech Communication Seminar, Stockholm, Sweden,
August 1-3, 1974

2. D.H.Klatt, "The linguistic uses of segmental duration in
English: Acoustic and perceptual evidence", J. Acoust.
Soc. Amer.,vol 59(May 1976)pp. 1208-1221
3. D.H.Klatt, "Structure of a Phonological Component for a
Synthesis-by-Rule Program", IEEE Trans on ASSP, vol
ASSP-24(Oct 76)pp. 391-398
4. D.L. Rice,"Hardware and Software for Speech Synthesis",
Dr. Dobbs J. of Computer Calisthenics & Orthodontia,
vol 1, no 4 (April 76)
5. D.L. Rice, "Friends, Humans and Countryrobots: Lend me your
Ears", BYTE no. 12 (Aug 76)

BOX 1579, PALO ALTO CA 94302

PAGE 213

phon~e perceived is' determined by the duration of the excitation
and the selected formant f'ilters.' LUllar, p. 28). J\.tma.r also q'..lotes
M. D. lo!cnroy of Bell Laboratories who says:
'Being ephezreral, sounds
must be understood at first hearing. As it turns out, long speeches
[on the speech synthesizer J ARE hard to undersc9.."ld, as are extreaely
short utterances.' (At=, p. 30). Mcnroy's renarks seem rather
puzzling and the reaaon for lack of intelligibility is not cle~.
The difficulty m.a.y be in the ",1ay the machine is designed to generate the phonemes. I 8.!11 a linguist and not a computer engineer so I
cannot offer any ideas on progl"ammng or circuitry desil'1l' However,
I think that the work being done at The Ohio State University in
speech timing u.."lder the direction of Professor nse. Lehiste of the
Linguistics Deputment ot"fers an overall conception of the temporal
organization of speech lo1lich may be helpful in setting up the problem
~ its solution.
So tar as I can deterl!line - and I will velcou:e correction if l:
am in error - Prof"essor Lehi-ste's work has not been taken into consideration in the theories governing speech synthesis. Some of" the
problems in generating recognizable phonemes are prohab1y due to the
fact that they are assisned a specific set of forman~ frequencies and
a specific duration. Frail. a linguistic point of viev. phonemes are
negatively defined: phonell!es do net have to be Com.POBeO. or any SJ:·ecitic combination of forrent frequencies or duration; they merelj 1:-.e.ve
to be qifferent from each O~Aer in some acoustic dimension. Therefore.
it would be more correct to say that a certain range of fonnant frequencies and a certain range of duration values will be identified by
the hearer as a particular phoneme. This range will vary according to
the context such as the preceding and the fo110Ying phoneme. The "er'J.nsiUans Jllll.y also be affected by whether or not a wrd. boundary intervenes. This aspect of pho~eme rea~itY' has evidently been incorporated
into current speech synthesis vork. HOlo-ever. I have the impression
that t.he method of building up syllables and. words out of phonemes
&llOunts to stringing the phonEl!l.es together, one by one, with the appropriate tranSitions inc~uded a~ with pauses e.t lo'Ord bo1llldaries.
Since the syntax of English and other laneuages is hierarchic&lly
structured, it w::n1ld be advantageous if the sound production could also
be shown to be hierarchically structured. If so, such struct'Jring
ought to be helpful in dea:.ing with the timing aspect of synthesizing
speech. It seens to ae that Lehiste' s work can be very usef'Ul. in this
regard..
Lehiste has been interested since at least 1960 in determining
phono1ogical and phonetic units larger than the syllab1e, based on the
timing ot sy1lables and their durl!.tion ratios. She bef"Ul her wrk
with Eastern European languages: Estonian, Finnish, Czech, and SerboCroatian. Perhaps for this reason her vorl<. has not gained wide attention among those interested in English. Her results, however, SZ'e
theoretically very important.
She has found that Finnish '!fOrds 'appear to be constructed of
units 1arger than one syllable: all words consisting of more than
three sy~l.ables seem to be built ofdissY~abic or trisy~labic compcnents, whose ~~tity patterns are simil.ar to those of disyll.abic·or
trisyllabic words.' (Lehiste, '1963, p. 179). In Estonian, the syllables at the initial disy1l.abic unit of a werd are related by dura-.
tion ratios - the duration of the vowel ot the second sy1b.ble varies
with the quantity or duratiOn of the first syll.!lble inversely, regardless at the number or kind at consonants in the first syl~able. In
other VOrds,.the disy1l.abic unit is a temporal1y organized unit with
iuternaJ. stru.:ture that maintains the overall temporal va1ue by COlllpenaatory adaptation. In addition. Lehiste f'oundthat syllabic
qgan~ity or duration is NOT the sum ot the segmental quantities ot·
its components. (Lahil/te. 1970, pp. 156ft). This . means that the
Estonian temporal units such as disyl.l.abic sequences calmot be buUt
.up by stringing together phonemes ot constant d:1ration. There_st

l!

i...

::D

.~

~

~

~
....m

~

...

..

::D

"

-I

o"'g

i

g

p.

g"
~

~

:2

alMI
~~~

lifltl~~grftllf~lt 1i~S!f
~~~~~,,3I5a~~~ ~ ~ • n~nra­
~ lallc:s b'or:~t::'~fJ
~ r.:a1 '" ~:&: lD:1fJ 11i~· >1>'1>'''. '

:2

l>
r-

-t

·ID ..·• ~ .~ '11>'p.~0~"· 1D~."r;g~"'g.""=
"
'1 0 " :::1>' ....... ·.Ii ....... ~p.1P g "\~o~
'1 0'ii" ~'1::_
Il· '" II .....
8
...
~ "It 1= ,~ ~ ~ '" P. II.... P' p.~ ~ Po O\F.I 1'1''<1
...... "or; [
. . . 14>0
,,~
P''''O.
'tI "'8'P'
.,.1lI1D 0
:1lt ~ ~.
-: It" .. ~
p'. ~ ID Ii '1 ~ ~ t? .... If ~ ~ :: = ~ go II Ii
~m='"
P'C:Sp'S
......... 0 = . 0 0 "
c:s . . . . os::~~ ..
I i . ,,1:I.OII ......
m
b'~' .......
" ... IJ '1 ~ • g tt .. 0 Ii Sl" iii 0 o! ~ 011 " ,,~
011 0
~:; P' ~ IP '" Ii. .. Ii " ~ ~ '0 '1 l! ~ ~ t1I >~ 0 It ~ ... .: 3
~
p.
ao5~
... 0
0
500"
"10m"
"
... ~ P''''
s::
... IS 2 .. PI' 0 ... 0 • 1>'<4 Ii "I!!
... .... ..
I>'
if".. t1Ip. .. :!. ~g0 ...P' w~
'" ........ ~ "'if; ~~ .. R Po!;'c+' .. " It~ ..
0 .. t:l' 9 0 ~ <
0
~ 0 fDrI'
Po >'. if
P' c+ <4
.11 'c+~

I>
~ ...

<"
..
~a~

~"b~~~
0'1II0~'"
.... ., .... 0.,
.. no ~. g g

0"'"
'1
'd!!l
'"
1!.,~p'c+I~~~~
:p.a"~~tf
.
c' c+ 15 ~ ...
.. ~ :u ~ ~ a: It ..
~ ..
'1P<"~~~~'d~;ri~~~~=
~~~
!r[~p' . . . ~ID~o .~.
~O::-/D
1>00
~
~P."[
~
po~,,~
... H
~
P~'1
"...
"c+
... " ~...~.
'd<" n~<"
"p~
C"
p'e 4Ic+O'1
01 .... " .
"
~.~IJ'.'SOItc+
.. ".. <"'1il:.a
..
"' .... 0.1>
....
g'"
~~
....
tlBO.,O
...~ ..
.... ~'" ~ '1 ... g "
... c.
~~
II
_O·~ ....
Ii
I!. ''''8'10
c+ PI'1 Ii~·
~"' ..
"i
~ • .,.!;
~....
..,.
b'1i~·
.j.or. iIJ:,"
c+/D -a
;O~~ID
P' a :t 11'''
~~S~g
.=~

...

=ro::
....

igj~

!Ii'! if

•
o~ • • ~~S~P'~~0~~ID~GIiI .... ~a~~g0'"
~t.:.
... c+
"'p.o.=P'=,~
... ~."It" ............
............. 1i
~
1t.P''1'''0~
0
.. ."1:1''''''',,
g .. ~P'
C+'1
r.ii =P.S!!
...
• c+ P' ..... ,-'I>'I!.
... V. ...... ID<
Iii bOlD l;' ;11D ~
b'
••
'"
'"
~ c+ II ~ tf ~ " .. j!. Pt ... ~ ,. •
.. "Cj!j .... '1
1D.1t>~ ..... QItIDO . . . 1>'""P'OII~c+"::IllliI~
. ".t:'s ii .. "gbQ~'1P.":;:
". p,.!::,~or .~oo
;: ... Ii ~.
p. ~ t:.. ~"'OII. ,... !'!:. 8' ... 'ij ~ ~ ... J:.s '1 Ii ... !i 0::
~~fl.1D1>
"IiI ... ~O ........ =c+<". "''10 ... 61:1. "'4p.~ .......
'1~":O~ g,.~~liiil::· p.~o .... P'~~~,.PoID
c+.:t"oli'
"""
Po ~ ,. P c+~
c+ ..
I>
..: a cO 0 >- ..
...
It
.. m
I.., Po
.. 011 " P
It
>~ .. P''1 .. ~
am
~~c+_

! .......

en

o"T1

n

..

0

_=".

::D

m

."

::D

g
m

m

C

liE

C)

en

~

!a

II'" .....

="' . .

=

If . .

~E~~p'

a

"II

~

n!.a~
>- 11-

!:!ilil
~I~
~aj
~ .
~

p

~

.-

.~

>6
:2
C)

c:

l>
C)
m
::D

:::t
~

-I

J i
en
:2

~
m
m

o

:::t

~

:2

-I

:::t
m
en

o

~

»

r·

a
~

§
~m
N

.-

....

be a larger te:nporal context into which the phone.me" ",.us~ fit by
I:Utuo.J.ly adapti"l!; their individual durations in s:pe.;:ifi,: T,"3.YS.
Lehiste ::ms also sho'Wtl that phoI;etic units e.nd linguistic wIlts
do DOt necessarily coincide. In Finnish 'the quantity relationships
between successh-e syllables serve not or.l.y to establish wory evidence f'rom studies of
suprase~entals:
pitch, duration, and intensity of the speech signals.
I~ speech synthesis is based on p;rammatical word and phrase boundaries,
it m.og,y be dii'i'icI11t to establish phonetic '';e!lporal units that can lunction as rhythmic units since the phonemiC lengch 01' words and phrasen
is unpredictable. In the case or •spconerisms 1 such as 'Let me sew you
to your sheet' for 'Let I!le show you to ;rour seat' or 'Is the bean dizzy?'
fer 'Is the dean bu.s:.r?' it e.ppears that qu5.'te long stretches or speech
must be preplar:ned; othe.'!'."ise. it is di!'ficult to account for such sequencing mistakes. The pl"cblem is to discover hm1 such large temporal
units are actually organized. interr-e1l:r.
Lehiste found that not only Finnish and Estonian organize their
words in terms of disyllabic units but so do Czech, Serbo-Croatian,
the language of the Lapps (related to Finnish), Norwegian, s.nd Swedish.
Since cur concern is vith English, however. let us take a look at her
work with English.
In testing monosyllabic and disyllabic words in English, Lehiste
made the ~undamental aSSUlllption tha.t the wor~d is stored and processed
in articula.tion as II. -.hole by the brain and that significant relationships exist aruong all se~nts that constitute a ,,-ord, although not
all segments partiCipate in se~enta.l (,I\lantity oppositions. (Lehiste.
1972. p. 929). The suprase~entals mentioned earlier - pitch, duration. and intensity - are necessarily patterns in time~ any contrastive arrangement of f\ll1darental frequency or intensity or duration is
crucially dependent on the time dimension. Lehiste then assumed t~At
'the arrangement of articulatory events along the time dimension may
likewise have supraser.;mental runotion. end may serve to establish
higher-level phonological units. I (Lehiste. 1971. p.·'159) •.,
Her starting point was the obzervation that two Russian phoneticians. Kozhevnikov ami Chistovich (1965). had shown that when a
speaker repeats the same utterance many times, at the same rate of
articulation. the durations of adjacent phonemes are quite strongly
negatively correlated. That is, if an error is made in the duration
o~ one phoneme, the error is lll.rge.ly compensated for in the folloving
phoneme. which finishes at the originally planned till'.e. despite the
tact that it started late. Lehiste says, 'This negativ'e correlation
suggest.s that.al-ticulatory eve!lts are prouammed • • • not in terms;.o(
lIinsle phonemes, but in terms of higher-level articulatory =i t3.
One way to determine the extent of these higher-~evel units wvuld be
to establish ·the donain over wIden such temporal compensation takes
place, Bince it seflllls reasonable to aS6\une that the sequences of
sounds which ere subj ect to tell!pOral cOClpensation constitute a sir.gle
articulatory program. I (Lehiste. 1971. p. 159).
Lehiste ~'O:-l,ed with J:lOnosyllab1c closed-syllable,vordl! - skid.
skit,. stay, steed. ~a..!, staved - and disY'llabic l'Ordz vitil on.;-;'edial

ecnson8l1't- - ste..:;..g,,, skid,;,y'- an.e.. ·s~~.ttty.

She estab1ished that the:!"e

was 3.lways a. nega:ti·tc correlation present b!!t·.."een the duration of the

vowel 8:1d tile duration of the fellewing cor.sonam; of a lI'.c;nosylla:oic
word and within the ll'.cnosyl::'a.bic ".lori as a whole as veIl. !loweve::,
in the disyllabic \lo.'!'ds which have &.n intel'voc61ic flap;.ed /...,l in the
~idyester.n American dialect of English, Lehiste found no obvious negative correlation i'a"roring one or the other of the flanking vowels.
Instead. sl':.e disccvererl tha.t in the words s~ea.-iv, skiddy, and skit ty
there was temporal compensaticn~ i.e., negative correla.tion, l:et_1:~~l1
the durations of the ~~o vovels such tha~ the dura~ion of ~he seconi
vovel is adjusted to that or the first and she concluded tha4 this
result shoved that the se".l.~ence of tl-."O vO'Wsls 'iTi th their conSOl:a.n t
surround constituted a unit of progl'8IIlIIling at a. high ...r level ttJaa the
syllable for English.
The discove:-y of -;ov·",l duration ratios 1" disyllabic wcr:.poral units with internal negative correlations of'
se.lPent duration, disyllabic units with internal negativ-e correlat!one
of s;rllabie duration or vowel dur&ticn. a:·l:1. DO en. To illustrat.e
this idea, I have prepared a hs.ndout which analyzes three sente~l!eS
take!] from the I·farch. 1977,' issue of SCrD':'!FIC A!,lEEICA."l. A mGical
fo:niat seems to be the best'l.-ay cr showing the interrela.tions 01:
daration, stress and pitch - ~~ict. is, of course, highly sL~plified
I!JId seheCIatized.. \/hen the sentences are presented as sequential lines
of stre3S ;;:"OIlpS, the .1nternal ~ancing of mee.=e types· is mor.e
clearly seen. For example, in the first sent ...noe - 'An analysis of' a
siMple two-person game can lead into fascinating cerners of' number
the~y' - sOovs regul.ar pattern ~'ecurrence:
stress plus one syllable
'occurs in lines 3 and 5, stress plus two syllables occurs in lines
4, 6, and 8, stress plus three syllables o·~c."J.r$ in lines 7 and 9.
I am tempted to suggest that such intricate r~.~h~ic and syllabic
balaneine within a sentence is a mark of good style. Cct"ta1nly, lo'.l'.
Ga.rd1...·1er did not 'l.Tite these sentences especially forme tc a.!la.lyze.
In any case, these sentences see~ to lend themselves to analysis in terms
of duration ratios or lareer and smallerur.lts in a hierarchy.
I might point out that a IIUsi::e.1. format ::o.ip,ht be a very convE'nient
one for working out the timing relations as ,.,ell as the pit':h and intensity relations: the latest issue of CREATIVE CO!·IPUTING (~nrchApril 1917) has sever,.l articles cn the relation of music and computers .. ,
which might offer useful. ideas.
This paper is somewhat speculative. but en overall theory of
speech timnr, seems to be a. more fruitfUl vay of dealing with speech
synthesis tr.an stringine phonemes together, one by one. So fa::- as I
know, the relevant duration ratios I have been discusaing a.re not
available in usefUl detail.. Pilot studies ll8de at The Ohio State University all remark that this area of speech timing should be investigated more thoroaghly. Therefore, I wish to call your attention to
this aspect of research and urge those of you who ha.ve a phcne~ic!!
laboratory at your disposal to cc;nsider the determination of duration
ratios in speech as an important and usetuJ. field of inquiry. It
seell'S to me that the problems of both 'accent' and speech reco""itlon
might be brought closer to solution if more sophisticated approaches
to the problem of speech timing and the re·!'erence patterns of the
entire pbonological system aloe taken into account. Once the timing
has bean stabilized, the integration of pitch and intensity parameters
should be easier.
can do the S8.'lle:

::!!
::D

~

~
~

-t

m

::D

"~

::D

m

"V

::D

oo

m
m

C

Z

Q

en

~...

.~

~

I'"

o

l>

I'"

d
~

§
~m

...en
N

TABLE III

naLE'I
Comparison of average durations, CI.n mlll.iseccnds) of' se~ents
in three, monomorphemi,c and tbree bimorpheItic words, produced
by speaker DS.
Word

C

1

2.

stead

l33

123

301

l49

94

98

l33

20

skid

148

104

211

l5J.

sldd~

128

91

90

28

skit

156

104

185

U5

sk!'tty

llO

81

83

23

stea~

C,

V

1

C

s

,v

2.

Differen.ce 1:etwee.:: the re~!l.tive variances of successive segments
taken in~i7id~ ar.d considered as a co-articUlated sequence,
calculated on the basis of dis~llabic words produced by DB.
[negative values = negative correlation).

Total
Word

C C

CV

CCV

V C

steady

-0.55

+0.03

-O.3l

-0.13

+0.18

-0.53

-0.10

skid~

-0.04

'-0.09

-0.22

-0.32

-0.61

-0.38

-0.92

skitty

+0.33

-0.03

+0.35

+0.01

-0.31

-0.73

-0.86

1 2.

112
l73

518
620

1.66

509

2. 1

12.1

1 ,

C , V2

VV

1 2

CCVCV
1 2. 1 ,

2.

560
."

l5l

::u

454

!!l
n

Taken f'ron:

Taken from:

Ref'erences:
1916. The tie has come to talk. BYTE 1112 (August).
26-33.
Bond. Zinny S. 1971.. Units in speech perception. The Ohio State
University unpublished Ph.t. dissertation.
Bush. Clara 11. :972. Temporal. ratios of' sound seguents and the~'­
ception of' 'Engl.lsh. dialect dif'f'erences. Proceeliings of the 7th
International Con~ess of Phenetic Sciences. !·bllton. 666-673.
Denes, Peter. 1955. Effect ot" ,luration o~ the perception of voicing.
Journalof' the Acoustical Society of America. 21.161-164.
Garnes, Sara. 1915. Perception of' auprase@lllelItal. md se@lllelltal.
features. Sema.sia: Beitrlge zur german.isc~oma:o.isch.en. Sprachf'orllChung. Band 2. 61.-73.
Crw:Idt, Alice\lyl.and. 1916. COlIIPenaation in Pbonology: Open
Syllabl.e Lengthening. Indiana Univ~rsity Lil18'l1sticB Cbb. 1-81.
I'.ozhlrn1ikgv. V. A. md L. A. Chistovich. 1965. Speech: Articulation and Perception. Translated by J.P.R.S •• li&ahingtOD. D.C.,
110. JPRS 30.543. Moscow-Leningt"ad.
Lehi.te. Ilse. 1963. (See bib1iogr-ap~ f:or Lehi.ste. 1912).
Lehiste, Ilse. 1964. Juncture. Proceedings o~ the 5th International Congress of' Phonetic Sciences. The Hague: Mouton. 112-200.
Lehi.te. Ilse. 1910. Suprasegmentals. The MIT' Press.
Lehiste, Ilse. 1911. Te:;rporal. organization of' spoken language.
In: . FOrm og Substance. Phonetic and Linfi!llisUe Papers Presente:l
to Eli FiBcher-Jllrgensen (Rammerich. Jakobson. and Zwirner, Eds.)
Odense: Akadem1sk Forlag. 159-169.
Lehiste, Ilse. 1912. Temporal compensation in • qwmtity l.angttage.
Proceedings of' the 1th Interna~iollal. Congress of' Phonetic Sciences.
'!'he Hague: Mouton. 929-939.
Lehiste. Ilse. 1912. Manner of' articulation, pa;ral.le1 processing,
aDd the perception of' d'JratiOll. University o~ Essex Occasional
Papers 1110. 13.l.-24.
Popperwel1, R. G. 1963. The JIl"OllUIlciation of l'lerwegim. C_bridge
University Press.
Rice, D. Lloyd. 1916. HardlllLrlI and sof'tware fer speech synthesis.
Dr. Dobb's JournliJ. o~ Computer Calisthenics &Del Orthodon.tia. Vol.
Atmar. Wirt.

DU1'erenc.e bet-.reen the: relative. variances of s1lCcea&ive segm,en'!;s
taken. 1ndi.vidllal..ly- and considered as a co-articUla.ted sequence.
ealeul.ated on the basis of,monosyllabic words produced by DB.
[negative values
negative correlation].

=

--_._-----------,-----CC

1 2.

CV
2.

CCV
1 2

VC

•

C C VC

12.3

steed

-0.13

-0.38

-0.58

-0.66

-0.19

staid

~.01

~.26

+0.13

-0.48

-0.05

stqed

~.48

~.l4

+0.26

-l.01

-0.19

stead

-0.40

-l.29

-0.36

-4.1.1

-2.80

skid

-0.06

-0.33

-0.32

-0.21

-l.l4

skit

,~.01

-0.20

-0.20

-l.26

-0.53

stq

-0.55

-0.1.2

-0.08

Taken from:

Lehiste. 1911. p. l63.

o;s::
~

Lehiste, 1971, p. 167.

TABI.E II

Word

Lphiste, 1971., p. 165.

-t
m

::u
."

~

::u
m
"0
::u

g
m

m

!2
Z

C)

til

~

x

--

~
~

r-

o

»
r-

a
n

»

!2
~m
N

--

.....

1.~.6-8. (April. 1976),.
Rice. D. Llpyd. 1976. Friends. humans, 8I1d cOUDtryrobots:
1QIlr ears. BYTE #12 (August). 16-2~.

-=utw= rr.zcmzc=o:c=
I!.Al'lDaJ'T:

~

4-_

'Sentence No.2
Stress Group

;=;j;1=

=cuc=ac=

CJ::7J42

t£J

Temporal. unit:

=accented

1.
2.
I

~fB
-9.-

xx
xxx x
x
xx
x
xx
xxx
xx
xxx

1

X

I

xx
4, 6, 8
xxx
.T.9
xxxx 2

I

I

evev = evee,

Phonology:

3; 5

I
I

xx
X

xx
X

xx
xx
.' x x x
I

X

~.

2.

3.

4.

chessboard ~-1 th a
s{~g1e
queen

T.

I

12.
13.
l~.

an anBl.ysis of' a
s!~e

I
I

8.
9.

Text (Wrds/svllables)

xx

15.

I

XltXX
X X x

xx
x
X
X X X

x
, xxxx
x·x x
,x
, xx
xxxx
x
xx

Pattern Recurrence:

t~-person

ga,me can

, xx
, xx

l~ into

f.cscinating
c&rners of'
mlJriber theory

I

*stress domain: may include
drsyl1ab~c words evev (e.g.,
'steady') as well as closed
or long monosyllables (evv,
eve, evee, etc)

Clu~.

1
6, T, 11, 14

2. 5. 12. 15

xxx
4, 10
xxxx 3, 8, 9,-13

:D
"'II

!:
:D

m
"II

:D

g
m

m

en

2. 4, 9
3, 5. 7
8

,x

~

o
Z
G')

6, 10

5.

6.

11.

etc, see Grundt, A.W. 1976. Compensation in
Open Syllable Lengtheni~g. Indiana Universiw Linguistios

pliyed em a

1

S·tress Groorp
~~

Pattern Recurrence
I

I

...~

Sentence No.3

~O.

Stress GrOIlP
~
~

xx

x
xx
. X X. X

Sentence No.1

~

~.
m

-constant n:.i~iIi!um duration'"

An analysis of' a simple t~~-person game can lead into fascinating
corners of' number theory. We begin this mnth with a char:tdng littleknown game played on a chessboard with a single Cf.teen. Before ve are
through. we shall have eX81lIined a remarkable pair of number sequences
that are intimately connected with the golden ratio and generalized
Fibonacci sequences. (Gardiner. Martin. 1977. ~fathematical GatreS,
SCIEblTlFIC AMERICA!{ (J.Brch). pp. l34f'f).

n

We begfn this
mOnth with a
cMnning
little-known
•
game

I

~:

r3.

1.
2.
3.

, xx

ayllable
x • unaccented syllable
I

n

Pattern Recurrence

stress-tiJred isochronous units,
made up o~ syllables.
Unit begins with stressed syllable
and continues until next stressed
syllable.

Let stressed syl1.a.ble
9,ymbols:

oren (vords/sv11ables)

10.

Text Analysis into Temroral Units

~

~~

4.
5.
6.
7.
8.
9.

Tc!'-l'ow Analysis o~ Language Rhythl".s in
Speech Synthesis.
By-: Alice Wyland Gr'undt
.
Calif'ornia Stoate )Jll;iversity. Fresno
Copyri~~t 1977

Def'initions:

"'II

ii

lend me

~
'text (~"Ordslsvllables)

Be-fOre we ar.e
to/~gh we shall have e_
-amined a re-znlrkable
p(ir of'
ntfmber
sequences that are
intimately COll-n~ted with the
~lden
riCUo and
gin '"ralized Fibo_
-n.ccci
,
sequences

~

r-

o

l>

r-

d

n

l>

!

~

~

m
N

cD

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

MUSICAL SCHENA - for firstt .. o sentences of text.
Let ,stressed domain = half·-note minimum
Remarks:

Tempo, time and key signature, dynamics, pitch changes,
etc. chosen arbi~rarily for this example.

J I f~ · f

=$~1 ~=-'J
lit

in

>

Ie

E J

known

~

chess - board

1J
with

~

game

J I ~a

sing

~--

played

scJ
Ie

on

>

d.
queen.

a

=t

fT1

PAGE 219

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

HOME TEXT EDITING
Larry Tesler
Xerox Palo Alto Research Center
3333 Coyote Hill Road
Palo Alto CA 94304

ABSTRACf
Your computer's text editor may be the program you use most. If you don't
have an editor you like, it is best to copy the design of an existing system. If
you decide to design your own, some guidelines are offered both for the
design of the commands and for the design of the program. They focus
primarily on "two-dimensional" editors that make full use of a display, but
they pertain indirectly to "one-dimensional" editors such as those that can be
programmed for teletypewriter style terminals.

PAGE 220

of your editor, then it may help to consider the following. Each of us has
unconscious idiosyncrasies that make Ol:r lives and the lives of our friends
more interesting. But when one's isiosyncfa:ij('~ :-..:h}w tiP in the design of a
program, other people who try to use the program "ften find it confusing.
Even if you do your design by brainstorming with a friend. it's likely that the
friend is a Whatsisology major just like you, and that your technical
background has prepared you both to think that a Whatsis command is just
what the world needs in a text editor.
Therefore, I strongly suggest that you try to explain your command design to
someone who majored in Southern Rumanian Poetry or to someone who was
lucky enough to get out of school after the eighth grade. If the editor is to be
special purpose. explain it to someone who would want to use it for that
purpose. When the listener can not understand what you are talking about,
please do not think that he or she is stupid. What has happened is that your
design, like almost all others that people think up, is the computer equivalent
of un Edsel. Learn from Ford's mistake; go back to the drawing boards. And
reread the tips that follow.

3.2 You can't bake a cake on a hot plate.
I. Text editors don't really edit.
Almost every computer with a terminal also has a program that lets people
type and alter text. Usually, that program is called an "editor". However, in
English, an "editor" is a person who reads a document and improves its style,
clarifies points, verifies arguments, and corrects grammar and spelling.
Editing is a complex intellectual task best performed by humans.
A computer can be a powerful tool to assist a human editor. Changes can be
made to a text without the person having to completely retype it. But the
machine does not improve style. does not clarify points, does not verify
arguments, does not correct grammar, and usually does not even correct
spelling. So a "text editor" is not really an "editor" at all -- it's just a fancy
pencil.
The term "editor" is a misleading name for such a program, not only because
of what the program con't do, but also because of what it can do, which goes
well beyond the improvement of someone else's prose. It can help a person to
compose one's own prose -- or poetry -- by offering a neatly typed version of
each new draft on command. It can do a certain amollnt of typography,
including indentation, spacing. and sometimes justification of margins. It also
can help a person to fill out a form, to provide data to a computation, to
converse with a dialog system, and neither last nor least, to compose and alter
a computer program.
A better name than "text editor" might have been "interactive text processor".
Unfortunately, the terms "editor" and "editing" have come into common
misuse, so I will reluctantly employ them myself in the rest of this tutorial.
Henceforth, whenever I use the term "editor". I will not mean a person, but
rather a computer program that lets one type and alter text. The human user
or such a program will be called the "operator".

2. Designing a Text Editor.
Many computer users find that the program they use most is the text editor.
If you don't like your computer's texl editor. or if you want to take on a
challenging programming task, it is often possible to concoct your own editor.
You can design olle from scratch, or you can imitate a design you've seen and
liked on a friend's machine. The latter is a far safer course. Designing an
editor is difficult, and you may put in a lot of work only to end up with a
tool that is frustrati ng to use.
For those who are thinking of designing an editor, the remainder of this
tutorial offers some advice to help in your adventure. Not every aspect of the
problem is covered; it is assumed that you have used at least one editor and
are familiar with the general concepts of editing.
There are two aspects to the design of a text editor: What will 'be the
command structure? How will the program work? I will call these two
aspects "command structure design" and "program design".
Command
structure design is part of a larger problem known as "user interface design", a
problem too large to address here.
Although the design of the command structure and of the program are not
completely independent tasks. we'lI take them up one at a time. Mainly, we'll
talk about command structure design. Most people with sufficient interest can
manage the program design for an editor on their own.

3. Command Structure Design.

3.1 Rube Goldberg never sold anything but comic strips.
There are several ways to approach the design or commands for a text editor.
If you're designing one just for your own usc, then you can dream up any that
you like. After all, if you like catsup on your cottage cheese. who's to object?
On the other hand, if you would like friends and family to be additional users

The first constraint on the design of your editor is the physical hardware that
your computer has. If there is a display screen, even a one-liner, then use it;
it is chock full of advantages. If there is no display, a decent job can be done
with your typeout terminal. If you have both a display and a printer, then the
display should be used for editing and the printer just for typing neat drafts.
There are two ways to use a display: "one-dimensionally", in which it is just
like a fast typeout terminal, but only shows you the last few lines of dialog, or
"two-dimensionally", in which many lines of a page are displayed as they
would appear on paper. without commands interspersed. From the operator's
viewpoint, two-dimensional editors are superior in many ways to
one-dimensional ones. However. they are harder to implement; how hard
depends on your machine characteristics.
If you choose a one-dimensional approach. or if you have no display at all,
then I recommend reading reference [1]. which describes the commands and
lists the program for a very well implemented one-dimensional editor. The
suggestions that follow pertain mainly to a two-dimensional approach, because
the problems are less obvious. However. if you are sticking to one dimension,
you may still get ideas from the discussion; just translate the concepts from
one medium to the other. Sometimes, I do this for you by including [notes in
brackets for one-dimensional editors].
The most important part of a text editor is the means the operator must use to
specify the part of the text that is to be manipulated; this task is often called
"entity selection". In most two-dimensional editors, the operator can select
any character or line in the text; the selected entity is often marked by a
"cursor". [In most one-dimensional editors, the operator can select any line
and by various subterfuges can get at characters within the line.]

It is often useful to be able to select words, sentences, form fields, or other
entities of text, or to select the interstices between characters instead of the
characters themselves.
However. the benefit of such special selections is
marginal for many applications. By designing them in, you may simply
clutter the editor with unnecessary mechanisms and fill up scarce memory
space with the software to implement them.
If your display has a pointing device to go with it (a tablet, joystick, mouse,
light pen, etc.). then by all means use it to make selections. If you have an
AID board, you may be able to add a joystick for a few dollars.
Many people think they can control an editor faster from the keyboard than
with a pointing device, but some objective studies have found the opposite to
be the case.
Even ignoring the issue of speed, pointing devices have advantages over key
control.
It has been shown that, given a choice of selection methods,
operators will usually gravitate to a single general-purpose method and ignore
all others, even in cases where they may be faster. A pointing devi£e provides
the most general selection method, because every selection -- no matter how
far it is from the current selection -- can be made by the same means.
Arrow keys. control keys, space bars, and so forth are less general; with them.
the operator ends up devising strategies to. get the selection made. in an
acceptable time. Imagine a car whose steering wheel was replaced by left turn
and right turn keys for various angles. It may seem like fun to be devising
strategies to get the best use out of a program. However, the fun of toying
with the editor wears off when you are trying to get that term paper finished
in time or when you are trying to write that neat program or an important
love letter.
Another advantage of a pointing device is that it reduces the number of keys
needed to run the editor. Sparseness is a virtue in interactive computer
programs; the fewer commands and the fewer keys you need. the easier it is to
operate the system, even if an occasional command requires extra keystrokes
as a result.
Of course, if your computer has no painting device, then make the best use of
the keys. Tens of thousands of people do it every day. If the terminal has
cursor control keys. use them if possible. Otherwise, use other keys, but
preferably not typing keys. It is very confusing to people when the same key'
sometimes types the letter Wand sometimes selects the next Word in the
document.

FIRST COMPUTER FAIRE PROCEEDINGS
[If your terminal has no display, then there are many ways to specify a line to
select. Each line can have a number semi-permanently attached to it (number
them 100, 200, 300, and so on). Insertions can use numbers in between the
ones already used. There should be a renumbering command to use just
before printing out a draft. It should be possible to print a draft with or
without line numbers.]
[Other ways to identify lines are by current ordinal number (constantly
changing during the session -- very confusing), by distance from the currently
selected line (".+6", ".-10"), by special name CO" for final line, "~" for
preceding line, etc.), or by sample content (" 'the stove' "). In my experience,
most people prefer the last three methods over the others.]
There are other hardware attributes that can constrain your editor design.
You may wish "control-M" to mean something special, but on an ascii
terminal, that stroke often produces the same character code as a "return", so
you can't tell them apart. The agility of the human hand is also a factor; it is
easier to strike "control-A' or "control-L" than to strike "control-F" on a
standard keyboard layout. It takes a long time to strike a key that is far from
the home typing keys, even for a hunt and pecker. So think about which
commands happen most often, and be sure to consider any physical
disabilities that the potential operators may have.

3.3 Some cuisines.
There are many possible command structures for a text editor. I will try to
give a sample to stimulate thought, and suggest some criteria to consider in
choosing among them.
If you have have used several pocket calculators, you know that there are
"algebraic infix" models where you say "2 + 3 =" and "Polish postfix" models
where you say "2 enter 3 enter +". It is even possible to have "prefix"
calculators, where you would say "+ 2 enter 3 enter". A similar classification
exists among editors.
A "prefix" command structure has the operator specify an operation first and
then the selection or selections on which to operate. For example, "Delete
(select character) (return)" [or "Delete lines 2 to 10 (return)" in a
one-dimensional editor]. Some people like prefix commands because they
sound like English sentences and because they require confirmation of the
command, which provides an opportunity to change one's mind.
A "postfix" command structure has the operator specify the selection(s) first
and then the operation. For example, "(select character) Delete". Postfix
commands are usually easier to use because the absence of confirmation
requires fewer keystrokes, and because machines to which people are
accustomed work that way. On a typewriter, you first move the carriage and
then type. On a vending machine, you first make your selection and then pull
the handle (and then kick it). On a clothes dryer, you first dial the time and
then push start.
The trouble with postfix is that confirmation is not required. If you try
requiring it, operators may complain about the superfluous keystrokes. To
compensate for the lack of confirmation, each operation should have an
obvious converse (e.g.. "Insert" for "Delete", or "Undo" for any prior
command).
There could in theory be "infix" commands in an editor. To move a
paragraph from one place to another, you would say "(select source) MoveTo
(select destination)". The trouble with this form is that the command ends
with neither a confirmation nor an operation, and people feel uneasy: in
postfix systems, they are used to an operation stroke at the end of each
command, and in infix systems, they are used to a confirmation at the end. It
is better in prefix systems to avoid infix altogether. In postfix systems, it can
be approximated by a pair of commands: "(select source) Delete; (select
destination) Insert".
In prefix systems, it is useful to allow the same command to be applied to a
number of selections without having to repeat the command: "Delete (select
something) (return) (select another) (return) (select another) (return)". In
postfix systems, it is useful for each command to leave some logical entIty
selected when it is done (like the character after the one deleted), and for a
command to omit a selection specification when that entity is the one desired,
e.g., "(select character) Delete Delete Delete" could delete three consecutive
characters. The latter is especially helpful if Delete is a repeating key on the
keyboard.
If there is a display on the machine, and especially when there is a pointing
device for it, there is another way to issue commands, namely, through a
"menu". The menu displays alternatives and the operator picks one by
selecting it. Menus are very helpful for commands that are not performed
often, like "Print pages i through j" or "Find a text string".
An entry in a menu can have space for parameters to be typed in. In a prefix
system, the logical thing to do would be to select the command first, then type
in the arguments (if any have changed from last time) and then confirm the
command. In a postfix system, type in the arguments first (if any have
changed) and then select the command.
[The one-dimensional analogy to the menu is prompting. For example, after
typing "Find (return)" the program can prompt with "key=".]

BOX 1579, PALO ALTO CA 94302

PAGE 221

3.4 Some recipes.
What commands should you have?
The only command that almost every editor offers is "Delete". It is a good
idea for the program to save the most recently deleted passage in a special
place, and to offer an "Insert" command to put that passage back in the text
before the specified selection. Such an Insert command not only can be used
to undo blunders but also provides a way to move things around in a postfix
system.
A problem with "Insert" is that one may hit "Delete" twice in a row by
accident and thereby loses the ability to undo the first Delete. This can be
solved by storing the last two deletions and allowing two inserts in a row to
bring both back. More than two are of marginal utility (even two are a
luxury).
Another useful command is "Copy", especially if the editor is to be used for
writing programs. In a postfix editor, Copy should be like Delete in that it
puts a copy of the selection in storage after which Insert can put it somewhere
else.
For typing in text in a postfix system, it is best if no command need be given.
After making a selection, the operator should simply be able to type in the
normal manner, and the typing should be inserted at that spot. Requiring'a
command is prone to error; since people are used to typewriters, they may
forget to give the. command.
Speaking of typewriters, most people find an interactive program easier to use
if it works a lot like a familiar machine. Thus, to retype the preceding
character, the operator should be expected to type "backspace" (assuming there
is a key that can be so labelled), not some arbitarily chosen key.
Unfortunately, it is not always possible to design an editor so that typing can
be dOlle without a command. With a terminal lacking control keys [or with a
one-dimensional editor], it may be necessary to use the typing keys for
specifying commands. In that case, a command will be needed to enter "insert
mode" and some stroke will be needed to leave the mode. Many editing errors
result from striking keys without first getting into or out of insert mode; so
avoid having modes if you can.
A major problem with typein is what to do when the line fills up. Some
editors act like a typewriter: a bell rings and characters soon get discarded.
Others allow a line to be quite long, in which case there is generally a way to
see the whole thing a little at a time. Still others_automatically move the last
word of the line to a program-created line below. In some editors of the last
kind, a subsequent Delete command may cause words from created lines to
Some people like this arrangement (called "paragraph
move back up.
editing"), but many are confused by it, even with a display. Furthermore, it is
hard to implement, so I recommend skipping iton your home computer.
If you don't implement paragraph editing, you may still want a way to specify
that a group of lines is a paragraph. This can be done every time a command
is to be performed on it, or it can be done at any time, whether by a "Start
paragraph here" command, or by establishing conventions, such as a blank line
between paragraphs. It depends on what kind of text you will be working
with and what you will be doing to it.
If you are editing long texts, rather than just short inputs to a dialog program,
then other commands you may want are:
Find next occurrence of a text phrase
Change all occurrences of one text phrase to another ("substitute")
IndentlUnindent paragraph's first line/non-first-lines/all lines
Retype paragraph with as many words on each line as can fit
Retype and insert extra spaces to justify each line but last to right margin
Retype and insert extra spaces to center. each line between margins
Paginate every n inches
Print pages' i through j, or all pages
There should be a way to abort a command, at least if it is time-consuming,
such as Substitute or Print. The keystroke chosen for this purpose should be
uniform regardless of the command or the mode.
You will probably want a way to move text between files. A sample set of
commands for this purpose are Include and Extract. Each takes a file name
or number as an argument. The Include command inserts the whole text of
the named file at the position selected in the current file. The Extract
command moves the text selected from the current file to the named file.
Although faster commands can be designed, these are both easy to implement
and easy to use.
A fancier way to deal with multiple files is by dividing the screen into
"windows", left and right or above one another, and displaying a different file
in each window. The "current" window ought to be clearly distinguished to
avoid confusion. In a postfix editor, there should be only one selection on the
whole screen, not one in each window, otherwise, many people get confused.
You will want a way to browse through the text. The easiest way to
implement browsing is to provide page turning, but it is nicer for the operator
to scroll a line at a time. Fancier systems allow browsing by headings or
through a table of contents. If you do work' by pages, then there is a problem
when a page fills up that is the same as that mentioned earlier in connection
with lines filling up. The possible solutions are analogous.

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

There must be a way to move text from the floppy.or cassette to the editor
and vice versa. There are two philosophies about when to write an updated
file back on a floppy disk. One possibility is to work it as you would with a
cassette, namely. require the operator to issue a "store" command. either
specifying a file name or address, or defaulting to the same file or sector as
before, or defaulting to a higher numbered version of the same file, Another
possibility is to update "continuously", whenever there is a pause in operation,
or whenever a certain amount of work has been done, or whenever that page
of the text has been scrolled off the display. This technique provides safety
against machine failures or later operator errors. However, it is a good idea
for the program first to back up the original version of the text on a
temporary file.
If the text you will be editing will often be computer programs, it is nice (if
the operating system supports it) to have an "assemble" or "compile"
command that writes the text on a file and causes the system monitor to start
the assembler or the compiler. Of course, any good interpreter should have a
text editor as its front end to enhance the direct execution feature.

PAGE 222

from paragraph number to starting line number; a map from command name
to subroutine location; and so forth.
In concrete terms, most maps have special properties that let them be
The simplest
implemented more efficiently than by a list of pairs.
implementation is a pair of arrays of equal length. If the domain is simply
the consecutive integers L.N, then only the range array is needed. If the
range is only defined for domain values from M... N, then no space is needed
for the undefined values, as long as the values M and N are available to help
access the map correctly,
If the domain is ordered, you can use a "binary search" to search the table for
a given value in log2n steps. If the domain values are unique, you can use a
"hash table". These techniques can be learned in any good text book on
programming, e.g., [2]. However, a straight linear search is preferable on a
small machine unless you can demonstrate that it is causing a performance
problem.
A map can be inverted so that each line becomes a record whose fields specify
the range elements to which certain maps map that line.

3.5 Feedback
When using an editor with either modes or prefix commands, operators often
get confused about what they just did and what they can do next. In a
two-dimensional editor, you can reserve a "feedback area" in which you
announce these things in canned English. If you don't have time to display
them continously, it is just as good to display them only when the operator
pauses for at least a second, and almost as good to display them only on
command. [In a one-dimensional editor, commands can be abbreviated and
the program can expand them to supply feedback, but careful: operators get
confused when the terminal types in and out at the same time.]
One of the characteristics of a computer editor is that invisible characters like
(space) and (return) ar~ usually represented by character codes just like visible
characters. This is nice for the program, but when a naive operator is faced
with joining two words'together, he or she may not understand the concept of
"deleting the space in between". It makes no sense, really, to delete something
that is not there!
Even experts often have trouble telling an invisible
character apart from the absence of texL
There are two solutions to this problem, which can be used separately or
together. One is to give feedback. Either always, or upon a special command,
invisible characters can be replaced by special visible ones to let the operator
tell them apart. Depending on your display controller, you may be able to
show the difference in other ways (gray background, for example). An easier
solution is to let selections be made in empty space on the screen. When
typing is done there, have the program surreptitiously insert sufficient spaces
before (and sufficient returns above) the selection to give the operator the
impression that they were there all the time.

4. I'rogram Design.

The reason to think of all of these diverse data structures as maps is that your
program can be simplified if you use.a uniform subroutine calling convention
to look up in maps and modify maps, regardless of the way they were
implemented. One advantage is that if you ·improvti the implementation of a
map, the code that uses it won't have to change. A more subtle advantage is
that the program will be easier to construct, understand, and improve because
of the uniform application of a general abstract concept.

4.5 Text Representation and Display Update
On a system with 8KB of RAM, the program code of a typical editor written
in assembly language occupies 2K to 4K. Of course, to achieve such a small
program, you must be sparing of features and careful in coding.
There are two basic approaches to the use of the 5K or so of leftover space.
The simplest one is to store the current page of text right in the RAM. and to
keep the data structures small enough so the largest page you'll ever need will
fit. The more complicated approach is to cache only a small amount of text
in the RAM, and to leave the rest on secondary storage. Some of the extra
RAM space will now be needed to support the caching mechanism, but some
may be gained for programming additional features.
The caching approach has the advantage of allowing "pages" of great length to
be handled. However, it will either be sluggish or complicated (or both),
depending on whether the secondary storage is disk or tape, and whether the
operator processes the text sequentially or jumps around a 10L
On a home machine, it is generally better to restrict pages to about the size
that can be displayed in one screenful, i.e., lK or 2K bytes. This eliminates
the need for scrolling within a page, as long as commands are supplied for
page merging, dividing, and flipping. Furthermore, the text can be stored as a
single contiguous string to which any edit can be performed faster than the
operator can type.

4.1 General Considerations.

The amount of "primary" (fast) memory in your machine limits both the
program size and the amount of text you can handle quickly. Even if there is
not much room for text in the primary memory, you can keep the text on a
floppy disk or even on a cassette, except for the page or even for the few lines
that the operat.or is currently dealing with. It is also possible to save program
space by putting special features of your editor onl0 the floppy and bringing
them into primary memory only when needed.

With this approach, the map for display updates maps line numbers on the
screen to starting character positions in the text string. Every edit must
update the map as well as redisplay those lines that are affected. Note: Some
displays can not redisplay a line without clearing all the lines below iL If this
is the case with your system, defer screen update during typein until the
keyboard input buffer is empty.
4;4

The operating system or program library usually provides services useful to a
text editor. For example, there should be a buffered keyboard input utility so
that the operator can "type ahead" while the system is performing a
time-consuming operation,
If the secondary storage is organized into named files, use of the system is
Simplified. Otherwise, files can be referenced by number or by starting
address. Another way to let operators specify files is through a menu. In that
case, each file can be identified by a string of text that describes its content
rather than by a "name". Even if two files have the same description, they are
distinguished by having separate entries in the menu. This alternative is
especially attractive if no file system is available and you must provide access
facilities yourself.

4.2 Maps.
Editors really aren't that hard to program, so I won't give you much advice.
The hardest aspects to deal with are the variable number of characters in lines;
the variable number of lines· in files, and (in a two-dimensional editor) the
continuous update of the display to reflect accurately the current state of the
text.
Most solutions to all these problems rest on the concept of a /nap. A map in
the abstract is a list of pairs which sets up a correspondence between elements
of a domain and elements of a range. For example, there could be a map
from each line number to the memory location of the first character of the
corresponding line; a map from line number to screen y-coordinate; a map

Reliability

It's never pleasant when a program fails, but when an editor fails, the operator
(e.g., you) often attains new levels of agony. It seems as if the last three hours
of work were just lost, and irreproducible work at that. You may find the
CRT reduced to fragments of glass on the floor.
Consider providing means of backing up files, checkpointing the program.
recovering from crashes, and so forth. In critical parts. of the program, put
validity tests for data structures and for important values, like disk or tape
addresses. You can't fit too much of these aids in a small computer, but a
little work in this area may save you a lot of distress later.
Careful command design can help, too. Make it more difficult to delete a
whole file than to delete a paragraph, and more difficult to delete a paragraph
than to delete a character. Avoid situations where if the operator is looking
away from the screen, a couple of stray keystrokes can cause disasters.
When using your editor, don't. go too many· minutes without writing the text
on a file, or too many days without getting printouts and backing up files. If
the editor is new and still has lots of bugs, exercise these precautions more
frequently.

S. Conclusions.
DeSigning Ii program is like writing a story: the possibilities are endless. It is
helpful to establish guiding principles in the design to constrain it in a

FIRST COMPUTER FAIRE PROCEEDINGS
manner appropriate to one's goals.
In the design of an editor, I recommend that you consider hardware
limitations, operator habits, how much awareness the operator can devote to
the system as opposed to the task at hand, and requirements for speed and
reliability.
The Author
The author was turned on to computers in high school in 1960. He helped
finance undergraduate work at Stanford by programming in such areas as text
processing, simulation, statistics. graphics. and compilers; ran a freelance
software company in Palo Alto for five years; then was a research assistant at
the Stanford Artificial Intelligence Lab doing cognitive computing. natural
language understanding. higher level languages. and text formatting.
Somewhere in there he took off a year to live in rural Oregon and develop
other interests such as folk music. cooperatives. and extra-sensory perception.
For the past four years. he has been a member of the research staff of Xerox
Corporation. specializing in text processing. user interfaces. and programming
systems. He likes programming as well now as in 1960. He has never learned
to operate a soldering iron.
References
[I] F. J. Greeb. "A Classy 8080 Text Editor", in Dr. Dobb's Journal, Vol. 1,
No.6, June/July, 1976.

[2] D. Knuth, The Art of Computer Programming (especially Volume 3),
Addison-Wesley, 1973.

BOX 1579, PALO ALTO CA 94302

PAGE 223

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 224

LEARNING TO PROGRAM MICROCOMPUTERS? HERE'S HOW!
THE RIGHT WAY TO DESIGN SOFTWARE
Software design has two parts, strategy and tactics. The
R.W. Ulrickson, President
strategy part is what used to be called the scientific method.
Logical Services Incorporated
or the systems approach. It consists of defining the problem
711 Stierlin Road
carefully, analyzing it thoroughly, then breaking it down into
Mountain View CA.94043
manageable functional blocks, and developing step by step algorithms for each of the resulting blocks. The strategy part of
ABSTRACT
software design works for any language and any computer.
The tactical part of software design consists of impleThere is plenty of microcomputer hardware. but not nearly
enough software or programmers. Learning programming is easy if menting the algorithms for each block using a specific language
and
a
specific computer. then testing and debugging each block
you use a systematic and consistent approach. Top down design
and structured programming can help you learn to design software before putting the blocks back together.
in any language and on any machine.
TOP DOWN DESIGN-STRATEGY
SOFTWARE IS WHERE IT IS AT
Top down design is a systematic strategy fordoing software
There is so much microcomputer hardware available now that design. You can use this fundamental strategy to solve almost
any problem, and you will never have to worry about being stuck
the mind boggles deciding what to buy or build next. At this
show alone there are a dozen or more CPU's to choose from, sev- with one particular language or one particular computer.
The first step is defining the problem. You should spe~d
eral microcomputers for each CPU, and hundreds of memory dea lot of time on this step. You are not finished until you
vices. The list of peripheral and I/O devices is growing by
have such a complete specification of the problem that a skilled
leaps and bounds. The paper that describes all this hardware
programmer could take your spec and solve the problem with no
literally outweighs the hardware itself. What's missing? The
questions asked.
SOFTWARE! It may not be completely missing, but it sure is
The next step is partitioning the problem into its major
minimal. In spite of recent advances,software for microcomputfunctional blocks. These may consist of input and output
ers is still in its infancy. It takes a lot of time and money
operations, data files and tables, control structures, and
to develop good software, and right now there are not enough
various processing packages. Each major functional block can
qualified programmers to keep all the microcomputers busy or
even begin to pursue all the potential applications and uses for then be partitioned into finer and finer blocks. The level of
detail
for your finest blocks depends on your experience. The
microprocessors. You can't get much use out of a microcomputer
beginner should not hesitate to block down to a level where
unless you can program it.
Even if you never intend to get a job as a programmer or to the process performed by each block is almost trivial. You will
often find that detailed blocking makes the algorithm for solvuse software in your work. learning software design can bring
you a wealth of pleasure, convenience, security. and savings in ing the problem obvious. This is not always the case; some
algorithms require a great deal of creativity and ingenuity.
real dollars. If you can program a microcomputer, you can buy
some inexpensive hardware and use it in your home to iITluse your- When partitioning and algorithm development are complete, you
can reassemble the blocks in the form of a diagram or flow
self and the kids with computer games; do your checkbook and
income tax; keep track of your recipe files; control your heat- chart of each major functional block. By this time the soluing and energy useage; protect your home from potential fire or tion to the original problem should be clear and you will have
documented much of your work with your diagrams. The fact that
theft; answer your telephone; keep track of your appointments;
you have not yet written a single line of code in any computer
control your appliances; and educate the whole family. The
language is crucial to good systematic design. Some of the
list of potential software applications goes on and on. But,
it's going to be a long time before standard libraries of fully greatest disasters in software design have occurred because the
programmer became bogged down in coding problems before the
documented programs are available to anyone who wants them.
Even then there is some doubt that they will be compatible with real problem was thoroughly understood and solved.
your system without some tricky modifications. The answer is to
BOTTOM UP IMPLEMENTATION - TACTICS
learn software design. But how?
Not only are there not enough programmers today, but there
Even the most systematic design procedure will not insure
is a shortage of decent training and educational courses for
a bug-free program. Bugs seem to creep into all programs, even
all the hardware peopl e who want to add software design to their those that have been running for years. The cost of program
list of skills. That's the software gap. What can be done
maintenance usually decreases as the program matures, but later
about it?
on the maintenance cost can be observed to go up again. This
happens when the fixes to one set of bugs generates a whole new
WHERE ARE YOU?
set of bugs. The problem becomes acute when "creeping featurLast year at the Personal Computing Show in Atlantic City, ism" sets in. Famous last words: "As long as we're fixing
this problem, we might as well add this groovy new feature".
then again at the Min.i/Micro Systems Show in San Francisco, we
How can the high cost of debugging be reduced? Consistent
took an informal survey. We asked everyone who came by our
tactics for implementing program code can go a long way toward
booth, "Are you a programmer?" There were a wide variety of
answers starting with "knowing glances" and comments about hav- eliminating bugs.
ing three degrees in computer sciences and 20 years programming
STRUCTURED PROGRAMMING
experience. At the other end of the spectrum was one guy who
said he was not interested in software, only the hardware. We
Structured programming means different things to different
wondered what he was going to do with the Altair he just bought. people. To me it is just a consistent way of implementing
In between, most people·said they were programmers because they programs using a few fundamental structures that have proven to
took a course in FORTRAN 10 years ago, or read a book on BASIC
be useful, convenient, and reliable. Some higher·level lanrecently. The point is, everybody is in a different place as
guages like ALGOL and PL1 were based on the concept of strucfar as computer knowledge and experience are concerned. The
tured programming, but the same structures can be used in
guys with all the degrees are the professionals. The others
assembly language programming as well. The cardinal rule in
were converted to programming from some other discipline or de- structured programming is that control enters a structure at
cided to take up personal computing as a hobby. The pro's had
exactly one point and leaves at exactly one point. This avoids
the benefit of years of study, the converts have to find some
complex transfers of control that can lead to hairy problems in
other way to learn programming. One of the reasons for the
debug.
wide variation in software knowledge is that programming has
A few simple structures having this fundamental characterbeen considered a black art involving some kind of mysteriOUS
istic can be combined to form programs of any complexity, and
incantation. that the high priests never revealed to the uniniyour programming will be more consistent, easier to understand,
tiated. Until recently, hardly anybody was willing to tell you easier to document, easier to change and maintain, and easier
the secrets, consequently everybody re-invented the wheel when
to debug. The result is faster and less expensive program
he wanted to write software. This is a real shame, because
development. As usual, there is no such thing as a free lunch.
software design is remarkably similar to hardware design -- if
Restricting yourself to a few basic structures can result in
you learn it right in the first place. The secret is simple:
slightly longer programs than tricky techniques that minimize
Be systematic and consistent in the ~ tQ!!. design software.
code. The savings from a consistent design approach almost alThat's what the pro's do, and their successful techniques are
ways outweigh the cost of a few extra bytes of code.
even more appropriate for the hobbyist.

FIRST COMPUTER FAIRE PROCEEDINGS

STRUCTURES
The seven basic structures shown in the figures fall into
two classes: open structures and closed structures. The open
structures provide no means to transfer control back to the
entry pOint of the same structure, while closed structures
provide such a path so that a sequence of operations can be
performed more than once. In a closed structure or "loop" control remains in the structure until a terminal condition is
met. The four open structures are called SEQUENCE, IF-THEN/
ELSE, IF-THEN. and SELECT-OPERATION. The SEQUENCE structure
simply accepts control. performs a process, and transfers control to the next structure. IF-THEN/ELSE implies a decision
element that transfers control to one process or another based
on some condition. IF-THEN tests a condition and performs a
process if the condition is met or transfers control without
any action if the condition is not met. The SELECT-OPERATION
structure allows you to select one of N different operations
based on evaluating some expression. instead of a simple true/
false condition. It is often called the N-way branch. although
control is always returned'to the common exit point.
The closed structures. DO-WHILE and REPEAT-UNTIL are loops
that differ only in whether the condition is tested before or
after the first process is performed. REPEAT-UNTIL executes
the process at least once. PROCESS-WHILE is a powerful combination of DO-WHILE and REPEAT-UNTIL where two processes are
performed in the loop.

BOX 1579, PALO ALTO CA 94302

PAGE 225

CONTROL IN

- ,
FALSE

TRUE

.----<.. CONDITION
?

L ____

_

_____ J

CONTROL OUT
IF-THEN/ELSE STRUCTURE

I

CONTROL IN

I

I
I
I
I IF TRUE-THEN
I PROCESS
I
I
I

L

CONDITION >-T_R_U_E_~
FALSE

CONTROL DUT

1

CONTROL IN

I
I

.-__FA_L_S_E< CONDITION

TOP DOWN DESIGN

?

I

TRUE

I

CONTROL IN
IF FALSE-THEN
PROCESS
PROCESS

I
I

SEQUENCE

I
CONTROL OUT

SEQUENCE STRUCTURE

L

CONTROL OUT

I

---_-1
IF-THEN STRUCTURES

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 226

CONTR L IN

CONTROL IN

- -

-I

- --

DO-WHILE TRUE
TRUE

PROCESS 1

CONTROL OUT

2

CONTROL IN
PROCESS 2

3
PROCESS 3

4

DO-WHILE FALSE

PROCESS 4

N

CONDITION >-F-,A::..:LS_E_....J

PROCESSN

?

E>N orE<1

L
PROCESS OUT OF BOUND

CONTROL OUT
DO-WHILE STRUCTURES
CONTROL OUT

SELECT-OPERATION STRUCtURE
CONTROL IN

CONTROL Itl

L

FALSE
CONTROL OUT

CONTROL OUT
REPEAT-UNTIL STRUCTURES

I

FIRST COMPUTER FAIRE PROCEEDINGS
CONTROL IN

FALSE
L

___________

. ___________ J

CONTROL OUT

r-----------

-----------,
I
I

I
I

I

P,.,....WhH.F....

I
I
FALSE

L

_

TRUE

_

J

CONTROL OUT

PROCESS-WHILE STRUCTURES
INTEGRATION, TEST, AND DEBUG
The tactics of programming continue with integration of
all major blocks into a complete program that runs in your
microcomputer. Testing and debugging can be formidable tasks
especially if your system must operate with real time I/O and
interrupts. There is a lot more to learn about good software
design. Such topics as Input/Output operations, arithmetic
operations, debugging techniques, documentation methods, and
higher level languages require knowledge and skills that you
will develop while learning the basics and practicing with your
own application programs.
JUST GETTING INTO SOFTWARE?
If you are just getting into software or trying to decide
whether to take the plunge, you have several options for learning how to design software. You can go back to school or take
college courses in computer science. You can take one of the
intensive short courses offered by the semiconductor manufacturers or the profeSSional training organizations. You can
read a lot of books, or take a self-study course. Or you can
just hang around the local computer store and hope for the
best. No matter what method you choose to educate yourself for
the·microcomputer revolution, and whether you are into software
for fun or profit, think about the advantages of systematic top
down design. Take the time to learn consistent and reliable
methods like structured programming for implementing your designs. And be sure to practice your new skills on actual
microcomputers.
Then as you learn more languages and become familiar with
different machines, you will have a firm foundation in systematic and consistent design techniques that will give you better
software and greater satisfaction.
RESUME
Robert W. U1rickson has been President of Logical Services
Incorporated in Mountain View, California for four years.
Logical specializes in microcomputer hardware and software design and offers a self study course in software design called
Modu-Learn™. Prior to founding Logical. Bob held management
positions at Fairchild Semiconductor in Digital Marketing.
Applications Engineering, Custom MOS Engineering, Computer Aided
DeSign, Test Engineering and New Product Design.
References: Modu-Learn™ microcomputer programming course,
~ 1976 Logical Services Incorporated, Mt. View, CA 94043

BOX 1579, PALO ALtO CA 94302

PAGE 227

FIRST COMPUTER FAIRE PROCEEDINGS

PAGE 228

BOX 1579, PALO ALTO CA 94302

STRUCTURED PROGRAMMING FOR THE COMPUTER HOBBYIST
OTHELLO
Ed Keith
655 E. Orangecrest Road"
Glendora CA 91740

In this paper I shall try to provide a basic understanding of what structured programming Is and describe a planning
technique called a hierarchy diagram. I will also demonstrate
the five basic logic constructs.
WHAT IS PROGRAMMING?
Before I can talk about structured programming for anything, I need to find out what programming is. Glancing
through the encyclopedia between Profit Sharing and Propaganda (an interesting juxtaposition by the way) I find a void
for this term. Oh well, as the ancient ,commercial says:
"Ask the man who owns one!" So I proceed to ask myself ''What
Is programming?" My first and easiest answer is "Writing
code for my computer." (I like to th Ink of I t as a computer,
not a microprocessor.) But then I stop and feel the need to
amplify the words ''writing code", perhaps I should have said
''writing good code", for this seems to be my goal whenever I
program (certainly no one wants to write bad code!). This
answer doesn't totally satisfy me either since It requires
definition of the term "good code". What is good code?
Some people will say ''working code", if it works It's bound
to be good. But this may not be totally true. Just because
it works doesn't mean It works well. It might work very
slowly or require 20K storage. There are a lot of constraints
to the definition of good code. To me, good code Is two
things above all else: Flexible and clear.
Flexible in that no program is ever truly finished. When
it was first written a program might have used a serial Interface for a teletype but now you have a parallel Interface to
a new line printer. If the program can be easily modified for
the change in I/O devices and communication interface, it was
probably written well. Inference: Plan for change. Capt.
Grace Hopper feels that 90% of all computer programs that
print a date will malfunction on January I, 2000. The original design probably did not encompass a century change.
Clear in that to be able to modify a program you must be
able to read it to find out what it is doing and when and
where it does it. Imagine the excitement as thousands of programmers madly search thousands of programs trying to discover
where the 19 comes from. Inference: Plan your-programs to be
read. Perhaps the best clue to what structured programming is
can be found in the word plan. Programming a computer is not
simply writing the code. I.t is thinking about it first.
HIERARCHY DIAGRAMS
In planning a computer program one of the better tools to
use is a hierarchy diagram. A hierarchy diagram resembles a
company organization chart in that It shows functional relationships between its elements rather than logical ones. Hierarchy diagrams are an organization tool. They help you to
plan the programs structure and should be done before any
flowcharting. (Of course most things are done before flowchartingl That usually ,includes writing the program!!) A
hierarchy diagram is usually referred to as a tool In topdown program design, probably since it is drawn top-down.
First begin with the name of the program written in a rectangle
at the top center of a page as shown in figure I.

Figure 1
In demonstrating these concepts I'll plan a program to
play the newly popular game of Othello, either using the computer as a board for two human players or letting a player
enter into combat with the computer itself. I'm going to
extend the hierarchy diagram by writing in the major components
of the game as It is played by humans. Obviously one must set
up the board, play until done, and close play. These three
components become the next level in the hierarchy diagram as
figure 2 shows.

I
SET UP
FOR
PLAY

I
PLAY
UNTIL
DONE

CLOSE
PLAY

Figure 2
As you sketch out your hierarchy diagram you wiil be
forcing yourself to concentrate upon the program and organize
the logical processes involved in making the computer accomplish the task. To develop the next level in the hierarchy
diagram select the leftmost box and ask yourself, what are the
components of this task. In my thought processes I decided
that for an initialization step the computer should print some
opening messages, initialize the playing board, ,discover
whether It was to simply keep the board or actively compete
and lastly, get the player's names. The second level for the
PLAY component involved getting and making a move for the first
player, getting a making the move for the second player,
generating and making a computer move and seeing if any further moves are possible. This seems a good place to emphasize that hierarchy diagrams show function not logic. At this
level the computer program ~ be capable of handling all
these functions. The logic of the program will determine
which functions are executed and in what order but the hierarchy diagrams must show all functIons. The-Tinalphase of
the program will be encountered whenever there is no further
move for either player. It involves the determination of the
winner, the printing of win and loss messages and a replay
query. All the functions developed so far are detailed In
figure 3.
The hierarchy diagram is drawn with lower and lower
level getting more and more detailed, but It should stop just
prior to the level at which the components become·actual lines
of code in a programming language. After each level Is complete, return to that level and ask yourself whether this component can be further subdivided. If so, the subdivisions
become the next level In the hierarchy. Figure 4 shows the
complete hierarchy that I drew for this programming application. Since hierarchy diagrams expand quite rapidly It Is
best to start with the long edge of a page as the top. In
fact, I tear extra long strips of my teletype paper for most
appl ications.
Once the hIerarchy diagram is complete, it should be
reviewed for complex logical relationships. If any occur,
they should be flowcharted before the code Is begun. But,
rather than draw one big flowchart It is best to draw several
smaller ones. For instance, the first level In the PLAY section could be flowcharted. You must decide how the computer
will determine the number of players, whether it is to make a
move or not. This will probably mean some sort of flag will
have to be set in the I or 2 PLAY routine which will be utilized here. From a complete hierarchy diagram you can usually
determine these kinds of relationships. In fact you must
actively seek them out and make notes about them before you
begin to code. Nothing will destroy a programmers concentration more quickly than discovering that a control structure
In one area of code depends on some variable from an earlier,
alreildy coded section, and not having forseen the nec:esslty
for 'the variable in the earlier section. Perhaps it' is now
clear why THINK FIRST should always be the programmers motto.
To THINK ishuman:-tO THINK FIRST, divine.
PROGRAM LOGIC CONSTRUCTS
To return to the divinity of structured programming requires that we next examine the logical structures that are
generally accepted as the standard for use In programming.
There are five accepted structures. These are:

i. Sequence
2.

IFTHENELSE

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 229

Figure 3

Figure 4
3.
4.

DOWH I LE
DOUNTI L

5.

CASE

SEQUENCE
Structure I is probably the most important. Sequence
means straight line coding as in Figure 5 - no fancy branches
to share one line of·code between several routines. It will
also help If you limit all your routines to no more than fifty
lines of code together on a page. It should be further stressed
that sequence means that routines should have one entry point
and only one exit. This makes them more easily readable.

---

Statement

.

Statement

Figure 5

--""

Statement

~

FIRST COMPUTER FAIRE PROCEEDINGS

PAGE 230

BOX 1579, PALO ALTO CA 94302

The other four structures are more complex logic structures that name and describe a basic logic case.

Error
Routine

'I'FTHENELSE
The IFTHENELSE structure as shown in figure 6 tests a
single condition to determine which of two statement blocks
will be exee.uted. Alternatively the ELSE section may be
omItted. For example in Othello, IF it is the first player's
turn THEN the first player moves ELSE the second player moves.
Statement
Block-l

1=1

Case-l

1=2

Case-2

I=N

Case-N

Statement
Block-2

Figure 6
The IFTHEN as shown in figure 7 is simpler and has only
one statement block that is bypassed when the condition is
false.

~~F

.1

Statement
Block

Note that my flowcharts are drawn left to right, top to
bottom, as one would read. Sometimes this makes flowcharts
easier to understand than the usual top to bottom format.
IMPLICATION FOR PROGRAMMING

_______________•• {

Figure 7

The DOWHILE structure, shown in figure 8, provides the
basic loop capability. A series of statements are repeated
while some condition is true. The condition is always tested
before each execution. In our game we wish to DO the play
routine WHILE there is a valid move left.
Statement
Block

F

Figure 8
The DOUNT1L structure shown in figure 9 differs from the
DOWHILE In that the test for continued execution of a block of
statements occurs after the statements have been done. In the
program called Oth~the computer will DO the search for a
move UNTIL all moves have been found.

Statement
Block

Figure 10

T

Figure 9
The last basic structure is called the CASE structure'
and is used when it Is required to select from a series of
alternatives depending on the value of a variable. In a more
complex game the player might enter a numeric code I having
a value from 1 to N where this indicates a choice of N alternative. Figure 10 shows the CASE structure for the preceding
problem.

Host of the languages currently available to the computer
hobbyist do not contain the logic constructs other than SEQUENCE. Although this is not a happy circumstance it Is one
that we must exist with for a while. We can take positive
steps to overcome this problem. For instance, in ASSEMBLY
language coding we can keep our routines simpie and .annotate
each line of code. In BASIC we can simulate the basic constructs and use Indentation to show logic and we can include
remarks to clarify our blocks of code. But, perhaps more
importantly, we can structure our experience with a.program
by remembering to THINK FIRST.

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 231

AN INTERPRETIVE APPROACH TO PROGRAMMING LANGUAGE IMPLEMENTATION

Dennis R. Allisan
Consultant
169
Avenue
Menlo Park,CA 94025
(415) 325-2962

an exercise for the reader to extend the language to
sometaing useful.

Abstract
An interpretive approach to the development of high
level
language com9ilers for microcomputers is
described in the context of compiling Tiny BASIC.
Using this approach, an interested hobbiest can experiment with lan_uage deSign and build useful
to 0 Is •

The target machine for our compiler is the Intel
808e.
It was choser. not so much for its capability
or architecture as for its market position.

Ind~pendent
S9ru~e

0.

I~TRODUCTION

Few compilers have appeared for hobby use, and those
that have are usually expensive by hobby standards.
The economics of the market is such that e~­
tre~reneurial
development of sUbstantial software
Slstems can~ot be supported. The hobbiest who wants
to have a complIer for his system must build it for
himself •
The interpretive approach described here is specific
to Tiny BASIC but can easill be modified to handle
other languages. It provides for one-pass compilation of source code to unoptimized object code. The
parsin& scheme is the traditional top-down recursive
descent technique used in many production compilers.
In this paper we develop the structure and some of
the components needed for compilation of Tiny BASIC.
Many of the choices made here are dictated by sim'plicHy of exposition. Compilers, even simple compilers, are very complex pro6rams and are difficult
to explain.
We expect to complete and test
the
compiler
described nere and publish it in llr· 1!QQ!>'a ~Ql!!:!!21
sometime later this year.
One final Cavaet: this is a paper system and has not
yet been implemented. While there is not reason to
expect significant errors, the implementor should be
wary.
1. TINY BASIC
Tiny EASIC has beet described in detail in ~r·
Dobb's Journal , Volu~e 1. It is a very minimal dialect-or-EASic with lS-bit integer variables and a
very few statement types. Interpretive implementations usually require about 21 bytes of storage.

2.

TrlE !ARGET MACHINE

We could have equally well chosen any other machine
as a tar~et. In particular, we could have chosen to
generate ~ode for a hypothetical machine which is
~articularly
bood for executing Tiny BASIC. We
would then have to write an interpreter for this hypothetical maChine's order set and pay for some additional overhead at execution time. but the overall
job ~ould be easier. In addition, the s/stem would
be mu~h more portable.
3.

TEE

INTE~PRETIVE

COMPILING MACHINE

The compiler itself is implemented as an interpreter.
The interpreter consists of a set of data
structures and operations on them. These are encoded in some fashion and a program written to inter~ret them. The capabilities of the compiler are thus
described by the semantics of the interpretive opcode set and the data they can reference.

12!!H

§!rll£.!llr~~

The compiling machine maintains a number of high
level data structures to accomplish its task of compilation. These are described below.

1!!!g ~ll~Egr T~£!~· This table is used to assoCiate line-numbers with addresses. It consists of
two It-bit integers per entry: the line number and
its aSSOCiated address. The high order bit of the
line number entry is used to flag definition (hence
the restri~tion that line numbers be in the ran6e 0
to 32767).

Ih~

Ih~ §im!>2! T~Elg·
This table is used to associate
lexiCal representations with their attributes and
addresses (if relevant). All names appear here including the both reserved names (e.g" IF and LET)
and s~ecial symbols (e.g., + and *). Entries are of
fixed length (though they need not be) and consist
of a six byte name (NUL filled), a One byte type,
and a two byte integer value. Interpretation of the
various fields depends upon value stored in the
ty~e.

quick summary of Tiny EASIC features and syntax is
given below.
» Integer arithmetic, 16-bit
» 26 scalar variables: A, B, ... , z
» Eight Statement Types
LET var = expr
PRINT eXpr-l1st
INPUT var-list
IF expr re10~ expr THEN statement
GOTO line-number
JOSUP line-number
RETURN
END
» Parenthesized expressions
» Standard operators: +, -, *, /
or
» Print list components may be strings
empty
It is assumed that all program lines have the format
line-number statement
and taat line-numbers are in increasing order.
A

This language is actually smaller than the languages
may people have i~plemented as Tiny BASIC, but is
more than adequate for our purposes. It is left as

~Qn.!r9! Stack.
The control sta~k, CSTK, is used to
maintain--informaticn about the state of the parse.
Effectively it contains return addresses for the
various recursively invoked recognizers. It is a
16-bit wide stack under the assumption that the compiler takes more than 256 bytes of interpretive
code.

bQ£21 Variables.

Parallel to the control stack are
three parallel-stacks: T0, T1, and. T2. These stacks
provide local storage for the each recognizer and
may be used to save values, references, or addresses.
~~~g 0~~9rI.
All com~iled code is directed to an
array, CODE, Which corresponds to the memory i~mage
which would exist at run-time. In a real compiler
with limited memory space, one could not dedicate
such an array. Other techniques would have to be
used to provide the equivalent of its function.
~lobal Scalars.
~ s~all
number of glObal values
need--tO--be--available for manipulation by the com-

FIRST COMPUTER FAIRE PROCEEDINGS

pller writer.
Tiny ilASIC are
PC
CX
IX

VALUE
TOKEN
CLASS
nAG

Amon~st

the global objects needed for

the address of the next program byte
the index of the next available
location in CODE
an index for generating fixups inside
the code
the value associa ted wi th current token
the current token
the current token class
the result of the last TST operation

As tue com;iler is extended,
values will be required.

PAGE 232

BOX 1679, PALO ALTO CA 94302

additional

tONE
ERROR

EXl!ression Evaluation., Ixpression evaluation utllrzes--a--~PN-set-of-Instructions and the AESTl.
All
binary operations pop the top two elements of the
stacK and co'mbine them and push the resul t. Unary
operations operate on the top of stack only.
Load
and Store move data to and from the stack.
LDI
LnG
S'lG
ttL
STL
ADD
SUB
AND
OR
XOR
SHL
SHa
MUL
DIY

global

Expression evaluation is needed
the construction of instructions, allocation of
~ata, and the like.
This is done by providing a
I6-bit wide expression evaluation stack, AESTK. As
the expressions to be evaluated need not be particularly complicated, this stack need not be very deep;
16 elements should be adequate. Note 'that all expressions must be pro&rammed in reverse-Polish notation.

'!i!.i!!~'§'§!.Q.!! .l?1~Ql!:.

for

1~!~£~! ~!'!!~Q~.
Input to the compiler is via a specialized operation (see belOW) which maintains the
lexical window. The window consists of an one byte
TOKI~, a one byte CLASS, and a two byte VALUE. These
are 6lobal quantities and are referenced as such.
In the Tiny EASIC com;iler only the TOlEN and VALUE
fields are used. More complex languages may utilize
the CLASS field.

The =hoi~e of o;-code set in an interpretive machine
of this sort is ~ostly a matter of convenience.
They divide rather neatly into several different
classes: those concerned with the flow of control,
those concerned with the parse, those concerned with
expression evalation,
and those concerned with
code output.
There is nothing particularly special about the particular set presented here. Additions, modifications, and deletions are to be expected during the
design of any particular co~piler. In fact, many
needed features such as listing have been totally
ignored.
haVe avoided all issues of encoding and have
shown all operations and addresses symbolically. Of
course, encodin~ is an important implementation issue and cannot be totally ignored. One woluld expeot for an 8~80 to use an 8-bit op-code and 8-bit
and 16-bit address/data fields.
Since fewer than
128 6lobals are required, an 8-bit address would be
adequate. Since there are only three locals, a special op-code could be used for each one, etc.

exit compiler
report error

NEG
~OT

GT
GE

EQ

LT
t:E

Load immediate value
Load global value
store global value
Load local value (T0, T1, or T2)
Store local value
Add
Subtract
And

Or
Exclusive Or
Shift-left, zero fill
Shift-right, zero fill
Multiply
Divide
Ne~ate

Complement
Test greater than, set FLAG
Test greter than or equal
Tes t equal1 tl
Test less than
Test less than or equal

Code ~eneration. The code generation provides a
mechanIsm--for- moving data and constants into the
CODE array. As a side effect, the PC and ex global
varia DIes are incremented appropriately.
Parse Control Instructions.
pop AESTK and ~ut low order
FE
byte into eODELCX]; increment ex
pop AESTK and store as an address
PA
into CODi[eX] and CODE [CX+1] •
adjust CX.
put constant byte. source is
PCB
interpreter code not stack.
PCA
put constant address.
put fixup byte. Use global
PFB
FX, not CX. Increment as
usual.
PFA
put fixup address.

~e

Flow of Control. A ~rocedure call and return facilIti- Ii ~~~ir~id. Unconditional transfer of control
is provided. Co~ditional transfer of control' are
based upon the value of a global variable, FLAG.
CALL
RT~

JMP
JT
JF

procedure call
frOm procedure
jump unconditionally
jump if FLAG true
jump if FLAG false

.~eturn

Parse Instructions.

fhe-inpiit-~ata-stream

NLINE
SCAN
1ST
tFLN
LI:LA
UDLN

These instructions manipulate
through the lexical scanne'r.

input a new line to be processed
move the next token into the window
set FLAG true if ar& matches token
otherwise set it false
define line number
load line address to top of AESTK
by referencing line number table.
test for undefined line numbers
and report error

4.

LEXICAL PROCESSING

Input to the compiler is processed character by
charaJter by a filter routine called the scanner.
The
al~orith~
used
identifies
atOmiC
elements--identifiers, reserved names, reserved symbols, numbers, and so forth--in the input stream.
ftt the beginnin& of the scan the old lexeme is dls:arded and the next lexeme copied to the current
lexeme.
Chara~ters are read until the first non-blank
acter is found.

char-

If the character is alphabetic then it is either an
identifier or a reserved word. The input stream is
marked and characters scanne.d as long as the input
is either alphabetic or numeric.
The delimited
strin6 is ther. looked up in the symbol table. Th~
type and value r.ields of the symbol table are
transfered to the next lexeme window.
(In Tiny
BASIC all tokens are predeClared. In a more complicated language, symbols which have not been encountered before would be entered into the symbol table
at this point and give~ some sort of default attributes. If the language required declarations the
incoming symbol might be tagged as NEW-ID and given
a zero value field with the ex~ectation that the
com;iler might verify that 1t 1s a new variable and
allocate storage for it. In a language with default

FIRST COMPUTER FAIRE PROCEEDINGS

declaration, for example, FORTRAN, the variable
might be giver. attributes based u~on its leading
character and allocated appropriate storage.)
If the leading character is a digit, then the object
is a number.
The scan continues collecting the
value of the number in the value field of the next
lexeme by multiplyin6 by the base (12) and adding a
suitably adjusted incoming digit character until a
non-digit character is found. The token ty~e is set
to indicate a number has been discovered.
If the character Is neither a digit, a s~ace, or alphabetic, then it must be a special character. It
may be part of a two com~onent special symbol (e.g.,
<>, <=, or >=), the leading character of a string
(indicated by a quote), or simply stand for itself.
In toe first case, the next character is inspected.
If it is one of the allowable successors, the two
character string is locked up in the symbol table;
if it is ~ot, the sir.gle character string is looked
up. If it is· a quote, a speCial global flag is set.
All succeeding calls on the scanner ~roduce just the
character found except for· and carriage return.
1he leading quote reports the start of a string, the
trailing quote or carria€e return the end of string.
For Tiny BASIC an appropriate initialization of
Sjmtol table might be:
NAME

TYPE

let
print
input

LET
PRINT
INPUT
IF
THEN
JOTO
JQSUB
RFTN
EN])

if

then
goto
!.,osut
return
end

)=

<>
<=

L1'

f1.

I

>

<:

VALUE

PAGE 233

The program ori 5 in is at 0100H and grows towards
higher addresses. The stack begins at the highest
possible pOint and grows downwards.
Variables are
preallocated since the maximum number in Tiny BASIC
is 2E (52 bytes).
In th~ compiled code it
stac~ space is available

is presumed that adequate
for the program to execute;
no cheCKS are made for stack underflow or overflOW.
(Addinb such checks is a good exercise for the
reader. )
The naked 8080 sjstem is inadeqate for supporting
Tiny EASIC. At least some operations are best accomplished ty making calls on systems subroutines. A
listing of those assumed by the compiler is given
be 1 ow.
I NNUM
PFNUM
PRSTR
NULIN
MULT
rrVD

input a 16-bit number
print a 16-bit number
print a string (zero terminated)
print t::r and If
multiply two 16-bit numbers
dlvide two 16-bit numbers

Each of these routines must confOrm to the partiCUlar register allocation conventions used ty the compiler. In this case, single argument functions find
their argument in BC; two argument functions find
their ar6uments in BC and DE; results are always
left in 8L.
The PRSTR routine is a special cas!.
The only strings in Tiny BASIC are in PRI~T statements.
The FRSTR routine expects to find a string
beginning at it's return pOint and continuing up until the first zero byte. The NULIN routine prints a
carriage return and line feed and takes no ~arame­
ters.
f.

CODE GENERATION

EO

PLUS
'1INUS
TIMES
DIV
Gr
GE

+

the

BOX 1579, PALO ALTO CA 94302

For toe most part, code ~eneratior. can be tied to
the various statement types. These are examined one
by one below together with the more general problems
of forward referencEs ar.d expression evaluation.
Rememter some of the deSGriptions here refer to the
Tiny BASIC run-time er.vironment and sOme to the compile environment. It is important not to confuse
cne with the other.

'.iF

LT
~OT



I

I

I

I

I
I
I

i

:

I
I
I
,

prof,ram

I

I

I

,

I

t----------:
I

I

I

I

1 ______ - - - - ,

Forward References. ~ forward reference is g2nerated-wnenever-a-GOTO or a GOSUB references a statement
which has not yet been encountered. For a GOTO the
compiler 6er.erates a
J~P
line-address
and for a GOSUP it generates
CALL
line-addres
To ac~uire the line address, a LLAB (Load Line Addressj operation is used to move the line address to
the AESTK. This routine pops the line number from
the top of the AESTK and searches the line number
table for a match; if no match is found it is entEreu with a line address of zero. If it is found,
the oigh order bit of the tabulated line n~mber is
examined; if it is on it is a forward referEnce.
Tne contents of thp of the line address cell is returred as its address ard the curreLt PC value is
~laced
in the line address. This allows a list of
various forward referenCES to be chained together
within the code output.
The DFLN, define line nu~ber, operator must check to
see if the r.ew line number appears in the table. If
it a~~ears it is either a forward reference or an
error.
If it is a fcr~ard reference, the chain of
references ~ust be followed back and each replaced
by tDe current PC value. To do this the location
:eferenced by the line address entry of the table is
loaded into a temporary. The current PC is stored
in its place. If the temporary is zero we are done.
If rot, the location giver. by the temporary is used
and toe process repeated. When the chain has been
resolved, the Gurrert PC is ~laced in the line address part of the table and the line number marked
as defined.

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

The final wrap-up operations must scan the line
number table to insure that no lines were referenced
without having appeared and give an error message if
there are.
E!RI~§§!Qn E!~!Y~11Q~'
Genera tin 6 good code for expression evaluation on a machine like the se80 is
particularly difficult. In this compiler we really
beg the question and generate very Simple (and rather poor) code.
The 8080 is unsuited to doinG much 16-bit arithmetic.
Were we to use subroutine calls we ~ouldprob­
ably save space since even a simple ne~atlon requires more bytes than"a subroutine call.
In"this compiler we plan to generate subroutine
calls for multiplication and division. Addition,
subtraction, and negation are to be done in-line.
The HL ree;isterls used as an accumulator. The CD
register is used as a secondary .assumulator and the
hardware staok used for temporaries as needed. For
example, the assignment statement

~!!.~~.P §lglg~~!!l·

A CALL instrurtion is ~enerated to the appropriate
address. } forward refere~ce is handl~d asdesorlbed
above.

E!!ii

§H.J;g!!~n!·

The e~d statement indi~ates iro~ram termination. In
keeping with this interpretation the compiler ~en­
erate~ a halt instruction after enabltn~ lnterrupts.
7. AN EXAMPLE PECOGNIZE3
It is ~ot our intent to list the entire ~ompiler in
this ;aper; however, to show some of the te~hniques,
a portion of the compiler which processes statement
lists and print statements is ~iven below.
~rooess

;

lire:

LET A = (B+C)/(D+E}
might generate (writing VA for A, etc. to avoid confusion)
-" . LELD
H,VB
LHLD
D,VC
UD
D
PUSE
H
B,VD
LBLD
IHLl:
D,VE
D
DAD
POP
D
DIVr
; call system proc
CALL
SHL'D
VA
Code 6eneration is straightforward for Tiny BASIC
since there are no computed addresses and LHLD and
SELD can be used all the time. Other lan&uages can
be much more complex.

lin .0:

The address of the target is saved in one of the
temporary variables local to the recognizer. The
expression is evaluated and a store instruction genera ted.

I!!RJ:!

§lU~!!!~!!l·

The address of the variable to be input tois saved
in a local temporary. The system routine INNUM is
called to input the number and leave the result in
HL. ",As tore of HL is then generated.

It:

~Q1Q

§lglgmgnl.

A jump instructio~ is generated to the
address.
A forward
refereEce is
descri bed a \love.

;

11n.1 :

Rgl.Y!n

§~sl~!!!~nl·

A RET instruction is generated.

IrG

VALUE

;

stmt
C'l

line
101

UtLN
DONE

get next line
init scanner
line nUl'lber?
yes, jump •
end· of file
yes, finish
line number expected
load number
define line num
scan over it
process statement
end of 11 lie
yes, get next
CR" expected
undefined line nums?
finished

;************************************************
process a statement

stmt:
prr.t:
;
"pelem:

.,e.0:

PRINT
l1'pt

is it a print stmt?
no, try input

TST
JF
PCB
PCA
SCAN
TST

C.OT

\!I CD!!

process a print elemen.t
quote =) string
1'0, look for ex~iession
send CALL paSTR to oode

CEA!t

send string char by char
toe ode

LrG

VALUE

~et

TST
JF

n

~e.5

PRSTR
pe.1

P3

;

pe.1 :
pe.2:
;

nxt;e:

;

pe .4:

J!'1P

pe.0

TST
JT

QOT

ERROR

PCB

pe.2

103

o

SCH~

'rST
JT
PCB
PC!
RTN
SCAN
J~P

COMMA
pe.4
0CDH
NULIN

pelem

character
put it into code

here at string end
quote eXile::ted
terminating zero
next print element
more in 11st
more to do
put CALL NULIN in code

scan over comma

;
inp.t :

e.
appropriate
handled as

ERROR

NUM
11n.0
EOr
11n.1
100

SCAN
CALL
TST
JT
ERROR

§1~lg[!lg!'ll·

The two expressions are evaluated and compared by
subtraction using the 8080'5 usually positive integers only arithmetic. The ap~ropriate jumps are
the~ ~enerated; local variables are used to save the
fix-up addre·sses. Then, the statement recognizer is
in~o~ed
recursively.
Upon return, the jump addresses are fixed up to jump around the code generated by the statement.

SCAN
TST
J'r
TST

tFL'l

Ri!~l §l§l~m~nl·

The flow is complicated by the possibility of
s.veral different types of print elements. Strings
generate the strin~ itself terminated by a single
zero byte. Expressions are evaluated leaving their
r~sult in HI.
Following evaluation a call is made
on PRNUM, the system number print routine. The end
of a (possibly empty) print list generates a calIon
the s/stem, procedure NULIN to upspa::e the printer.

the program a line at a time

:iLl NE

J'!'

;

;

!!~1 §gJ;g[!l~.!21·

PAGE 234

CONCLUS IONS

~ reasonably simple approach to com,iJiler implement"ation for hobbiests has been deSJribed. The system
is intended for langua 6 p. experimentation and is not
suitaule for the implementation of other than "toy·
compilers. However, it is a re~sonable lp.arning
vehicle for the interested hobbiest.

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 235

NUMERICAL CALCULATIONS ON MICROPROCESSORS
2.1l I'JTEGERS
tlumbers are naturally represented on computers
simply by asslgnln~ each bit In a word a value.
if the bits In a word are assIgned the following
values the number is a binary number.

Roy Rankin

2273 St. Francis Drive
Palo Alto CA 94303

Abstract

bit number n •••• 7 6
value
2**(n-1) 128 64

This paper introduces the basic concepts
used In nw~erical computations on microprocessors.
Different reDresentations of integers are
Dresen ted foll mled by algor I tl-tl'1S for the ad.J I t ion,
subtraction, multlnlication and rlivision of
Integers with examples of the aliorithms. The
basic form of floating point numbers Is illso
presented along ,~ith algorithms for a-:ldltion,
subtraction, mUltiplication, division, float,
entier, and fix.

5
32

4
16

All large scale computers have either Duilt
In or librilry functions to do basic arithmetic
operations.
I\s yet such Items as har+~"re number
processors or libraries .r~ not wldly available
for microcomputers. The purpose of tit! s paper is
to present the basic theory neeJed to plther
understand or write the basic routines. Althoush
algorithms are presented no attempt has been made
to write them In code since such an effort ~oul~
make the paper very processor dependent. For
persons actually interested in public domain
numerical codes references 1 and 2 are recomended
for 6502 users and reference 3 for 8080 users. It
is hoped that those .interested in hardware
processors such as the new '·!ational Semiconductor
"number cruncher unit" 57109 (reference 4) will
gain some appreciation of the devices.

G)

signeJ
Precision 6-7

1G

di~its

liP 210!) c:tcf. G)

rlilntissa
COlllP 1 elLlen C

Exponent base

~recision

• 2

6.9 digits

G502 FOfl1at (iteL 1,:!)

Exponent
excess 128
~x.)onent

Precisinn 0.9 digits

2

uC,lse

LLL UJ8J

UA~IC

(10f. 3)
ExponiTjnt

sign 1.lagn •
.--1-1.-'-_'-

Cq)onen t

uase •

2

=

1,)

EXflnllPnt buse

Range

·l~**+/-lJ

Precision 7 digits

~rnci5ion

Fi.~Clr(!

o

2

1

Signed magnItude representation uses one bit,
usuallY the most significant bit, as a sign bIt.
If the sign bit is clear the number is positive,

rlantissa

S

1

2.0.1 Signed-magnItude

11111 37 J (1(' f.

2I

2
4

In binary representation· an 8-blt word would have
the ran.le 0-255. Using just one byte for ~ountlng
would give us a very limIted range. However If
two R hit \~ords a re used, the range becomes
0-65,535. two \·/ords or 16 bIts Is the standard
word length for a single precision Integer. If
still higher numbers are required, more bits can
be used. .I\t th I s po i nt It. shoul d he noted that
binary numbers can be grouped Into either sets or
3 or " digits for ease of handl ing. If grouped
into three's the notation Is called octal and each
digit has the range 0-7. If however the digits
are ~rouped into fours the no~ation Is refered to
as hexadecimal or hex. Hex has the range of 0 to
15 with the numbers abOVe 9 represented by the
letters A through F.
So far only positive numbers can be represented
and thus if negative numbers are of Interest the
representation will need to be modified. There
arc four commonly used integer number
representations. They are signed-magnitude, one's
complement, two's complement, and excess 2**(n-1).

1.0 Introduction

Ext)ollent uasc

3
8

select 1-3

1 ';0;1<= Fluil.in<.:; !':li'1t :1c;>resentations

fiRST COMPUTER fAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

but if the sisn bit is s~t the nu~bnr is ne~ative.
Thus for an 8 bit nu~her (7 bits plus si~n) aooa
0110 in hi narv "'auld represent G Hh i Ie 1000 0110
would be -6. One might note that it is silned
i.lagnitude representatioll that we use in everyday
1 i fe.
2.0.2 One's cO'.1pl e""ent
In ones corwlellent as in all the representations
a bit is set assign for the si~n. To chan~e a
negative nu~her from Q oositive one, all the bits
are inverted, i.e. l's are changed to 11 sand 0' 5
to l's.
1111 1001 is an example of -6 in anA's
cOlilpll:.mt fonlat.
Since the audition of one's
complement nw~bcrs requires the checkin1 of
carries into and out of the sign bit, Q process
not done by 'nost p,icrocor:lPuters, one's co"lple''1ent
representation is not seen on micros.
2. U.:; Two's campI e'.lent
~10st ,nicroco",puters are set UI> to do tllo'S
complenlent a·j.jition and subtri'lction. To ',enerate
a two's cOf:lple.,ent number the nur~l.ler is first
one's cwnplem~nted and then incremented. Thus to
generate -G in tHO'S complement form the one's
co'nplel'lent (1111 1'101) is incrp.Mcnted to ~ive 1111
101'1. A secon~ ,ethod can be used to lenerate
two's co;npleLlented numbers. Ti'lke 2**(n+1), ·,.Ihich
is one bit lar',;er than the ·,.lOrJs bein.~ used, and
subtract tile number to '>e '·,ade ne,;at i ve from it.
The resu 1 t i s the tllO' s ,conp 1(!",ent of tile nU'l'1er.
A nice thin~ ai)out this metho~ Is that it'also
works in octal or hexadeci"aJ r<~pr~sentation as
seen here.
binary 1 OJOG 0000 - ~OOO 0110= 1111 1JID
octal 40Q-J06= 372 = 11 1111 010
hex
100-0G = F~
1111 1010
Twols co",olenent is the :7Iost jlopular reflresentation because the su", of any two t"IO'5 c':>:"ple"lent
nu,;lbers gives a result in two's cor.1;>leflent "lithou't
further aJjust",ent anJ llccase unlike sir:ne'Jmagnitude and one's cOnlfllerlent z~ro has a unique
representation. Integer nu~bers reflrcsented in
t,.o's compler:,cnt for." have the rl as of
excess 2**(n-l) representation Is ij= l~OO alIa
I/hi Ie -6= 0111 lOla.

2.1 Jinary Code,j f)cci:.1a1('lCn)
There is another i",r>artant i nte,;er r,)presentiltion ',~hicl'l is a blend of bi,Iary and rleci~Ii.H.:r cruncher" or in la's cO'.lpler.lent,
which is also called excess IJ'l f'~r 3 bit \~ords.
2.2 Integer tiath i);>erations
Before discussing floating Doint cal~ulatlons
which is the ":0 a 1 of this paper it ,"ould be >Jell
to eXClmine algorithms for the four basic
~athilmatical functions for inte~er nu~hers which
are addition, subtraction, multiplication, and
division. The al,orith,,::; presented for inte<>ers
will only have to be nodified ~ slight amount to
be used in floatin,> point computation.
2.2.1 Addition and subtraction
The addition of two 3 bit nUI,bers Is trivial
on all the popular 1·1icroprocessors, but it is also
of "wrginal intp.rcst. rJf 'nore interest is the
addition of numhers 10nRer than 8 hits. This is
still fairly easily done on ~icro?rocesors. The
idea is to use the carry to briti~e the oreration
between bytes. The following is an algorithm for
adding two multlbyte integers.
\l,>orithm

~

multibyte aJdition

1) clear carry
2) load accumulator with n'tl1 byte of
first number
3) ad'l, with carry, nccumulator to n'th
byte of the second number
4) store the n'th :Jyte of the result
5) loop to 2 until all bytes aJde-],
G) check for overfloH by testin~ nverflow
flag

Subtraction is equally easy.
Either a number cnn he t'i~O'S complemented to
chan,e its sio;n and then added with the precedln~
algorithm or the followinn subtraction algorithm
can be use in processors with a subtraction
instruction.
I\lgorithm!}

I~ultibyte

subtraction

1) set carry
2)loa,j nccu,1uliltor ~~ith n'th byte of
firs t nu;,lue r
3) subtract, with carry, frOM accumulator
the n'th byte of t~e s~coni nU"1ber
~) store result
5) -loop to 2 unti 1 (jone
5) check overfluw fln~ for overflow
2.2.211ulti,:>lication
~ince .nost f;licroprocessors do not ,~,ultiple, 'the
desl!;n and i,lPl,imentation of a I:lultiplication
algorlthl~ is more challenl~ing, and there is no
unique algoritl·,nl. Fflr the al:::orlthm oresp.nted
here two n bit inte';l!rs,1l11 rye .-,ultiplie.f
together all 0'011 ng for a rro,lllct nf 1ength 2n. rf
course If the product actui1l1y,exceeds n bits
overflow has occured,but ~llowin~ for a ?n product
simnlifles the alo;orithm. The ",ethod used Is
bnsed on the penc 11 and ;>aper '1eth0d nf
'l1ultipllcation '.1hlch consists of ;',1Ultiplin!t nn ..
nU"lber by the j'tl, ·jin:it of the secon;f number
shiftino; the result j-l nositions to the left ilnd
sU"1nlin,~ as 1 is incre:nented fro"'1 1 to m ',1here:'1 Is
the nUMber of iiKits in the second nu~bpr.
In
binary the 'i,ultlplicatiorr of" sin;:;le bit an', a
number results In either the nUMher or zero. Thus
this nethod In binary Is reJuced to shifts an~
selective additions w~lch are oper~tion~ •
'nlcroprocessor can do.
One trick Is used Hhlch
is to shift the sum right aft .. r each partlnl
oroduct is atlded rather than shift ins each partial
product left j-l times. This allOl/s both r"ore
effeclent co~ing and allows the multiplier to be
Initially pli1ced in the lower n bits of the 2n
pro::luct register. The algorithr.t is as follo~ls.

Algorit"nl C ,,\ultiplication

nf integers

BOX 1579, PALO ALTO CA 94302

FIRST COMPUTER FAIRE PROCEEDINGS
l)rdake 'lultiolicall and o.lultirlier
DOS it i ve cJS renu ired an,j set s i -;n f 1 01.;
if nnly one ',Jas ne'!,Cltiv0
2) clear up:'er IInlf of 2n '>it r,rn'iuct
re--;ister an'] nlace '·.lulti'>lier in
10wC!r half
» clear carry
4)rotate product re~ister 1 bit ri~ht
(i.e. carry shiftp.d into i'Sfl
,pach bit shifted one 'lit ri',ht
anJ LSB shifted into carry)
S)if carry is set ade; ,llultipl ican
to u~per half of nra1uct re~ister
(after clearins carry)
G),~o back to 4 if n+l passe's not
cOI'l[)lete
7)if si~n fla~ is set Jake result ~inus
To help make this al,(oritllrl clear an exal"ple of
the pro,luct of tile four hit nW1LJerS 5 (:JIOl) ,lid
(1111 J ,"I 11 ':>e 3 i ven.
step
3
4
5
4
5

4
5

4
5

4
5
7

product re~. carry
COr"Men ts
0000 01ill
0 start of opcratio'l
0000 0010
1 roll r i ~ht
1 u'ld, carry set
0111 OalO
0
roll r i '~h t
OOll IOn
skip carry clear
aOOI 110,)
I
roll r i ;>;ht
1100 1100
0 c·id, CiJrry set
0100 0110
0
roll r i 0:11 t
sid r, CB rry clp'lr
Q
0010 0~11
ro 11 ri"ht
skip carry cl e,lr
,)
0010 0011
final jlnS'dCr
ansv..Je r

note that we ~ot the correct solution anJ that
for four bi t inte:;ers overfloli hilS occured sinep.
the unper worJ is not zero.

2.2.3 jivision of

irlte~~ers

Division like r.1ultiplication could iJe ,lone by
'lny nf several al~nritllI.1S.
Tile al';,)rith:~
presented here is based on the Denc i 1 Cln,l par>er
llethorl.
This al"oriti1r,l '~ill diviJe an n bit
nu:;,!:Jer, the divi lend, by Cln n bit nu'nber, tt,e
J i v i so r.
'U~orith!l

J

iivision of inte.';ers

llcheck Jivisor , if zero then error
2)!\aKe dividend and divisor positive as
rl!·.luir~,j an:! set sign flaG
-'.'us ne6ative

j f only one

3)shift ,jivisor left <''11'1 C,lunt nUC1ber of
sr.,ifts until hi,;hest nnn7.(>rn ')it is in
s i .~n t) i t
II) silift uivisor ri~ht one Ilit ani
quotion left 1 :,it
SJsubtract fror'l divi'lenJ the shifted
Jivisor
G)if result of subtraction is positive
incre:lcnt quotion and

rejJlace

JiviJenu with Clnswer
7l;o bac;~ to 4 unt i 1 1(01) i s '~xecute I
SCI'":1!'! nu.""ber of tines as .:.!i vi sor ',Jas
shifted in 3, i.e. li'lisor is in
sa~e position as uefore J
B)if ~i~n fla,; set ",al~p quotion anJ
Jividend(1.Jllich is nO',,1 the re'11ainrier)
negative
To der"onstrate thi s al5';'1'i t!", the
13(01101) ,lill be divijed hy 2(onnl01.
PXu;",lple the

re~isters

'j

I,i t nUl"bers
In the

nre shu,/n :1ftpr the

rOr.1oletion of the step.
"ten dividend c!ivi sor enJ I n~ on tile s i ,;n of the exponents befo re tlw
addition.
If they verc plus, overflOl'1 occureJ.
'~'Iote that overflovi or underflO\~ cannot 'lccur if
the signs of the exponents are diffcr~nt.
SeconJly tile r~ilntis~as are :.lulti")lic,", to;ether.
For the last ,step tile resulti'l;; floatinG ['loi nt
numher Is normalizeJ.
For the l~ulti;'1 ication of the ,7IFltlssi'ls,
al:;orith.,., C can "e useJ with I.llnor ::1ociifications.
The need for the first I~dification uepenJs on thF!
location of tile ilSSUl.led .jecI.-,mI point In the
illantlssa.
If it Is to the left of til(! 'lOSt
sh:nlflcant hit, t~en the first ·;lo ..1ifi-.:ati'>n is
not needed.
If hOVlC'ver the assu-·le,1 ·.1cci',al point
is to the r i ';h t of the ""os t s i ':n if i Cil nt bit so
that the ran,.e of the l:lant i SSR is 1. ~ to 2. J, thnn
the Inner loop of aLwrithl~l C sh,)'11,t only be
executed n ti les rather til"n n+1 ti'les. The
reslJlt l'Iilnted from the nl!;orltb,'l in either case is
the lH>per· n l>i ts rather than the lo\wr r; ;>i ts i'lS
woulJ be useJ for inte~er multiplication. T~e
second ;,lOJificatioll involves <::heckin~ the sl-tn
bit of the uultiplication befnre If the si~n bit
Is set the "lantissa is shiftc'i ri ,ht 1 bit 
new exponent- Is increl'1pnte'J.
Algorithm F- floatin't point ,ultipllcation
11aJJ exponents and check for under or
overflow
2)multlp1yr.lantissa using .algorithm C
as nodified in text
3)nor"Jallze result
This a1o~rithm will be Jemonstrnted by tha
product of 1.25E2 and 3.nOE1.
step
1

operation

2+1"'3

PAGE 238

.1.25 * 3.00 =3.7501
3.75E3 is result

2

3
3.3

Floati~~

point

dlvislo~

Floatin~ point division is sinililr ,tC:l
floating point I,lultiplicatioll. The first stell·is
to subtract the exponent of the Jivisor fro':l the
p.xponent of the dividend.
If the si'~n of the
exponent for the 'livisor is ne;,ative and the shn
of the dividend is positive overflow is posi'Jle.
Lik\~ise If the si,!n of tile divisor e)(p'lnent is
positive and the siln of the dividend exponent is
negative underflow is posiule. The sccon·j step is
to d I vi ue the .nant i ssa of the d i vi J~ncl by the
mantissa of the '.tivisor. This step can be
performed usin;; alr.orith·l 0 ~~ith f)ne no,jiflcatlon.
Ol,llt step 3 I~herl! the oivisor is sillfted left
since It is not needed as the divisor shoul<;
already be in norl"1alized fOrr,lonent
J'lOO
0111
OIl:)

IlI0l
0101)

Thus tile rClsult is • .1375 *2**10 \/1, i ch
is 15.

of

FIRST COMPUTER FAIRE PROCEEDINGS

Algorithm J Entler

To demonstrate this algorith"l it 11ill
be applied to -15.5.
mantissa
1000 0100 0000
11<10 0!)10 :lOOO
1110 0001 0000
1111 0000 1000
answer 1111 0000

exponen t
0100
0101
0110

0111

The result is in binary 1111 0000 which Is
equal to -lli.
Algorithm K- fix
l)do entier
2) if integer is posi tive go to 4
3)else if lower n-m bits of are not
zero then increment result
4) done
This algorithm will also be applied to -15.5
step

o
1

3
4

exponent
,lantissa
G100
1000 0100 0000
0111
1111 0000 1000
1111 0001 1000
answer is 1111 0001

Thus the result is -15 •
4.0 Conclusion
This paper has presented the basic inte~er
and floatini> point al"orithi,s-to do nUl'lerical
calculatiolls on microcoLlputers.
These al ;orithH!s
are just the basics, but ;,lOSt further nU'lerical
algorithms will use these as buildinl blocks.
~
good source for numerical algorithms is reference
5.
S.il lliography

I am a Ph'D student in 'Iechanical
Engineering at Stanford University. ny interpst
in computers dates back to high school when I
taught "lYse 1 f FORTRl\il and ran pro:>rams on I flr1
16205.
~orkillg with systen software, engineering
progr","lS, and hardware on My labs hr>2100 for four
years has given me an intimite experience with
computers.
I have a 5502 .JI)LT bas.~,-l Clicroc"lnlT'uter
for \Jhich I have been Jeveloping both hardware and
software.
It was my interest in number crunching
that got L1Y interesteu in "ritin:; floating point
routines for the 6502.
Steve Wozniak and myself
got together throu"h the lIone flrevi r.o'nputer Cl un
to \~ri te the routines Hhicl! appear in references 1
anJ 2.•
6.0

PAGE 239

Feb 17,1977.

l)if exponent equals "1-1 ~o to 4
2)els8 do ri~ht arithmetic shift of
mantissa and increment exponent
3 )check exponent for overflow, if none
loop back to 1
4) answer in upper ~ bits of ~anti5sa

step
1
2
2
2
4

BOX 1579, PALO ALTO CA 94302

References

1) Rankin,R., S. \Iozniak, "Floating Point
Routines for 65U2", Dr. Dobb's Journal of
Computer Calisthenics and Orthedontia,
401 1, ;~o. 7, !\Ul:\. 1977.
2) nankin, Roy, Steve I/ozniak, "Float in!! Point
Rout i nes for 6502", Interface A"e, Vol 1,
rIo. 12, tlov 1'176.
3) Dickenson, John, Jerry Barber, John Teeter,
Royce Eckard, Eu~ene Fisher, "Lawerence
Livermore Lab's 8080 ilASIC", Dr. nobb's
Journal, Vol 2 No.1, Jan 1977.
4) Welssberger, Alan J., Ted Toal, "TOURh
tlathematlcal Tasks are Chllrl's Play for
tlumber Cruncher", Electronics '101 50, flo. 4,

5) Ilart, John F. COIiPUTER APpnOxltlATlotlS,
John Wiley & Sons, New York, 1968.
6) Stone, Harold S., IflTRODUCThHl TO CQt·1PllTER
ORGANIZATIOil Arm DATA STRUCTURES, tlcGrawIlill, ;1C\~ York, 1972.

FIRST COMPUTER FAIRE PROCEEDINGS

BO,\ 1579, JlALOALTO CA 94302

MODULAR RELOCATABLE CODE
Dennis Burke
4042 W. 139th Street No,7
Hawthorne CA 90250

Relocatable code is a form of object code that allows a program to be loaded into any location in memory and run. It is
not pure object code because it contains the extra information
required to alter tke necessary locations to allow the program
to execute correctly at its new address. Relocatable code eliminates the necessitydf re-assembly of a source code each time
it is desired to change the execution location of a program.
Considering the bulk of a source program and the' space necessary for the assembler, it is' obvious that relocatable programs
afford a decided advantage in both memory requirements and time
However, it should be noted that relocatable code can not
stand alone. It must have a relocating loader to be utilized.
If loaded directly into memory relocatable code will not run.
It requires the assistance of the relocating loader to look for
the "flags" imbedded in the assembled object code and to adjust
the appropriate addresses for the new location prior to placing
the code in memory.
These flags are called type codes. The assembler or compiler
places them in the object code as they are produced. A type
code is an instruction that tells the loader what to do next
with the data that follows it. In one or more bytes, depending
on the nature of the type code, it will specify both the operation and the number of bytes upon which the operation should
be performed. At the end of the operational sequence, the
loader expects to find another type code for more instructions.
There are four basic type codes:
1.

Program:

The program type code consists of one byte that
acts as a descriptor of the whole record. i.e.
A. Source code
B. Object code
C. Data
In addition, the program type code can specify
the processor (type of machine) for which the
record is intended. i.e. 8080, LSI 11, 6800, etc

2.

Origin:

Origin type codes specify the location or the
offset from the program to the present working
point. Namely, where the next byte goes into
memory. (Note: Origin type code is a proper
name for a process. It should not be confused
with the origin of the program which is always a
location in memory.)
Origin type codes can perform the following
functions:
A.

B.
C.
3.

Data:

It can set the orIgIn of the program.
It can also be used to reserve storage in a
program by causing the storage pointer to
skip ahead a specified number of bytes.
In all cases, it affects the pointer to the
next location to use in memory.

Data type codes identify the class of operation
to be performed on the data to relocate it in
memory.
There are two basic distinctions:
A. Data which require no modification, i.e.,
instructions or data that are not references
to memory.
B. Data which must be modified.
i.e., the operand to an instruction that
references memory (within the program being
loaded).
Data type codes may be mUlti-byte to include a
count of how many bytes are acted upon.

4 .• End:

512 bytes. Each record starts with a record mark, followed by
a byte count for that record and ending with a checksum or a
CRC. A byte count of zero is considered to be the end of file
marker.
Within each record the first byte is always a program type
code. This allows the operating system, or relocating loader,
to get upset before progressing very far should an operation,
in error, fetch this record.
The following byte in a record could be either an origin or
data type code. Each type code specifies how many bytes are to
be included in the operation to be performed. At the end of
that operation the loader will look for a new type code and
perform its attendant operation until the byte count for the
record is exhausted. If the loader reaches the end of the
current record, without encountering an end type code, it will
fetch another record, and repeat the process until it finds an
end code.
It may be desirable to separate the program, data and temporary storage while relocating a program. This is possible by
the proper combinations of origin and data type codes where a
field in each type code conveys the reference to the nature of
the data to be relocated.
Currently, there are few relocating loaders available to the
microcomputer end user, though this state of affairs will certainly change in the near future. Intel has had a relocating
loader and assembler available for some time (2) that runs on
the 8080 and T.D.L. has published an assembler and relocating
loader for the Z-80 chip (3). Both use different schemes tpan
the one discussed here, but inspection of their methodology
would prove informative to anyone planning to write their own
assembler and loader.
The T.D.L. assembler produces a modified intel hex format tape
as its object code file. Each location that 'is to be altered
is preceded by a non-hex character. These act as flags to the
relocating loader which adds the appropriate offset to the
object code. These non-hex characters act as flags only and
convey no further instructions.
Hence, this schema can only handle linear relocations. The
program can only be relocated in memory as a single string of
object code and complex assignments of data, program, and temporary storage are not possible.
Another popular method of relocation is the "pointer table"
system. This, as its name suggests, creates a table - either
before or after the actual object code - which points to each
location in the record that must be relocated. It is also an
inherently linear scheme and adds an equal offset to each location to be relocated.
It might be well at this point to touch briefly on how relocatable code is generated by the assembler. Again, we will
refer principally to modular relocatable code, but it will be
readily appreciated that this discussion can also apply where
relevant to the linear schemes.
Moe,monics are given to the assembler to be translated into
code and on the first pass the assembler compiles a symbol
table. All labels are extracted and tabulated.
For instance, here are a few lines of code:
;SET STACK.
0010 START LXI SP,0200H
;GET OUR LOGO.
0020
LXI H,MESSG-l
;POINT TO MESSAGE.
0030 NEXT INX H
;GET BYTE IN THE ACC.
0040
MOV A,M
;SEND IT TO THE TTY.
0050 OUTI CALL TTYO
;00 SOMETHING.
0060 POP
CALL GONG
;JUMP TO NEXT ROUTINE.
0070
JMP NEXT
;DEFINE TTYO ROUTINE.
0080 TTYO EQU 78l0H
;DEFINE GONG'S LOCATION.
0090 GONG EQU TTYO+44H
0100 MESSG ASC "HERE WE ARE"
;STRING TO PRINT.
;STRING TERMINATOR.
0110
DB ODH
START
OUTl
TTYO
MESSG

0000
0008
7810
0011

NEXT 0006
POP 0008
GONG 7854

In the foregoing code the assembler would have to assign a flag
to each label in the symbol table so that the correct type code
copld be generated. A flag of either 00 or 01 is used, the
value of 00 indicating that the address in question is absolute
and should not be relocated; the value of 01 indicates that this
is a relocatable quantity. The location 'of "TTYO" is for
example fixed and does not vary with the relocation of the
program. Hence, it would get a flag of 00.
The other labels, since they refer to relative quantities will
get a flag of 01 indicating that the correct type code for their
relocation should be issued. In the second pass, the assembl~r
issues these codes and places them in the object code for the
The code is divided into records of loader to act on. At this point the assembly is complete and a

End type codes occur at the end of the last record
They inform the loader that the end has been
reached. In addition, the end code can specify
an execution address. This should not be confused
with the origin type code which specifies the
location to start placing code in memory. The
execution address might be some point in the
program other than the "origin". For instance,
the popl1lar "ESP-I" assembler loads at 6DOOH and
executes from 7000H. (1)

Description of the format:

PAGE 240

FIRST COMPUTER FAIRE PROCEEDINGS

purely binary object tape has been generated with large savings
of time over the generation and loading of a hex tape. The
pointer scheme also requires more memory to produce and to load
than does the modular method. And this at the cost of less
flexibility.
SUMMARY:
In the outlines .form of relocatable code, there are four
special type codes:
"Program" Type code - To identify the
record to the loader.
"Data" Type code - Which bears specific
instructions to the loader for operations
on data to be placed in memory.
"Origin" Type code - Which sets the
address relative to the (actual) origin
where the object code will be placed.
"End" type code - Which supplies a final
record terminator and can indicate the
execution address for the program.
A loader, acting upon a record with these elements is capable
of placing object code anywhere in memory for execution without
the necessity of reassembly of a sourse file for each new
location.
The relocating loader takes information entered at "load time"
by the operator to set the origin for the object code as it
loads. The loader utilizes the information derived from the
type codes to modify the data as loaded. In the process the
type codes are stripped from the object code and only the "new"
modified object code is placed into memory.
After the relocating loader has placed the record in memory,
the record becomes an absolute object program and is no longer
relocatable. All information necessary to adjust the object
code has been deleted from the program in the process of
loading.
The process of generating the type codes in the assembler is
also discussed.
(1) ESP-1 Shrayer, 930 Bonnie Brae, L.A. 90006
(2) Intel Corporation, 3065 Bowers Ave., Santa Clara, 95051
(3) Technical Design Labs, Inc., Research Park, Bldg. H,
1101 State Rd., Princeton, N.J. 08540'
should like to express my gratitude to Jeff Barlow for
technical assistance in preparing this and to D. E. MacLean for
his assistance in the preparation of the manuscript.

BOX 1579, PALO ALTO CA 94302

PAGE 241

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

AN IMPLEMENTATION TECHNIQUE FOR MUMPS
David D. Sheretz
Medical Information Sciences
University of California Medical Center

San Francisco CA 94143

Abstract
The
MUHPS
Language Standard is specified most
precisely by a set of "transition diugrams", «hich
give both the syntax rules and semantic actions for
the language. The notion of a Transition Dia~ram
Language (TDL) is introduced to allo«. direct encodin~
of
the
MUMPS transition diagrams into nachine
instructions for a virtual
machine.
The
TDL
represents
a
symbolic assembly language for a
hypothetical computer, called the "MUMPS machine".
The !IUIIPS machine is an ahstraction "hieh can be
realized or emulated in hardware, or simulated in
software.

The

advanti=u~es

of this forMal ap;-->roach to

implementing a MUHPS interpreter are descrihed, and
SOr.1e
examples
are presented.
Additional HUMPS
ir.1plementation issues are discussed. Finally, more
recerit uses of the TDL concept are mentioned.
Introduction
MUlIPS (t-!assac.llllsetts General Hospital Qtility !.!ulti--'?ror,ramminr,
.;rystem) provides fe;tures for the creation of interactive
programs "hich share access to ·a hierarchical data base. The
MUlIPS Lanp,uage Standard provides an effective pattern-matchinll
construct, a po"erful set of strinr, manipulation operations and
functions, a timin~ facility for data input operations and
resource allocation, and a file management facility which
relieves the user of nearly all physical file or~anization
details.
In
addition,
tlUllPS
provides
an interact! ve
programming environment which greatly simplifies the tasks of
editin~, debugging and mana<\ing MUltPS programs.
~lUtlPS

has traditionally been implemented on rather small
minicomputer" "ith a modest amount of memory (32K «ords).
Because of the space limitations, and for efficiency reasons,
MUMPS implementations until recently have been uritten almost
exclUSively in the assembly lan'luage of the host computer.
This paper presents an implementation stratep,y "hich allows the
complete syntax uf the HUMPS language to he expressed in a
machine-independent
manner,
and
provides a «ell-defined
interface for the modules which perform the semantic actions of
the language.

The TDL utilizes a few common variables for Some of its
operations, as fol10"s:
TEST - a test flag which is set true (1) or false (0) by the
TS,TR and TL instructions depending on the success or
failure of the test, and by the RT instruction to
indicate if a correct syntactic construct was scanned;
CASE - d. flag set by the SV instruction and tested in the JE
and IN instructions;
FLAG - a bit string in which particular bits can be set,
reset and tested with the SB, RB and TB instructions,
respectively.
A syntax stack is also needed for the CL and RT instructions of
the TDL. One syntactic construct may be composed of a number
of more primitive constructs. This hierarchy is handled with
the CL instruction, which stacks the next instruction address
as a return and then calls the appropriate construct by
branching to the TDL label at which the construct begins. Such
calls may be recursive, and can be nested arbitrarily deep.
The RT instruction indicates the success or failure of finding
the called construct, and also resets the instruction register
to the address on top of the stack (and pops the stack).
As an example of using the TDL, consider the transition diagram
on the left-hand side of Figure 2. This diagram represents the
lWtlPS construct lvn (local variable name), and is taken from
page 1I-60 of th;-M"uMPS Language Standard (O'Neill, 1975). The
diagram can be directly translated into the TDL code on the
right-hand side of Figure 2. The correspondence between the
INST Operand
ER

TS

TR

TL

The Transition Diagram Language
Included in the specification document for the HU~!PS Lan!',\lage
Standard (O'Neill, 1975) is a set of "transition diagrams",
which specify hoth the syntactic structures and the semantic
actions of the language. A transition diagram .1s a directed
graph whose successful traversal identifies
a
syntactic
construct
in
the
language (for example, WRITE X i.s a
syntactically correct co~mand); traversal of a diagram may also
cause an associated semantic action to be performed (for
example, writing the cu!Crent value of the variable X). The
MtJUPS trat,sition diagrams are based upon a techniqlle

developed

by M.E. ComJay (ConIJay, 1963). A complete set of such diallrams
constitute a precise specification for a programminll language.
If the set of transition dfa'lrams could be encoded so they
could be directly processed, the result ing code would !'lake up a
complete translator for the 1IU11PS lanl\uap,c.
The encoding technique used here is the introduction of a
symbolic assembly lang\la~e, called the Transition Diagram
Language, or TDL. The TDL is " fixed-field assembly lanllnage,
«hich has instructions for testing syntactic constructs, for
executin~
semantic actions, .nd for comr.nmication within TOL
procedures and bettieen the TDL and the semantic actions.

The general syntax for the TDL is as follo"s:
Column I
10
16
[labell INSTRUCTION
operand [comment)
Where the bracketed fields are optional.
A label is an
optional unique name of up to eiRht alphanumerics; comments can
be inserted inline, provided the comment is separated from the
operand field by at least one blank. Comment lines can also be
added by placing a ..... in "olumo I. The TDL instructions are
summarized in Figure I.

PAGE 242

CL
RT

DO
SB
RB

TS
SV
J
JT
JF
JE
IN

Operation

n(char,label)

Calls the error handler "ith error numbern
set. The optional information in parentheses
Ilives the character after which to resume
syntax scanning, and the TDL lahel to I1hich
to branch after reportinr, the error.
char
Tests the current character being scanned
to see if It matches char. If so, TEST is
set true and the syntax scan moves to the
next character; otherwise, TEST is set false.
charl-char2
Tests to see if the current character bein~
scanned matches any of the characters of tne
ASCII collsting sequence in the inclusive
range between charI ano char2. If so, TEST
is ·set true and the syntax scan moves to the
next character; otherwise, TEST is set false.
"strin'l"
Assuming k is the length of string, sees if
the next k characters to be scanned match
string. If so, TEST is set true and the
synta~ scan moves to the next character after
the matched string; otherwise, TEST is set
false and the syntax scan is not moved.
label
Stacks the next instruction address and
then branches to the specified label.
n
Sets TEST false if n = 0; otherwise TEST Is
set true. The return address is popped off
the top of the stack and control is returned
to that point.
ACn
Performs a semantic action by invoking a
call to external subroutine number n.
n
Sets bit n in FLAG to I.
n
Sets bit n in FLAG to O.
n
Tests bit n in FLAG. TEST is set true if
bit equals I; other«ise, TEST is set false.
n
Sets the value of CASE equal to n.
label
Unconditionally branches to label.
label
Branches to label i f T&ST is true.
label
Branches to label if TEST is false.
n,label
Branches to label i f CASE is equal to n.
n,label
Branches to label if CASE is unequal to n.
(Note - if the conditional jump instructions, JT,
JF, JE and IN, do not bra"ch, the next TDL
instruction in sequence is executed.)

The following pseudo-op instructions are added to the TDL:
label

FI

DC

Enters label into a table with. the relative
address of the next .TDL instruction, so that
jumps may be made into the TDL code from the
outside by loading the address associated
with label into the instruction register.
The end statement of a TIlL program.
Fi!!;ure 1 - The TDL instructions

FIRST COMPUTER FAIRE PROCEEDINGS
TOL code ard the portions of the
be rather obvious.

dia~ram

it implements should

A few points of Fillure 2 may need clarification. Several of
the HUl~S transition diagra~s (including the one for indnam)
have ...... ltiple exits {lahelled I~,X, Y and Z in the diagrar.1s} for
different cases. These e~its are handled in the TOL code with
the SV instruction by setting a value which represents the
desired exit (for example, 4 represents the \I exit case). The
JE and IN instructions are then used to test for the different
cases. The TOL code assumes an execution stack which is used
to save the local variable name, along \1ith any subscripts, so
that action 6 of the transition diaqram is unnecessary in the
TOL code. Also note that the test for name-level indirection
(Naneiod is a bit in FLAG) and any repeated executions of
action 5 in the diagram are all handled in AG5 of the TOL code.
The HUMPS Machine
rather obviously su~v,est a
The TOL instruct1.ons of Figure
machine instruction set for a virtual machine. An a~sembler
for the TOL would produce machine instructions for this
hypothetical
computer,
which will be called the '~!uHPS
machine". The MUMPS machine would need machine instructions
for each TilL instruction, registers for the TOL variables TRST,
CASE and FLAr, as well as a program counter and an instruction
register, and a stack for the TOL syntax stack. Such a machine
could easily be built in hardware, or
ern.lated
on
a
microprocessor such as the 8060. Figure 3 shows the TilL

BOX 1579, PALO ALTO CA 94302

instruction set as it might be implemented
machine.

on

a

PAGE 243
16-bit

word

Once the MUMPS machine is constructed, either in hardware or
software, an assembler for the rOL needs to be written. After
this 1.5 done, the MUMPS transition diagrams can be coded in the
TUL, and the machine code produced from the TOL assembler could
be executed by the MUMPS machine. In the present effort, both
the TDL assembler and a simulator for the MUMPS machine were
written in FORTRAN, in order to achieve a substantial level of
machine independence.
The TDL code for the MUMPS transition diagrams can
be
constructed fairly quickly from the lfilliPS transition diagrams.
The TOL assrr~bler and ~UMPS. machine emulator can also be
implemented
rather rapidly.
~at
remains to complete a
single-user MUMPS interpreter is to implement the various
semantic actions invoked by the 00 instructions in the TDL. A
mechanism for reading input lines to be scanned (usinn the TOL
code as a driver) is also needed.
Advantages fo the TOL approach
There are a number of distinct advantaRes to the TilL approach
for i~plementing lfilMPS, or any other languaRe. First the
syntax of the language is effectively separated from the
semantics. A syntax analyzer can be constructed very quickly,
and decisions about the details of some of the semantics (for
example, symbol table or~anization) can be postponed. Users
can experiment with the syntax of a new language, and problems
can be resolved in a proposed syntax prior to implementing l1RJch
of the semantics. The syntax can also be altered easily, with
little or no effect on e~isting semantic actions.
Secondly,
the
TDL
neatly
breaks
the
semantics into
well-defined, generally simple action modules.
Thus
the
actions invoked by the TDL DO instruction are for the most part
small subroutines.
Another advantage is that because the
implementation of t~e semantics is highly modular, performance
data can be obtained easily for identifying heavily.used action
modules.
Since the interaction among modules is minimal,
heavily-used or inefficient modules can be rewritten without
adverse efofec ts elsewhere. Note also that any semantic action
can be implemented in the language best suited for the purpose.
Thirdly, the TDL concept makes experimentation

LVN

*
Ll

CL

INDNAM

Check for local variable indirection

JE

4,LVNENO

W return; syntax checking only

CL

NAME

Check for variable name

JT

Ll

Continue i f name is found

RT

1/1

No name; not a local variable

Test for left parenthesis

JF

L3

Name has no subscripts after it

DO

AC2

Stack Nameind flag and set false

CL

EXPR

Check for next subscript expression

DO

AC3

Diagram actions
1.

different

ACI saves the name and sets the subscript counter to zero
00 ACI
Save name and set subscript counter
TS

L2

with

Result-A
TS

Stack subscript and increment counter
Test for comma (more subscripts)

2.

PUT Nameind on the Stack.

3.

Replace the n-tuple in· A with
the n + I-tuple (A,Result)

TS

4.

GET Nameind from the Stack

JT

L3

End of subscript list

5.

GET previuus level's Nameind and Window
position from the Stack. GET the indirect
name off the St~ck. ·Link window to
retrieved Window position

ER

12

Error - missing closing parenthesis

DO

AC4

Restore. Nameind flag from the stack

110

AC5

Ghe,ck for end of all name-level indirection

6.

False _Nameind
JT

A _Result

L3

L2

Branch to get next subscript
Test for right parenthesis

LVNENO
RT I
The lvn diagram was scanned successfully
Figure 2 - Transition diagram and TilL code for lvn

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

impler.lentation techniques feasible. Because the syntax is all
performed within the TDL, the implementation strategy for the
various semantic actions has no effect on the syntactic
analysis. Thus, for example, the llUMPS local symbol table
could be chan lied from variable-Ienp,th to fixed-length entries,
could be hashed or linear, or could shnre space amonR several
users without changing the TDL code. Evaluation of different
approaches is encouraged by the TilL, and changes made in any
portion of the interpreter are o;reatly simplified.

01

Bits
45 78

IS

INST
ER

I Eoog

n

TS

I ~ooll

char

TR

I~019

RT

I ~olll

n

DO

Iiolog

n

SV

1101011

case

SB

IIOl1~

hit

T8

I ~llli

bit

RS

1110001

bit

chari
char2

TL

J

Note:

PAGE 244

Conclusions
The TDL concept is a useful tool for the design of an
interpreter (or a compiler). Nothin!! inherent in the ':'OL
approach limits its use to HUUPS. An effort is now in' progress
using the TDL technique for the developoent of a language
called PLAIN (Programming LAnguage for INteraction). PLAIN is
similar in strll~ture to PASCAL, but embodies the concepts of
pattern-matching, string manipulation and timing from ~lUMPS, as
well as an interface to allow conversational access to a data
base. The TDL has been useful in detectinp. syntactic probleos
in PLAIN, and has allowed a syntax analyzer for PLAIN to be
rapidly constructed directly from the 8NF specification.
The TDL approach has thus proven to be an effective technique
for the implementation of language translators. It allows milch
of the translator to be written in a machine-independent
manner, which grea tly reduces the number of modif lcat ions
encountered in transferring to a different computer. Although
MUMPS has not yet been implemented on a computer affordable to
the normal hobbyist, the TDL concept is well-suited to a
microprocessor. Experience with the MUMPS lan~uage indicates
that i t would be a useful addi tion to the ,'erertoire of
available lan~uages in the hobbyist market.
About the author

r am presently Senior Systems Analyst in Uedical Information
Science
at the University of California, San Francisco.
Currently I am completing a MUMPS i.nterpreter for the IIOOCOMP
IV/25 computer, as well as a number of other software tools for
use in medical applications and teaching. Previously I was
Project Program Leader for the lledication Systems Group,
Hassachusetts General Hospital, Boston, where I helped design
and implement a real-time medications orderi.ng system which was
1n daily use on two hospital wards.

1110101 adr + 10241

CL

110lli adr + 10241

JT

1111001 adr + 10241

JF

1111011 adr + 10241

References
TranSition-Diagram
Separable
Conway, M. E. , "Desi~n of a
Compiler," Communications of the ~, 6:7 (July, 1963),
pp. 396-408.

JE

O'Neill, J.T. (ed.), "MUtIPS Language Standard," National Bureau
of Standards Handbook 118, \,ashin<\ton, D.C., 1975.

IN

~asserman,

The adress in the CL instruction and all the ,jump
inst ruct ions is stored as a relative address to the
present
Thus a
location,
offset by 1024 words.
reference can be made up to plus or oinus 1023 words
away from the present location.

A.!. and D.O. Sherertz, "Implementation of the MUt1PS
Language Standard," MDC 2/3, MUMPS Development Committee,
1975.

I/asserman, A.!., D.O. Sherertz and C.I"
Globals and
their
Ioplementation,"
Development Committee, 1975.
Wasserman,

A.I.,

D.O.

Sherertz

Other Implementation Issues
A UUlIPS interpreter requires impleoentation' decisions in
primarily four areas:
1) the local symbol table, which maIntains the naT'les and
values of all currently active local vart~ble~;
2) the global variahles, ."'ich resIde on s",:onrlnry storage
and are shared alOOn~ all users;
3) the hand11n~ of resource allocation among several users,
as well as the input. and output mechanisms;
4) the maintenance on secondary storage of each user's set of
MUHPS routines.
.
In addition, a oulti-user MUUPS system must have an efficient
schedulinp, algorithm for making good use of the CPU resources.
A good discussion of the multi-user issues can be found in
(~a8serman,
Sherertz
and
Zears,
1975).
IT'lplementation
techniques for globals are described in detnil in (Wasser"'~n,
Sherertz and ROllerson, 1975). The other areas of concern in a
MUMPS implementation are analyzed in (Wasserl11i1l1 and Sherertz,
1975). The MUIWS com~lnity has vast experience in ioplementinp,
ltUliPS on a variety of computers, including the POP-IS, PDP-I0,
PDP-n, Nova, Artronix-PC, 18U 370 and the MODCOllP IV. Work is
continuing on an implementation of ~IPS for an BOBO-based
microprocessor.

NOTE:

2/1,

''MUMPS
HUMPS

and R.\l. Zears, "Oesig:n of a

Multiprogramming System for the MUMPS
MUMPS Development COmoittee, 1975.
Figure 3 - Reference guide to the HUMPS machine instructions

Rogerson,
~\DC

Language,"

I'\DC

2/2,

For information on obtaining MUMPS Development Committee
publications, contact Joan Zimmerman, MUMPS Users Group,
700 South Euclid Avenue, St. LouiS, Missouri 113110.

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 245

COMPUTER LANGUAGES: THE KEY TO PROCESSOR POWER

Tom Pittman
Box 23189
San Jose CA 95153

The invention of the steam engine in the
18th century by James watt ushered in the
industrial revolution because it allowed machines
to assist and replace the physical efforts of human
beings. The invention of the computer in our era
promises to do the same thing allover, because it
allows machines to assist and replace the mental
efforts of human beings.
The machines of the industrial revolution
were controlled by the physical manipulation of
mechanical linkages. The machines of our time are
to be controlled by the mental manipulation of
verbal linkages __ or at least so if the analogy
holds. Actually we are only beginning to scratch
the surface of these verbal lin~ages. This paper
deals with one small aspect of man-machine
communications.
The computer is a Logic Mac~ine, an
.
information processor. Information in general, and
logical propositions in particular, are
communicated and manipulated by what we call
Language. This fact is the major contribution of
Ludwig Wittgenstein to modern philosophy.
A language is defined by the form of its
statem~nts and the meaning of its vocabulary. by
its syntax and its semantics. The English
statement,
"We were playing games."
makes sense to us because its form is correct
(subject, followed by compound verb, followed by
object), and the words are meaningful. If the word
order is different, say,
"Were we playing games.
we have a different sentence with a different
significance ... Or yet a different ord~ring,
We playing games were.
does not make sense, because the word order is not
correct for the English grammar, though it may be
perfectly valid grammatical form for German.
Similarly.
-"we wurden playing games."
does not make sense because one of the words has no
meaning in English.
computer languages are similarly defined by
their form and the meanings of the words:
"10110110 00110011 11111101"
is a perfectly good instruction (sentence) to a
6800 computer, but it makes no sense at all to an
8080 or a 6502 a Change the word order,
11111101 00110011 10110110"
and it also makes no sense to the 6800. Notice,
however, that neither of these sentences makes any
sense to you. Similarly, none of the English
sentences have any significance to a computer.
This brings us to the subject of languages suitable
for man-machine communications.
To be useful. a language must be understood
(in some sense of the word) by both the originator
and the receiver. For the moment let us
concentrate on the single link from the human to
the computer as being the difficult one. The
SUbject matter to be communicated is usually a set
of commands directing the computer to perform some
task. The language in which these commands are
communicated is called a Programming language, and
the set of commands is a Proqr~m.
The maChine's natural'ianguage is binary,
and for reasons that quiCkly become obvious to
anyone trying to use it, binary is not a practical
programming language. Although we hear frequent
claims to the contrary, English is also not a
practical programming language. We are left with
the necessity of inventing a new language.
When two people with differing natural
languages wish to communicate with each other. some
translation is necessary. One of the two is
obliged to learn the other person's language, or
possibly they both learn some third languaae (such

as Swahili or Pidgin, which are used as trade
languages in their respective parts of the world),
or else they hire another person fluent in both
languages as an Interpreter or Translator.
Each of these three alternatives has its
counterpart in the human-computer interface. There
are those few hardy souls who program in binary
absolute, toggling their programs in via switches.
and reading their answers from the front panel
lights. On the other hand, current artificial
intelligence research has computer programs
understanding a limited ~mount of natural English.
But a large number of people earn their living
translating and interpreting communications between
people and computers. And then we have an ever
growing number of new languages designed to be
understandable to both people and machines, Let us
again narrow our scope to examine these new
languages.
The first and most ovbious new language
preserves the form or syntax of the machine
language, and translates (or transliterates) only
the vocabulary into the Roman alphabet. We call
this an Assembly language. Every assembly language
statement corresponds exactly to one machine
language instruction (actually there are some
important exceptions which we will not discuss
here). A person writing in assembly language must
know almost enough about the machine language to
write in it directly. The computer needs only a
relatively small number of instructions to properly
understand a program written in assembly language.
The human writing in assembly language. however.
needs a great deal of skill and training. Even so
the message is often improperly communicated; we
say of this situation that "the program has bugs."
In most cases the originator of the message still
needs to hire another person to translate from the
human version of the message to the assembly
language; we call these translators "programmers.
Programmers are a cantanke~ous breed.
somewhat like the scouts of the Wild West days.
They tend to be SOCial misfits, a necessary link
between civilized society and the Unknown but often
less sympathetic to us than to the Other Side, be
it wild Indians or mad computers (my apologies to
AIM and/or IBM). They are few in number (compared
to the rest of the population), and very expensive.
Therefore we hope for a language more like our own
so we can avoid that expense. We call these "High
Level Languages" or HLLs. As it turns out, HLLs
have not rescued us from the clutches of that
villainous breed of programmers at all, but only
enabled us (or them) to communicate bigger and ever
more complicated messages or programs to the
machines. Let us focus on this aspec't of
programming.
It is generally accepted in the computer
industry that a typical programmer will produce an
average of one line of debugged and documented code
(roughly eguivalent to "one sentence, with
footnotes") per hour. This figure seems rather low
to us hobbyists, but then we probably do not
document our own code as extensively as they do.
nor, for that matter, do we test it as fully. The
important thing to notice here is that the speed
figure is ,relatively constant 'and independent of
the language being used. Couple this with the tact
that a program written in Assembly language is some
three to thirty times longer (more statements or
lines) than an equivalent one written in a HLL and
we have a piece of data that translates directly
into dollars in a commerCial environment.
There are also other reasons for favoring
HLLs. We mentioned ,that HLLs are more like our own
language and less lil 0, then the statement
will be executed. Otherwise it will be ignored. Cstatements can be used to set the value of the numeric
variable. In the present system, this method of
parenthetiC condition will take precedence over the Y-N
condition.
CONTINUATION
A colon (:) at the beginning of a line indicates
continued use of a text statement (T, Y, or N). Thus:

M: YES, SURE, YEP, RIGHT, TRUE
TY: THEN YOU CAN SKIP THIS INTRODUCTION.
TN: THIS INTRODUCTION IS FOR YOU.
The three codes are:
T: for "type text"
A: for "accept an answer,"
M:

for "match"

The letters Y and N are "conditioners" that when
appended to another code cause it to be effective or
not depending upon the success of the last attempted
match. Thus, the text "THEN YOU CAN SKIP THIS
INTRODUCTION." will be typed only if the answer given
to the question about PILOT contains the words "YES" or
"SURE". The text "THIS INTRODUCTION IS FOR YOU." will
be typed only if the match was not successful. A
sequence of operation might be as follows:
I

DO YOU ALREADY KNOW ABOUT P~LOT?
SURE DO.
THEN YOU CAN SKIP THIS INTRODUCTION.

Recognition of user re.ponses ,is

accomplished, as indicated in the example above, by
searching the responses for specific words or word
stems. In ordinary conversation) one or more words in
a sentence often carry most of the sentence1s meaning.
Th~ M:. statement is .used t.o .. define thosewords.,
portions of words, or word groups that we wish to be
recognized in an answer. Program authors can allow
conversational replies to their presented questions and
develop a list of word elements which are keys to
appropriate recognition and handling of the replies.

T:THIS TEXT WILL BE DISPLAYED
:AND THIS WILL ALSO BE DISPLAYED.
PILOT LABELS
Any PILOT statement may include a label prior to the
operation code which allows the statement to be
referenced by JUMP (J:) or USE (U:) statements. Labels
begin with an asterisk (0) and end with a blank. They
may have a maximum of ten characters. A label may also
be used as the only element in a line, terminating with
the end of line carriage return.
In this system, no complaint is made if there are
duplicate labels, but only the first in sequence will
be found when the label is referenced.

E.XAMPLE:

FIRST COMPUTER FAIRE PROCEEDINGS

- ........... _.... _...... _- .--_ .. --- ...... -'-- --... - ........................... -_ ............... -- _. -_ ............... -_ ...
-LABEL
T:DISPLAY THIS

JUMP

J:

USE

U:

END

E:

(causes jump to the above)

J:'LABEL

CO~iF~TE

C:

STRING VARIABLES

HMAfiK

R:

Pilot allows the response to an ACCEPT (A:) operation
to be saved as a character string and retrieved later
in the program. PILOT will save the response if a
string variable name is written after the colon in an
ACCEPT (A:) statement.
A string variabale name begins
with a blank or with the end of line 6arriage return.

YES

~

~O

N:

Later on, if the string variable name appears In any
portion of a TYPE (T:), YES (Y:), or NO (N:) statement,
then it will be replaced with the latest response given
to the A-statement which contained it.

If there has been no prior response saved for a string
variable name In a T, I, or N-statement, then the
string variable name itself will be displayed.

:

EXAMPLE:

SAV~:

~;C:

DP:
LOAD:
PRINT:
EDIT :
BY E:

(execution)
"ROBERT" entered
HELLO, ROBERT
TH~

THIS IS $UNKNOWN

NUMERIC VARIABLES
In the present system, numeric variables are limited to
integer values from -99 to +99. Numeric variable names
begin with the poind Sign character (I) and consist of
a single alpha letter (A-Z).
Numeric variables. may be
used in an ACCEPT (A:) statement to allow a numeric
value to be entered and in a TYPE (T:), YES (Y:), or NO
(N:) statement for retrieval and display. They may be
altered either by an A-statement entering a new value
or by a C-statement causing assignment of a new value.
They are set to zero at the time that PILQT is
ini tialized.
When a numeric variable name appears in a conditional
statement (such as T(X):HELLO) or in a C-statement
(such as C:X=A+B), the' character is not used.

EXAMPLE:
(program)
A:IX
T:THE VALUE IS 'X

(execution)
1'23" entered
THE VALUE IS 23

IMMEDIATE OPERATION
Preceding a PILOT statement with ctl-Z causes immediate
execution of the statement when it is terminated with a
carriage return.
Thus, whenever PILOT is awaiting
response to an ACCEPT (A:) statement, an immediate
statement may be used. After the operation is
complete, PILOT will return to expect a normal response
to the same A-statement. For example, "(ctl-Z) DP,:"
will display the current program in memory and "(ctl-Z)
U:*LABEL" will cause execution of the referenced
subroutine.
Ctl-Z followed immediately by ~ carriage return will
abort the current program operation and return PILOT to
its starting pOint.
SU~MARY

Of ,ILOT STATEMENTS

PILOT-boac

NAME

CODE

TYPE

T:

ACCEPT

A:

MATCH

fi:

~ontains

the following "core" instructions:

EXAMPLE
T: HOW ARE YOU, $NAME?
($NA~E is a string variable)
T: TH~ ANSWER IS IX.
(IX IS A NUMERIC VARIABLE)
A: t·NAv'E
(~ay contain $NAME string, or IX number)
H: PAT!ERN, PATTERN, ••• PATTERN
(moving window string match)

J:'LAEEL
(transfer program control to "LABEL)
U:'LAEEL
(t ransfer control to 'LABEL, return at E: )
E:
( end of subroutine or program)
C: X=A+5
(assigns computed value to numeric variable)
R: THIS IS A REMARK
(does not affe",t protrarr operation)
Y:GOOD FOR YOU
(same as l'I: GOOD FOR YOU)
N:INCORRECT
(SM:E AS TN:INCOP.R~CT)

PILOT-6080 contains the following keyword extensions:
J U/jAX:
N ~W$:

T:THIS IS $UNKNOWN

PAGE 249

Note that the core instructions are limited to Single
letter codes. The~e instructions are standard in
syntax and operation for many different implementations
of PILOT.
It is therefore advantageous to write as
much program material as possible with the use of core
instructions if you wish others to benefit from your
work. ~hen extensions to the language are "-ade to meet
special needs, multi-letter ~odes are used and termed
keywords to distinguish the difference.

A string variable name may have a maximum of ten
characters in addition to the dollar sign. The
character string stored as a string variable is limited
by the length of response to ACCEPT (A:) allowed at
that point in the progr~m.

(program)
A:$NAME
T: HELLO, $N AME

BOX 1579, PALO ALTO CA 94302

APPLICATID~

MATCH COMMAS E~BEDDED IN INPUT
SET INPUT LINE LENGTH MAXIMUM
ERASE CUnRENTLY STORED STRING VARIABLES
DISPLAY CURRENT PROGRAM
LOAD NE~ PROGRA"
SAVE CURRENT PROGRAM
PRINT CURRENT PROGRAM
EDIT CUnRENT PROGRAM
EXIT FRO~l PILOT
OF PILOT TO INSTRUCTION

A major use of PILOT is in the preparation of
interactive programs to assist learning.
When someone
is using the eomputer as a tool for learnln~, it is
important to make the computer helpful and easy to use.
The programming language used for creating computerbased learning aids should also be made readable and
easy to learn so that progra~ authors can read the
material and ~ake program ~hanges easily.
In addition, eqUipment ~o~plexity ·can be reduced by
avoiding aommuni~ation problems between machines and
using stand-alone equipment.
Su~h equipment can be
easily ~arried to a new location and be used
immediately. At the University of California in San
Franals~o we have demonstrated that interactive
instruction useful for ~edical students learning
~o~plex subjects can be aa~omplished on equipment of
rnicropro~essor siZe.
In addition to ease of use, such
small equipment tends to be reore reliable than more
complex systems and any breakdown that does occur can
affect only an individual unit.
There appears to be a trend of increasing advantage In
using stand-alone equipment for ~any kinds of
individual instruation.

FIRST COMPUTER. FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

DESIGN AND IMPLEMENTATION OF m
Martin Buchanan
2040 Lord Fairfa. Road
Vienna VA 22180

PAGE 250

SC

"start"

tabs to the column containing the first non
blank character of the
previous line.

IC

"indent"

same as SC minus two
columns.

OC

"outdent"

same as SC plus two
columns.

Abstract
HI is a simple procedural programming system
that I have designed and am now implementing. Great
care has been taken to make HI simple and elegant,
while powerful enough for general use. I hope that
it will be suitable as a first programming language,
especially for children, and as a language for personal computing.

A GC ("bell") is generated when a control function cannot be applied.
Disciplined Flow of Control

Computer scientists have shown that any program
flowchart may be composed by nesting a few simple
flowcharts. Aside from a linear sequence of stateWhy is programming a computer in a high level
ments, HI has only two control structures, a condilanguage so often an exercise in frustration?
tional structure and an iterative structure, with a
total of six different forms. Syntax and flowcharts
First, advanced FORTRANs, BASICs, COBOLs, etc.
for the two main forms appear in Figure 1. There is
are extremely complex languages, in syntax, and in
no branching statement. Learning structured programthe number of distinct statements and features.
ming and how to structure unstructured algorithms
Second, existing languages often do not reflect will be a necessary part of learning HI. The complete abolition of the GOTO has important consequenprinciples of programming style, of structured proces. Syntax is simplified, since labels are no
gramming, and of functional composition that demonstrably improve program reliability and readibility, longer needed. A stack can be used for generation
of code for flow-of-control, rather than tables of
and programmer productivity.
branches and labels. The resulting simplicity of
Third, most existing languages, including BASIC, control structures allows the compiler to detect undefined variables and to enforce certain rules
do not realize much of the potential of the interregarding the scope of variables (See following).
active computer system, for example, the direct invokation of functions by the user, the definition
Disciplined Variable Scope
and deletion of global data bases available to all
programs, and the ability to input expressions
"I propose such a rigid discipline that:
rather than simple constants.
'

The Problem

Great care has been taken to make HI programs
very readable and to encourage good style in HI
programming.
Names may be any length, b~ginning with a
letter, and may include digits and an "extension
character", defined as the colon, ":", in standard
ASCII.
Functions, global variables, and local variables
are syntactically distinct. Functions are always
followed by a parameter list in parenthesis, which
may be empty. Globals are always prefixed by a period, ".".
There are no reserved words, and no implicit
declarations of names (found in FORTRAN and PL/l).
Multiple statements in a single line are not
allowed. Continuation lines can be entered indefinitely, until the user enters a ; (not within a character string) or a carriage return. A control-N
("next") allows user control of where a statement is
broken into lines.
Comments begin with a semicolon, and occupy the
rest of a statement. Comments may be continued just
as statements may be. Comments and HI statements may
share a line.

1.

the flow analysis involved is trivial;

2.

at no place where a variable is referenced
can there exist uncertainty as to whether
this variable has been initialized."
- E.W. Dijkstra in
A Discipline of Programming
p. 85

Consider this HI program:
DEFINE F(X)
F~X3**2

END
X3 is clearly undefined. Some language compilers
will set X3 to zero; others will return nonsense; a
few will detect the error.
A more subtle problem, is the comm9n conditional
assignment:
DEFINE F(X)
IF X >=0
Ff-X**2
END

END

If X is less than zero, F is undefined. AdmitLine numbers are used only as a guide to locatedly, a variable only conditionally defined may only
tion within the program text, and not at all for
branching. Line numbers are generated by the system, be used later when the condition is true, but there
is always a program structure possible which will
and the user does not need to enter them.
isolate within the one conditional clause all calculations dependent on that condition. In HI, a
Program-oriented text editing gives the user
variable which is conditionally defined is treated
facil~t~es f~r easier indenting of programs and
as local·to the conditional block where it is dealigning of comments:
fined, and is deleted on clause completion (See
following rules).
RC "remarks"
tabs to comment column
(determined from previous
A third problem, encountered in programs which
statement'wit~ a comment)
call other .programs, is tampering with the calling
and enters "in.
program's data by a subprogram. In HI, a program

FIRST COMPUTER FAIRE PROCEEDINGS

may not tamper with its parameters, neither by
assignment nor by input, and the only value returned
to the calling program is associated with the function name (program name). This is nqt as restrictive as it seems, for a HI program name may return
any valid HI data structure.

BOX 1579, PALO ALTO CA 94302

PAGE 251

distinguished by their parameter list. Programs may
create and delete globals, or change their value.
Used to delete global or local variables is the
HI deletion statement:
TEMP+-

FIGURE 1

LIMIT THE SCOPE OF A TEMPORARY
VARIABLE USING THE HI DELETION
STATEMENT.

There is no distinction between system globals
(those supplied with HI) and user defined globals,
allowing the user to change (or mess up) the HI operating system. HI presumes that the user is running
on either a dedicated personal system or a virtual
dedicated machine, and can interfere with any feature
of HI without interfering with other users.

CODE,

COCE:>.,

IF

During execution, nonsense (such as a subscript
out of range, or an attempt to input a string rather
than a number, etc.) which depends on run-time values
for its detection, will be detected and will cause an
error.
In summary, several features of HI's treatment of
variable scope and definition are important:
1. a program may not change its formal parameters;

P

CO De: ,
ELSe:

2.

a variable initialized in an IF or ELSE
clause is considered defined outside that
clause only if it is initialized in both
the IF and ELSE clause;

3.

the use of an undefined variable is detected
by the compiler;

4.

Global variables provide a growing permanent
base for each user's programming needs;

5.

the deletion operation is available to limit
the range of temporary variables;

6.

during execution, the range of subscripts,
the lengths of vectors in distributed operations, and the types of operands are all
monitored for correctness.

COD£ '1.

END

CODE

Disciplined Composition

DO IF
CODe

A key development in programming languages is
the ability to compose programs from other programs.
This composition may be via a text copying or "macro"
system, or via closed subprograms passed parameters
and returning results. HI encourages functional decomposition of problems into subproblems whose solutions can be formulated as a single HI data structure,
though global variables may be used for more extensive communication of data between HI programs. The
calling program is shielded from "side effects", that
change local variables and are caused by invoking a
subprogram, by the prohibition of assignment to formal parameters. The global availability of programs,
and the direct accessability of functions to the
user,. encourages the development of "software tools"
by the user, utility programs used in the program
development process.

P

LOOP IF

'b

Accessible to all programs is the world of HI
globals. A global has universal scope, and endures
until explicitly deleted, as contrasted with local
variables within programs, which are unknown outside
their program, and are deleted on program exit, if
not sooner. All HI programs are themselves globals,
accessible by the user or any other program. The
global concept is extremely powerful, allowing the
user to define data used by many programs and directly by the user, such as:
. PI4-3.l4l592.
.TRUE+-l
• MILES4-52BO*.FT
The period prefix is used to denote global data,
and is not used for program references, which are

Interaction
What kinds of things does the computer system
say to the user or the user to the system? The user
may want to execute a certain program with certain
parameters, input the value of a certain expression,
perform direct calculations, or enter or change program text. The computer system may indicated an
error in a program, either at program entry, compilation, or during execution. The computer system may
also detect errors in input data, and must output
data during program execution.
It should be made
clear that many of the commands used on present language systems are means, and not ends, for the user •
The user may have to ~ LOAD file, COM file, RUN
file,. but his rj:al interest is program execution •
The goals of the HI interactive features are:

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 252

1.

early, clear, and comprehensive error detection, and easy correction;

B(n)
L(string,n)

2.

easy execution and testing of programs;

R(string,n)

3.

extremely simple input and output, allowing
formatted output without introducing any
additional statements or syntax.

During program entry, a syntax-scanner verifies
that each line is a valid HI statement or comment.
If an error is detected, the line is not appended to
the working file, an error message is-ryped, and the
user re-enters the line. This feature alone will
eliminate all syntax errors except those involving
the compound structures such as DEFINE-END, IF-ELSEEND, and DO-LOOP.
The compiler imposes a strict discipline with
regard to detecting undefined, or possible undefined
variables, as previously described. Other errmrs
detected include mistakes in the syntax of compound
structures, and type errors for variables whose type
is known (attempting to add a string, for example).
Execution monitoring of variables is described previously.
If at all possible, the compiler will be
incremental, allowing incorrect code to be corrected
during compilation.
All error messages are in plain English, and
during compilation, give line numbers, print offending lines, and name the guilty variables.
To execute a program, simply type its name followed by a parameter list in parenthesises (which
may be the empty list).
If a program has not been
compiled, or its source text has been changed since
it was last compiled, it will automatically be compiled. Since the user may directly invoke functions
he or she writes, the need to write special test
programs for such functions is eliminated, an extremely powerful feature.
For example, to directly test
a sorting function:
SORT(5 3 7 9 1)
1
3
5
7
9
;UNDERLINED ITEMS ARE TYPED BY THE COMPUTER.

Input is an operator, the unary question mark,
"?", which gets an expression from the user and
assigns its value to the variable following the
question mark. The prompt .. ? .. is typed on the terminal. The user terminates each input with a carriage return, though a carriage return-linefeed will
be sent only if there is no more I/O to be performed
on the line. The user may input expressions, which
is an extremely powerful feature of HI:

Input and output may coexist on one line, for
example:
"FLIR APERTURE" ?APER
FLIR APERTURE? 108*.INCHES
R( (?A+?B) ,10)
?3?5
8
Calling a program, input, and output, are all
examples of the HI evaluation statement, a sequence
of concatenated expressions. Each expression in
turn is evaluated and printed if anything other
than the null string results.
If an expression is
simply the inputting of a variable, then input and
printing are coincident.
Interpreter
The HI interpreter executes three of the six HI
statements or structures, evaluation, assignment,
and deletion. Each interpreter session corresponds
conceptually to execution of a program, in that
local variables may be created which are automatically deleted when a session is over. A session
begins on power-on or when a previous session ends,
and the system will say:
HI
A session ends when the user types END, just as a
program is ended.
Data Types, Structures, and Operations
HI allows character, real, integer, and logical
data types. Conversion of types in one direction is
automatic, but in the other direction, may result in
an error:
every logical value is an integer value;
every integer value is a real value;
every real value is a sequence of characters.
The basic HI data structure is the indexed set.
An indexed set of atomic data elements is called-avector. This basic structure can be generalized to
include arrays, trees, and lists.
In the smallest
version of HI, TINY HI, there are no real numbers or
arrays, but the syntax and semanties for these-features have been defined.

WHAT IS THE HYPOTENUSE OF THE RIGHT TRIANGLE
WITH SIDES OF 14.5 AND 7? SQR(14.5**2+7**2)

As in APL, operations can be distributed over
vectors, and vector subscripts are allowed.

SLANT RANGE? 57*.MILES

Character and numberic/logical constants are
distinct even on input, as characters must always
be enclosed in quotes.

The applications of expression entry to scientific
simulation alone (where unit conversions are a
significant headache) are major. Computer-aided
instruction is a second major application area.
Output in HI is extremely simple - just place
the expression or sequence of expressions to be output on the same line. Each element of an integer
vector becomes a 6 character string. Formatting
functions allow formatted output without special
syntax (See language summary following) .
"SAMPLE OUTPUT" 1 2 3
SAMPLE OUTPUT
1
SKIP(l)

\tB(lO)

returns n blanks
returns string left justified in
n length string
returns string right justified
in n length string

2

3

L("ALPHA" ,3)
ALP

Formatting functions in HI include:
SKIP(n)

returns n CR-LF

Basic arithmetic, relational, and string operations are provided. The operator "number", "jI", returns the number of elements in a vector. The infix
operator "ellipsis", ....... , generates an integer
vector from its first scalar operand to its second
and is often used to designate substrings.
Implementation
I began to try to design a better general purpose programming system in January 1976, while a
student of Computer Science at George Washington
University. The HI system has gone through 6 distinct versions already, and I am still struggling
with certain problems involving the internal representation of real numbers, declarations, handling
trees, and an editor for program entry. I have
begun to code basic operating system functions for
dynamic storage allocation, and for accessing globals, on the Intel 8080. I and one other person

FIRST COMPUTER FAIREPROCEEDINGS

are working on Intel 8080 implementations. A
comprehensive language standard for the full HI
language (including real numbers, data declarations,
operator definition, arrays, trees), and for the
TINY subset may not be out for several months. I
expect that my personal implementation of HI may
take me two more years of part time labor.
HI is in the public domain, and persons or companies interested in implementing HI please write to
me at the following address, and I will send information. If I get too large a response, I will institute a postage and copying charge - till then, its
free:
Martin Buchanan
2530 N. 18th Street
Arlington, Virginia
(703) 527-1909 (home)
(202) 333-6800 (work)
The dynamic character of HI data will cause HI
programs to be only semicompiled - the resulting
code will call many HI supporting routines to perform run-time checks, allocate and free storage,
link with global variables and subprograms, evaluate
expression, etc.
It is my hope that a basic HI system will run on
a personal computer with 16K bytes main memory and
some form of random access secondary storage,
whether floppy disk or bubbles, CCD, or videodisc.
Even if HI is more expensive, it is worthwhile to
plan it now, given the exponential decline in computing costs.
I will do all I can to standardize all features
of differing implementations and act as a clearing
house for HI information.
I believe that HI is practical for personal
computing, and that HI is a good language for
talking to computers. Even if you find fault with
some specific idea or feature of the language, I
hope that you can appreciate the need that motivates
it, and perhaps take an interest in improving it
or implementing it.
Though HI is in the public domain, implementations are not. I hope that the manufacturers of
personal computing systems will consider a proprietary HI as a good investment in systems software.
Conclusion
Perhaps ten million Americans will learn computing programming within the next ten years. A
language is needed for personal computing that
combines extreme simplicity with general scope and
power, and that encourages style, structure, and
good composition in programming.
TINY HI SUMMARY
Vocabulary: DEFINE END IF ELSE DO LOOP
Comments:
;
Arithmetic operators: + - * / ** unary Relational operators:
:> < <: • >: <)
Logical operators:
&
Length operator: f
Ellipsis (sub vector operator):
Concatenation operator: blank or other lexical
separator
Subscripting: [ J
Nesting: ()
Input: ?
Global name: • name ')
Function reference: .~ name") « expression list> )
Assignment statement:
va:dable') 4- expression>
Deletion statement:
(variable')'Evaluation statement:
 A.CV
using:
#TOTAL := (TOTAL +(A.1 [IJ ** 2))
- byte values. and integer values (S.or 16 bits)
POOL
- pointers to other strings or data element$
RET #TOTAL
- results ot programs embedded in the block constant
- multiples and arrays ot the above
EKcept tor some number signs and added parentheSiS, EMUL-S
This facility is real haDdy tor creating control blocks and
progrlllllB lOok lIIUch like BASIC or PASCAL .progrlllllB.
list structures; the full format specs are beyond the scope
ot this paper.
pat,o Typos
Operators on strings ("n" is integer value, "s· is string):
An EMUL-S program is made up ot ~ (variables and commaDds), and gOpBtagts, separated by delimitfrs such as blank and n HEAD s make a string trom the tirst n characters of s
ptrenthesis. The are eight kinds ot names data types): inte- n TAIL s make a string trom the last n characters of s
s JOIN s concatinate two strings (result is a string)
ger, pointer, short real, long real, string, class, entry, and
s FIND s
tind tirst string in second string, result is
label. The first tour are called ~ types, and the first
integer index to tirst character matched
five, variable types; the last two are ~ types.
s COP! n n make a string trom tirst index through second
sINS
n
s
insert second string into tirst, at index n
Integers and pointers each have a 16 bit value; integers
rllllle trom -32767 to 32767, and pointers trom 0 to 65535. Bytes s DEL n n delete b,ytes trom tirst index through secoDd
LEN s
result is integer length ot string
and single characters are kept in integer variables, in the low
EXEC s execute string as EMIlL-S program
halt ot the word. Relationel expressions (such as A = B, or
ATOM s convert string as it EMUL-S atom
lAME = "SMITH") produce an integer value, 1 if the relation is
@s
get pointer to start ot string
true and ¢ if the relation is talse. Integer and pointer cons := s
string assignment
stants can be decimal numbers (¢, 126, -12345), hex numbers
s rel s
all relational operators (=,<, etc) allowed
(\16, \FFFF" \A01), or characters ('A', 'BC', '+'S'). Octal
constants could be added, I suppose.
For example, to change a name trom "firstname lsstname"
tormat to "lsstname, tirstname" format:
D1adic operators (commands) on integers and pointers are:
+
•
/

addition
subtraction
aultiplication
division
II reuinder (MOD)
•• raise to power

logical OR
&* logical AND
&/ logical XOR
:- store word
%- store byte
:= assignment
&+

= test tor equal
<>test tor not equal
> test tor greater
>= greater or equal
< test tor less than
< = less than or equal

I/NF :=(NAMEFL FIND" " - 1)
#NL :=(L~ NAMEFL - NF - 1)
#NAMELF := (NL TJUL NAMEFL JOIN ",
Classes are not tully defined yet;

n

JOIN(NF HEAD NAMEn»
they will be a subset

BOX 1579, PALO ALTO CA 94302

FIRST COMPUTER FAIRE PROCEEDINGS

of SIMULA classes. The class concept allows new data types to
be added (such as PASCAL records) with associated operators,
simulation of concurrent processes with RETACH and RESUME comlIIUIds, and other interesting applications. I'll just briefly
mantion that the data associated with a class variable includes
a pointer to the class name entry, a pointer to a local name
list, and a pointer to the current execution character.
Entry names and label names are pointers to programs in
machine language and mJL-8 code, respectively. All the operators listed for the other data types are just function calls;
each is either a label or an entry name. There is ~ distinction between operators, commands, functions, subroutines, and
main routines. If the user wants a new operator, say "++",
to do something, s/he Just writes an EMUL-8 program with the
label name "#". This will be covered more later.

PAGE 256

Variable names are global or local~ ~ variables are
accessible to ~ program, and exist forever once defined.
~ variables are only accessible in the program defining
them, and are newly created each time the program executes and
released when the program returns. By the way, EMUL-8 allows
completely recursive programs; a command can call i tseU •
In most languages, the type of a variable is set in a
declaration statement or implied by a naming convention. In
EMDL-8, the type of a variable is set the first time a value
is assigned to it. This first assignment also creates the
variable. Using a variable before it is created, or assigning
the wrong type of value to an existing variable, are error
conditions {except for automatic conversions among numeric
types) •

Names may have a ~ to create them or assign a value
to them. The "#" prefix creates a local variable (it necessary)
The variable data types (integer, pointer, short real, long and allows its value to be modified. Examples are:
real, and string) can be made into arrays, of ~ size and allif
I1UIIber of dimensions. There is· no "dimension statement"; an
#1 := 5
assign (integer, 5) to X
array is created as a block constant and assigned to a new
INC IfI
add one to the value of I
variable, as in:
#A FOOBAR allow the command FOOBAR to change A's value
flilImJ.Y := t:10 BY 12 BY SREALJ

The ''>#'' prefix operates the same way for global variable names;

Square brackets are used to index arrays;

indexing starts at 1:

IIABII.AY t:1, 12J ; = (2 * VlOOTORt:12J)
The hAMUai' in GeperAl

First, ~BI.L-8 is an expression language, like ALGOL or
BLISS. Every piece of code has a value (and typal;
17
has the
has the
2 * 3.6
flI := 56
has the
IF (I = J) 8 ELSE -8 FI has the
SUBBOUTINE ARGUMENT
has the
"text" DEL 2 3
has the

value
value
value
value
value
value

(integer, 17)
(short real, 7.2)
(integer, 56)
(integer, 8 or -8)
returned by SUBROUTINE
(string, "tt")

iLs mJL-8 executes, i t uses the gurrent value (or CV),
much the way a computer uses the accumulator. For variable
data types, the occurrence of the name loads the value into
the CV. For commands, the occurrence of the name causes the
command to be executed, which can use and modify the CV.
Commands can also use arguments following. For example:

17

+ 18
<35

lIT

1= "XYZ'

put (integer, 17) into the CV
add the argument (integer, 18) to the CV
i t the CV is less than the argument, make CV 1 else ¢
put (variable name, pointer) into the CV
assign the argument to the variable name in the CV

Most interpreters do much the same thing, except they have
operator wegesience. For example, they do all multiplications
before ~ additions. mJL-8 does everything strictly from
left to right (aPL, by the way, does everything strictly from
right to left). For example;

>#M.AXMaI := 16383
The "»" and ''.»;>" prefix define command names and class names,
respectively. Class names are always global; command names are
global unless they occur in a class program.
Lack of operator precedence, required·blanks between
things, and clUlllSY" assignment syntax are the main restrictions
in the language. However, these factors greatly add to the
simplicity and modularity of the interpreter.
EMDL-8 Syntax
I'll describe the syntax in terms of a program file, made
up of programs, made up of sections, made up of expreSSiOns,
made up of atoms.
An~ is a variable name (perhaps with a prefix), a
constant, a command with its arguments (which are also atoms),
or an expression in parenthesis.

An exwession is ~ stri1l8 of atoms and control expressions. There are three kinds or control expressions: IFexpreSSions, CASE-expressions, and LOOP-expressions. I'll
get to these in a moment.

A ~ is a named expression. The section is headed
with a label definition, such as ~LABEL·. This section is
now called whenever the label is encountered in another program. If a return is not executed in a section, the flow or
control simply falls through to the next section (i.e. a
program may have several entry points).

Parenthesis can change the order of evaluation:

A ~ is one or more sections, terminated with an
END command. It the END command is encountered, an automatic
return is executed. Programs can also be named, with a class
name. Class programs are headed with a class name definition,
such as '!>>>PICTURE".

BASIC LET VAR = (7 + 2) * 8
mJL-8 /lVAR;= (7 + (2 * 8»

A program file is an operating system file containing
ODe or more programs.

LET VAR = 7 + 2 * 8
EMUL-8 f/VAR:= (7 + 2 * 8)

BASIC

VAR becomes 23
VAR becomes 72

VAR becomes 72
VAR becomes 23

As mentioned, HL-8 consists of names, constants, and
delimiters. Names (both variables and commands) may have 1 to
31 characters, and may use ant ASCII-128 characters except
b~ comma, semicolon, DUmber-sign, the parenthesis, and the
square brackets. Also, a name can't look like a constant.

Legal names:
A ALPHAbetaGAMMA +-*/$ IT'S $.100
Illegal names; A,B 12f17 ) (HI 123 'to' ;;;
A delimiter mYA1 appear between two names, two constants,
or a name and a constant, and ~ be embedded within a name
or a constant. The delimiters are;
blank, comma (a comma is equivalent to a blank)
a line boundary or record boundary
a comment (a semicolon through a liDe .or record boundary)
the parentheSis (used to group expressions)
the square brackets (used for block constants and arrays)

Control Expressions

An IF-expression takes one of two forms:

IF atom expression FI
IF atom expression ELSE expressionFI
If the atom's value is not zero (or null for strings), the
first expression is executed, else the second is executed.
Examples:
IF (I > J) #MAX ;= I ELSE #MAX := J FI
;= (IF (I > J) I ELSE J FI)
IF BOOL, IF NAME RET I Fl, ELSE INC IfI FI

#MAX

A CASE-expression executes exactly one of a series of
expressions, depending on the value of an atom:

FIRST COMPUTER FAIRE PROCEEDINGS

CASE atom
IS atom1 expression1 IS atom2 expression2 •••
ELSE expression-final
ESAC
It the first atom's value is equal to that of atom1,
expression1 is executed; if it's equal to atom2, expression2
is executed, and so on. If none of the atoms are equal, the
ELSE expression is executed. At most one of the expressions
is executed; the ELSE part is optional. Example:

CASE OPCODE
IS 'AD' #R := (A1 + A2)
IS 'SU' #R := (A1 - A2)
ELSE #ERROR := 17, RET 16
ESAC

LOOP PlUNT "I'm trapped", CR I

POOL

Hatura1ly, there are several loop exit commands. WHILE exits
a loop if it's argument is false (zero or DUll); UNTIL exits
if it's argument is true (not zero or null). Example:

PAGE 257

passed in true "call by name" fashion; it's as if the atom
"A.n" is textua~ replaced by the n'th argument atom. For
arrays, an argument can be an entire array or one element of
it. For example, the LOG command expects one real number for
it's argument; it could be used with a real array element, as
in "LOG ARRAY ["2, 3J ". On the other hand, a SORT command
would expect an entire vector as an argument, so it could be
invoked by "SOl![' VECTOR" ; inside the SORT routine, elements
are accessed with "A.1 CIJ ". The value of an argument can be
modified; for example, "INC #1" is just "#A.1 := (A.1 + 1)".
Most commands act like function calls; they return a new
value in the CV. The RET command returns from a routine, and
RET's argument is the CV to return. For example, "INC" returns
the new value of its incremented argument:
INC

A LOOP-expression, in its simplist form, just loops for_
ever, as in:

BOX 1579, PALO ALTO CA 94302

#A.1:= (A.1 + 1), RET A.1

When a command returns, all the arguments it accessed are
skipped in the calling program. A return also releases.all
local variable names, and all data associated with these namee.
This is very important; it allows recursive operation, by
creating a fresh set or local variables each time a routine 1s
invoked. By the way, class programs keep their local name
list from call to call, making recursive operation more complex.

LOOP
UNTIL (<;I PTR = (6)
INC iiPTR
POOL

EMUL-8 Bubble Sort
; The SORT command is invoked by "size SORT vector", where
"size" is the number of elements to sort in "array". SORT
returns a sorted copy of the array.

EXIT directly leaves 1lIIY number of levels of looping. It takes ~ SORT
one argument, the number of levels to exit from. Example:
;first create new array, copy arg array to it
IVEXlTOR := CA.CVBY A.1 OJJ
III := 1 LOOP
III FORLOOP INC #1 UNTIL> A.CV
IIJ := 1 LOOP
IVECTOR CIJ .:= A.1 CIJ
IF ARRAY CI, JJ EXIT 2
POOL
INC IIJ UNTIL > 10
;outer loop repeats until no elements switch
POOL
LOOP
INC III UNTIL > 12
; 1 if awitches
lJFLiI:. := f6
POOL
III FORLOOP INC III UNTIL >= A.CV
IF (VEXlTOR CD > VECTOR (1+1J)
Note that these exit commands can appear IIt\}'Where in a loop,
#TEMP := VECTOR CI
;switch elements
allowing a much greater amount of flexibility than (say) the
#VEXlTOR cn := VEXlTOR CI+1J
if not in
PASCAL WHILE-DO and REPEAT-UNTIL loops. Note also that I
#VEXlTOR CI+1 J := T»lP
;
sort order
haven't included a GOTO cOlIDnand, although one could probably
;flag the switch
#FLAG := 1
be added.
FI
POOL
Often a loop is executed a fixed number of times, as in
;repeat if switch
WHILE FLAG
a FOR loop in BASIC or PASCAL. As mentioned, the INC command
POOL
adds one to~ argument, which must be a variable name with
;return
sorted
RET VEXlTOR
the prefix "/1" (or ,,>#11). The DJOC: COlJlllland has the same format
but subtracts one; the INC2 and DEXl2 add or subtract two
Interpr.ter Implementation
(since word pointers change by two). Since these commands
leave the incremented or decremented value in the CV, and the
Most of the implementation algorithm is designed; however,
UNTIL and WHILE commands do not modify the CV, they can be
I'm still working on details reguarding argument passing,
used together, as in:
arrays, and class concepts. No code has been written yet. In
this section, I'll first define some data structures: the name
INC III UNTIL> SIZE
list, allocated blocks, and the type code. The middle part
DID2 Il'ABLEPTR WHILE>= BASEPTR
discusses temporaries, arrays, and assignment. Finally, I'll
Thare is also a STEP command, allowing a variable to be
describe the interpreter driver itself, and its three routines:
modified by some value other than 1 or 2. Examples:
GETAT014, GETABG, and EMULATE.
IITADDR STEP 4
#K STEP -14
#BITS STEP 8 UNTIL = 64
The FORLOOP command is exactly like the LOOP command

(and is terminated by POOL), except that it zeros tha preceeding

variable name. This curious property is used almost exclusively
to make loops such as:

Nome Lists
~very

name created in an EMUL-8 program has a name list
somewhere in memory. This name list entry contains the
ASCII name itself, a one byte type code, and a two byte value:

wa

I NAME IT I VALl _~. to next name list entry

All the ASCII characters of the name have their high-order bit
on aDd the type code (at least in name list entries) has the
hi~h-order bit off, so the type code also delimits the end of
(This was as close as I could get to the standard "FOR 1=1,1,10· the name
statement in other languages, while sticking to the simple
•
EMDL-8 syntax and interpreter driver).
The global name list is accessed by first creating an 8
bit hash code, consisting of the lower 4 bits of the first two
characters. This hash code indexes a 512 byte table of pointers
Cornm'pd Rqutipes
to a list of name entries having the same hash code. Since
As mentioned, the occurrence of a label name causes the
there are ~ globel names defined at 1lIIY time, I think the
EMOL-8 section with the label to be executed. Upon entry,
cost of a 512 byte table is justified by the increase in access
only one local variable name is defined, "A. CV" • It contains
time.
the current value from the calling program. Arguments (atoms)
following the label in the calling program are accessed with
The local name list is just a linked list of the local
the local names "A. 1", "A. 2", and so on. -These arguments are
name entries. Since there are few local names in aDf given

III FORLOOP INC #1 UNTIL> 10 expression POOL

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

local name list, and tl:!ereare mllIll such lists (one for each
program nesting level, plus one for each class variable), a
512 byte hash table for each is not worth the memory used.
The name lists are only accessed by calling standard
system routines, for security reasons. These routines are
GETLOClIL, GETGLOBlIL, PUTLOClIL, PUTGLOBAL, and FREELOCAL.
These are explained later.

PAGE 258

of the array or the whole thing. If array brackets follow the
array name, a single element is used; if the brackets are
omitted, the whole array is used. One array can be assigned
to another as a whole; other array operations (such as in APt)
may be added later. The type ~ode distinguishes between the
whole array and a single element (in a way I haven't defined 7'lt).
ABSiepment

Pieces of data that need more than 16 bits (real numbers,
strings, programs, etc.) are kept in~, allocated from a
memory area called the lI!w2. The heap builds from the bottom
of me.1llory upward, and the stack bullds "from the top of memory
downward. Naturally, i f these two areas meet, memory capacity
has been exceeded and the system aborts (unless a dynamic array
or program can be moved to the disk to free up space). The
format of a block is a two byte length, a one byte type code,
and the data bytes; the high order bit of the type code (in
blocks) is 1 i f the block is in use, and ~ if the block is free.
The heap is always accessed with the two standard routines
GETHEAP and FRWlEAP. GETHEAP is passed a type code and the
length of the block needed, allocates memory from the heap, and
returns a.pointer to the block allocated. FREEHEAP is passed a
pOinter to the block, and frees the block for later use.

The assignment operator ":=" is somewhat complicated, due
to all the type codes involved. Conversions among the ~ric
types occurs automaticly. A string can be assigned to a
pointer variable, setting it as a pointer to the string. It
the left part is a newly created name, the type must be assiCDld
as well. If the left part is a block of some kind, FREDIEAP
must be called to release the block, since after the assignmeDt
there will be no way to access it. If the right part is a DODtemporary block, a new block must be allocated b7 calling
GETHEAP, and the data copied to it. Assignment involving arra;ya
adds its own complexities; an assignment with an array element
on the lett implies the data is copied, and than the right side
must be released i f it is a temporary. Note that for all assignments, the NAME bit must be set in the left part's type code.
The Interpreter - Preliminaries

Type Code Bvte

I need to introduce another concept: the current gontoxt.
The type code byte is found in three places: in a name
The current context is much like the program counter in a comlist entry, in the current value (CV), and in an allocated block.puter; it contains a pointer to the next byte of an EMDL-8
The format is:
program to execute. In addition, it contains a pointer to the
local name list, and a pointer to the previous context saved on
the stack. Later, I'll explain how the current context is used
Bit 0 - in a name list entry, ¢"to delimit the name
during command calls. The pointer to the current program char- in allocated block, 1 i f in use, ¢ i f free
acter is kept in the local variable PROGPTR.
- in the CV, temporary data if 1 (see below)
Bit 1 - BLOCK: value is pointer to allocated block
As mentioned, the name list entries are accessed using
Bit 2 - NAME: value is pointer to name list entry (H form)
standard system routines. GETLOCAL looks for a name starting
Bit 3 - ARRAY: block in array format
at PROGPTR, searching the current. local name list. If 110 matoh
Bits 4-7 indicate a particular data type:
is found, PROGPTR is unchanged and the CV type code is set to
.Q.QIlJ:; ~
VALUE IS
a special flag value, \FF. If a match i'S" found, PROGPTR poiJrts
0000 integer
16 bit integer
at the first delimiter follOwing the name, the CV value beoomes
0001 pointer
16 bit pointer
a pointer to the value field in the name list entry, and the CV
0010 short real pointer to data block
type code becomes that of the entry. GETGLOBAL works in the
0011 long real pointer to data block
same way, using the global name list.
0100 string
pointer to data block
0101 argument
pointer to arg in calling program
0110 entry
pointer to machine code routine
PUTGLOBAL and PUTLOCAL just add a name to one ot the name
0111 label
pointer to EMUL-8 code routine
lists. The name itself is found atPROGPTR; the type aDd value
1000 unassigned zero (newly created name)
are in the CV. FREELOCAL scans the local name list aDd releases
1001 dynamic
pointer to block with disk address
all list entries, as well as all data blocks aSSociated.
1010 class name pointer to local label name list
1011 class var pointer to control block
The interpreter also calls GETCONS, to look for a oonstaDt
(1100 to 1111 are free for expansion)
at PROGPTR. As in GETNAME, i f a constant is found, GETCONS
advances PROGPTR to the first delimiter after the constaDt, aDd
Temporaries
sets the CV to the constant's value. The ntemporar,M bit is
set in the CV type code. It a constaDt is not found, PROGPTR
When a computation is in progress, intermediate results
is unchanged, and the CV type code is set to \FF.
must be saved in temporary memory locations, and these locations
must be released when no longer needed. Consider the following
real number calculation:
The Igtebpreter ~ Operation

(PETER + MARY)

*

(14.7 - BOTH)

The + command gets two arguments (PETER and MARY), and neither
is a temporary, since the contents of each must be preserved
during the calculation. A new block for a real number must be
allocated (using GETHEAP) for the sum, a pointer to this block
put into the CV, and the CV type becomes "block, temporary,
short real" (11000010). The - command gets one temporary argument (14.7) and one non-temporary (BOTH). The computed
difference can be put into the temporary, wiping out the 14.7
which is no longer needed. The * command receives two temporary
arguments. One can hold the result; the other must be released
(using FREEHEAP), or it vill float around the heap forever.
~

Arrays are kept in an allocated block. The first data byte
is the number of dimensions; it .is folloved b7 two byte fields
containing the size of each dimension, and then b7 the actual
data. An array internall7 contains the number of bytes per
element as an added dimension; i.e. a 2 x 2 array of long reals
looks internally like a 2 x 2 x 8 array of bytes. An array of
strings is just an array of pointers to string blocks. krays
of class variables are legal, but not defined yet.
Note that operations involving arrays may use one element

The actual interpreter routine, EMULATE, juet starts
executing a program at the current context. As ve'll see, it
is very simple; must of the work is done in GETARG. GETAOO
is really the heart of the interpreter; it is called both b7
EMULATE and by assembly routines which need to get the argument follOWing an entry name. GETARG first calls GETATOM, so
I'll start there.
GE.'TATOM does the dirt7 work for GETARG; it returns the
next program element in the CV, like the fetch cycle in a
computer. GETATOM first skips blanks, commas, end-of-line,
and comments (semicolon through end-of-line). It looks at the
character(s) at PROGPTR, and does one of the following:
It "(" or "),, is at PROGPTR, the CV type is set to the
special flag value, and the CV value becomes 128 or 129,
respectively.

If "H" is at PROGPTR, skip it and call GETGLOBAL. It the
name is in the global name list, an error has occurred; the
user is creating a local name which conflicts vith a global
name. It a global name isn't foui!d, call GETLOGAL. It a local
name is found, and it is an array', check tor a square braclret
following, and call GETCONS to pick up the array iJldices. T~
array element address is calculated and put into the CV. It a
local name is not found, call PUTLOCAL to create it.

FIRST COMPUTER FAIRE PROCEEDINGS

It ">(I" is at PROGPlR, the above occurs for global names.
Again, a global D.IIIDe cazmot be created which collflicts with an
existiag local _ .
If ,,» n is at PROGPTR, the label definition is skipped,
and the DllXt atom accessed. If "»I>" is at PROGPlR, an error
has occurred, since it should have been preceeded by END.
If DOne of the above appl¥, try callillg GE:rGLOBAL, then
GETLOC.\L, then GE:rCOllS to recognize the atom. If DOne of these
fiDd ~, an "UIIl'ecogrdzed S1JIIbol" error has occurred.
If a D.IIIDe is found, load the name's value into the CV; for
arrqs, this involves calculatiag the array elameDt address
(for reals and striags), or arr~ element value (tor integers
and pointers).

The GE:rARG routine tirst saves the CV on the stack, and
calls GE:rATOM. Based on the return, it does one ot the
tollowillgl
If a "(", call EMIILATE (recursivel¥);
just return.

when it returns,

It a ,,)n, simpl¥ return to l!MIlLATE, which will cause it
to return as well.
If the command RET is found, GE:rARG is called (recursivel¥)
to pick up the CV value to return; if the value is DOt a temporary, it is copied to a temporary. FREELOCAL is called to free
the local name list and it's data blocks.

If an argument name is found (A.1, A.2, etc.), and i t has
DOt been encountered before, a pointer to the atom text tor the
argument in the callillg program must be located, based on the
previous context's PROQPlR. This PROGPlR must also be updated
to skip over arguments used. Once a pointer to the argument is
found, the current context is pushed on the stack, and a new
context (a pointer to the argument and the calliJ!g program's
local name list) established. GE'l'ARG is called (recursiveq)
to load the argument into the CV.
A D.IIIDe ot type entry causes the CV to be restored and the
assembl¥ routine whose address was in the CV to be called. When
the assembl¥ routine returns, GETARG returns. I hope to be able
to pass all registers between assembq routines, and nct just
the CV. B7 the way, in the 8080 the CV type code is the C register, and the CV value is the DE register pair.
A D.IIIDe ot type label causes the current context to be
puehed on the stack, and a new context created. The address
in the CV becomes the new PROQPlR, and the local name list is
initialized to the name A.CV containins the saved current
value. I!SlLATE is called (recursiveq); upon return, the
current context is popped off the stack, and GETARG returns.
For 4yDamic data-types, the actual data or routine is
DOt currentl¥ residillg in lIIIIIII01'7, so it must be located and
loaded. This teature isn't completel¥ defined yet.
For all other data types, GE:rARG just returns, since all
the work has been done in GETATOM.
The llNllLATE routine itself is just a short loop, executed
"forever". In the loop, GETARG is called. It a ")11 or "RET"
is round, EMIILATE returns, else it continues to loop.
Figl ThpWhts

Although the laDguage and interpreter design have gone
through several iterations, it is still DOt complete. Class
variables heve o~ recentq been added to the lalIguage, and
need a -lot_. of conceptual work; arrays and argument passillg
also need some shaldllg down. Callillg assembq routines
(entry D.IIIDes) needs tighter specitcations, as well; this
involves the operatillg system linkiDg conventions. An. JHJL-S
compiler is aDOther possibility I'm allcwillg for.
I don't feel proprietary about the llNllL-S design; the
concepts {and this paper) are free for aJV'One to use, as loDg
as I'm given credit and receive a cop,r of ~h1Dg based on
the design. However, iL and when I program the EMl1L-S
interpreter, I mq cop,rright and sell it. I'd like to receive
IUJ,Y' teedback based' -0l1. -this design; I hopa to start implementation the summer of 1m.
EMIJL-8 is deSigned to work closel¥ (although DOt exclu-

sivel¥)
paper.
design;
gration

BOX 1579, PALO ALTO CA 94302

PAGE 259

with liMlS-S, an operatiDg system covered in aDOther
Input/output colllllands have DOt been covered in this
they will be a function of an EMIlL-S / !H>S-8 inteyet to come.

About the Mhpr
Bob Wallace wears several microcomputer "hats" in the
Seattle area. He isa founder, past newsletter editor, and
currentl¥ secretary of the Northwest Computer Club. In
addition, he is publications manager for The Retail Computer
Store; he orders all their bookS and magazines. FiDallJ,
he is a graduate student in computer science at the UDiver~ty
of WashiDgton. In his spare time, he consults for Hew World
Computer Services, Inc., does event logistics for CoDHet, and
tries to get his computer runniDg. He is 27 and siDgle.
(EMUL-S is being designed under contract for New World Computer
Services, Inc.)

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 260

EMOS-8: AN EXTENSIBLE MICROCOMPUTER OPERATING SYSTEM
Bob Wallace
Box 5415
Seattle WA 98105

EMJS-8 is a "paper design" tor an op.eratiug s;ystem
based on the Intel 8080. The system otters a memory alloca~
t10n mechanism; a method at usiug user names rather than '
addresses tor subroutine liDkiug and other chores; the
ability to do multi~taskiDg on a time-shared basis; and
compatibility with EMDL-8 (described in another 'paper), CP/M
by Digital Research, and PL/M bJ Intel. The most ilIIportant
tacility'is the input/output system, which teatures logical
unit names assigned to physical devices; a generic I/O '
device model allowiug device iDdependent I/O, and a tile
control block. Utilities include a video displaJ module
driver and editor; and assemb~, load, and debug tacilities.
The ~S-8 design is not proprietary.

domain, and encourage their use. Then IIIID1 machines will be
able to run the application software I'll be selling later.
Although the operating s;ystem is not partial to au;r
particular :ilA device (such as audio and digital cassettes,
tlopP1 disks, memory blocks, etc.), it is partial to a
particular int'ragt1.y, device, the Video Display Module (VIJI)
aDd ke,yboard. A VI»« is simply a section ot main memory that
is alsodispla1ed on a video monitor or television .et, as
a number of ASCII characters. The VIM and a keybolU'CI is more
tlexible, taster, and cheaper than a traditional terminal.
A CRT or hard cop,y-terminal coUld be used instead, but some
OOS-B teatures (particular~ editing) won't work as well.

IntroductiOA
Moapa Us.

This paper describes a "paper design" i''Jr an operating
system, based on the Intel 8080 or other microprocessor. The
overall design goals are the same as the »mL-8 lauguage:
modularity, exteneibility, and c0ll9ivialit1. In addition,
EMOS-B is tailored to the two basic design goals ot ADZ operating system:
- to allow a wide variety ot programs to run with a wide
variety at hardware configuratiOns, aDd
- to make program development as easy as possible.
Most ot OOS-8 is concerned with I/O operations. All
I/O uses a general model ot a peripheral, allowing tixed or
variable length records, collected into a tile. Programs do
I/O with logical units, which are assigned to particular
devices. Theretore, EMOS-8 is not a tlopP1 disk operating
system or a/cassette operating s1stem, it is a general use'
operatiug s;ystem.
In addition to I/O, EMOS-8 also supports timeshared
and interrupt-driven multi-tasking; memory block allocation
aDd release; loading and liDking ot program modules; editing
at textual and binary tiles; ,and various debugging tacilities.
Since all routines are modular, there is no tixed memory
requirement, except that the first 16 memcry bytes (and tirst
two restart / interrupt vectors) are used tor various purposes.

The Intel 8080 (and other microcomputers) bls a hardware
stack using main memory, building trom the high addresses
dOWDWard. It also vectors interrupts and o~b,yte instructions
(restarts) which act as subroutine calls to locations in the
tirst 64 b,ytes ot memory. EMOS-8 uses memory as tOl]DWSI
00001
0003:
0004:
00051
0008:
OOOBI
0000:

OOOF:

jump to reset routine / monitor interrupt / trace / boot
reserved tor Intel operating B1stem I/O b,yte
reserved tor CP/M compatibility
jump to direct I/O system call, CP/M tormat ,
restart tor assembly lauguage call-by-name, l!MtlL-8 entry
pointer to global name blsh table
2 b,yte length ot tirst allocated block
1 byte t1PO code ot tirst allocated block

0010 to 003': interrupt / restart'vectors. These can be
managed bJ EMOS-B or lett alone tor the user.
0040:

beginning of allocated memory, building upward

Im:

ma:r be PHON
bootstrap POOM location (could also be ill low memory)
VIM memory addresses (could also be allocated at boot)

XlXX: beginniDg at stack, building dowuward
XlXX+1 starts the resident portion at EMOS-B;

ZZZZ,

OOS-8 uses a static memory alloc,ation scheJIII. The main
block at memory between the tirst 16 b,ytes and the stack is
called the buR. Memory blocks at all;1 leugth can be allocaliHOS-B is being designed cODCUrrelltly with a lauguage
ted and released tram the heap, but blocks are not moved, so
called l!XUL-8, described in another paper. Naturall:y, it 11
the heap is AeVer "compacted". Each block starts with a two
expected that the two will be used together. The liHIL-8 design b:yte leugth and a one b,yte type code. The high order bit at
started as a simple command lauguage tor EMOS-8; it sort at
the t:rpe code is 1 i t the block is in use; the entire type
grew (almost by itselt) illto a tairly powertul progrllllllDiug
code is'zero i t the block is tree. The allocation algorithm
lenguage. However,.EHlS-B and liHUL-8 could be run separate~.
is tirst tit, starting at the base at the heap. Adjaceut
tree blocks are collapsed during allocation. The total ot
Modularity and exteneibilit1 are supported with well
all lengths at ail blocks must equal the memory size, and
detined parameter and linkage cOllgentions. The user can easi~ the block containing the stack must be tree, or an error has
add new capabilities (such as device drivers or user coJlllllaJlds). occurred. Memory is allocated by call GETHEAP, with the
The particular module configuration can be chlDged tor ditterent type code in register C and the length in register pair DE
purposes and blrdware configurations; this can even be done
(standard EItJS-8 / .EMtlL-8 convention); on return, the D&
dynamic~, as subroutine calls and parameter passing can be
pair contains a pointer to the block tound. The user is inbased on the name ot the routine or parameter as well as the
tormed i t there is not enough memory tor the allocation.
address. liHOS-8 is convivial, in that it otters a set ot tacil- Memcry blocks are released hy calliug FREliHEAP, with a poiutfties to the user, who is tree to use them, modif7 them, or
ar to the block in the DE pair. Both GE'lHEAP and FREllBEAP
build in new components. It is 'intended that source code
check that the heap is in the correct tormat. Both are also
Al.la;m be distributed, and be very well documented, both a:t
reentrant, so the1 can be used in a multi-task enviroDlDeJ1t.
the program level and with a "principles of operation" MDUal.
There are two problems with this open approach. First,
there is much less protection within,EMOS-8 tram user errors;
Fortunately, most miorocomputers are used as siugle user sj'stams; at least errors attect oal7 one person. However, since
microcomputers are inexpensive there te::d to be more users~
,
and theratore less experienced users. Internal coneistanor
checking maintainesome securit7. The other problem with
sup~ng source code is the ease ot copying it, and,the lack
at tiDADCial rewards tor the'designsr based on copying.
However, to make !IORq selliug programs, the programs IllUst ,
run on as mau;y machines as possible. It and when I write 'the
mainEMOS-8 programs, I inteDd to put them in the public

Multi-Task OmlttoD

apd

Interrupts

The Iutel 8080 provides a primitive hardware interrupt
system. EMOS-B provides a cOllllland to vector exactly one
occurrence at an illterrupt to a particular address; i t a
second interrupt occurs, an error message is given. Iforlllllll7
an iuterrupt" haDdler will set i tselt as the entry poillt tor '
the interrupt i t another is expected, re-enable the illterrupt
s18telll, and return. It no !lOre interrupts are expected, it
no~mall:y sets the end-ot:"record status flaB ih' the 'tile control
block associated, with tha interruptiDg device, re-enable interrupts, and return. The operating s18tell catches au;r errant

FIRST COMPUTER FAIRE PROCEEDINGS

interrupts following. Interrupts may also be used to iUYoke
"foreground" tasks, such as real-time data acquisition. All
interrupt routines must leave the stack and all registers as
they were found.
If the hardware includes a real-time clock, a single
priority task-switching (and time kseping) clock interrupt
routine is available. Aqy number of tasks (user programs,
peripheral spoolers, etc.) may be logicslly running concurrentlJ; in actuali~y they are given control of the machine
in "round robin" fashion. Each task must have its own stack.
Aqy task, when given control for its time-slice, may pass
control to the next task in line; if it is (say) waiting
for the end-of-record flag to be set by an interrupt handler,
and has nothing better to do, the task might as well let
another task get some work done. Tasks may also create
new tasks and terminate themselves as tasks; however, there
is a fixed maximum number of tasks assigned when the l!MOS-S
system is generated.
Please note that this task-switching clock interrupt
routine aDd the task skip, activate, and terminate routines
are not in themselves a complete time7sharing system. Such
a system usually includes a shareable, reentrant language
processor, such as EMUL-8 or BASIC. I'm not sure I can
make 1iNUL-8 reentrant, and I haven't heard of an 8080 reentrant BASIC. Still, the facility is interesting, and I'11B:J'
be useful for some applications. I do intend to maks the
memory and disk space allocation routines reentrant, so that
these two important resources can be managed in a multitask eUYiroDlllent.
Named Egtity Facility
It is desireable for the user to be able to nama various
entities in the system: programs, entry points, variables,
logical I/O units, file control blocks, and so on. There is
a general global name list; each entry contains the ASCII
nama a type code byte, and a two byte value (usually a pointer
to the entity). There are standard system routines used to
access this global name list: GETGLOBAL and PUTGLOBAL. This
facility is covered in the EMUL-8 paper, so I won't repeat it
here.
Assembly language routines can call each other by name,
rather than using a linking loader to fill addresses in the
call instructions. The assemblJ language programmer uses
the restart· 1 instruction, followed by a pointer to the name
of the routine, rather than a call instruction. All registers
and flags are passed unchanged to the called routine, and the
top of the stack contains the return address. just like a
normal call. Arguments may be passed in registers, on the
stack, or following the "call"; the process is transparent
to the calling and called program. The advantages are the
ability to trace subroutine calls during debugging; the
option of having some routines non-resident, and ollly loaded
into memory when called; the ability to record the amount of
time used by ~ routine; a simpler assembler and loader;
and the ability to write routines in assemblJ or EMDL-8 as
required •.
The main disadvantage of this "call to eutry name"
facility is the time overhead to look up the name. Since
lIIIlIIIY routines are really not called that often, this isn't
a bad problem. However, a special option allows the first
occurrence' of a "call to entry name" to construct a machine
language call to the routine and insert it into the code of
the calliDg routine. Most of the advantages listed for the
"call to entry name" are lost; however, since the actual
linking is dODe b,y the operating system, the assembler and
loader still do not need to be concerned with linkiDg.

BOX 1579, PALO ALTO CA 94302

PAGE 261

need to pass a single byte.
Operation routines mar call other operation routinea, but
eventuallJ 01'18 will call DOlO to actually transfer I/O data.
DOlO is a very shOrt routine; basiclJ all it does is call the
actual device driver, whose address is in the FCB. The various
device drivers all look the same to DOlO; they process the same
operation codes and set the same status bits. This indirect
method of doing I/O uses alit tle more time and memory than is
absolutelJ required; however, it is structured, and easy to
comprehend and modify.
All I/O devices must act as closelJ as JOssible like the
A generic input/output device
transfers fixed or variable length biABry records of' a to
32767 bytes; records are collected iaLo a file of 0 to 32767
records, which is aDded by an end-ot-file record. The generic
device can also skip records, forward or backward by record,
forward to the and of a file, or backward to the beginning of
a file. ObviouslJ making all actual· devices conform to this
standard sometimes leads to cl.tuDs7 situations. For example,
paper tape and audio cassette controllers usuallJ cannct skip
backwards, and a floppy disk is capable of skipping DIIUI\7' records at oncer still, I think it is a reasoneble compromise.

EMOS-S generic I/O device.

User programs do input/output with a logical unit, having
a three character name. Using the DSDdng facilities of EMOS-S,
the logical unit name is associated with a pointer to a unit
assignment block 12 bytes long, containing:
- a 2 character device name, itself' associated with a pointer
to a device driver entry point (one driver Jl!ogram may have
several entry points, each with its own name).
- a 1 character drive number, from ¢ to 9 or blank. This
allows specifying a particular tape drive, printer, etc.
- en S character user file _ , left-justified and padded
with blanks if the name needs less than S characters.
Non-file devices, such as printers or terminals, have none.
- a 1 character file type, indicating the kind of information
in the file (A for assemblJ source, S for saved JIIIIJIIOry
image, etc.); implies ASCII or biABry data for the editor.
For example, the editor reads a logical unit called EDR
The user can give a
command, such aSI

and writes to a logical unit called EDW.

#EDR

1=

"TP1:PliOGRAM.S" .#EfN

1=

"PT-

and the editor will read file PiiDGRAK.S from tape unit one, and
write to the printer. This colllllllUld mar be entered interactivelJ
before starting the edit; it mar be given by a progrBII about
to call the editor; or it mar be given as a response to an
error message from DOlO that no logical unit has been assigned.
File Coutrol Block Format
There are eight operation codes an individual driver is
expected to handle (the op code is in parenthesis):
(0)
(1)
(2)
(3)

close a file
open a file
get a racord
put a record

(4) skip to start (rewind)
(5) skip back one record
(6) skip forward one record
(7) skip to end-of-file

The ·overlap" mode bit. in the status byte indicates an I/O
operation is just initated by the call. The operation is not
actually complete until the ·complete" flag is set in the status
byte. This facility allows various torms of overlapped I/O
and computation processing. If the "overlap" bit is zero, the
driver does not return from a.call until the operation is actuallJ complete. For simple I/O.systems without interrupts or
spooling tasks I/O cannot be overlepped and this bit is ignored.

p
.
Fi~
Input Out"f)'lt - J s
All input/output operations handled through the operating
system are channeled through one routine: DOlO. All par~tersFour 2,:"byte fields are used to control the user record
and intermediate storage used b,y this and lower level rout~nes
buffer. The first is a pointer to the start of the buffer (and
are kept .in a file control block (FCB). Rather than calling
the record) ~ The second is a pointer to the ·current record
DOlO directlJ~ DIIUI\7' user programs wil1 cal1 individual operation byte~· this is used by formatted I/O operatipn routines to
routines instead. These routines can be tailored to the I/Q
write' a byte, read an integer in ASCII format, etc. The third
requirements of a particular user program, such. as a BASI!) or
field. is the le~h. of the racord to read or write. The last
EMUL-S interpreter. Examples of operation routines might be to field is the le~h of the buffer it1l8lf' (sillCe variable length
read.an.entire record, read the next bfte of' a record, read the records may be read, both· these fields are necessary).
next !SCU format real, number from a record, read the nex~,"A!3CII
.
..
•
format nUmber lrom the last record of the console device; these
There ~e several different processing modes, a simple
routines are meant to be as general or as special purpose· as
re.ad/write bit is not enough for mau;r applications. On the
required. Some will pass an entire FCB; some mq ollly pailS
()th8r bud, for dllVices (such a ll_pa~! tape units) which can
a coupie of parameters for inclusion into an FCB; some mq ollly ollly read or write, all these modes wiIl158"interpreted as

•

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

either a simple read, simple write, or can't-haJldle-it error.
These processiQg modes arel
(0) read records; read mode tor simple d8'fiees.
(1) react and release; this mode is used 117 1118mo17 tiles
(discussed later), when a temporar,r tile is read and
each record is released to·the heap attar readiug.
(2) mixed read and write; allowed tor tixed leDgth reCords
01117, on d8'fices which can do it (digital cassette,
tloPP1 disk, etc.)
,
(J) disk sector access; used with the disk 01117 to read
and write actual disk sectors or relative tile secto~s.
(4) write DeW tile; write mode tor simple d8'fices.
(5) over-write tile; allows a II8III8d tile on a directo17
d8'fice to be written over.
'"
(6) write with backup; writes a DSW· tile, then rellUes
the old tile. with a Y (ASCII) or Z (biuar,y) type code
to iDdicate a backup tile. An existiDg tile with the
Y or Z t1P8 code is deleted.
(7) appelld to tile; skips to the eDd ot a tile, and
writes records on the aDd ot it.
Fill Control Blpgk

PAGE 262

2b,te l8Dgth or tile, in records
2 bfte leDgth ot tile, in blocks (in bftes tor a - 1 7 tile)
2.b7te allocation tactor tor tile. in blocks (bTt'!istor m.t.)
~bfte startiug block number (-17 address£Qr 1II8JII017 tile)
2 'bfte record leDgth, i t tixed (zero or msx1miui it'variable)
2 bftes UDUsed·(tor tuture expansion)
,Darlg. R',110rs

The illdividual d8'fice halldlers are responsable tor
executiDg the basic 8 operations, iDitiatiDg interrupt
handlers, butteriDg records into blocks, aDd all error
coDditions. The driver interacts with the user as necessS17 to deal with errors; error collditions are never
'passed back up to DOlO aDd the operation routines, aDd
user programs D8'fer have to handle I/O error collditions.
There is usua~ ve17 little a user program can do about
an I/O error except tell the operator, ~Iq. Sinee
maar aspects ot driver operation are identical (such as
record butteriDg) there is a set ot utility routines
shared 117 all drivers. ~ ot the driver operations
below could be better handled 117 separate spooliDg tasks;
this is beyolld the scope ot this paper.
. The simplest tile device I'll call a serial device.
Examples are an audio cassette deck (which mBT use a variety

J
2

Basic IpformatiOAI
operation code:
user
~:close
2:getrec 4:rewilld 6:skip +1
1: open
J:putrec 51skip -1 71to eDd
status bfte:
b{6: operation complete it 1
driver
b11 overlep mode i t 1
user
b21 tile open it 1
driver
bJ: ASCII i t 1, biD817 it ~
DOlO
b4: eDd-ot-tile reached it 1
driver
b5: eDd-ot-record tlag, set 117 interrupt routine
b61 reserved tor EMOS-8
b71 reserved tor user
pointer to driver ent17 point
DOlO
processiDg mode:
user
¢: Simple read
4: simple write
11 read and release Slover-write
2: read and write 6: backup write
JI disk sector I/O 71 appelld write
logical unit name, in ASCII
user
tree tor user

2
2
2
2

Record Butter Patal
pointer to user record butter
user
pointer to current record bfte
varies
leDgth ot record, set 117 user/write, driver/read
leDgth ot butter (max record leDgth)
user

2
1

ot encodiQg methods aDd tormets), and paper tape (Telet1PS

('I'M) or high speed reader / punch). Various driver ent17
pOints mBT be used tor ditterent p~ical record tormats;
remember that a driver ent17 point is associated with a
2 character d8'fice name. Actually, each driver ent17 point
can support one ASCII and one binary record tormat. Most
serial devices will have one tile per volume, will net have
a directo17, aDd will have one variable leDgth phrsical 1 ,
blook per logioal record (although more advanced drivers
could add these teatures). GeDerally, a serial device can
be started and stopped, but not rewound or switched trom
read to write uDder computer control. How8'fer, tile names
are supported; the user becomes the tile directo17 mechaDism. For example, it the user wants to edit to an audio
cassette tile, at some point the logioal unit is set, as inl

IIEI1t1

1=

"AC: MIFlLE.S"

When the opan command is received 117 the driver, it seDds
a message to the user on the term1nal:
MOUNT MD'ILE.S ON AC, RECORD

1
1
2
2
2
2

DrUF Iptgrmatigp:
drive number, binary ¢-9
tree; reserved tor driver
record counter
block counter
pointer to block butter
disk sector address:
high bit ¢: relative sector number
high bit 11 track and sector
Dir.story

2
2
2
2
2
2

-2-

DOlO
driver
driver
driver
user/
driver

Eptry:

leQgth ot tile, records
leQgth ot tile, blocks (or bytes)
allocation tactor
startiQg block number (or address)
reoord leDgth,bftes (or zero or max)
reserved tor directory information
RoSIned tor

driver
driver
driver
driver
driver

Dr,iter'

te~porar;y'data

tor reentrant operation

driver

48 bftes total
More advilnceddavices (such as digital oassettes andtloPP1
disks) support a tile directo17 tacility. The tirst tUe on the
device (e:x;cept perhaps a bootstrap) is the directo17 ti~e; each
record oontains the entry tor one tile. This directo17 5'an be
edited to create a DeW (empty) 'tile, delete an,old tile, or rename a file. The directo17 ent17 tormat is also stalldardized
tor all devices. The ent17 tormat is:

The user puts the audio cassette contaiDiDg MD'ILE.S into
the drive (cassette player), does a tast torward i f needed
to position the tape to the tUe, pushes the "torward" aDd
"reoord" buttons, aDd hits -return" on the keyboard to
signal the driver that the tape is ready. It the driver
needs to do a "skip to start" or "skip back one record"
operation, the user is instructed to rewiDd the tile; to
skip back a reoord, the tile is skipped torward until it
is positioned oorrectl1.
The next step up is a digital cassette deck. Since
tll,!se oan be controlled b3r the hardware (rewound, set to
read or write,. positionedJ, the7 can be used as tun
directo17 d8'fices, haviDg an iDitial directo17 tile aDd
several tiles residiDg on a volume. However, 01117 one
tile per drive mBT be open at a time. The driver butters
variable leDgth records into tixed leDgth blocks. ,.Blocks
in.a tUe are recorded sequenti~, and a tixed number ot
blocks are allocated tor each tile. Eaoh block has a
header, conta1D1Dg the block DUmber, aDd a displacement
to the tirst record startiDg i~ the tUe (used tor baokspace). Each record has a header, conta1n1Qg the reoord
number aDd the leDgth ot the record. The digital cassette
driver can do all operations 117 itself, although the backspace operation is usuall;y hard on ~he tape and should be
avo.ided (as in audio cassettes).
'
The tloppy disk driver supports all I/O operations
easilT; in addition, multiple tiles per drive mBT be opan
at ODe time. Variable leDgth records are buttered into
tixed leDgth sectors; optionall;y, disk seotors mBTbe
r.ead and written directlT. When a tile is oreated, it is
given an Hallocation tactor", in seotors. It the allocation taoto;- i8 1, illdividual se,ctors are chained together,
aIiId'the logical sector order tor the ti.:!.e:)las DOittied
relation to the position ot the sectors on the disk (the
driver will t17 to allooate sectOrs so as to minimize read
time) • The allocation tactor mBT il1OludfL~ sectors that

FIRST COMPUTER FAIRE PROCEEDINGS

are expected for the file; in this case the sectors are
ph1sically contiguous. Finally, the allocation factor may
be a sub-multiple of the file size; s87 8 sectors. Then
the file is allocated contiguous sectors on one track, in
groups of up to 8. The groups themselves may be in aD1
order on the disk (again, attempting to minimize read time).
A bit-map of free sectors is maintained b7 the disk driver
tor allocating new sectors. However, the bit-map method
ot listing the sectors used for each file would take "too
much room in memory, so the sectors in a file are chained
forward and backward. A sector header includes the sector
(i.e. block) number, a forward sector chain, a backward
sector chain, and a displacement to the first record in the
sector. (8 U,rtes total).
I hope eventually to add an access-b7-name mechanism
for floppy disks, as well as a relational data base system
with inverted file indicies.
A special driver allows main memory to be used as a
file device. Each record is allocated as it is written;
in "read and release" processing mode, each record is also
released as it is read. This is very useful when a file is
edited (or otherwise translated) and memory is limited. If
a memory file runs out of room while it is being written,
it can be transferred (with the user's help) to an external
file device, and processing can continue. The memory file
driver supports all I/O operations and multiple files may
be open at one time.
Naturally, other file devices, such"as a holofile or
a parallel/serial CCD or bubble memory could easily be
added to the system, transparent to all currently written
user progrems. That's the great advantage of doing I/O
with logical units instead of the physical devices themselves; upgrading to a new and better peripheral, or the
breakdown of an 170 device, or transferring to a different
machine, can all be done without having to modify user
programs.
The VIlM and Editing
The video display module and keyboard driver is fairly
complicated, since the displ87 is handled as two "windows"
and editing is done partially with the driver rather than
with a separate editing utility. At the lowest level, the
driver reads the characters typed at the keyboard (using
interrupts or polling for a "keypressed" condition), and
manages the section of memory displayed on the CRT. The
displ87 area is usually 16 lines of 64 (or sometimes 32)
characters, but the generic VDM driver can use any number
of lines or characters per line.
The display area is divided into two ~, called
the display window (upper portion) and the command window
(lower portion). There are two corresponding driver entry
points, and two device names (DS and CM). The command
window is used for operating system commands and error
messages, and the display window for text being edited;
user programs can use either. As text records are written
in a window, it expands at the expense of the other window;
the other window may be left with a minimum ot one line.
There may be a line of dashes separating the two windows.
Records are scrolled oft the top of a window when new records are added to a full window or the other window expands.
Records scrolled off the top of the display window are
automaticly written to the display-write logical unit, DSW;
likewise,records scrolled off the top of the command window
go to the command-write logical unit, CMW. These logical
units may be assigned to the "dullllll1" driver if they do not
need to be collected into a file.
The editor is of the scrolling type; the file being
edited is scrolled through the dislll87 window, and the user
can edit it as it goes b7. Lines lrecords) in the display
window can be inserted or deleted; characters can be added
or erased, the cursor can be moved around, and so on. The
line(s)ai the cursor can be written to the display-write
unit, allowing the lines abeve it to be saved and moved to
another position in the file. The display-read unit, DSR,
is assigned to the file to be edited; lines can be read" to
the displ87 window, either to the bettom or to the cursor
line. A search command allows lines to be continuously read
until a" search pattern is found. Normal keybeard functions
such as rubeut and cancel line are also supported.
There are actually two editing modes:

text and binary.

BOX 1579. PALO ALTO CA 94302

PAGE 263

As a default, the file type code determines the editing mode,
but this can be changed. In text mode the editor operates
on ASCII characters. In binary mode, a record is displayed
and edited in hexadecimal format as well as character tormat.
A display line consists of a relative address (not editable)
on the left, a hexadecimal display in the center, and a character displS1 on the right. Editing either the hexadecimal
or the character displ87 automaticly edits the other. One
special editing mode allows all ot main lIIemory to be a -tUe"
allowing main memory to be edited; the starting point for
this edit can be an absolute address or a named entity.
Editing and the VIM driver are somewhat complicated b7
the tact that a line usually does not correspond exactly to
a record. It the record is shorter than a line, the convention is that the line is padded with blanks when it is displayed, and stripped of all but the last blank i f it is
written to a file with variable record lengths. For records
longer than a line, a special ftcontinue" character is put
at the end of each line to be joined into a record. When a
record is read to the displS1, all the lines torming the
record are scrolled in; individual lines scrolled ott the
top are collected into records betore being written.
The command window also has a logical unit tor reading
lines (command-read, CMR); a special cOlIIIIISnd allows one, a
number ot, or an entire tile ot records to be read to the
command window, allowing a batch-like operation. Each window has its own cursor, but onl;r one cursor is "active" at
one time (indicated by blinking). One keyboard character
is used to switch the active"wondow; also, it a program
writes to a given window, that window becomes acti.e.
It is possible to use a CRT or hardcopy terminal as the
console device; however, a completely ditterent editing
style is needed (meaning a ditferent editor); lines written
to either window are just output to the console; and there
is no logical unit for automaticlywritting lines (CMW and
DSW). The VDM driver allows the cursor to be positioned
to a particular line with the "skip" operations; naturally
these have little meaning with a hardcopy terminal, although
some CIlX terminals may support them. A really advanced CRT
terminal and driver could even simulate the operation of a
VLM device and driver.
Multiple VIM units are allowed, and interrupt-driven
keyboard input supported, so (with the task-switching facili ty) limited time-sharing could be supported. I hope to make
all drivers reentrant, so their code can be shared among
tasks. However, reentrant programming depends heavily OD
machine registers, and the 8080 register set (let alone the
register set of some other microprocessors) may make this
too difficult.
Loading and Ass8IDblipg
The loader supports relocateable object tiles, but does
not have to link object modules together, since this is done
by the "call to entry name" facility. However, the loader
must add all entry names defined in an object module to the
global name list. Since all assembly language global entry
points are named, the user can invoke them tor testing purposes and dump them trom the console.
The assembler must produce relocateable object code,
and also must keep global names in a separate area so the

loader can put them into the global name list. The object
file consists of three records; each record is further
sub-divided into lines in Intel hex format". The tirst
record contains the name list entries tor all global names;
the format at each entry is the ASCII name of the entry, a
one byte type code (hex 46), the relative address ot the
entry point, and two U,rtes for eventually linking the entry
into the name list. The second record.ot an object file
contains the actual machine code, assembled with a base
address of zero. The third record contains the relocation
information; simply a list of relative addresses ot words
in the assembly program to be relocated.
The assembler mnemonics are the standard Intel plus
Processor Technology set. Eventually I'd like to do an
assembler which also takes another set of mnemonics, such
as""HL+1" instead of "INX H", "a=c" instead ot "MaV B,C",
and so on. A standard absolute assembler could be used" to
produce relocateable code, if the programmer includes the
name information and relocation information as constants
in the program.

FIRST COMPUTER FAIRE PROCEEDINGS

iIn liMlJL-8 loader is needed as well, to scan the liMUL-8
text· for label.aDd·calss-lllUlles aDd· put· them into the name
list(s). The same loader could be used for both, since
DruL-8 proBl'ams alWIQ"S start with "»" and relocatable
object fUes will not.

unit

The loader and assembler have their own set of logical
I1111118S tor input/output, as tollows:
ASR
ASW
ASL
ASE
ASI
LDR
LOW
LDE
LDI

-

PAGE 264

BOX 1579. PALO ALTO CA 94302

assembler source
assembler relocatable object output
assembler listiDg output
assembler error message output
assembler user input, for error correction
loader object input
loader memo17 image output (optional)
loader error message output
loader user input, for error correction

The loader should be small enough that it can be resident, allowiDg dynamic 10adiDg and UDloadiDg of programs
uDder user or program control. This tacility will be expanded to be a virtual subroutine taci11tTl if a routine
is called, and has a name list en~ indicatiDg it is DOt
reSident, the tile containiDg it can be loaded dyDamicq.
It memo17 is needed to lo'ad it, another program tUe, such
as the "least recentq used", can be swepped out to the disk.
This onq works it routines are called by entry name, and
not it thaT are actualq called with a machine laDgUage call
instruction. Some studies have indicated most subroutines
used in a proBl'am are invoked rareq, so this may not add
too much time overhead. This allows a 64K program to execute
in (slQ") onq 16K b,-tes ot actual memo17. This dynamic
link facility should also work tor data blocks as well as
programs.

p,bpggipg F'9+11t1.0
As mentioned, main memo17 can be examined and edited,
usiDg the editor. A monitor interrupt (either a keyboard
key or a separate button) is supported, to location zero.
This allows a user to suspel3d a program and examine the
registers, examiDS memo17, set a breakpoint, or initiate
a trace. It the monitor interrupt is invoked twice within
OAe second, a bootstrap load is initated trom one ot the
tile devices atter user confirmation. The trace can operate
in single instruction mode, or subroutine ent17 mode. It
can also operate in "slow motionn, executiDg instructions
or subroutines at a much reduced rate and displayiDg the
contents of the registers. The subroutine trace, if a realtime clock is available, can keep track ot the time spent in
each routine, so inetficient rout1Des which are executed
otten can be identitied and rewritten (perhaps trom E24llL-8
to assembq) to execute more ef'i'icientq.
The user can dump the current memo17 image, and reload
it at a later time. This memo17 image tile is the same
tormat used by the bootstrap loader; the tirst record is
onq the stackpointer (all registers and the current program
counter have been pushed on the stack), and the next record
conteiDS the entire· memo17 image. Since both EKlS-8 and
E24llL-8 are extendable, the user may have spent some time
lOadiDg the exact configuration wanted and can save this
configuration tor later use.
Two DOn-resident routines are available to examine the
global name list, and to examine the memo17 blocks allocated
on the heap. Another can be used to examine the task queue
in a multi-taskiDg environment. Data in thes.e areas can also
be modified by these routines.
Cp'9P'tibiuty

I hope EKlS-8 and EMllL-8 can be as compatible as
pos3ible with PL/M programs and the CP/M operatiDg system
(made by Digital Research, Pacitic Grove, CA). Both CP/M
and l'XlS-8 use the eight' lowest memory b,-tes in the same
wtq, and proBl'amB written to do I/O with the CP/M system
will operate as well under EMJS-8. PL/M subroutines can
call EMDS-8 or EMllL-8 routines; however.'PL/M function
calls require that the returned value be in the A,B and IlL
registers (tor the cross and residant versions of PL/M,
respectiveq). Therefore PL/M calls will have to go
through a small intertace routine. EMUL-8 programs can
be witten to do I/O with the CP/M operating system. It
the loader tor PL/M is modified to create global name list
~ntries, EMOS-8routines.could call PL/M subroutines.

Again, call1Dg PL/M functioDIJ would require a short inter;;';
face routine.
.
I make a plea tor standardization to ... operatiDg
system designers: tirst, use the eight lowest memory
b,-tes as tollows (CP/M and EMOS-8 convention):

a-

jump to warm start routine

3 - Intel I/O byte
4 - free b,-te (I don't think it's used by CP/M)
5 - Jump to I/O system; the, I/O system ent17 point
is also assumed to be the top ot available lII8mo17.

When the I/O system is called, the function code is in
register C and another arguiuent (usl1llll7-a pOiDter)fs1n
register pair DE. For 00S-8, the tunotion code has the
high-order bit set, aDd the low-order 4 bits determiae the
operation code. The DE pair contain a pointer to the FeB.
For CP/),!, the function code has the values (If through 'J:l.
I haven't looked at Intel's ISIS operatiDg BTBtem, or
Processor Technology's HELlOS disk operatiDg system, so I
don't know i t they are compatible. ENOS-8 uses the second
8 b,-tes in memory, which I beleive is the Intel standard,'
as well. I think it's reasonable to give the first 16 b;ytes
to the operatiDg &Tstem, allowiDg the remainiDg restart
vectors tor user restart routiaes or interrupt vectors.
CopgluaioR

I have described a "paper design" for an operatiDg sTBtem
based on the Intel 8080 microcomputer. It teatures lIIDdularity,
extensibility, aDd conviviality; - 1 7 allocation; multitasking ability; named entity tacility; a generiC tile iDpUt/
output &Tstem with logical unit names and a tile coDtrol block;
a video display module driver and editing' tacility; load1Dc,
assembly, and debu£giDg utilities; aDd compatibility with the
Extensible Microcomputer User's LaDgUage , cP/M. and PL/M.
The design is JI&l1 proprieta17; the concepts are free tor
aqyone to use, as 10Dg as I am given credit and receive a cop.f
of an;vthing based on EMOS-8. I hope to implement the tirst
pass of the system this summer, aDd place it in the public
domain.
About the Author
Bob Wallace wears several microcomputer nhats" in the
Seattle area. He is a founder, past newsletter editor, and
currentq secretary of the Northwest Computer Club. In
addition, he is publications manager tor The Re:t:.a11 Computer
Store; he order~ all their books aDd magazines. Finally,
he is a graduate stUdent in computer scianoe at the University
ot Washington. In his spare time, he ccnsults tor New World
Computer Services, Inc., does event logistics tor ComHet, aDd
tries to get his computer runniDg. He is 27 aDd siDgle.
(EMOS-8 is bei~ designed under contract tor New World eomputer
Services, Inc.)

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 265

A NEW APPROACH TO TIME-SHARING WITH MICROCOMPUTERS
The capacity to run several programs at once is
not the whole point of time-sharing, however.
Joseph G, MeCrate
Cromemco, Inc.
2432 Charleston
Mountain View CA 940,1,3

ABSTRACT
A time-sharing system gives a microcomputer
increased flexibility and power. Several people
can share the use of such a system, or one persc~
can run simultaneous tasks on it. A microcomputer
equipped with a time-sharing system can easily be
re-configured to handle an additional task. The
paper discusses the functioning of time-sharing
systems and describes new hardware which facilitates the implementation of such systems on
microcomputers.
USES OF TIME-SHARING
Time-sharing systems have long been implemented on large computer installations, and for
good reason.
Input and output devices are usually very much
slower than the rest of the computer. Consequently,
a computer is able to handle a large number of these
devices.
Rather than wait around for a particular
I/O device to respond, ~ well-trained computer will
suspend working on a project with laggard I/O and
find another task whose I/O is ready. This capacity
of multi-tasking and time-shari,ng systems can
greatly enhance the utilization of a computer.
Time-sharinq, therefore, is a way of using
computer time that would otherwise be wasted. But
it does more than this; it also saves the time of
the people who use the co~puter.
If you want to use a computer without timesharing, you must get in line behind all the people
who get there before you. Only after the computer
has completely finished with all of their jobs, will
it even start yours.
With time-sharing, however, the computer can
work on a bit of one job and then another. When
one person dawdles at the terminal, or for that
matter, while one terminal is slowly constructing
a character received from the computer, line by line,
dot by dot, the computer can work on another project.
In this way, a number of people can get simultaneous
attention from the computer.
A microcomputer can be devoted to a single
project at far less cost than can a larger computer.
Furthermore, there are plenty of cases where the
implementation of a time-sharing system on a microcomputer is cost-effective.

A computer equipped with a time-sharing system
can be re-configured to handle a different task
load very easily.
Imagine how difficu'lt it would be to convert
your program for controlling a heating system into
a program which did that plus ran Basic, if you
couldn't use time-sharing.
Even to add the facility to monitor a home
burgler alarm system would take a significant reprogramming effort.
The advantage of time-sharing is that you o~ly
have to write a program for the new task; you do
not have to re-write the old program to mesh the
new one in. It is the job of the time-sharing
system to fit the two together for you.
IMPLEMENTATIONS OF TIME-SHARING
A time-sharing system is a program and an
arrangement of hardware which performs several
functions.
1) The time-sharing program transfers control
of the computer to a user program or task and, after
an appropriate period of time, regains control in
order to transfer it to another task. This is
usually accomplished by setting an interval timer
just before control is transferred. When the timer
count-down is finished, an interrupt is generated
which gives control back to the (time-sharing)
system.
2) When the system regains control from a
task program, the machine state at the time of
the interrupt is saved. The machine state includes
the contents of the computer registers including
the stack pointer, the contents of the stack and
all other memory locations which the task program
was using.
When control is again given to the task, the
machine state is restored so ,that the task can
continue where it left off.
3)
In addition, many time-sharing systems are
equipped to handle input and output for the task
programs.
Cromemco has introduced several new products
with features that make it remarkably easy to implement time-sharing systems.

A school system can buy one microcomputer which
can handle up to eight student terminals at minimal
incremental cost per student.
(Details of such a
system are described by Dr. Alice Ahlgren elsewhere
in these proceedings).

The bank-select facility that appears on all
Cromemco memory cards is of prime importance. As
many as eight different cards can occupy the same
address space. This mean's that up to eight tasks
can run simultaneously even with overlapping storage
areas of RAM (stack and temporary storage areas).
All the system need do in order to save a machine
state is save the registers and switch banks.

Even the owner of a small computer for home or
business can benefit from time-sharing.
In this
case, the issue is perhaps not the efficient use of
every split-second of the computer's time.
Rather
the issue is the increased flexibility and power
that time-sharing can give to a computer.

The rest of the hardware required for timesharing is provided on the Cromemco TUARTtm. This
board includes two serial I/O ports, two parallel
I/O ports, and ten interval timers.
It also provides
separate prioritized interrupt vectors for each of
the input and output ports and timers.

For example, with time-sharing a microcomputer
which is set up to monitor and control the temperature of a building, can also be used for running
Basic programs, or a budget control program, or both
simultaneously.

The port addresses are selected by means of DIP
switches.
In addition, port address assignments
may be reversed by an output form the computer to
one of the parallel ports on board. This makes it
possible to write a simple time-sharing system
which, after initialization, takes only 38 bytes to
control the simultaneous execution of virtually any
two programs. Furthermore, a program does not have
to be modified into a "time-sharing version". If
it runs alone, it will run under the system.

It doesn't even require multiple terminals to
make good use of time-sharing. With only one
terminal, a time-sharing system can run Basic and
control several indepen4ent processes.

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

A further feature of the TUARTtm makes .it easy
to implement more sophisticated time-sharing systems.
Up to eight TUARTstm may be daisy-chained with .
distinct prioritized vectors for all possible
interrupts. In particular, each of the serial ports
necessary to drive the eight terminals has its own
interrupt vector. Since the Z80 instruction set
allows input and output instructions with variable
port numbers contained in the C'-register, it is
quite easy to have the system handle interruptdriven I/O for the 'til'ight users.
ABOUT THE AUTHOR
Joe McCrate writes software for Cromemco. He
has studied engineering and philosophy at Stand ford
University and holds an M.S.E.E. degree from the
University of Southern. California. Mr. McCrate was
previously a teacher of , philosophy at the University
of Wyoming and has been a member of the technical
staff at Hughes Aircraft Company.

PAGE 266

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 267

MICROCOMPUTERS AND MULTI-TASKING: A NEW DIMENSION IN PERSONAL COMPUTING
George Pilipovich
MVT Microcomputer Systems, Inc.
Box 62
Agoura CA 91301

ABSTRACT
A bigbl,y sopbist.1cated, state-of-the an IItIltitasldng soi'tvare systea is delll.ribed. !be 81stea is based
on the Intel 8080 lI1aroprocessor aDd 1noorporates featurel
generally found only 10 expeneiVl!l hardware qeteu euch u
lIAX1e and II1nis. !bis paper deenribee the COIIIponeIIta md
theory of operation of t i l recently developed operat1nc
eystell. A general de8/lription is giVl!ln ~nd oOVl!lra the eupervisor functione, etorage _thocla, I/o blockl, diek loterfacing and resource _ .....nt.. Also discussed are the
probleu encountered in developing II11l.ti-tasldng eoi'tvare
for a II1crooOlllPUt.er aDd how theee probl81118 are solved.
IIITRODUCTION
Multi-tasldng ie badcally the -apparent.- concurrent
eDCUt.ion of t.1IO or 1ID!'e prograae or t.asl<.s. !hus, a IItIltitasking eJ'lteJa _st. be capable of supporting IIOl'8 then one
user and, in s _ c&les, IIOre than ODS prograa per ueer.
Multi-tasking is possible because IIOSt. ot the rsal t.iM devoted to a prograa(in &1!1 envirOllllllnt.) is wasted waiting
for the oOlllPletion of I/O such &I a kerboard or a printer.
Heretofore progra.dng at central processing centers
has been reserVl!ld for those with t1uncial resources well
beyODd those of _ t perlonal ocaputer userl. IVI!In then
these faci11t.1el, through TSO, are not. truly 1ItIlt.1-tuldng
but rather a -take yOUI' turn and W81tfor Jl&Chine ti.operation. Wlth the availabUit.y ot a re11able and authentio Elt.1-tasld.ng 81ste. tor the 6060 procelsor, truly a
new d1MMion is revealed both to the t1.nanoial oollllllll1ty
and W personal. oCIIq)Uting. To the hobb)'1st, whose resourcel
are severely 11lll1ted, a central oCIIPUter, a 1I10rocOJllPUter,
oan be jointly O1III8d. With his own l'8IIote tel'll1nal. be can
interact. with the coaputer in concert. with 10-2S users.
Bach ot these useI'I will teel that the ooapu.ter is dedioated
to his own te1"ll1nal. To the hobb;r:Llt. lharing a a1orooOllpUter
aDd using an effioient. _lti-t.&Ild.ng 81stea, there would be
virtuall¥ no oOllpetit.1on tor the processor. Ui the s _
t.1ae, ~ SJ'Itea would provide sophilticated eervicel eu.ob
u multi-sessiening and s:rstea tasks.
Unfortunately, the avaUability ot re11able Elti-t.&Iking syst.eas tor II1crocOlllputers has been v1rt.ual.ly non-ex1ltant. at ~ price. This condi t.ion is owing to t.he oonsiderable
expenee in developing the s;rstelll sottvare required tor a
re11able aulti-tasld.ng S7stea.
The tollowing paper describes a tested, st.ate-of-the-an
lIIUl~i-tuking system tor the Intel 6080 p1'OOessor. The sottware was deftl. .d . MV'r Miorocoaputer Systeas, Inc. and is
oalled BosS7steii,lI.
The discuss~on evolves in two parte.
One part describes the BossYI";JIII s1stam. Tbe lecond part
disousses the general theor;r ot it.e operation.
DISCUSSION
BOSsystem/IO
Currently, the MVT BOSSYBtem/iP is balled on the 8080 and
a lingle or dual floppy disc. An obvious teat.ure ot the system 11 aultiple t.e1"ll1nals, both in-house aDd 1'8Ii0te. The
system is l1a1ted u1Dl:r b;r the saal.l aa1n _aery addressable b;r the 8060, but it. 'till oan handle 20-.30 te1"ll1nals.
The I;rStell logs users on and oft 10 a 81stea log, and aaiDtains an acoounting tor each user and account ot CPU t.w,
real t.i_ and I/o requests. Aaong the IIJ'stem tub is a
writer tor each printer, which is operated through a FIFO
pr1nt. queue. PasswCll'd protection is provided tor each UI81'
aDd account, and also as an opt.1on for ~ tile or prograa
--either system 01' user defined.
A powerful teat.ure ot the system is ault.i-sessioning.
A ueer can operate as IIIIIl1 ooncurrent tesks as asaery will
allow(although his keyboard "an cOlaUDi"ate wi"th onl¥ one at.
~

Copyright. January, 1977, MVT Mioroooaputer S;rstelllS. Inc.

a tim). This is very ooovenient. when, for example, a
large progr8l\ 11 being usembled or oOlllpiled, since one nan
elilloute another program or edit. a prOgrlllll while the usembly
or oOJllPUation takes place. Another feature ot IIII1l.tisessioning is the abi11tJ to leloapel trom a task via a
special _yon the _yboard. Th1l is very convenieot. when
a new prograa runs _ k or in I panic I situations.
A lpeoial prograa . .t exist to handle 1IU1t.i-ee,siening,
and it is nalled the super-Ielector. Tbrough it. a user can
initiate, temnate, suspend, or r e _ !:!![ or !!!! tasks,
whioh he UligDs arbitrary _ s to. ae oan also aon1tor the
system or his tub aDd acoess 81S_ functions.
We are nurrently designing a re.trant. Basic loterpreteI' and PL/I o.OIIPUer. A re-entrant., or pure, prooedure
is one whioh doss not alter itself suoh that lI01'e ttlm one
task IIIq 8DOUte it. oonourrent.l;r.
At. present the systea utilizes a dual floppy disc s:rstea. It. util1zes a eeotor allooat.1on sollem suoh t.hat
blookl oan be d,ynaa1cally ineerted or deleted &IJ1Vhere in a
file. 'rhis lObe. 11'&1 chosen not. only because it. is a more
powerful _thad then the usu.l track-allocation or filllldleDgth Iche_I, but because it. etreotively increases diso
storage by $0-100% or aere depend1.ng on t.he t.:rpe ot data
uSed. TbI _in problem with this _thad is forward vri. te
lpeed and !SAM ooapat.abi11ty beoause a sector wst. be read
wtore writ.ten and iudu1Dg IllUst be acoOllpl.iehed wi"t.h
1ndividu.l fUe ups. '!heee are II1nor probleu, hCMIVl!lr,
and poee no UDdue 81s1ielll restrainta.
A ooaplete _diWi lized diso s:rstem ot S-lO asgabytel JUT soem be available at a lIIoderate prine. Such a
systea would util1ze a track allonat.ion loh.... in OUI' 0011figurat.ion.
The basic hardware require_uta lDclude an 8080 81stem
with an interrupt-eVl!lnt t.illlllr board and at. least 241 ot
~.

~

Theo17

~

Operation

Taak oontrol. is llllintained via a bi-direot.ionally linked
linear TCB 11lt. whieh is ~cally created b;r a LIPO
_ohani.. The initial lltoate oonsist.s ot a dU\lllQ' sJ'ltell 'rCB,
which il aatnta1Ded at t.he tail, whioh is also used to aoaitor CSECT and CSCB allocation. The TCB 11st doubled as the
read,1 111t., a separate ready 11st was avoided beoause the
overhead in aa1Dtaining it. was .tar greater than that. of
loanning the TCB 11st---r:r lillita t.he 'rCB list. to a ver;r
aanageable leng"th. Belidel pointers to varioul oontrol
listl, vh10h will be disnusled later, the TCBcontains leveral
bytes of flags. CODd1t.1ons the flagl indicate lDelude
Iread¥l, 'unconditional non-dispatchable ' , ldelete
task I , lIIlConditional retaiD l , lun1nterruptible', 'oonditional wait', and 1PI1t and ooapletiem event. bit.s tor various I/O
&I well U user event. bits.
The 'rCB also contalos CPU tiae
aDd I/o counters. Most. I/o is servioed only in t.he supervisor:r state--s1lellt bita are set by the I/o routine.
Dispatching is done atter the TCBI s are serviced and the
nan Iready I tuk found, unless no task is ready; in whioh
caee I/O eVl!lnte are agalo serviced. Dispatching il done in
tour 20 or fOUl' 10 II1lli-seoond intervall, 1ihe leng"th ot the
interval being UI81' specified. Return to the supervisor i.
Jllllde upOIl the coapletion ot the tiDal intarval, or wheDSVI!Ir
a wait. is requested. A longer dispat.oh1ng interval was not.
uled beoause we rarely encountered a task whioh used up even
lID 60 lI1llieeoond Ilot. betore requsst1ng a wait..
Storage _nap_nt 11 a probl. with 1I10roprooessore,
basioally becauee ot the IIIIall UIOuot of addressable -r:v
avaUable IIDd insuffioient protect.1on hardware. Arrt £01'111 ot
part.i t.1ontng, regtening or paging was ruled out because ot
size l1ll1tat.ions. A single PQg ohain is used, aDd with
proper trapentat.ion oo1leot.1on it. worb very well.
Pol' purposes of task-deletion, an RB queue il allooated
and ohained in both direotions to the 'rCB for each storage
el. .nt. allocated by a tuk.
AIIODg the aajor I/o .ontrol blocka are the keyboard control block, CRT oontrol block, and task file I/o oontrol
block, also known &I the Talk VolUlltl Table ot Content.s.
Tbase are ;velpeot1vel¥ abbreviated KIOGB, CIOCB, and moc.
The IIOCB and CIOCB are used in te1"ll1nal. ooaaunication and
are relatiftly unimportant tc the discUSSion, with the exoept.ion ot the following very 1IIIportant. nota; Onl:r one KIOCB
JUT uis~ pel' te1"ll1nal. aDd is at.tached to a luperselector
task, while one 01' aore OIOCBls II&J' uist. per task. A TVTOC
exista tor each tile open tc a task, aDd the:r are ohatDlld to
the TCB. The moe oontaiDs intoraation about. file position-

FIRST COMPUTER FAIRE PROCEEDINGS

.~.

BOX 1579. PALO ALTO CA 94302

ing and. buffer location. Buffering is the probl811 program IS
responsibili t1.
Disk. I/O is done through a single FIFO queue, for which,
of course, no RBIs are generated. ~h member contains a
TOB pointer, a sector address and buffer pointer, as well as
other information--such as TVTOC status, including, for most
operations, a pointer to a pointer in the TVTOC. Clearly
the TeB must be reAined while it has a member in the queue.
Optionally, a task aay operate -.nohronous to its disk I/O.
Aside from a normal I/O routine for reading and writing
a file, and expanding or contranting a file, there are also
disk routines foralloca'~ing or deleting a tile. Note that
sectors may be added or deleted from any point in the file,
not just the beginning or end. A disk compress is never
necessary, since the files are dynamic and not necessarily
sequential.
Resource management pre3ents the same basic problems
as in any system. The printer is handled in a standard manner by routing all output through the disc and a system
writer. Other serially reuaable resources are not so silllPle:
these include storage management routines and routines
which alter system queues or the main disc up. For short
routines, such as those for storage management, preventing
interrupts within the routine may be sufficient. If such
routines are nested no more than two deep then the outer one
may disable interrupts at a higher level, such as through the
interrupt board, than the inner one. The third lsvel program is a bigger problem, however. A FIFO resource queue is
a satisfactory solution, provided the supervisor vorkswith
it correctly. How tasks can be interrupted, so that this is
a satisfactory lockout for disc routines. Notice that i f no
competition exists for a routine the lock-out routine will
not allC1Cate a queue, and this is not difficult to program,
so that the overhead is incurred cmr; when necessary. A
final problem occurs when a user attempts to suspend or delete a task executing a serially reusable resource, or residing in its queue. Clearly, disaster would occur unless
this is prevented: thus the supervisor and lock-out programs cooperate for this purpose. Hote that only one pair
of lock programs need exist, regardless of the maber of
serially reusable routines.
Control of object programs becomes somewhat complex when
multiple tasks access a non-resident re-entrant routine.
This is accomplished via a fairly standard CSEC! control
block(CSCB), which contains a usage oounter and various
filtgs. Again we need a LIFO queue for each TOB' to ensure
that all use oounts will be taken care of at task deletion.
This, of course, requires the passing of a dUIIIMY EPA.
We have not discu8sed the superselector and taskdeletion routines, because their objectives and design are
fairly obviOUS, although the actual coding can get somewhat
involved. Nor have we mentioned the assembler, editor and
loader: this is because they are standard for any system.
The chief cause of system failure is the laokof memory
protection. If a program contains an error and writes on
system storage, it can eventually lead to a system crash.
A frequent result of this is the rupture of the FQE chain.
Also, there is no way to restrict interrupt control to the
supervisor. These problems stem from the use of a microprocessor. Cl~arly a high level langua~is required and,
as has been stated earlier, the evolving re-entrant Basic
interpreter should offer sufficient system proteotion as
well as stimulating greater program development.
The re-entrant Basic does limit programming capability
and will no doubt lead to a PL!1 compiler. The PL/l oOlllPiler
will be similar to the Cornell PL/C. OUr version will be
small. simple and with a modest language reduction. Enough
language will be retained to derive a mixed strategy--precedence grammar devoid of ii-rules.
GLOSSARY
ClOCB--CRT screen map r/o control block
CSCB--CSECT oontrol block
CSECT--program defined to the system
EPA--entry pOint address
FIFO--ti.rst in first out
KIOCB--keyboard I/O control block
LIFO--last in first out
RB--request block, monitors task storage requests
TCB--task control block
TVTOC--task volume table of oontents

PAGE 268

BlOORAPHICAL SKETCH
George Pilipovich is currently responsible for software
development for KVT Microcomputer Systems, Inc. Prior to
his current pOSition, Mr. Pilipovich founded (J! Custom
System Software Development. During this time as an independent contractor microbased system and application software
were developed. Mr. Pilipovich has a strong interest in
Simulated Intelligence and has initiated research in this
direction while studying Computer Science at UCLA.

FIRST COMPUTER FAIRE PROCEEDINGS

INTBRFACING A SELECTRIC TO YOUR COMPUTER
Carl Townsend
Center for the Study of the Future
4110 N.E. Alameda
Portland OR 97212

2.

What voltage are the solenoids? You should
shop for a 24 volt s,olenoid machine as it
is easier to drive than machines requiring
48 volts on the solenoids.

3.

Is it rebuilt? A rebuilt machine will
be cleaned and adjusted with parts
replaced as necessary. If not rebuilt,
you may need to do some mechanical
maintenance work.

The IBM Selectric mechanism has capability for
providing a highly reliable I/O terminal for micr,ocomputer usage that permits a wide variety of
applications as:

* mailing labels
* newsletter composing
• proposals
networking

*

The Selectric offers the advantages of:
1.

Hard copy output of both upper and lower
case letters.

2.

Interchangeable typing elements.

3.

Hundred character (or more) line.

4.

High reliability with a minimum of
maintenance.

5.

Low depreciation.

6.

Higher typing speed (15.4 characters per
second) than a teletype.

Once the terminal is purchased, you may integrate 'it
into your system in one of three ways:
1.

Use the keyboard for input and drive the
printing mechanism as an output.

2.

Replace the keyboard with an electroniC
keyboard, driving the printing mechanism
as an output.

3.

Use the Selectric as a printer only
using a separate electronic keyboard
and video display (as the ADM3) for
input and editing.

For several nontt.s we have integrated our terminal
as the first option. Now we are altering our systen try the third option for a var:lety of reasons:
1.

The Selectric has no "control" key which
makes in-line editinB difficult.

2.

The

3.

The electronic keyboard is faster, more
reliable, and quieter.

4.

The Selectric keyboard prints direct ~Ihich
means the softwR.re must often ben.ltered
to defeat the echo feature. An electronic
keyboard with the echo is easier 10
interface to most software.

SELECTING AND PURCHASING A SELECTRIC MECHANISM
A user has two alternatives available in selecting
and purchasing a Selectric mechamism:
1.

Purchase an office typewriter and convert
it mechanically with mechanical assemblies
as the Tycom. Add your own electronics or
purchase an electronic interface kit.

2.

Purchase a used terminal with the solenoids already installed. Add the
interfacing electronics.

The former has an advantage from a maintenance viewpoint. IBM will support mechanical maintenance on
office typewriters with the Tycom adaptor, but if
you purchase a used terminal you will need to find
your own sources to maintain the mechanism. Since
a computer driving the mechanism at the fastest rate
represents an unusual mechanical demand on a terminal that has been sitting idle or used at the
slower office typing speeds, you can expect some
maintenance and adjustments involved at least
initially. We do not advise trying to repair a
Selectric yourself unless you have a considerable
amount of mechanical skill.

I,

Is it a Level 1 or Level 2 mechanism?
Early mechanisms of the Level 1 type are
not quite as good as the later Level 2.
Use the IBM ADJUSTMENTS PART MANUAL to

ir.~ut timing is complex, requiring
interloc~s and special switching.

!:,efore attempting any electroniC design and development, bring the Selectric mechanism to operational
order mechanically as well as doing a little prevelltive maintenance:
1.

Use a vacuum cleaner to remove all loose
particles and dust.

2.

Use a lacquer thinn'~r to remove R.ccumulated ink from the platen and ,,11
pressure rollere.

3.

Use Zepreserve (Zep, Atlanta, GA) to
oil all metal-to-metal moving parts.
This is a spray oil and highly
penetrative. Oil penetrates better
than gr'ease, hut will require more
frequent application. Be especially
caI'eful to keep oil from getting on
the outside of" 1',he shift cam at the
right outside of the meehanism. A
nylon brake rides against this wheel,
and timing requires the cam to be
grease and oil f'r':;e.

4.

Clean the typing element with soap
and water, being careful not to
get any metal rarts wet. Do not use
tYI'e clea~ers as they ~ill dissolve
the plastic:.

Used office typewriters are difficult to find and
cost only slightly less than a new typewriter.
Delivery is slow on new typewriters and also slow
on the mechanical interface assemblies as the
Tycom.
Used terminals can be purchased from a variety
of sources. Watch microcomputer magazines
and shop for the best buy. Also check for
foreign sources. The mechanism is of high quality
and you should expect very little difference if it
is Itel, Dura, a 735 or another. All have identical
printing cycles. You should, however, be, concerned
about a few factors in purchasing:

PAGE 269

learn how to distinguish between the two
levels.

INTRODUCTION

• word processing
• stencil preparation
* correspondence
* information retrieval

BOX 1579, PALO ALTO CA 94302

Purcha:;c from 13M any naterials you (:a,1 locate
that r.llght he r,'levallt, especially those of a
tutol'ialnature on the mechanism. ~he Selectric
:nechanisTll j s periodieally upaatut
only to use one solenoid for each element. motion
control--Potate 1. Rotate 2. Rotate 2A. Rotate 5.
Til t 1, Tilt 2, and Shift. Each control 1. s bimlry.
as i t is either on or off. Special solenoids can
also be added for tab, index. space, backsp'l.ce, a::td
carriage retu!'n. This minimizes the nunber of
solenoids requi~ed. but necessitates electroniu
coding to set up the desired character. The keyboard utilizer. the same type of coding.
The code conversion can be done either by soft\~are at the computer or electronically wi thin the
Selectric interface. ,Ie advise elec':;ronic com'ecosion (see Figure 1).

-s-e-le-c-t~~-l-E·l-c-ct-r-o~:-c-on-v~rsion f - - - - - - I
Mechanism ~nd Interface

FIGURE 1

INTERFACIJ BLOCK DIAGRAM

PAGE 270

C c
D d
E e
F

f

G g
H

h
i

J
K

k

L

1

101

m

N

n

0

0

P

P

Q

q

R
S
T
U
V

r
s
t
u
v

W

\~

X
y

x

Z

z

y

CO~h\1ANDS

A:-JD CODING

ASCII CODE
301
302
303
304
305
306
307
310
311
312
313
314
315
316
317
320
321
322
323
324
325
326
327
330
331
33Z

SELECTRIC CODE

R1
R1
R1
R1
R1
R1
R1

R2
R2

R5

R2A
R2A
R2A
R2A
R2A

R5
R5

Tl

TZ
T2
T2
T2

R5
R5
'T2

R2

R2A
R2J\
RZA

R2 .R2A
R2 R2A

R1
R1
R1
Rl
R1

RZA

RZA
R2A
R2A

Tl

T2
12

R5
R5

Tl

RS,

Tl

TZ

RS

Tl
,',

R2
R2
R2

RZA
R2A
R2A

R5
R5

R2

R2A

R5

H2

R2A

Tl

T2
TZ
Tl
Tl

Rl
Rl
Hl

T2
Tl

T2

FIRST COMPUTER FAIRE PROCEEDINGS

PRINTING
CHARACTERS

CO~~~NDS

AND CODING

ASCII CODE
261

1

SELECTRIC CODE
Rl

Tl

T2

Tl

T2

R5

Tl

T2

R5

Tl

T2

R2A

Tl
,

T2

R2A

Tl

T2

R2

R2A

R2

R2A

R2

R2A

R5

+

2
@

3
4

$.
5
6

&

267
246
270

It

252

(EOA)

271
250
260
251
275
253
273

7

9

262
300
263
243
264
244
265
245
266

(

o
+

Rl
Rl

Rl

R2A

R5

Tl

T2

R2A

R5

Tl

T2

'Tl

T2

Tl

T2

?

257
277
256
256
247

Rl

R2

Rl

R2A
R2A

R5

R2
Rl

o

R2A

Tl

R2A

Tl

(none)
Rl

R2

R2A

FIGURE 3

SHlPLl FIEl) CONVERSION AND INTE.RFACE BLOCK DIAGRAM

In a lower case print cycle, the corresponding
selector magnets and the print cycle clutch solenoid
are pulsed with a 30 ms. pulse. The cycle is complete before the UART is ready with the next address.
If the eighth EPROM output defines the cycle as a
control (carriage return, index, etc.), only one of
the six EPROM lines is active. This is clocked
through to the corresponding control solenoid.
Several of the functions as carriage return, tab,
and shift require longer than one character cycle.
These special functions can be handled in two ways:

R5

Rl

2-42

255
(none)
(none)
241

PAGE 271

------~~------~

272

I

BOX 1579, PALO ALTO CA 94302

A 2502 UART converts to parallel ASCII, and the
ASCII code addresses a 1702 EPROM (Figure 3). The
corresponding Selectric code is stored at the EPROM
address. Six bits of each EPROM output drives two
sets of drivers. One set controls the selector
magnets, the other set controls the control solenoids. The eighth EPROM output determines which
set of drivers will be active. The seventh EPROM
output drives the shift solenoid.

Tl

1.

Recognize them at the software level
and introduce software delays.

2.

Recognize them at the hardware level
and introduce hardware delays.

The second is the preferred approach. In our
system we recognize the characters and use the
Request-to-Send line in the RS-232-C to control the
ready status on the computer I/O board. During this
development be sure to remove the element from the
typewriter. The mechanism can be damaged if a shift
cycle and print cycle are started together. (A shift
requires three character times--shiftup, print,
shift down). Removing the element protects the
mechanism.
.
CONCLUSION
We hope this introduction to the Selectl'l;:: has
excited you somewhat to begin some experimentation
with a used teI'll'.inal. Our experience ~lith the' Selectric indicates it is prob~bly the best of slow speed
h~rd copy devices for a home oramall business
conputer system.
NOTE: This text :l.R typed on a Selectric driven by a
MITS Altair 8800a. For more information on our
interface kits, schematics, and manuals, send a
SASE to the Center for the Study of the ~~ture, 4110
N.E. Alameda, rort1and, O~, 97212.

FIGURE 2 SELECTOR MAGNETIC ASSEMBLY

We suggest using a serial I/O with the RS-232-C

interface specification with a baud rate of 138 and
seven bit coding. If you wish to check parity, you
can use eight bit coding at 150 ba~d. This gives a
15.4 character per second typing rate.

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579. PALO ALTO CA94302

A FLOPPY DISK CONTROLLER FOR UNDER $50
Kenneth B. Welles II, Ph.D.
2623 Fenwick Road

University Heights DH 44118

A floppy disk drive interfaced to a microcomputer with
the proper hardware and software can be the most important
addition made to a personal computing system. Frequently it is
also the most expensiv~, Although prices on floppy disk drives
are falling and more compact, less expensive versions of the
drive are being introduced, the computer to disk drive control~
ler costs and operating system availability remain a problem.
A little ingenuity can substitute for cost and complexity,
however. Using only $25 worth of integrated circuits, an
interface can be built which allows complete control of up to
eight hard-sectored floppy disk or mini floppy disk drives.
The interface, which is described in reference I, consists of
only 17 integrated circuits and plugs directly into the 5-100
bus. A brief description of this circuit will include a demonstration of how the addition of 3 integrated circuits allows the
control of the 5hugartMini-Floppy T.
In order for such a simple low cost interface to actually
operate a disk drive successfully, there are trade-offs that
must be made. The compromise does not effect the amount of data
that can be stored onto a disk nor the speed with which it can
be accessed. Rather, the trade-off requires increasing both the
amount of software which resides in memory and the amount of CPU
time consumed during a data transfer. Both ti~e and memory were
considered scarce and expensive in the days of the old, lar~e
computer. Now, however, the am01mt of time spent by the CPU
performing such data transfers is insignificant when compared to
the time required by a paper tape or magnetic cassette data
storage and retrieval system.
The increased amount of software required to operate this
interface incurs some extra expense, but this too can be shown
to be nominal. Between 300 and 600 bytes of software are required to make this interface emulate an interface containing
one or more of the new single chip floppy disk controllers. At
the current prices of 5-100 memory, this amounts to $7.50 to
$15.00 in memory costs.
'
There are also some "super-intelligent" controllers on the
market which contain their own file management system in their
own microprocessor at an additional cost. To perform all of
these functions on the simple interface presented here requires
a 4K byte block of software or about $100 in extra cost.
A floppy disk operating system was written which operates
with this interface on an 8080 system, and resides in a 4K byte
block of memory, includin~ all data huffers and stack areas.
This FOOS allows a single regular disk drive to. store and retrieve or run up to 240 different programs or data files by
name. Over 300,000 bytes of stora~e are available on the
diskette, and the filing system is a linked block structure
which allows the most flexible use of this storage. The
operating system allows the programmer to use relocateable
data buffers to transfer data to and from any number of different files simultaneously •
. Hopefully, the system described in this presentation serves
to demonstrate that a little creativity in an integrated hardware/software design frequently allows a low cost solution to
a previously high cost problem.
About the Author
Kenneth B. Welles II received his PhD from Cornell
University in Applied Physics in the area of computer image
processing, with a minor in Computer Science. He has designed
and constructed microprocessor interfaces for TV camera input,
vector graphics output, IBM Selectric output, and a floppy disk,
drive controller. He has written a complete floppy disk operating system for the 8080 in conjunction with this controller.
He is currently employed by the Lighting Research Division of
General Electric as a research physicist where he designs and
develops microprocessor based process control equipment.
1)

BUILD THIS ECONOMY FLOPPY DISK INTERFACE, K Welles, Byte
February, 77, Vol. 2 No.2 p. 34.

PAGE 272

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

. PAGE 273

A FAULT ISOLATION TROUBLESHOOTING SYSTEM FOR THE MULTI VENDOR ENVIRONMENT
Robert A. Tuttle, Jr.
Medical Methods Research
3700 Broadway
Oakland CA 94611
Having a computer in the home is becoming more prevalent,
whereas the use of computers in industry has been widespread
for some time. The home systems are usually dedicated to fun
and games, the industrial systems to machine and plant,operations. If the home system fails, the only loss is one s pride.
If a manufacturer or laboratory, as is our case, has a computer
failure, time and money are lost. In our case, the problem is
compounded by the fact that a typical system is made up of at
least three subgroups of machines--test instrument, microcomputer, and various peripherals such as a card punch· and card
reader, all handled and supported by different vendors. If the
system fails, whose equipment is at fault? Who do you call?
The typical answer is to call everyone.
It became apparent that the "call every vendor" approach
usually compounds the problem instead of relieving it, and that
a vehicle for determining the fault was needed. One approach
to solving this problem is the development of a troubleshooting
system that can isolate the problem to a single piece of equipment. A Fault Isolation Troubleshooting System called "FITS"
was developed to solve this problem.
The basic hardware for FITS is standard S-lOO issue. The
software was patterned after the system to be tested and a concept of inputting, storing and comparing data. Additional advantages from FITS is system expandability (or the ability to
grow with system demands), and versatility.
The hardware in FITS was patterned after a developmental
system in that it uses the standard 5-100 bus, microprocessor
board, random access memory, read only memory, floppy disk,
video display terminal, serial and parallel input/output. In
addition, an analog-to-digital converter is used for testing
power supply voltages found on the 5-100 bus under test, and to
set logic threshold limits. The main link between the system
and FITS is a bus buffer board, which is inserted into the system (S-lOO) microcomputer bus to be tested. This board contains differential line receivers, and is totally passive in
regards to the bus under test, to the extent that it gets its
device power from FITS. Differential line receivers are used
here to test signal levels, looking for low voltage levels
leading to noise problems.
There are three basic signal groups which are handled separately from a hardware standpoint. These are: system clocks
(91, 92 and realtime), control signals ~ITE, PWR, PION,
etc.), and data signals (digital input/output, address and interrupts). The clock and control signals must be tested dynamically for detection of error, such as skewing or jitter. Data
signals are stored in temporary memory for testing and comparison as specified in the FITS program.
FITS software combines two basic ideas. The first is to
duplicate the program or operation of the microcomputer under
test. The second is the inputting, storing and analysis by
comparison, of significant Signals developed by the test system. When a system event occurs (for example, a data transfer
from a Coulter Counter Model S blood analyzing machine to the
microprocessor of an Abnormal Limit Display), FITS will input
and store that data. ~e Abnormal Limit Display.then compares
the Coulter data with pre-set normal limits, and if exceeded,
notifies the operating technologist via a simple light emitting
diode (LED) display. FITS will perform the same comparisons .
with the same limits, and then compare its own resp~se with
that of the system under test. If the test answers differ,
FITS will notify the maintenance technician of the problem via
a video display terminal.
The areas of the standard bus which fall under the concept
Q£ input, store and compare, ate the control and data signals.
Additional diagnostic programs are set up to test bus voltages
and clock signals. A maintenance technician with limited software background can use FITS to localize specific problems by
writing simple loop routines, and analyzing FITS front panel
display.
As more complicated laboratory instrumentation is develope~
FITS will become an even more vital piece of test equipment,
because it can be reprogrammed to take into account both hardware and software changes.
A hypothetical example would be if a new piece of laboratory chemistry equipment was purchased. First, a standard bus
interface would need to be developed to the new piece of equipment. Once thfs had been accomplished, FITS would need to be
programmed, and the maintenance technician would be able to

troubleshoot. In many instances the interface from instrument
to bus is a simple serial input/output.
FITS also provides a method of keeping the maintenance
technicians up-to-date. The technician continues to use the
same FITS system with which he has become familiar, but the
operation and output of FITS will have been reprogrammed to
reflect the changes in laboratory instrumentation. Changing
the program to test one system vs. another in FITS can be as
simple as calling up a disc file location. In the worse case,
the technician would have to change a read only memory, taking
only two-to-three minutes.
Besides covering system changes, FITS versatility becomes
apparent in that it has the same bus structure as the systems
under test. This means that FITS can be used as a diagnostic
tool for the repair of bus compatible PC boards. Swapping of
like PC boards can also assist the technician in the isolation
of problems.
FITS can baSically be classified as test equipment similar
to an oscilloscope or voltmeter, the main difference being that
it is designed to operate in an environment where microcomputers using a standard bus have been implemented. Basic hardware and software features which make up the FITS system have
been discussed without regard to the negative point~Some
disadvantages are that FITS cannot tell the technician the
exact component or PC board that failed. It is hoped that in
the future, FITS can be expanded to include component and PC
board failure isolation, non-bus troubleshooting and quality
control.
Troubleshooting multivendor systems with microcomputer, or
even multicomputer controllers is no easy task, and one which
will require much more effort before it reaches a satisfactory
conclusion.

BACKGROUND
Robert A. Tuttle. Jr. received his A.A. (R&D Electronics)
from Diablo Valley College and has been a member of the
school's faculty and Electronics Advisory Board since his graduation. His primary background is in computer data acquisition
and control systems. Currently he is Data Processing Engineering Supervisor for Kaiser-Permanente, Department of Medical
Methods Research.

ADDRESS
Robert A. Tuttle, Jr.
Department of Medical Methods Research
The Permanente Medical Group
3700 Broadway
Oakland, California 94611

FAULT ISOLATION TROUBI£SHOOTlNG SYSlEM
(F ITS)

1.

HARDWARE

2.

SOFTWARE

3. ,EXPANDABILITY

4.

VERSATILITY

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579. PALO ALTO CA 94302

PAGE 274

>

HARDWARE

PERI PHERAL

$4,000

SOFTWARE

-COULTER
COUNTER
MODEL S

110

110
ABNORMAL
LIMIT
01 SPLAY
MICROCOMPUTER

EXPANDABLE

110

DISPLAY
VERSATILE

.BUFFER 1/0

FITS
PARALlEL 1/0
SE,RIAL 110
EXPANDABILITY

MI CROCOMPUTER

$20,000

t

NEW
EQUIPMENT

$120

$250

$150

MI CROCOMPUTER
PERI PH. '
with
-$700
110
1121( ROM,
1121( RAM

SERIAL

110

,

-

J

FITS

SOF.TWARE

MI CROCOMPUTER

MICROCOMPUTER

PC BOARD

PC BOARD

1. PROGRAM IN SYSTEM UNDER TEST

2. INPUTTING, STORING, AND COMPARING
S YS TEM

FITS

FIRST COMPUTER FAIRE PROCEEDINGS

CLOCK. SIGNALS

CONTROL SIGNALS-.J

L

DATA SIGNALS

ABA- I----~,

MICRO

100

ABA-

100

1--'-PiI/

'-

MICRO

-

)

~-:-~~-,
: !FU0 , :

I--_:I---I--.J~J MICRO

'I

I

I

I

I

,__ _
~ CR I
I
I

I
,-...L--,

P

L _

_

I

II

•~

.Jl

II
KDA SYSTEM

L-------I

I

I-=:J

BOX 1579, PALO ALTO CA 94302

PAGE 275

FIRST COMPUTER FAIRE PROCEEDINGS

. BOX 1579, PALO AL TO CA 94302

PAGE 276

SOLENOIDS PROVIDE SOFTWARE CONTROL OF A HOME CASSETTE RECORDER
:".'

William J. Schenker, M.D.
2086 Essenay Ave.
Walnut Creek CA 94596

Described (and demonstrated during the informal presentation)is an add-on to a typical low-cost audio
cassette recorder, the J.C. Penny Model #6536. It
will provide full software control of rewind, fast
forward, play, record, and stop modes.
The device is a prototype. It waw developed in the
course of evaluating backup systems for data logging
in a med.ical laboratory. It appears attractive to
the typical personal computer system because of its
low c.ost. Almost all the parts are surplus at a total cost of about $15~
The purpose of this presentation is two-fold. One,
to descr~be and demonstrate the system for those who
would· dupl~cate it in their home workshops. Two, to
encourage some small manufacturer to fabricate a run
in terms of 100s to sell in kit form for maybe $50.
what follows are the design criteria underlying the
device. apd then their prototype implementation.
Desicm Criteria
1.
2.

Precise rewind and FF tape positioning ability.
Low price and easy availability of parts (particularly the sole.noids).
3. Minimization of internal and external mods to the
recorder itself.
4. Selection of the J.C. Penny unit, because it is a
de facto personal systems standard and the SCh4is available (Sams Photofact).
matic
5. Placement of solenoids to avoid Kbulk erase" phenomenon due to stray magnetic fields.
6. Reliance on software to provide tape movement
precision.
7. Fabrication with non-ferrous metals, again to obViate magnetic field effects.
8. Mechanical linkage design to be as simple as possible.
9. Ability to sense BOT and EOT.
10. Ability to do hi-speed search.
The Implementation
The cassette deck was placed on an aluminum chassis,
around the periphery of which were placed a series of
pull-type solenoids. The solenoid coils 'are well below the surface of the deCk. The linkage from each
solenoid bobbin to cassette button is a one-piece lever of 1/16" aluminum sheet stock. Each solenoid or
solenoid pair can pull 2 or 4 lbs respectively, with
a 1/4" stroke. They are 24 volt OC intermittent duty
solenoids. An integral power supply provides relay
and solenoid power. The latter are pulsed for 25MS
to actuate the latchable cassette buttons. (The Fast
Forward required a mod internal to the recorder to
make it latchable.)
5 channels of control are provided, using a George
Morrow cassette interface board. (To the 3 GordO
TTL reed relays already on board were added 2 more.)
The computer is an IMSAI. The flow of control for
each channel is as follows' latched output port bit
to a Gordo to a 24-volt relay to ~ solenoid. The
basic software sequence to pulse the solenoid i81
MVI A, xx: OUT yy: CALL 25MS. DELAY: MVI A, 00, OUT yy
Does The Implementation Match The Criteria?
Generally, quite well. There have been no Kbulk
erase M problems. Rewind precision is far more than
necessary, permitting positioning to the same syllable of an audio message after a rewind of up to 25
seconds, with high repeatability. Cheap solenoids
are readily available both surplus and new. Hiqhspeed search can be partially-emulated by rewinding

to a point before the block of data, doing a read ift
KplaY • mode until the software Mlocks onN to the ID
header of the record block, at which point you're
synchronized. With up-to-date cassette interfaces
you can then load a block of 256 bytes in a matter of
seconds, at which point you do your search on the
tape image in RAM memory.
Future Improvements?
BOT and BOT sensing can be done simply, using an Opamp to sense the voltage drop across one of the RP
chokes in series with the drive motor. When the m0tor stalls the current jumps from 110 to 220 MA. The
op-amp output can be amplified and then can flip open
a latchable motor power relay.
In summary what has been described (and will be demonstrated at the Faire) is an in-expensive upgrade
of a home cas.sette recorder to partially _ulate its
bigger brother, the digital cassette or 3M systerns.
Hopefully some manufacturer will pick up the ball and
offer a kit--the design is pUblic domain.

William J. Schenker, M.D., is a practicisinq physician and a medical data systems scientist working with
microcomputer technology. He also has at home an
II'EAI 8080 with CRT, electric typewriter, peper tape,
and cassette peripherals.

F1RST COMPUTER FArRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 217

Cards that are in the planning stages are a 16K RAM card
which will use a 4K, 16 pin dynamic RAM, a TV graphics card
and a paper tape reader interface card. In the future we
hope to design a floppy disk controller card and an arithmetic
processing card using AMD's 9511.

A MICROPROCESSOR INDEPENDENT BUS
Ceasar Castro & Allen Heaberlin
295 Surrey Place
Bonita CA 92002

ABSTRACT: This paper discusses a bus which was developed
for three home brew systems. The bus is compatible with
both the 6800 and 8080 microprocessors and uses a common
44 pin connector. Two of the home systems use the 6800
and one system uses the 8080. In addition cost of the
systems are also included.

BUS PHILOSOPHY

It became readily apparent that continuous advanceemnt
was taking place in the microprocessor field. Faster, easier
to interface, and more sophisticated microprocessor were
rapidly being introduced. It didn't seem wise to design the
bus for a specific microprocessor which later will be superseded. In fact later versions of a software compatible microINTRODUCTION
processor (Z-80 and 8080) may have different buses. A very
easy way to upgrade a system is installing a more powerful
Early in the summer of 1976 our group (Ceasar Castro, Allen processor. Since the processor is a small cost of the total
Heaberlin and Kirk Mitchell) started to build home computers.
system yet strongly determines performance, this is a very
The group was made up of electronic design engineers and we all practical way of system upgrade. Thus the goal was to
raalized that if we used the same microprocessor, we could share develop a bus that would be usable with several processors.
in the design and debug work. Plus we would have common softIn addition since at least two different microprocessor (6800
wa.re. However, agreement on one processor proved to be impossi- and 8080) would be used on the bus, the bus must be adaptable
ble. One person wanted to use the 8080 because it was the most to at least these two processors.
popular processor and there was software available for it. Another person wanted to use the 6800 because it used only one
Table 1 shows a comparison of several microprocessor and
power supply, it didn't need as many support chips and the
minicomputer buses. This list is not intended to be complete
instruction set seemed a little better. A third person had
but merely to illustrate some of the important features of some
just won a LSI-II as a door prize and so wanted a system in
well known buses. Obviously the most important requirement is to
which he could use the interface and memory cards that would
read and write into memory. Without this no program can be
be designed.
executed. As can be seen all but the Motorola use a separate
read and write which indicates the operation to be performed
It rapidly became apparent that the group was not going to (the address is also valid if either read or write is asserted).
settle on one microprocessor. Therefore, the next best thing
In the 6800 the read/write line together with 02 VMA can easily
was to standardize on a bus structure and I/O addresses. We
generate read and write controls. Therefore, this is the format
decided to use the 44 pin Vector connector because it was a
used for the bus. The next requirement is some sort of wait
common connector and available at most electronic st6res. A
control for use with slow memories. This is a simple control,
thorough discussion of the bus structure will be made in the which, when asserted by the memory, indicates memory is not
following section.
ready. In both the 6800 and 8080 this control merely extends
the memory cycle.
After the bus structure had been settled and each person
had decided on a microprocessor, the job of developing standBy making the peripherials appear as memory no separate
ardized cards was at hand. The first card to be standardized I/O instructions are needed. This allows all the power of memory
was the television terminal card, TVT. The next card designed instructions to be used with peripherials. A 256 word memory
was an 8K RAM card using the lK 2102 RAM. A cassette interaddress space is decoded on the processor board called I/O.
face card also emerged but each person modified it to his own This simplifies peripherial decoding since the most significant
liking.
8 bit are already decoded.
TABLE 1
BUS COMPARISONS
ALTAIR/IMSAI
8080

MOTOROLA
6800

DEC LSI-II

44 PIN BUS

ADDRESS

16 lines

16 lines

16 1i nes

16 1i nes

DATA

16 lines (separate
input and output)

8 lines (bidirectional)

16 lines (bidirectional and
multiplexed with
address)

8 lines (bi-

READ AND WR ITE
CONTROL (MEMORY
AND I/O)

Memory read
Memory write
Ready
Input operation
Output operation
Write
Data bus in
3 memory protect
1ines

R/W
VMA·02
Wait

Read
Write
Reply
Sync
~lri te/byte
Bank select 7

Read
Write
Wait
I/O

INTERRUPT

8 vectored interHalt
rupt lines
Bus ava il ab 1e
Interrupt acknowledge
Interrupt enable
Interrupt request

Interrupt request
Interrupt acknowledge - daisy
chained
Event

Interrupt request
Interrupt acknowledgedaisy chained
Non-maskable request

OTHER

Reset
about 16 others

Initial lze
Refresh
Halt
2 power/up/down
lines

Reset
TTL clock

Reset
TSC
DBE

directional)

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

The interrupt structure is more complicated to standardize on. Microprocessor companies are rapidly putting more of
this function into the processor. There are two important items
to consider in this area. The first is priority interrupts.
This insures the most important peripheria1 has priority in
interrupting the processor. Another item is vectored interrupt.
This allows the peripheria1 device to tell the processor the
address of the peripheria1 handling routine. This latter feature is probably more important since it alleviates the hassle
of software polling if more than one peripheria1 can assert an
interrupt request. However in cases where high speed peripheria1s
.
are used the first feature may be important.

TABLE 2
BUS PIN ASSIGNMENTS
PIN
2

Al

4
5
6

Another important feature is direct memory access (OMA).
This allows a peripheria1 device to take control of the bus
for high rate transfer to and from memory. This is implemented
1n a DMA request and OMA grant. Priority is determined by the
device physically nearest the processor. Again any peripheria1
can assert a bus request (DMA request) by grounding the bus
request line. The processor will then remove itself from the
bus and generate a bus grant. This then is daisy chained much
as the interrupt request is daisy chained.

E
F
H
,L

INDIVIDUAL CARDS

S
T

In the following section each individual card will be
discussed. All I/O devices are treated as memory locations.
Table 3 shows the address assignments for the I/O devices
and their associated status words. The name of the principle
designer of each card is given in parenthese when a card is
discussed. A great deal of the design was taken from articles.
These designs were then modified, improved or changed to
conform to our bus.

U

The 8080 card was designed·to allow the ,monitor program
which is in the 2708 ROM's to 'be located anywhere in memory.
To cause the processor to go to the monitor,the .processor
is fooled into thinking that the next instruction is an
unconditional jump to the monitor program. The design hardware to cause this jump is shown in figure 2. When the push
button is pushed the address lines and bus I/G. ,line are
turned off. The 82S123 ROM is then turned on when the bus
read is asserted. Also the 74163 counter is incremented

AO

3

7
8
9

To provide memory address for I/O devices the upper 8
bits of the address lines are AND'ed together to give 256
I/O addresses. The bus I/O line is asserted whenever the
upper 8 bits of the address lines are all "ones.", This
places the I/O addresses from FFOO to FFFF. It should be
noted that the 6800 card places the I/O at a different place
in manory because of arch.i tectura 1 di fferences. The bus I/O
line is also asserted whenever an I/O instruction is executed.
The design of the 8080 card also includes provisions to allow
the software program to be stepped. The design of this hardware 1s taken from a Designer's Casebook article. 2. The hard-,
ware requiree only one 7474 and 2 NAND gates plus two toggle
switches and one pushbutton switch.

SIGNAL
GND

1

The bus has both priority and vectored interrupt. The interrupt request line is aline which any peripheria1 can ground.
This causes the processor to assert an interrupt acknowledge.
This line is then daisy chained on the bus. The device nearest the processor requesting service will not pass the interrupt
request but will gate its handling address on to the data bus. '
In addition thefe are two interrupt levels (non-maskab1e and
maskab1e) which allows the processor to have two.priorities.
Another version of the bus may be implemented latter. This
requires slightly different bus wiring since each interrupt
request is brought into a priority encoder where the interrupt
request priority is compared against the processor priority.
If the priority is greater than the processor priority an interrupt request is generated to the processor. This must be implemented on a 'separate card since there is not enough spare pins
on the bus. Implementation of this is very straightforward
using some of the new IC's. However this feature isn't felt to
be necessary unless our systems become significantly more
complex.

8080 Card (Castro). The design of the 8080 processor
is basically taken from Intel's 8080 user's manua1. 1 A block
diagram of the 8080 card is shown In figure 1. The 8224
clock chip and the 8228 control chip are used'in the design.
The address lines are buffered with 8T97's. 3K of ROM and lK
of RAM are also included on the card. 2708',s are used for
the ROMs and 2102's are used for the RAM's.

PAGE 278

A2

A3
A4
AS
A6
A7

10

AS

A9
AIO
All
A12
A13
A14
A15
-5 V
I/O
-12 V
TTL Clock
+5V

11

12
13
14
15
16
17
18
19
20
21
22
A
B

DO
D1

C

o

02
03

D4

05

J
K

D6

07
+12 V
READ
WRITE
WAIT
BUS REQUEST

M
N
P
R

INTERRUPT REQUEST
NON-MASKABLE INTERRUPT REQUE9T
INTERRUPT ACK IN
INTERRUPT ACT OUT
RESET
BUS ACK IN
8US ACK OUT

V
W
X
Y
Z

TABLE 3
ADDRESS SPACE
6800
6800
6800

Moni tor (2K)
Monitor RA~ (128)
I/O space (256)

F800-FFFF
EF80-EFFF
F400-F4FF

8080
8080
8080

Monitor (3K)
Monitor RAM (1 K)
I/O space

EOOO-EBFF
ECOO-EFFF
FFOO-FFFF

I/O Address Assignments
Keyboard (PIA)
TVT Status Word
Cassette #0 (UART)
#1
#2
#3
Paper Tape Reader (PIA)

98-9B
F8-F9
99-91
92-93
94-95
96-97
9C-9F

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO AL TO CA 94302

PAGE 279

lK
RAM

t------------·--l. __~_~_M

_ _ __'

TO
CASSETTE
MONITOR
VECTOR
HARDWARE

8080

BUFFER

BUS
ADDRESS

1-------«

WAIT

BUS DATA

Figure 1.

74163

82S123

Counter

ROM
32 x 8

CK

DATA
BUS

A
B
C

EN

D

CL

8080 processor card.

D

Enable

after each bus read. The ROM contains the jump instruction and
the jump address. When the 74163 counter gets to address 8
the ROM is turned off and the address lines and bus I/O line
are reasserted. The purpose of this hardware is to allow programs to reside at the bottom of memory and the monitor to be
located somewhere else. In my system the monitor is located
at EOOO.
The 8080 design plus ROM and RAM occupy only half of
the space of the 9.5 inch by 4.5 inch Vector card. A cassette
interface card was designed but because of the empty space
I decided to place the cassette interface on the 8080 card.
The circuit is the same as one used for the cassette interface card.
TVT card. The design of the television display card was
taken from an article, "Build a Television Display,,,3 with
minor modifications.

+5
CK
PR
D

8080
HLDA
Q i-----i,---..q
Address
Buffer
Enable

The display is arranged as 32 characters by 16 lines.
'lie used 2102's for the display storage. Since the display
only requires 512 bytes, two pages of display are available.
The display is addressable as ordinary memory and is located
from FOOO to F3FF. The TVT card also has a I/O status word
located at F8. The status word indicates when the display
is available for modifications and which page the dispaly is
using. Also the page can be changed via the status word.
We used a differentrf up-converter than Mr. Gantt.
Figure 3 shows the circuit we used. The oscillator is tuned
for channel 3.

>>-;B;::;::US~READ;::;=;:;:----C>

The Cassette Interface. The cassette interface uses
Don Lancaster bit boffer circuit 4 to implement the Kansas
City standard. For a UART an Intel 8251 wss used. ~owever
one person used the Motorola 6850. The addresses used for
the cassette data and control are shown on table 3.
8K RAM Card (Mitchell). The 8K RAM shown in figure 4
uses the lK static 2102's. The card uses 64 RAM chips and
8 IC's are used for interfacing.

Figure 2.

Monitor vector hardware.

6800 Processor Card (Heaberlin). This card is similar
to the processor cirsuits discussed in the Motorola 6800
applications manuals (see figure 5). Initially it was decided to use back-to-back monostables rather than a crystal

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 280

clock. This configuration is tentative slightly faster in
that the processor may continue immediately after concluding a
DMA cycle or a wait period (to be discussed later.) As is
well known the 6800 requires a two phase. non-overlapping clock.
During phase 1 the address and R/W is asserted while during
phase 2 the data becomes valid. Obviously for slow memories or
other s low I/O devices phase 2 must be extended to allow adequate read and write times. This is provided by the wait signal. This extends phase 2 until the wait signal is removed by
memory or peripherials. In a similar manner phase 1 can be used

BK by B RAM ARRAY

+5

6.22 ]Jh

INPUT

5-10 pf

510

Figure 3.

Channel 3 rf up-converter.

ADDRESS READ WRITE
Figure 4.

DATA
BK RAM card.

WAIT

BUS GRANT

CLOCK

RAM

EFBO-EFFF
6800
PROCESSOR

ROM
F800-FFF

DRIVERS

INTERRUPr
ACKNOWLEDGE

I/O

ADDRESS
Figure 5.

DRIVER

DATA
6800 processor card.

READ WRITE

FIRST COMPUTER FAIRE PROCEEDINGS

for DMA cycles. In this case when a DMA cycle is requested the
address is removed from the bus and the bus grant signal is
asserted from the processor duing phase 1. This then allows
another device to have control of the bus. Since the 6800
is a dynamic device neither the DMA cycle or wait period can be
extended beyond 5 microseconds. This method for DnA and slow
memories is standard with 6800 systems.
As has been mentioned previously the 6800 has a read/
write line and chip select line which is usually ~2·VMA. In
this design we generate a read signal by AND'ing the read/write
line with ~2·VMA. A write signal is similarly generated,by first
inverting read/write and then AND'ing it with ~2·VMA. This
provides a read and write superficially close to the 8080.
However in the 8080 write cycle the data from the processor
becomes valid before the write is asserted while in the 6800
the data will become valid about 200 nsec. after the assertion
of write. In addition, in the 6800 the data is removed as soon
as the write is removed. In the 8080 the data is held about
300 nsec. after write is removed. Thus the timing in the
6800 write mode is a lot more relaxed. This may seem to be
a problem and in some cases where data must set up before a
write strobe is asserted additional timing circuitry on the
peripherial card will be required. However many of the new
memory and other circuits have very relaxed timing requirements. They require the data to be valid only during the last
part of the write cycle and no data hold times.
The other part of this design different from standard
6800 designs is the interrupt structure. As has been pointed
out an interrupt acknowledge is generated from the processor
card: The 6800 processor of course has no interrupt acknowledge
output. However if the address FFF9 is decoded then this can
be used as an acknowledge since the processor interrogates this
address when responding to interrupts. Peripheria1 devices will
place the lower 8 bit address of the handler routine on the bus
in response to the interrupt acknowledge.
There is also incorporated drivers on all output lines
from the processor card except the daisy chained lines (bus
grant and interrupt acknowledge). This allows many devices
to be connected on the bus.
CONCLUSION
From experience a budget of 500 dollars would be adequate
to provide a person with a good homebrew system (see table 4).
This system would consist of a TVT interface, cassette interface, keyboard interface, 8K memory, processor and power supply.
Of course the above cost only covers hardware and doesn't include'
labor. Many hours are spent in fabrication of cards and chassis.
All our cards were fabricated using wire-wrap techniques.
However a solder type 44 pin connector was used for the bus.
These connectors were inexpensive, but in retrospect the extra
cost of wire-wrap connectors are worth the extra cost.
TABLE 4
COSTS
COST
TVT
8080
Cassette
6800
8K RAM
Ceasar Castro.

Allen Heaberlin.

CARDS & SOCKETS ICs & DISCRETES
26.00
27.00
20.00
17.00
32.00

55.00
126.00
23.00
94.00
118.00

Electronic Design Engineer, Naval Ocean
Systems Center, San Diego, California.
BSEE 1967 San Diego State University.
MSE 1971 Purdue University.
Electronic Design Engineer, Naval
Ocean Systems Center, San Diego,
California. BSEE 1968 University
of Missouri at Rolla, MS Information
Systems, University of California
at San Di ego.

TOTAL
81.00
153.00
43.00
111.00
150.00

BOX 1579, PALO ALTO CA 94302

PAGE 281

REFERENCE
1.

Intel Corp., Intel 8080 Microcomputer Systems User's Manual,
September 1975.

2.

Waker1y, John F., "Circuit Steps Program for 8080 Debugging,"
Electronics, pp. 110-111, August 5, 1976.

3.

Gantt, C. W. Jr., "Build a Television Display," Byte,
pp. 16-21, June 1976.

4.

Lancaster, Don, "Build the Bit Boffer," Byte, pp. 30-39,
March 1976.

5.

Motorola Inc., M6800 Microprocessor Applications Manual.

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 282

16-BIT AND 32-BIT ADAPTATIONS OF THE S-100 BUS STANDARD

Gary McCray

188 Western Avenue

Livermore CA 94550

I represent no company and am just an average (if there
is such a thing) computer hobbyist, like most of you. I don't
like writing papers or giving speeches and, quite frankly, I'd
much rather be at home doing amazing things on my computer
right now. However, there is a proper time for everything and
if we, the hobbyists, are to derive maximum benefit from future
developments, something has to be done now.
The best single thing that has happened to this hobby, aside from the development of the microprocessor itself, was the
establishment and general acceptance of a standard buss: "Hobbyist Standard", "S-IOO", or "Altair -

Imsai" buss.

It has

provided a fertile ground for manufacturers of peripheral devices, permitting them to market a single product such as mem-

ory 1.0., C.P.U's. and so on, rather than having to produce
complete systems that must include all the necessary components. Thish2,s resulted in a competitive market which has
served to keep prices down, quality high, and inexpensive,
easy-to-work-with software readily available ... All working to
the hobbyists advantage.
Now, there is an unfortunate trend for some of the larger

manufacturers to produce complete systems which totally ignore
the "S-lOO" buss, making outside updating and modification of
their systems extremely difficult and/or expensive at best.
The Processor Technology "SOL" is a notable exception, provid-

ing "S-100" card adaptability and many worthwhile features,
but still not permitting the use of another C.P.U. There is
no practical way to change the C.P,IT. in any of these single
board systems, necessitating the purchase of an entire new
system, should such a change be desired--an expensive and certainly not hobbyist-oriented process. Furthermore, these single manufacturer designs do not encourage outside competitive
development reducing variability and keeping the prices up: a
great deal for the manufacturer (if he can sell it) and a rotten deal for the hobbyist.
Obviously some sort of standard is very worthwhile and,

with a little bit of work, it can be seen how the "S-lOO" buss
can be turned into a very powerful thing, whose potentials extend far beyond hobbyist use while still encompassing it.
The "S-lOO" has the particular advantage of complete demultiplexing, providing separate data in, data out and address
lines--a feature which makes trouble-shooting and design magnitudes easier.

Interfacing is straightforward and, further,

this de-multiplexed approach makes it possible to adapt virtually any 8 bit C.P.U. regardless of its multiplexed timing
and control characteristics.

As for specific complaints about the "S-lOO" buss: the
major one, noise, has been virtually eliminated by the introduction of noise-free mother boards such as the Morrow "Sigma"
active termination board or the Crommemco "z Buss".

The sec-

ond complaint of being slow due to the de-multiplexing is not
really relevant to the vast majority of uses to which these
mini-computer emulation systems are put. We would readily
accept that a system to be maximized as an ultra-high speed
scientific or industrial (dedicated) controller might be better implemented on other than the "S-lOO" buss. Even in this,
Though, faster microprocessors, memory and interface chips

are making any time difference negligible.
So, OK, the "S-lOO" buss is a great thing, but how is it
possible to implement a bigger C.P.U. with sixteen or more
bit words. There are at least three approaches to this. One
is being currently implemented by Alpha Micro Technology in
their "CM-16", a pseudo "LSI·-ll" almost emulation. They use
the "S-lOO" buss as is and divide sixteen bit memory addresses
into two bytes and ship them to sequential spots in memory,
requiring two actual moves. All this is handled very neatly
by on board logic. It really is a great design and they have
some excellent software to support it. It makes use of the
vast majority of "S-lOO" cards and costs considerably more
than the "LSI-II", which is unquestionably superior and has
the best softwar" Hl,pport available. Be that as it may, it is
a great design and does use the "S-lOO" buss.

I do not feel, however, that this approach is satisfactory for general higher order development of the "S-lOO" buss.
The necessary byte-word exchanging greatly increases the complexity of the hardware, software and design criteria as well
as slowing over all transfers right back to 8. bit system levels.
The second approach, which has several advantages over

the first, is bank addressing.

In this scheme,' the micropro-

cessors' internal microcode toggles an address line changing
the memory or I/O board addressed to implement byte-word
shifts. This technique is much faster than the previ04s sequential system and doesn't require nearly the hardware. If
one wishes to use more than 32 K of 16 bit or 16 K of 32 bit
words, however, it requires the reassignment of some,"S-lOO"
spares as bank address lines to enable and' disable the various memory banks. The major disadvantage, as I see it, to
this approach is that, first, it requires microprocessors
that are microprogrammable which will limit'potential C.P.U's.
Secondly, the C.P.U's. themselves will still be functionally
more complicated than plain "S-lOO" C.P.U's. Thirdly, realtime troubleshooting, design and.debugging, both electrically
and software-wise, will be increased in degree of difficulty
over "S-lOO" levels. In all honesty though, this system is
viable, and in the future most microprocessors, certainly
most 16 bit and larger ones, will be microprogrammable. I
would still like to see a system that would permit us to
operate in this bank mode as cards become available, also,
in our old 8 bit mode, and in a larg"r scale format that permits "S-lOO" like large scale 16+ bit cards to operate in a
manner exactly like the 8 bit ones in our systems now, and
requiring no soft or hardware tricks.
What we need is a way to implement these higher order
systems that will provide simple and cheap design and manufacturing criteria to encourage their production and yet
still to be able to use "S-lOO" cards. For that matter, why
not try to design in a little future development capability
and try for a potential 32 bits of data. This could be accomplished in bit-slice now and in microprocessors in less
than three years. While we're at it, we might as well increase our potential addressing capability to a full 24 bits,
allowing a maximum possible of nearly 17 million words (8,
16 or 32 bit) to be addressed. There are already 92K and
?56K bit chips on 'the market, so this is not an unreasonable
future potential. This greater than current technology approach has the advantage of not getting us stuck with our 16
bit systems like we are with our 8 bitters now. Or are we?
I've spent many hours staring at my "S-lOO" system, wondering how I could stuff in a Texas Instruments "9900" C.P.U.
but it wasn't until I built a bare "S-lOO" motherboard and
power supply for our local computer club that it hit me. We
can have all those "S-lOO" cards and have our 16 and 32 bit
super systems, too. Look at the boards; they only have contacts under two-thirds of them. Actually, there is room under an "S-lOO" card for a 160 pin edge connector, still permitting standard edge guides to guide standard "S-lOO" cards
into the connectors. With the addition of 2 divider bars
(reducing our total to 156 available pins), the "S_lOO" card
is securely locked into the same place it always was.
Simply leave all the "S-lOO" buss line assignments where
they were, the first 8 data in, first 8 data out, 16 address
lines, power supply, clocks and control lines. But what about those other 56 lines? We already have 8 data in and 8
out, and with the addition of 24 more in and 24 more out,
plus the addition of 8 more address lines, we have used up
our 56 lines and now have a total capability of 32 bits of
data in, 32 bits of data out and 24 address lines.
Thus, simply by retrofitting an "SS-160" or "Super
Standard 160" motherboard to our system, we gain the fantastic potential of 32 bits of data, 32 bit instructions and 17
million word addressing. Now that's a standard we can live
with for awhile. Furthermore, our current system operation
is completely unaffected, permitting updating only as we see
fit. In order to provide a standard, the actual position of
each extra data and address line would have to be fixed by
convention, and certainly the second 8 bits of our data word,
both in and out, and the extra 8 address bits should all be
on one side of the board. permitting manufacturers to make
16 bit only cards, should they so desire. Further, a few,
4 or 5, of the "S-lOO" spare lines should be given permanent
"SS-160" control assignment, for such things as recognition
of 16 and 32 bit transfers, etc.
A second piece of hardware should also be made initially
available to permit the use of "S-lOO" memory cards on. the
higher portions of the data words found on the "SS-160" buss.
This could take the form of a "data reassignment edge connector". Specifically, a short P.C. card that plugs into the
"SS-160" buss and extends all the lines (except data) up to
an "S-lOO" connector at its top; the data lines would be
brought from the appropriate places on the "SS-160" card to
fill in the appropriate word. This would permit two "S-100"
memory cards to be addressed the same and to address the high
and low order bits of 16 bit words. This could be carried out
later for 32 bit systems if necessary.

FIRST COMPUTER FAIRE PROCEEDINGS
The "SS-160" approach has several less obvious advantages. First, they will fit in our current "Altairs",
"Imsais", "Bytes", etc. virtually without modification.
Second, we can add specific "SS-160" C.P.Us., memory, I/O,
etc. only as we see fit. In no circumstance would an "8S160" device cause some other "S-lOO" device to be nonfunctional·
Say we have the following hypothetical system that we
wish to change to an "SS-160". (An "Imsai with 32 K of memory, a VDM-l and a Morrow, cassette, Keyboard I/O) First, we
install an "SS-160" 20 connector motherboard. Our system operates exactly as before. Next, we add an "XX9900" or "XXX~
11" "SS-160" C.P.U. and reassign half of our memory with reassignment edge connectors. Now, with an absolute minimum of
expenditure, we have gone to a full 16 bit system with 16K of
16 bit word addressing. We can leave the I/O the same for
,now; our software can change easily from byte to word, and
the vast majority of the time is still saved because all of
our memory and register transfers are now 16 bits. Later we
can add an "SS-160" 16 bit I/O device to further maximize
software, speed and so on.
"SS-160" memory, I/O, front panels and C.P.U's. would
undoubtedly be marketed first in 16, then in 32 bit format,
at a rate and price that we could far better afford than if
we are relying on separate manufacturers, producing separate
systems with limited potential.
But first we need the system, and if it is going to happen, it is going to be us that make it so. If, and I stress
only if, sufficient interest in this scheme is shown, will
anything real be done. Otherwise, we will remain completely
at the whims of the big manufacturers. The "S-100" buss
gave us the right to demand more once, let's not give it up
to the inflexible all in one computers now. We can only
benefit from a standardized system.
In summation, let me point out that this "Super Standard
160" system encourages all current forms of "S-lOO" development such as the normal 8 bit systems,' the hybrids such as
the "CM-16" and the even greater potential bank addressed devices, while still making it. possible to implement the most
efficient of all "8S-l60" devices as desired.
If you feel that the "Super Standard-160" has sufficient
value to justify it and, especially, if you would like to implement it yourself, please write: "8S-l60", clo Dr. Dobbs
Journal of Computer Calisthenics and Orthodontia, Box E,
Menlo Park, Ca. 94025.
If sufficient interest is shown I, personally, will pursue the matter as best I can and am reasonably well assured of
sufficient small manufacturer interest to feel confident that
a production retrofit as well as a complete system could be
forthcoming. I reiterate, such an effort will be made only
as the result of sufficient interest being shown by you. Now
is your chance to shape the future of our hobby.

BOX 1579, PALO ALTO CA 94302

PAGE 283

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 284

STANDARDIZATION OF THE S-100 BUS: TIMING AND SIGNAL RELATIONSHIPS - A PROPOSED
STANDARD
the positive going edge of ~l when PSYNC is high (true). If
a wait state is to be generated, the PRD,Y signal line must be
pulled low at this time (most 8080 processor boards- the
ones that use the 8224 clock generator- allow at most 110' nsec
for response and settling).
The valid address signal may
also be used in enabling some buffers, and if'used in this
manner should go false on the negative transition of the data
transfer enable (ENIN, ENOUT, ENREAD, or ENWRITE).

,Tony Pietsch
Proteus Engineering

1717 E, Oakdale Ave,
Pasadena CA 91106

About four months ago I decided to put the TMS9900
mic'roprocessor chip on the "S_lOO" bus. I had just finished
interfacing some high speed, high resolution (12 bit) ADC's
and DAC's to the IMSAI 8080 bus, so I thought I had a good
idea as to what should go where when. Since there seemed
to be an unlimited variety of interfaces and memory that
were available as "S-lOO bus compatible", it seemed to be
the way to go. Mter laying out a preliminary design, I
went down to my local Byte Shop and perused their schematics
of all
the boards that they sold ( and some that they didn't)
and discovered quite a number that weren't exactly compatible. In addition, I was shown a number of combinations of
existing processors and memory and interfaces that wouldn't
"work together". I then set out to find the lowest common
denominator of the S-100 bus and its timing. I intended on
setting up a standard way in which processing was to be
handled so that only a few cuts and patches could make everything work together.
The results of my standardization
procedure, are to be regarded only as a commentary on what
might make the S-100 bus a mor,e comfortable place to work.

I

-1

XXXXXXXX XX

~DSU~

DIt-DI7 X X XX X X X X

I

r-

TDH

\'1-------TREL

---.!........,iJr~-T-RZ-~H--------------

PREADY

PWAlT

---~~~--------------

PSYNC

~~---------------

Valid
Address

Proper decoding of the timing on the S-lOO bus is not
difficult once certain relationships are made clear. Current
processors using the bus do a data transfer in two parts; a
valid address time and a valid data time.

,

XX X XXX XX XX XX
-1

----;--11
H

ENREAD

The first thing I noticed when I looked for a smallest
common signal set was that nearly every possible subset of
signals was used by someone.
This meant that to reach the
widest range of existing boards, timing and control would
have to be defined using the existing redundancies. Signals
peculiar to the 8080A were not used in my standardization
procedure so the widest range of processor boards would
be able to comply with its definition. Some signals on the
Altair bus were combined and given simpler, more specific
names.

For timing of data transfers eleven signals are commonly used; SINP, SOUT, SMEMR, SWO, MWRITE, PDBIN,
15W'it, PSYNC, f!l, g2, PRDY and PWAIT.The four major
data transfer states are decoded as shown in table 1. An
example of the data transfer bus relationships is shown in
figures 1 thru 4.
Note that only one of the transfer states
can be enabled at anyone time.

XXX

M-AI5

\

(Phantom Signal)

'---------

Figure 2

!1lZ
\

(CYCLE)

xX

A~-A15

XXXXXXXXXX

DOIJ-D07~Xc...!..l.X.llX!.l.XX~~_~XX~X~X!...!...!X~X-!...!...XX:....l.!X~X-!-I -1 I-I

TABLE

TDSU

1) Mexp.ory Read
A. ENREAD
B. ENREAD
2) Memory Write
A. ENWRITE
B. ENWRITE

SrNP·

PDBIN
SMEMR • PDBIN(recommended)

ENWruT~E

MWRITE (recommended)
MWRITE + ( S6UT • PWR.

~~

______

~

_________________

--~I\ A~----~----TREL

)

~

Y. ~
~

r--

TREH

_________~L'_~_ _ _ __

I
SINP • PDBIN
PSYNC'

4) I/O Write
ENOUT

~-J~

PREADY

PWAIT

3) I/O Read
'ENIN

________

SOUT • PWR

Valid
Addre8S

SWO is sometimes used in conjunction with
an on- board data direction line.
The signals PSYNC and ,ell are used to indicate a valid
address. Valid address is a phantom signal ( not defined on
the S-lOO bus) that is used primarily for generating wait state
timing.
The valid address signal should be decoded true on

~~------------_-----'I

\~____________~(~p=ha=n=to=m=S=i~g~~ij

If ,a single wait state is .to be generated, the PRDY
line should be pulled low onroccurance of a valid address (as
above) and released when,the processor line 'PWAIT goes
high.
This generates exactly, one wait state for almost any
microprocessor. Alternatively, one or, more wait states

FIRST COMPUTER FAIRE PROCEEDINGS
can be made by using the negative going transition of ~2
( CYCLE) to count an appropriate number of machine cycles
and release the PRDY line at this transition. In this way
(using the negative edge of %2) it will be certain that the
correct number of wait states is generated.
I would like to
rename fd2 as CYCLE as not all processors complete a
machine cycle at the end of a second phase.

Figure l Input

BOX 1579, PALO ALTO CA 94302

PAGE 285

full settling during a read ( or input) operation, data should
be stable on the bus at least 25 nsec before the processor
samples it. Since two existing processors on the bus (8080
and Z-80) sample at or shortly after the negative going
transition of 02, data should be stable 25 nsec before 02
negative transition.
To ensure proper board enable decoding
the address bus must be stable at least 25 nsec before the
valid address condition is true.
The choice of 25 nsec was
made to allow for the propagation delay of most decoding
circuitry in use.
A summary of timing relationships is given
in table 2.

¢1

TABLE 2
/112
(CYCLE)

-'11'-

A~-A15

xxX I

I

TASU

--1

XXXXXXXXXX

P'DSU~

XXXXXXXX

ENIN

PREADY

I
--~/
H

XXXXXXXXXXXX

4 pH

\~-----------

TREL

----~~~r-------------------------

4r-

------~~~------------------------------

PSYNC

~~----------~----

Valid
Address

\

(Phantom Signal)
~-------

(il2
(CYCLE)

xX

XXXXXXXXXX

-,-,X,-,-,-X.. .!. . !.X-,-,-XL4X_ _ _---I'X-'--'-X'-'-'X-'-'.X-'-'-X-,-,-X:. . .:. :XX--,-"X---,-,-X-,-I -1 i'I
TOSU

ENOUT

~'I------

---c--I)

-~I\

Ar - - - - - - - - - - - - \-I. ~

PREADY

TREL

--<\

r=11'-

T REH

PWAlT

----~~~-------------------I

PSYNC

~~------------------

Valid
Address

max

TREL (Ready high-to-low)

25 nsec

TREH (Ready low-to-high)l

25 nsec

TDSU

(Data set-up)

25 nsec

TAH

(Address hold)

25 nsec

TDH

(Data hold)

25 nsec

TREH

PWAlT

DO¢.D07

S-lOO Bus Timing Requirements
min
25 nsec
TASU (Address set-up)

\

(Pl-:antom Signal)
~--------------------'--'-

The data valid time is defined during the data transfer
states ENIN, ENOUT, ENREAD, and ENWRlTE.
Timing
generated on the S-lOO bus by a processor board should iLllow
for both level sensitive and transition sensitive devices.
To
ensure good transfer for transition sensitive circuits, data
and address lines should remain stable for at least 25 nsec
( T DH , T AH) after the enable condition goes false.
To allow

1 Ready low-to-high may be made either
with respect to the positive-going transition
of PWAIT or the negative- going transition
of (/)2 (CYCLE).
To allow certian interfaces to operate correctly, a
stable time base is needed.
This should be the crystal
controlled 2 MHz CLOCK signal.
The main pitfall of the Altair bus seems to be that it
is specific to the 8080A. Signals like SSTACK, SS, and
RUN are unneccessary, and others could be condensed into
more specific functions ( Valid Address, Memory, I/O,
Read/Write, etc.).
Most wasteful is having eight separate
data input and data output lines. In ~eneral, however,
the S-100 bus is workable but incon"\enient for use with 16
bit processors. If it is to be a true standard, a better
definition of signal timing must be accepted.
The signal
timing I have defined is the best that I know of , but I may
have missed something. 1£ nothing drastic is found wrong
then I would recommend that all future S-lOO bus compatible
designs be based on this standard.

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 286

DMA OPERATION PROTOCOL IN THE S-100 BUS ENVIRONMENT
Terry Walker
Cromemco, Inc.
2432 Charleston
Mountain View, Ca
(408) 964-7400

TX

The need exists for a uniform protocol of DMA
operation in 5-100 bus systems. This paper strives
to fill this need by showing the conditions necessary for compatible operation of several DMA
devices in one computer mainframe. Topics covered
include CPU output signals, DMA memory control cycles, common implementation problems, recommended
DMA control protocol, and hardware design examples.
The primary purpose of this paper is to promote
standardization of DMA methods on a form compatible
with both static and dynamic memory units and 8080
arid Z80 CPU's. No attempt is made to cover other
CPU types, and it is assumed that the memory in use
does not require wait states for the DMA device in
question.
T1

T3

T2

TX

~2--1l-'~L
!

i

PiffiLD ________ ~:
CPU HOLD

U u

-

-

-

I 7

PHLDA

ADDR

=::x=======>---

==x

PHLDA
ADDR - - - - - - - DO DATA

-------------+-<;~
I

PSYNC

-----------......J1

FIGURE 2.8080 DMA TERMINATION SIGNALS
T1

TJ

T2

TX

~2~'
u

U

_____

_

h

+_____ ___

__ ' _

~.

un

_

~'-

--I-_ __

_ _ _ _ _ _ _ _ __

t

CPU SENSE TUm
PHLDA _ _ __

PSYNC~

DO DATA

T1

t

CPU SENSE TIM!

CPU BUSRQ ____

t

CPU SINSE TIME

TX

CPU HOLD

PHOLD ____

-3

TX

STATUSX WRITE DATA

)----

I!

PWR

-'11..._________

PSYNC _____

ADDR --------

----.l
L
DATA J~AL~T~D~NA~FO~R~M~~====~======J
-3)-

PDBIN

FIGURE S. BASIC DNA MEMORY CYCLE

disable the CPU outputs. Control of the S-lOO bus
instantaneously passes to the DMA control unit for
the time that,DMA Enable is high. The DMA controller
must provide solid drive for all bus lines released
by the CPU. Take special note, however, that ~l and
always remain under control of the CPU card. At
the time control transfer occurs, and for about 50 ns
after each event, erroneous signal pulses may appear
on the S-lOO bus lines. These usually occur on control lines such as PSYNC and PDBIN which are active
high, and therefore usually ,low at the transfer time.
These glitches occur because the normal TTL gate
interpretation of a floating input is a high level.
Momentarily, all drivers on a bus line may be off,
and attached logic gates pull up the bus line to a
high level. This tendency is the major drawback of
the S-lOO bus signal definitions, and complicates the
problem of successful DMA operation. The case when
two bus line drivers may both be ON is less serious,
as their outputs will assume the logical AND function
of the desired signals, and tend to stay low if either
one is low. One method of reducing the effect of,
these glitches on memory units using PDBIN to read
data is to turn ON PDBIN immediately when beginning
the DMA operation. This appears as the alternate
DMA form in Figure 5. However, this should not be
required for a properly designed DMA suitable memory
card.

.2

Various signals shown in Figure 5 may be compromised in one way or another, and still the majority
of available memory units will work. Fully static
memories, for example, do not generally require PSYNC
or pulsing of PDBIN to read, but dynamic memories generally require one or both. Advance status on the DO
data bus generally is not used during DMA by memory
boards and can be omitted. The general read cycle is
longer than necess~ry, though shortening the write
cycle can cause problems with data setup or hold
times.
Figure 6 shows a shortened DMA cycle possible for
reading single data bytes only. The PSYNC and advance
status may be omitted at the risk of incompatibility.
Both of the preceeding figures do not show an allow~
ance for wait states since it can generally be assumed
that memory fast enough for the DMA function desired
will be used. Occurrence "f ,wait, states during a
multibyte DMA transfer requiring ,data at definite times
(as in the TV Dazzler) would cause loss of data synchronization. The system user, must be assumed to have
some sense in these matters. Therefore I generally
don't construct the DMA ,controller to use PRDY sig',nals, and all figures in, tchi~ ,p,aper, are shown without wait states,
" ','
'
,
Alternate methods of synchronous DMA operation
for appropriately designed memory units may use
pulses on the status or other bus lines to initiate

--------0 ADDR

!----"'A....T"'A_-/

>___-<> DO

ADDR DSBL

8080

+---<

I---~

delay allows for the PHOLO delay on the CPU card.
DMA action is enabled on the ~2 negative going edge
when this occurs.
(LOWER PRIORITY)

REQ
SREQ _ _ _ _-"

DATA

DO DSBL

CPU

PAGE 288

01 DATA

",,\~PDBIN

-~PHLDA

PRIN _...;DO==N::..'..::T,-"C;:::AR=E=--lI--I-..J
PHOLD .OTHER DMA
QA
QC
PHLDA
DMA EN

DELAY STATE
DON'T CARE
(QB)
51"

CONT DSBL

FIGURE

FIGURE

STATUS

CLOCK
GEN

STATUS DSBL

8.

~

~

9.

DMA BUS ACQUISITION

,2

STATUS LATCH PROBLEM BLOCK DIAGRAM

A final problem i~ that some peripheral interface cards may malfunction when presented with the
rapidly changing DMA data on the bus. In this case,
they should use PHLDA as an input to indicate that
DMA operation is in progress and to disable them.
Proper DMA operation in the S-IOO bus system
necessi.tates several protocol requirements. Firstly,
transfer of control between two DMA units requires a
means of signalling the proper time. Given a system
containing two DMA controllers properly chained for
priority, assume that the unit with lower priority is
in operation. Now, if the higher priority unit
desires service, it must send that command down the
priority chain, and wait for an acknowledgment that
the bus is available. I chose to use the PHOLIT line
for this job, as with proper timing it may serve
seve~urposes.
When the higher priority DMA finds
the PHOLn line already low, it waits until the lower
priority DMA releases it before taking control.
When using PHOLD in this way, attention must be
paid to the special conditions when the CPU may
detect thei'HOLD transfer pulse, and begin operation
at the same time as the higher priority DMA. Loss
of program execution sequence can result. The PHOLO
synchronizing FF required on 8080 CPU cards causes
an extra clock cycle of delay, so the DMA controller
must allow for this in its state sequencing.

In order to prevent inadequate resolution of
priority caused by the finite OMA priority chain
propagation time, a request synchronizing FF is recommended on each DMA controller. This FF reclocks
OMA action requests with the ~2 positive going edge,
causing at least one half clock cycle to be available for the priority ripple. This is adequate for
small systems with TTL controllers, and allows for
clock skew between DMA controller cards.

SREQ
PRIN

A-C
Ll~~_P!'!

PHOLD
QA

M
QC
DMA EN

(QB)
FIGURE 10. DMA BUS RELEASE

Figure 10 shows the corresponding sequence at
DMA bus release. The action shown here may be initiated by either REQ going low or, if interruptible,
by PRIN going low. Control ~ven back to the CPU
in reverse order, and then PHOLO is released.
Another DMA may pick up control as shown.
Figure 11 shows the state diagram for an example single cycle DMA controller. The arrows show
the $2 clock edges on which the indicated state
change may take place. Output signals corresponding
to the various states are given in Table I. Figure
12 shows one possible hardware implementation for
this state diagram. No warranty is given concern-

.2

Finally, the DMA controller section which meters
out memory cycles must produce only full cycles. If
the memory cycles are abruptly terminated by the
priority input going low, for instance, the resulting
short pulses could cause loss of data in a dynamic
memory unit. This problem incurs greater importance
as systems shift from static to dynamic memory
devices. If the OMA controller operates in well
ordered, integral cycles only, then dynamic memories
will not present any data integrity problems.
Figure 9 shows a recommended signal sequence for
DMA bus acquisition. The request signal REQ begins
action by going high. At the next ~2 positive going
edge, SREQ is generated and causes the priority output PROUT to go to logic low. The D~~ controller
then waits for a negative going ~2 edge at which it
finds both PHOLO and the priority input PRIN at a
high level. When this occurs, QA goes high, causing
an open collector driver to pull down ·PHOLO. Two
clock cycles later the controller begins looking for
the hold acknowledge line PHLOA to be high. This

FIGURE 11. SINGLE CYCLE DMA CONTROLLER
STATE DIAGRAM

__

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

ing its suitability or proper functioning, as it was
made up for this example. A J-K FF synchronizes the
REQ input and controlls operation of a "walking ones"
shift register state generator. The logic one level
~ropagates to the right, causing the various state
transitions. The exclusive OR gates 10-12 control
which ~2 clock edge shifts the register, and the
74120 inhibits clock pulses when necessary to prevent
state changes. A set of bus drivers controls the
5-100 bus lines during DMA times.
l!RIN·SREQ

STATE
A
B
C
0
E
F
G
H

I

1 1 000
0 0 0
0 0 0
0 0 0
0 0 0
1 1 1
1 0 1
1 0 1
101

o1
o0
o0
o0
o0
o0
o0
o0

1 +
1
1
1 oj.
1 t
1 t
1
0
1 +

..

...

TABLE I. OUTPUTS FOR FIGURE 11
E

110

L

l.PRIN+SREQ

STATE ASSIGNMENT
=(QC) (QB) (QA)

l.PRIN·SREQ

FIGURE 14. INTERRUPTIBLE OMA CONTROLLER
STATE DIAGRAM

PIGURE 12. SINGLE CyeL! OJ"IA IPIPLEMENTATION

l.SREQ
STAn:

t'
'EO

E

1

L, I

'

I

___ ~

-I

SREQ

PHOLO ---OTH'SR ~i BUSY - - -~
I

II-

L_

I. WAITS PCR OTH!R DMA TO FINISH~

ADDR
DO DATA
PSYNe

PIGUR'!! 11. 'l'IY.lf«7 DIAGRAM FOR SINGLE CYCL'e
~A OPERATION. STATES ABE FOR 1'H!:

CIRCUIT 0' FIGURE 12.

~_

X

===x
__

X

J-

l.PHLDA. SREQ

1. SREQ· PHLDA

M
STATUS

PD!HN

01 DATA

~~

. ____r-.~~

The timing diagram for this unit appears in Figure 13. It is essentially a concatenation of the
operation of Figur~ 5, 9, and 10.
Figure 14 and 15 show state diagrams for a-multiple memory cycle DMA controller that may be operated in either of two modes. It can be either interruptible or non-interruptible by PRIN according to
the USe at hand. The circuit of Figure 16 shows the
implementation selected for this case. This circuit
is very similar to the one in the TV Dazzler with
two exceptions. First, OR gate 3 was added to permit
non-interruptible operation when A connects to B, and
second, the provision for a bus float state was omitted. Hindsight has shown that floating the control
busses during control transfer is a bad thing, especially for dynamic memories. This can cause erroneous
memory cycles and loss of data integrity. The best
procedure is to minimize the bus transfer time. The
7495 operates as a bidirectional shift register,
shifting on
negative going edges during bus acquisition and only according to the control gating.
During bus release it shifts on ~2 positive going
edges. The resulting timing diagrams appeared as

L
.f

1. SHEQ
FIGURE 15. NON-INTERRUPTIBLE OMA CONTROLLER
STATE DIAGRAM

.2

FIGURI 16. MULTICYCL! DIU. CONTROll.EB IMPLEMENTATION

PAGE 289

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1519, PALO ALTO CA 94302

Figures 9 and 10. The actual multiple memory cycle
generation is performed in other circuitry elsewhere.
Upon tracing the circuit operation, NOR gate 6 may
appear to not serve any purpose, but in fact it clears
an erroneous state condition which may occur when
power is first applied.
In conclusion, techniques for handling the S-lOO
bus in a compatible manner for multiple DMA systems
have been shown. Proper application of these techniques will permit reliable DMA operation with both static
and dynamic memory units.

PAGE 290

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 291

A BIOMEDICAL APPLICATION USING THE S-100 BUS STANDARD
William J. Schenker, M.D.
2086 Essenay Avenue
Walnut Creek CA 94596

Technology usually benefits by standardization. Standards
imply a common ground upon which deSigners, maintenance personnel, and users alike can rely. Without standards, design costs
increase as each model is developed on a custom basis. Maintenance and repair costs increase as the stockpile of replacement parts and device-specific test equipment proliferates,
training time lengthens and down-times increase. Finally the
accumulated impact of these added costs and delays are felt by
the end-user, or purchaser.
The above considerations apply to the present state of computer technology. Much time and money is spent designing custom interfaces between computers and peripheral equipment.
Trouble-shooting and repair are unnecessarily complicated by
vendor variations. More than a few scientists who are computer
endusers can recall occasions of their own project's delay
because of these factors.
An opportunity to examine more closely the advantages of
standardization presented itself in designing the interface of
an 8080 microprocessor system to a Coulter model S blood cell
counter. Our Coulter counter takes a sample of blood, analyzes
it and prints out on standard IBM cards the numbers of red and
white blood cells, the hemoglobin level, and four other parameters of cl inical importance. It does up to 500 tests a day.
Prior to use of our interface, the lab technologist was responsible for riffling through the deck of cards at the end of the
day, looking for any abnormal value and then notifying the
patient's doctor in such an event.

To obtain more timely and

reliable detection of abnormals, we developed a microcomputer
module which activates a buzzer and panel iight whenever an
abnormal specimen passes through the machine. Figure I shows
the lab technOlogist at work on the Coulter S blood cell counter. The small box in the upper right is our S-IOO module.

19 inch rack-mount, power, supply, fan, front panel controls
consisting of power on/off and reset, and a 30 slot card-cage
containing the following PC or printed circuit cards: CPU,
controller, decoder, two lK memories, paper tape reader and
teletype interface. While performance of this system in our
prototype was extremely reliable, several disadvantages became

apparent. Their significance may be better appreciated by the
following 3 fold analysis, which formed the basis for our chffice
of another 8080 system when designing the second version of the
Coulter interface.

One key to an effective computer bus architecture is redundancy. A computer bus is physically configured as rows of PC
board (or card) connectors arrayed in parallel:

3

4
5 -

6

9
10

FIGURE 2

3-+---4--~----~--+---+---~--~

4 -+---4--~----~--+---+---~--~
5 -+---4--~----~--+---+---~--~
6

8 -+--"-t--~.f---+--+--_-+---+-

I

'1

FIGURE 3
REDUNDANT
'-J.
--i,

--l

RANDOM

-

I

I

!

:

3
4

,

6

----~ ~

•

I

;

4-

-

--~

j

T

9

Initially a high-quality industrial grade 8080 system was
used. (We obtained loan of the unit through the cooperation of
the Lawrence Livermore Laboratory and its technology transfer
pro~ram.)
The basic unit, about $3000, consisted of a standard

-+-

-L 4i

7
8

rn
I

.

;

10

,i

,
j

FIGURE 4

+
-

~.

.... I-

-

~

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

The signi'ficance of the redundant structure is considerable.
It means no matter which connector you plug a board into, there
will be no compatability problem. It means each board's pin #
18 for example will "see" the same signal, for illustration
purposes, say, the "input strobe" signal. The strai ght-forwardness of this architecture makes it very attractive to the
engineer/designer. For he knows that no matter how complex his
PC board designs are, at least he does not have to re-define
his pin assignments. This convenience, multiplied by 50-75-100
pins cuts into design time to a significant degree, illustrating immediately the value of standardization. And, obvious
as this advantage is, it has a significant effect on another
factor.

PAGE 292

ware including effective operating syst'ems and higher level
languages. Also, each PC board is standardized to have its own
on-board voltage regulators, considerably simplifY~Qg the bus
power supply design. Of primary importance, hciweirti'i'; is its
bus architecture. Provided with 100 pins, hence its name, all
pins are redundant, but 16 of them are uncommitted, giving
flexibility for local deSigns, while still remaining within the
standard bus discipline.

AvailabiHty
A bus architecture and' signal discipline that is attractive
and easy to use from a designer's point of view will be one
more likely to be embraced in new designs. In other words an
efficient, convenient design tends to be copied by other vendors, or to be "cross-vendored", thus becoming even more available in the market place. If this availabi lity increases further, beyond a critical point, then its availability alone,
regardless of its intrinsic worth, becomes a second important
factor in the choice of a computer system. This then leads
directly to the third and last major factor.
Cost
A product in greater supply will tend to be lower in price.
Added to this is the cost savings resulting from quicker,
'
easier designs. An additional cost savings is generated later
by the ease and speed with which trouble-shooting personnel can
approach a redundant bus structure. (They too can rely on pin
# 18.)
The resourceful technician or engineer can in addition
devise test equipment to take advantage of the universality of
such a bus architecture - one instrument can connect to any PC
card or any bus connector to exercise and debug it. Further,
increased product availability decreases cost in a subtle yet
palpable manner hy raising the level of expertise regarding the
product line both at the vendor/jobber/supplier level and in
the general technical community. It is easier to get the
answer to an obscure problem \V.ith less delay.
And now, measuring up to the foregoing analysis, our first
8080 system sho\Vs the following characteristics:

In addition, the vendor has only one sales office in northern
California, the system is not cross-vendore.!, and because it is
not widely used, there is no ready reservoir of expertise we
could tap locally. Finally, the cost of the basic system,
$3000, was a consideration in our decision.
We turned then to an 8080 system whose bus structure and
signal discipline are cross-vendored by a half dozen firms,
\Vith more than 15 additional manufacturers offering interface
boards that are bus compatible. This is the 5-100 bus system.
The system and its compatible products are readily available
at over 15 retail suppliers in northern California alone, with
about 200 to 250 others scattered throughout the country.
Using these products, systems may be designed from a minimal
configuration costing about $300 in kit form, to a $10-to-14000
factory assembled and tested development system. The latter
consists of: 6sK of mai!: memory" full front panel, dual floppy
discs and cassette memory, PROM programmer, CRT, printer, B&W
and color graphiCS, analog converters, and a variety of soft-

Figure 6 shows a shortened version of the full 5-100 bus.
It has provision for 4 connectors. Imagine if you will this
board exteilded laterally to handle up to 22 (;onnectors, and y,ou
will have the commonly-used version. This bus board, or
motherboard as it is known to the engineer, shows total redundancy along the full 22-connector length. This is manifested
by the parallel configuration of the printed circuit pattern
extending horizontally.
Figure 7 shows our 5-100 module in the clinical laboratory
with Dr. Terdiman on the left and Mr. Bob Tuttle our design
engineer on the right. Figures 8 and 9 respectively show the
MPU board and our wire-wrapped custom interfact. board.
This bus system is now so widely used that expertise in the
system is readily available from maliy vendors and retailers.
An additional aspect of 5-100 logistics'is that, because the
bus structure of all systems is identical, a design developed
as a stand-alone system may be fully exercised and debugged by
merely plugging it into a development system.

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 293

with the appearance recently of at least two new motherboards
this problem may have been solved.) Finally, the system is not
designed to operate in a highly hostile environment such as one
would encounter in heavy industrial, military, or space applications.
On the whole, though~ the quality is good and generally
improving, especially as knowledgeable buyers accustomed to
high performance enter the market. In this connection you may
have noticed I have avoided mention of specific vendors. Those
of you who plan to dig deeper, however, will need to know brand
names and specific products to fill the void. My considered
advice is two-fold. 1. Visit an S-IOO retailer in your area.
Generally he will provide unbiased advice, since he deals in
a cross-vendored market. 2. With the following proviso!
Check the dealers product racks. If you see mostly one brand
name with only a scattering (or absence) of others, you've
chanced on one of the somewhat thinly-disguised factory-franchised dealers. Caveat emptor!
In summary, then, this bus standard, the S-lOO, appears to
be a cost-effective alternative to vendor specific products
presently available in the small systems computer market.
William J. Schenker, M.D. is a practicing physician and a
medical information systems scientist working with microcomputer technology. He co-organized a symposium in November,
1976 on the commercial viability of the S-IOO bus system. He
has at home an S-IOO computer with CRT, electric typewriter,
paper tape and cassette peripherals.

And now a balanced description of the S-IOO system includes
its disadvantages. Many of the early products, some still
being marketed, were poorly engineered. Some manufacturers'
recent products leave something to be desired either in design,
operation, or because of significant overpricing. In this
regard, aggressive advertising by these manufacturers would
make the facts seem otherwise. There are also a few manufacturers who did not heed the bus discipline and consequently
have marketed boards with compatibility problems. Many products lack adequate documentation. The lack of bi-directional
data lines on the bu~s· is considered a weakness by some. The
motherboard needs re-designing to decrease noise and crosstalk
problems when more than 10 boards are plugged in. (As an aside

FIRST COMPUTER FAIRE PROCEEDINGS

PAGE 294

BOX 1579, PALO ALTO CA 94302

,,~(UU,.,
VARIABLE ARCHITECTURE COMPUTING MACHINE
by Tom Pittman and Bob Davis
© 1977 by Bob Davis and Tom Pittman

Box 23189, San Jose CA 95153
tectural decisions left to the firmware as possible.
This paper is a description of the Variable ArchiThe use of existing LSI bipolar components and the
tecture Computing Machine (VACuuM) developed
objective of reasonably high execution speed rules
and marketed by Davis Laboratories. We will also
out making the microengine completely transparent;
attempt to discuss some of the design objectives in its
we will notice this in some of the trade-off decisions
implementation, and how they affected trade-off
made in the design. Of course the microcode can
decisions.
implement virtually any conceivable machine, but
The intended application for VACuuM is for,
some architectures are more easily achieved than
experimental architecture testing and the emulation
others.
of several popular mini and mainframe computers.
A general overview of VACuuM shows a system
It is expected to sell primarily to educators and
with a 24-bit address bus, an 18-bit memory data bus,
hobbyists, as well as those with access to existing
and an internal processor word length of 8, 16,32, or
software. The major design objective was the ease of
36 bits (see Figure 1). The microprogram memory is
implementing a variety of popular computer emula4096 64-bit words and is writable by the microtors, while maintaining a reasonably low cost and
program. The microstore RAM is overlaid by a
high execution speed. It is fundamentally a micro512 x 64 shadow PROM for bootstrapping the microprogrammed computer, with as many of the archi-

I-tI......

4K x 64 MICROCODE RAM

I'

256/512 WORD MICROCODE SHADOW PROM

t

l

PIPELINE REGISTER
,Ir

.

4

SOURCE BUS

8 TO 36 BIT ALU

SYSTEM
CONTROL
LOGIC

,

-L

~~

4~

..

--..

DESTINATION BUS

.~

,4 ~

4~

"'

,

MEMORY
MANAGEMENT SYSTEM

MICROCODE
CONTROLLER
---.

~.
~.

l

INSTRUCTION
DECODE RAM

, •

4,.

24 BIT
18 BIT DATA BUS 18 BIT DATA BUS
LOCAL BUS
LOCAL DATA BUS LOCAL DATABlrS
ADDRESSBVS
OUTPUT
INPUT
16. ,BIT ADDRESS
16 BIT OUTPUT
16 BITINPUT .
FIGURE 1. VACuum -- A Variable Architecture Computing Machine

.AMo~

r-----I~

c .....

-.
,I

I~---~

AWORD

ADDRESS

{~

Do OUT
DATA

"'2

Ao

A3

CLOCK
CI'

,.::

A, "'2 "]

WE

RAM

DATA OUT

EN

80 8, 82 83

, ."- 1 I
Ao

A,

-'2

I,

"'3

IIII

m'.

80 8, 82 B3

III'

r IIII

()

I

(a,

:~ !~:EDSS l..::========Co========~-====1

3
0

BY4B'T2PO'::'M

II

8:

}

1
I

II" Co

0,

EF '·

OENI I I I I I I I I I

Q REGISTER

°3

°2

ALU

DESTINATION
DECODE

"

'B

on

~

8s::
."

c:
-I

I I

·3

~Z{;

{

I I

m

I I

21

on

~

III I

::';

21

m

"'--~.~~

2·1N
MUX

t::I

~.~~

2·IN
MUX

'0
ALU

~~~c;,.ED

I,

DECODE
'2

'3>-'.>-'.>--

RO

ALU

A,

AZ

So

A3

5,

52

5:J

DECODe

m

o

Z
to)
(I)

en .. "

ARITHMETIC LOGIC UNIT IALUI

'-_
... .....

en

FO

F,

F2

F3

...~

OVR

.~

r

w

1
~
2·IN
MUX

2·IN
MUX

L-...(

~

r-

o

~o~~

l>
r-

~ '3

a
Note: LSB is numbered "0"; MSB is numbered "3".

A
Yo

- A
Y,

A
Y2

~

!

THAEE

STATE
CONTROL

m

FUNCTION

~

Ill!

g
."

Y,

FIGURE 2. 2901 BLOCK DIAGRAM

~m
~

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 296

FIGURE 3. 2901 INSTRUCTION DECODE
ALUSOURCE
OPERANDS

MICROCODE
12

I,

10

L
L
L
L
H
H
H
H

L
L
H
H
L
L
H
H

L
H
L
H
L
H
L
H

Octal
Code

0
1

R

S

15

14

13

A
A

0
B
0
B
A
A
0

L
L
L
L
H
H
H
H

L
L
H
H
L
L
H
H

L
H
L
H
L
H
L
H

0
0
0

2
3
4

5
6

0
0
0

7

MICROCODE

0

R Plus S
SMinusR
R MinulS
RORS
RANDS
RANDS
R EX-OR S
R EX·NOR S

0
1
2
3
4

5
6
7

R+S
S-R
R-S
RVS
RI\ S
RI\S
RVS

FiVS

ALU Function Control.

RAM
FUNCTION
Octal

Symbol

Cc*

ALU Source Operand Control.
MICROCODE

ALU
Function

0caI1

Q·REG.
FUNCTION

Shift

Lood

Shift

Load

0

X

NONE

NONE

F-+O

H

1

X

NONE

X

H

L

2

NONE

F-+B

L

H

H

3

NONE

H

L

L

4

H

L

H

H

H

H

H

V
OUTPUT

RAM
SHIFTER

a

SHIFTER

RAMO

RAM3

00

03

F

X

X

X

X

NONE

F

X •

X

X

X

X

NONE

A

X

X

X

X

F-+B

X

NONE

F

X

X

X

X

DOWN

F/2-+B

DOWN

0/2-+0

F

FO

IN3

00

IN3

5

DOWN

F/2-+B

X

NONE

F

FO

IN3

00

X

L

6

UP

2F-+B

UP

20-+0

F

INO

F3

INO

03

H

7

UP

2F-+B

X

NONE

F

INO

F3

X

03

IS

17

16

L

L

L

L

L

L

Code

X= Don't cara. Electrically, the shift pin Is a TTL input Internally connected to a three·state OUtPUt which Is In the high·
im pedance stat8.
a = Register Addressed by a inputs.
Up is toward MSa, Down is toward LSa.

ALU Destination Control.
~2tOOCTAL

I81~
: Source
L 3 ALU.
Function
0

t

:0'

+

Cn - L
R PlusS
Cn=H
Cn - L
SMinus R
Cn"H
Cn= L
R MinulS
Cn=H

0

t

2

3

4

5

6

7

A,O

A,B

0,0

O,B

O,A

D,A

D,O

D,O

A+O

A+B

0

B

A

O+A

0+0

0

A+O+l

A+8+1

0+1

B+l

A+l

O+A+l

0+0+1

0+1

O-A-l

8-A-l

0-1

8-1

A-I

A-O-l

0-0-1

-0-1

O-A

8-A

0

8

A

A-O

0-0

-0

A-O-l

A-8-1

-0-1

-8-1

-A-I

O-A-l

0-0-1

0-1

A-O

A-8

-0

-B

-A

O-A

0-0

0

3

RORS

AVO

Av8

0

8

A

OVA

OVO

0

4

RANDS

AAO

AAB

0

0

0

OAA

OAO

0

5

RANDS

AAO

AA8

0

B

A

DAA

DAO

0

6

R EX·ORS

A\fO

A\f8

0

8

A

O\fA

0\f0

0

7 REX-NORS

A\fO

AV1i

a

ii

A

O\fA

0\f0

i5

z

Plus; - = Minus; V = OR; 1\ = AND; V = EX·OR

Source Operand andALU Function Matrix.

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579. PALO ALTO CA 94302

PAGE 297

The shifter is supplemented by a set of selectors
and gates between the 2901 s to implement rotates
through or around the shift link, logical shifts with
zero fill, and double-length operations as shown in
Figure 4. Additional gating supports the boundary
conditions for each of the four standard word
lengths, which may be dynamically selected in the
microcode. For non-standard wordlengths, either the
boundary conditions may be simulated in the
firmware, or some of the 2901 s may be omitted and
replaced by jumpers, but of course this only works
for word lengths which are multiples of 4, the 2901
bit size. Actually the wordlength is a problem only
in the handling of shifts which link the AID and the
Q register into a double-length register.
A two-level look-ahead carry generator is connected to the 2901 s to minimize the propagation delays
in the adder.
The four standard wordlengths were selected for
their similarity to popular existing mainframes:
36 bits is nee,ded for emulation of the 7094, the
1108, and the DEC-IO; 32 bits is required for the
360/370 and its imitations: 8- and 16-bit word
lengths are useful in partial word operations in
the 360/370, as well as in the emulation of a host of
popular minicomputers and microprocessors. The
word length selections are applied to several functions
in addition to the end-around shift links. When the
selected wordlength is less than the maximum 36 bits,
any test for sign (most significant bit), carry out,

program memory. Dynamic Address Translation
(DAT) is provided for main memory in blocks of
1024 words. There are 17 addressable registers in the
ALU and numerous other registers, memories, and
controls which we shall discuss in detail later. The
CPU is designed primarily in low-power Schottky,
although most components have been selected for the
availability of full-speed Schottky equivalents. The
memories are static NMOS, but they may be readily
replaced by high-speed equivalents as they become
available, or bypassed entirely.

ALU
The Arithmetic-Logic section of the processor is
organized around the 2901 bit-slice components (see
Figure 2). These are 4 bits wide and include 16 general registers, a "Q" register used in double-length
operations, an 8-function ALU, and an independent
shifter.
Nine bits from the microinstruction word define
the ALU operation. Three bits select one of eight
pairs of source operands, as shown in Figure 3. Three
bits select one of eight arithmetic or logical functions, and the remaining three bits determine the
destination of the ALU result and control the shifter.
Because each of these three fields are encoded, there
are very few superfluous or useless instructions for
the 2901.

SEL

Repeat @·J6, 32, 36

---.

L8
R8

FIGURE 4, ALU SHIFT LOGIC

c

FIRST COMPUTER FAIRE PROCEEDINGS

,BOX 1579; PALO ALTO, CA 94302 ,PAGE 298

, overflow, or zero measures only that part of the ALU
defined to be part of the word length and ignores the
excess.

36 BIT DESTINATION BllS

I I

,
~'
~itsLhits

.

4bits~

I!

INTERNAL BUSSES
The 36-bit internal busses route the data through
the system. These are designated "source" and "des-:
tination" in deference to their relation to the 290 Is.
The source bus drives the D inputs to the 2901s. It
also provides for a computed Jump address in the
microprogram, as we shall see in the discussion of the
2909 sequencer. The source bus is driven by one of
the following:
Memory Data input latches.
I/O data Input.
DAT Mapping RAM read data.
Decode/scratch RAM read data.
Decode/scratch RAM data register.
Microinstruction word constant field.
Byte Swapper.
Microinstruction memory read data registers.
Control bit words.
Interrupt priority encoder.
Note that only the memory data is the full bus width,
and all others drive only the lower 16 bits of the
bus or less. A more complete description of the
nature of these ..source registers will be given later.
The Destination bus is generally driven by the outputs of the 290Is. It feeds the inputs to the following registers or functions:
Main Memory Address register.
DAT Mapping RAM Data register.
Main Memory Data register. .
Decode/scratch RAM data register.
Decode/scratch RAM address.
I/O Output Data register.
I/O Address register.
Byte Swapper.
Microinstruction memory write data registerS;
Microinstruction address register.
Register Selection Latches.
.
Note here also that the bus may be wider than some
of these destinations; the excess bits are ignored.
Some of the destinations do not latch the bus data,
but are active only while the data is present. These
include the byte swapper, and the address of the
Decode/scratch RAM.

MAIN MEMORY
In order to support a 32- or 36-bit word length on
'an 18-bit main memory data bus,. a multiplexing
scheme is used to pack two memory words into one
processor word, as shown in FigUre 5. The bits were

~.
16 bits"
.~

.

16bits

r"

./

18 BIT DATA BUS

I I I
36 BIT SOURCE BUS

FIGURE 5. MEMORY DATA MULTIPLEXOR

scrambled slightly to simplify the conversion between
32- and 36-bit packing: the low 16 bits of each
memory word goes to either half of the low 32 bits
of the internal bus, and the other two bits on each
word are packed into the high four bits. Thus if 36
bits are not required, all of the components supporting this word length may be conveniently deleted
from the circuit. Two control signals are provided to
latch from the memory data bus either the low half
or the high half.
Similarly, for writing a long word back out to the
memory bus, separate controls select either the upper
or lower half.
The memory address is developed from a 24-bit
address register which is loaded from the destination
bus. The low ten bits of this register pass directly to
the external address bus when enabled (see Figure 6).
DESTINATION BliS

10

~

J

I

I,XTERNAl AIlIJRI-.SS BUS

FIG,URE 6. MEMORY MANAGEMENT

,The next ten bits serve as the address to the Mapping
RAM and the RAM outputs provide the correspondin'g ten bits of the external address. The upper four
bits pass directly to the external address bus. Within
a block of 1,048,576 memory locations (20-bit address space) 1024 1K pages may be defined. Note
that these are 18-bit words, not bytes. U sersinclined
,to access the maximum 32 megabytes are obliged to

FIRST COMPUTER FAIRE PROCEEDINGS

add some extra firmware controls to distinguish
banks, since the mapping RAM ignores the high
four bits. It turns out that the position of the pagination boundary is identical to that of the DEC-IO if it
is assumed that each word of emulated DEC-IO
memory corresponds to two words of VACuuM main
memory.
The Mapping RAM is 16 bits wide, divided into
two parts: ten bits define the actual page address,
and six bits serve the virtual memory control functions. Five of the six bits have particular hardware
significance associated with memory management;
the sixth bit is unassigned. The five functions are:
Write Protect. A memory Fault interrupt occurs
if this bit is set and a write is attempted into this
memory page.
Privileged. A Memory Fault interrupt occurs
if both this bit and the User Mode flag bit are set in
any access to this memory page.
Absent. A Memory Fault occurs on any access
to this page if this bit is set. This bit would be set
for all memory pages which do not have instances in
real main memory but only reside on mass storage.
Unreferenced. This bit is unconditionally set to
1 on every access to this memory page. It is intended
that this bit would be used in implementing LRU
swapping algorithms.
.
Dirty. This bit is set to 1 on every Write access
to this memory page. Of course a memory page
which has not been written into need not be recopied
to the mass storage in swapping.
A memory fault occurs at the time the address is
stored into the address register. This sets a condition
flag which may be tested in the microcode to abort
the memory access cycle before any actual write (in
this case of write protect), or at least before any use
is made of the read data. The memory faults are also
channelled into the priority interrupt encoder.
The memory paging RAM may also be bypassed
entirely without modification by disabling it and
using the data register directly.

INTERRUPTS

VACuuM is in complete control at all times, and all
interrupts are implemented in the firmware. Such
normally hardware-related functions as power-fail,
Halt, and Reset are actually funnelled into the interrupt priority encoder, where they may be served by
the microcode, to emulate the desired function. The
. individual interrupt conditions may be masked (disabled). Interrupt service consists of detecting the
request, either through an indexed jump with OR (in
the 2909s), or by means of a conditional branch,
then jumping to the service routine.

BOX 1579, PALO ALTO CA 94302

PAGE 299

,Other causes of an interrupt are the internal timer,
memory fault, the decoding the CPU's own I/O
address, and ten unassigned inputs.
TEST CONDITIONS

There are fifteen conditions which may be tested
for conditional branches in the microcode. These are
the latched Carry flag from the selected wordlength,
zero, sign, and overflow from the selected wordlength, a processed form of the G (generate) and. P
(propagate) signals which drive the look-ahead carry
unit to signal positive or negative result, a collected
memory fault condition, the individual memory
faults, and interrupt pending.

MICROINSTRUCTION WORD

The 64-bit microinstruction word is divided into
several distinct fields, each controlling some particular operation or function of the microengine. It is a
horizontal microprogram format, but most of the
fields are encoded to minimize the number of duplicated or useless instruction codes. Only one field of
the microinstruction serves multiple functions, and
all other fields are directly connected to the respective control logic in the processor.
The significance of the various fields is as follows:
(16 bits) Jump Address/Constant/Strobes.
This field is defined in one of three modes depending
on the use of the instruction. Where they are
required in the ALU, constants up to 16 bits may be
included in the microinstruction word. These are
intended for mask generation, fixed main memory
address assignment (as in interrupt vectors), or other
needs of the microprogram. If a constant is not
needed, the same field doubles for a Jump address
to the microprogram sequencer. This is only 12 bits,
with the remaining four bits in the field being used
to select a second ALU register. Alternatively the 12
bits are decoded to select one of 32 auxiliary strobes
and one of the 64 state latches with its data. The
strobes supply the additional selection fpr the source
. and destination busses (beyond the three bits each in
another part of the microinstruction word), as well as
the pulses to latch data off the external busses or to
set up temporary internal conditions. The State
Latches implement the selection of the word length,
the privileged access mode for the memory managernent hardware, and other infrequently changed
state conditions, as well as providing the static controls to drive the external busses, select memory
cycle controls, etc. It is presumed here that the

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579. PALO ALTO CA 94302

microengine is sufficiently faster than the external
memory that these controls will be required to
remain static for several microcycles, during which
time the processor may be off performing unrelated
operations.
(8 bits) ALU Register Select (See Figure 7)
This field, togethe; with the optional four bits overlaid by the constant, defines the selection of the
register file in the 2901 for each of the two inputs to
the ALU section of it. In many cases (including most
cases where a constant is used) only one register need
be designated, thus minimizing the impact of the field
redefinition on the microcode. The two register
selection inputs of 2901 s are each driven by fourinput multiplexors, which each in turn select one of
the two register selections in the microword or one of
two four-bit latches loaded from the destination bus
during macroinstruction decode time. Thus each side
of the ALU is fully definable, either fixed in the
microprogram, or dynamically selected as a function
of the data processed by the ALU (at instruction
decode or otherwise).
DESTINATION BUS

Select
Latch B
Latch A

MULTIPLEXOR
LATCHES

ALU A
SELECT

PAGE 300

Additional sources are selected by the auxiliary
strobes overlaid by the Constant/Jump. Address.
(3 bits) Destination Bus Selection
These three bits select one of seven Destination
registers or memories to receive the contents of the
Destination bus driven by the 2901 s. Additional
destinations are selected by the auxiliary strobes
overlaid by the Constant/Jump Address.
(7 bits) Carry Control

The 2901 adders require the definition of the carry
into the least significant bit. The carry out of the
most significant bit may be latched in the conditions
register (see Condition Control, below), but it is also
preserved for subsequent re-use in multiple-precision
operations in either its true or complement form.
The carry-in may be selected from either the true or
complement of the saved carry, or a constant one or
zero. All nine of the four-bit carry outputs from the
2901 s are made available to facilitate packed decimal
arithmetic, though they must be examined individually.
(4 bits) Shift Control
Part of the nine bits of the 2901 instruction define
the operation of the shifter (left/right/none, long/
short), and this field determines the conditions at the
word ends. Specifically, at each end of both the main
register shifter and the Q shifter is a multiplexor to
select from zero, the carry flag, and the opposite end
of either the main shifter or the Q shifter. Thus are
possible both single and double-length shifts in either
direction, either as logical, or as a circular shift
through or around the carry.

r----+-+--+--+-~ Select

ALU B
SELECT

JUMP ADDRESS

(6 bits) Condition control
Besides the four bits needed to select one of the
sixteen conditions, this field contains a bit to select
the true or complement of the condition, and one to
latch a new set of conditions or not.
(4 bits) Sequence Control
This field selects one of sixteen sequence control
functions for the 2909 microprogram sequencer.
These are discussed more fully later.

CONSTANT
MICROINSTRUCTION WORD

FIGURE 7. ALU REGISTER SELECTION

(4 bits) Miscellane'Ous strobes
Included here are the two strobes for latching the
register selections off the Destination Bus, and 1m
enable for the auxiliary strobe and state latch field.

(9 bits) 2901 Instruction
These bits were described earlier.

MICROPROGRAM SEQUENCER

(3 bits) Source Bus Selection
These three bits select one of seven source registers
or memories to drive the Source Bus to the 2901.

The sequence of microprogram instructions is controlled by the 2909, a four-bit slice having a program
counter/incrementer, a four-deep stack for subroutine

FIRST COMPUTER FAIRE PROCEEDINGS

return addresses, and selection logic for choosing
between either of them or the direct or latched inputs, as illustrated in Figure 8. The selection of the
2909 function is controlled by the outputs of a
32 x 8 PROM, which encodes the 4-bit sequence field
of the microinstruction word in the microword together with the condition tester output (see Figures 9
and 10). The following are the available sequence
operations:
Jump to 000
Next instruction
Conditional Jump
Conditional Indexed Jump
Conditional Subroutine Call
Conditional Indexed Call
Conditional Return
Conditional Loop
Start Loop
Conditional Exit Jump
Loop
Conditional Repeat
Return
Call
Jump
Indexed Jump
These operations define nearly every conceivable
combination of sequence allowed by the 2909 for
complete flexibility in microprogram sequence contrQl. Effectively, the address of the next instruction
may come from any of the following sources:
Power-up (location FFF)
(location 000)
OR of Priority encoder (4 bits)
Source Bus, which may be driven by the Decode
RAM
Microinstruction Register
Next instruction in sequence.

FIRMWARE
Particular care was taken in the design of the
microengine to facilitate the most likely kinds of
microprograms. The following is a description of
some of the programming considerations:
Instruction Decode
The Decode/Scratch RAM in the processor is intended to rapidly decode up to ten bits of an instruction
opcode, converting it into a jump address in the
microprogram. While it may have been faster to place
this RAM. directly between the memory data input
register and the direct inputs of the 2909, it seemed
better to sacrifice a cycle ot so to alJow the ALU the
opportunity to mask off unwanted bits, so that
other parts of the RAM may be used for other purposes. This also permits.the Opcode to be positioned,

BOX 1579, PALO ALTO CA 94302

PAGE 301

if need be, by shifting. If any of the 2901 registers
are to be addressable by the macroprogram, it is
necessary to isolate the register selection bits of the
Macro instruction, and catch them in one or both of
the register selection latches.
Signed Arithmetic
While it is easiest in this processor to implement
Two's Complement arithmetic, Sign-magnitude and
One's Complement may be effected with a minimum
of difficulty. Sign-magnitude arithmetic requires that
the signs be analysed and stripped off, then restored
to the result. One's Complement addition or subtraction requires two microcycles: one to do the
addition or subtraction, and a second to add in the
end-around carry. Sign extension in shifts also
requires two microcycles: one to set the Carry with
the most significant bit, a second to shift it into the
data word.
Decimal Arithmetic
The cost of providing full decimal adders or
automatic decimal correction in the binary addition
was prohibitive. Instead the intermediate carries are
made available and the microprogram must sequence
through the digits of the decimal word, testing each
carry out while analysing the bits of the sum, and
making the correction one digit at a time.
Multiplication and Division
The combination of the Q register with the main
register file in the 2901 makes these iterative procedures quite simple. The basic loop of a multiply
consists of two microinstructions: one to do the add
and/or shift, the otlier to decrement the loop counter
and iterate. This was preferred over a single microinstruction capability which would have required
additional hardware to maintain the iteration counter
with its associated test for zero. Division similarly
requires two or three cycles in the iteration. If
Boothe's Algorithm is to be used to accomodate
Two's Complement signs, one or two extra cycles
can be expected for the analysis of the extra bits.

CONCLUSION
It was the purpose of this paper to show both the
feasibility and some of the implementation details
of the Variable Architecture Computing Machine.
It promises to be an exciting new capability in small
computers.
This paper is a revision of that presented by the
author with Bob Davis of Davis Laboratories at the
First West Coast Computer Faire on April 17, 1977.
At this writing the hardware is in early prototype and
not all the bugs have been worked out.
Figures 8,9 and 10 on next two pages.

"'
L-POP
H' PUSH

FIGURE 8. 2909 LOGIC DIAGRAM

PUSHIPOP

1 ...

......

FILE
ENABLE

L= ENABLE

EHAILE
CP

""

DOWN

lSTACK POINTERJ
TWO liT
uPfOOWN COUNTER

~"o

15,

L

J
RO

REGISTER
ENABLE

CLOCK

~

rc5

.,

to.

J:dol
r-=-CP

to.

....

R2

Rl

rc5

l.b6!=D:-: r

R3

rc5

~:-:r

r-=--

-° °

0,

.,

C'

r-=--

1'r f~

0.

t-

0,
0,

"0

SI

So

.,...

S;

I ...

f=D . .

0,

03

Sf

"

So

ORO

( (

oo,~ oo,~ oo,~

Q3

01:

.......

.....

.

~

Co,,
~

FJ

Y'l

~

F2

~
~

FO

Yo

~7

Lu

~,

~7

Yl

Y2

Y3

°T

00

I

w,

I W,
I

0,

"0

0.

-+I

I

·h4MATI'lIX

OF M(MORYCHlS

I

I

I

.. _

I

r-+-+-+-I I
UO

Wn

I

~-

WAITE

(NAILE

J~

I

~

01°0

f t

Co

1
Cn

YO

:=!J

°3°:1

y,
v,

......

Q2

MICROPROGRAM

CP COUNTER REGISTER

J

"0

~-

"

'c,.

en + 4

ZERO

"

r- f---

~ S6~

W. I W, !
I
I

r-+-+-+--

READIWRITE
lOGIC

O2

01

DO

0,

~...

~
Note: Ri and D,

con~nected

together on Am2911 and OR; removed,

~

5
»

r

d
g

I
~

m

2

PAGE 303

BOX 1579, PALO ALTO CA 94302

FIRST COMPUTER FAIRE PROCEEDINGS

FIGURE 9. 2909 CONTROL
Address Selection
OCTAL

S,

So

0
1
2

L
L
H
H

L
H
L
H

3

Output Control

SOURCE FOR Y OUTPUTS SYMBOL
Microprogram Counter
Register
Push·Pop stack
Direct inputs

ORi

ZERO

OE

Yi

X
X
H
L

X
L
H
H

H
L
L
L

Z
L
H
Source selected by So S1

/JPC
REG
STKO
Di

Z

= High

Impedance

Synchronous Stack Control

H - High
L- Low

FE

PUP

PUSH·POP STACK CHANGE

H
L

X
H

No change
Increment stack pointer, then
push current PC onto STKO

L

L

Pop stack (decrement stack pointer)

X - Don't Care

So, FE, PUP

IlPC

REG

STKO

N
N+1

0000

J
J+1

K
K

Ra
Rb

Rb
Rc

Rc
Rd

Rd
Ra

-

N
N+1

000 1

J
J+1

1<
K

Ra
J

Rb
Ra

Rc
Rb

Rd
Rc

-

N
N+1

001 X

J
J+1

K
K

Ra
Ra

Rb
Rb

Rc
Rc

Rd
Rd

N
N+l

o10
o10
o1 1

J
K+1

K
K

Ra
Rb

Rb
Rc

Rc
Rd

Rd
Ra

-

1

J
K+1

K
K

Ra
J

Rb
Ra

Rc
Rb

Rd
Rc

-

X

J
K+1

K
K

Ra
Ra

Rb
Rb

Rc
Rc

Rd
Rd

J
Ra+1

K
K

Ra
Rb

Rb
Rc

Rc
Rd

J
Ra+1

K
K

Ra
J

Rb
Ra

CYCLE

N
N+l
N
N+l

5"

-

-

-

0

STK1 STK2

STK3 YOUT

End
Loop

Push IlPC

Set·up
Loop

-

Continue

Continue

K

Pop Stack;
Use AR for Address

End
Loop

K

Push IlPC;
Jump to Address in AR

JSR AR

-

Jump to Address in AR

JMP AR

Rd
Ra

Ra

Jump to Address in STKO;
Pop Stack

RTS

Rc
Rb

Rd
Rc

Ra
Ra

J
J

K

1 000

N
N+1

100 1

N
N+l

1

X

J
Ra+1

K
K

Ra
Ra

Rb
Rb

Rc
Rc

Rd
Rd

N
NH

1 1 0 0

J
D+1

K
K

Ra
Rb

Rb
Rc

Rc
Rd

Rd
Ra

-

N
N+l

1 1 0 1

J
D+1

K
K

Ra
J

Rb
Ra

Rc
Rb

Rd
Rc

-

N
N+l

1 1 1 X

J
D+1

K
K

Ra
Ra

Rb
Rb

Rc
Rc

Rd
Rd

-

o1
-

-

-

PRINCIPLE
USE

Pop Stack

J

N
N+l

-

COMMENT

-

-

Jump to Address in STKO;
Push IlPC

-

Jump to Address in STKO

Stack Ref
(Loop)

D

Pop Stack;
Jump to Address on D

End
Loop

D

Jump to Address on D;
Push IlPC

JSR D

Jump to Address on D

JMP D

D

x - Don't care, 0 - LOW, 1 - HIGH, Assume en = HIGH
Note: STKO is the locetion addressed by the stack pointer.

FIGURE 10. NEXT CYCLE REGISTER CONTROL

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 304

LARGE SCALE COMPUTERS FOR THE HOBBYIST .-..;.--,----r-:---,---.,...---,.-----.
David C. Wyland

I

Byte 1

Raytheon Semiconductor

350 Ellis St.

The problem of large memory snace access is solved
in larger machine designs of the IBM 360 class.
The IBM 360 has 32 bit registers and a 24 bit
address bus. This allows direct addressing to 29
megabytes and address calculations to 4 gigabytes
(as is useful in virtual memory annlications using
large disks). The IBM 360 is a straightforward
example of microprogrammed comnuter design and lends
itself to emulation by the hobbiest using bit slice
components and microprogram design techniques. By
virtue of its design, the IBM 360 has a unique
possibility for interface to conventional microprocessors such as the 8080, using these micro··
processors as the I/O Channel controllers. An
adval'ltag,e of emulating the 360 or a subset of it
is that there is a wealth of literature available
on this machipe, and "cross assemblers" are
immediately available.
IBM 360 GENERAL CHARACTERISTICS
The IBM 360 lends itself well to emulation by the
hobbiest. It is a multi-register, byte oriented
design and is .similar in many ways to the 8080.
The IBM 360 has 16 general purnose 32 bit registers,
a 24 bit program counter, and a 64 bit status word
which includes the 24 .bits of the program counter.
Each of the 16 general nurpose registers can be used
as an accumulator or an index register. The
instruction set is rich, including 32 bit multiply
and divide, 8, 16, and 32 bit operations, and byte
string operations; however, these instructions are
all implemented with microprogram software and any
appropriate, usable subset can be implemented.
The IBM 360 uses byte addressing, and its
instructions have 5 formats as shown in Figure 1.
Instructions are two, four, or six bytes long with
a single byte for the operation code, similar to
the 8080, 6800, and 6502, etc. microprocessors.
Data words are 8, 16, or 32 bits long, with

1
,1

Byte

31

Byte 4

Byte 5

BytiS

1

: Register Registerl
!O.....nd O","n~

'I

INTRODUCTION

Current microcomputer memory sizes anpear to track
those of minicomputers with a 2 year lag. A well
developed minicomputer system will have 64 K bytes
of memory at this time, with a few large systems
having 256 K. A well developed microcomputer
system will have 16 K, with a few large systems
having 64 K.l Because of the driving force of the
semiconductor industry, the amount of memory
purchasable per dollar increases by a factor of
four every two years, and this trend should
continue for at least two and oossibly three more
increments. 2 This means that the cost of a 16 K
memory today will.buy 256 K of memory four years
from now, and possibly a full megabyte six years
from now~ Since the range of tasks that a
computer can perform is limited by memory size,
microcomputer memory sizes will continue to
expand in the same manner as in the minicomputer
and large comouter C.a,se. This brings us to a
oroblem: all currently nonular micro'processors
. have a natural. memory limit of 64 K bytes. This
is because they have 16 bit program counters and
address registers. This can be overcome, but it
requires complex memory manning hardware and
software to allow the microprocessor to access a
larger memory space.

Byte 2 .

1

Mountain View CA 94042

Full scale processor~ of the IBM 360/370 class will
soon be desired by the serious hobbiestand are
practical due to the availability of low cost LSI
components. Machines of this class will be desired
as the natural memory size limits of current microprocessors are reached, and they can be built for a
CPU parts cost of less than $500.00

,
,

2

1

i--"--v-J--,i

Op Code
~
1

1 R2

R1

1112

,

'

,

: Register
10pelind
1 1

:

I

15,

'

1

1
1
,

I

1
7:8

:
Add....
1
O","nd
'2

I

~.:,

Op Code

1

Rl

1 X2 1

10

718

I

I

:
,

'Register Regilte"
:Oparand Opalln~
1 1
3 1

1

1112

15116

I ,

:

B2

1

~
02

1920

1
3'

,

I

I

Add....
Opellnd
2

:
1
:

I~:
Op Code

I I I I
Rl

R3

7'8

I

I ,

1

:
:
I Immediate 1
IOpelindl

I

I

1

:

I
'a

Op Code

1112

B2

10

15116
I

I t
:2

718

151,16

,

02

1920

I

'

Add....
Operand
1

B1

'01

1920

1
length:
,Operand Operand
'1
2 1

1112

1516

i
,

Add....
Operand
1

1920

:
,
1

31'I

~,

78

I

31'

Add....
Operand
2

:
,
:

.

{I

3132

3535

I

47

Figure 1. IBM 360 Instruction Formats

arithmetic operations on 16 and 32 bit words. A
set of byte string instructions are provided for the
8 bit data, accommodating strings of 1 to 256 bytes.
The single 8 bit operation code in each' instruction
specifies the instruction format and the meaning of
following modifier in bytes, resulting in a straightforward microprogram design.
I/O operations on the IBM 360 are unique: they are
performed by soecial ourpose microprocessors called
I/O Channels. Each I/O Channel is a completely
independant microprocessor system with attached I/O
devices, which IBM calls I/O Control Units. A
specially designed 8080 CPU card on an SIOO bus
would make an excellent I/O Channel, with standard
SIOO I/O devices as I/O Control Units. An IBM 360
can have up to seven I/O Channels, but tyoically has
one or two. Each I/O Channel has access to main
storage via DMA. Each I/O Channel can have UP to
256 I/O devices attached. I/O onerations therefore
specify the desired I/O operation with an 8 bit
byte to identify the channel and an 8 bit byte to
identify the device. As a result of this anproach,
there are only four I/O instructions in the IBM
360: (1) Start I/O, which sends an addreSS to the
identified I/O channel nrocessor and device. This
is the address in main storage of a string of I/O
commands for that device. (2) Halt I/O stops the
identified device, (3) Test. I/O provides a status
word to the CPU indicating the status of the
identified device, and (4) Test Channel nrovides
status to the CPU of the condition of the addressed
channel processor. If an SIOO Buss unit is used as
the I/O Channel micronrocessor, this means that all
I/O operations would be accomplished in detail by
the SIOO microprocessor software.

BOX 15/9, PALO ALTO. CA94302

FIRST COMPUTER FAlfiE PROCEEDINGS
MEMORY BUS

I

I

I

I/O
CHANNEL
CONTROLLER
(8080, !=TC.)

MEMORY
(UP TO 16 MB)

CPU

I

1

I/O
OEVICE
CONTROLLER

I

J

I/O
DEVICE
CONTROLLER

I/O
DEVICE
CONTROLLEF

Figure 2. IBM 360 System Block Diagram

IBM 360 EMULATION DESIGN
A block diagram of the IBM 360 is shown in Figure 2.
The CPU, Memory, and one I/O Channel Controller are
shown. The memory bus could be similar to the
current SIOO bus with 8 bit data and a 24 bit address
rather than the current 16 bit address.
The interface between the I/O Channel and the I/O devices can
be a standard SIOO bus. Both the CPU and the I/O
Channel access the Memory, with the I/O Channel
having priority DMA access.

PAGE 305

approximately 80 chips including 20 TTL chips and
assuming 4K static MOS RAMs for the microprogram
control store. The cost of these chips is approximately $380 at today's prices, including $160 for
the control store.
Note that MOS RAMs are used in the control store in
this case. This allows a low nrice for the control
store at some expense in speed. With this arrangement, microcycle times of 500 nanoseconds are
practical, which is also compatable with 8080 timing
and the access/cycle time of many currently available
RAMs.
Remember that the major improvement in changing architectures is in the ability to address large
memories and to perform 16"and 32 bit arithmetic in
one instruction.
RAM is used for the microprogram store to allow
development and debug of the microprogram, and to
allow microprogram extensions to the basic set.
It
also has the advantage of allowing instant design
changes. This RAM can be loaded by suitable
connection to I/O Channel Controller 0 with a corresponding special microprogram load routine in the I/O
Channel local ROM.
~icroDrogram design is straightforward: the Instruction Register is loaded, the Op
Code Decode is used to select the corresponding
microroutine, the routine is executed, and the
Program Counter is incremented in preparation for
the next instruction.
MEMORY BUS

r -------

----------------~
I/O
CHANNEL
CONTROLLER

DMA INTERFACE

A block diagram of the CPU section is shown in Figure
3.
The key items are the General Registers block,
consisting of 8 four bit slices (2901's), the Program
Counter using 2911 slices to Drovide both the counter
and register functions, the Instruction Register and
its associated data and register select multiplexers,
and the microprogram control section ~onsisting of
an operation decode ROM, a microprogram sequencer,
and the microprogram control store. This results in

ADORESS
REG.

MEMORY BUS

8080 INTERFACE

INSTRUCTION REG (48 BITS)
HI SPEED
DMA
INTERFACE

MODIFIERS (40 BITS)

OP CODE

!

L ____

OP CODE
DECODE

I--

8080

1---- - - - S100

!

LOCAL
MEMORY

-------- -------I/O BUS

Figure 4. I/O Channel Controller Block Diagram

MICROPROGRAM
SEQUENCER

TEST

~GS

!

DATA SELECT

1

MICROPROGRAM
CONTROL STORE
lK X 64

r-

REG
SELECT

--

GENERAL
REGISTERS
8 X 2901

l

~

PROGRAM,
COUNTER
AND ADDRS REG
6 X 2911

M'EMiJ'Ry &
I/O CONTRO LS

I
Figure 3. IBM 360 CPU Block Diagram

A block diagram of an I/O Channel Controller design
is shown in Figure 4.
An 8('80 is used as the
processor with a DMA interface and main storage
address register for accessing main storage, an 8080
interface to match the 8080 timing, and an 3100 bus
for the I/O devices.
The program to interpret the
360 Channel Command Words is contained in the local
memory. along with local data buffering.
SUMMARY
The concept of large scale computing for the amateur
computerist may seem astonishing; however, astonishment is the working environment in this field.
Large
scale machines of the IBM 360 class are not only
possible but, considering the low costs now possible,
highly probable.
In the process of overcoming
natural memory limitations of current microprocessors,
machines of this class provide very significant

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

performance improvement at realistic cost levels.
It should be noted that the IBM 360 design wSs chosen
for description because of its relative simplicity
of architecture and its compatability with current
bit slice components. Many will argue that other
machines, such as Burroughs 5500, etc., are significantly better in various respects, and I aDDlaud
these sentiments.
The controversy over computer
architecture is, and should be, as active in large
scale machines as it is in the microprocessor world.
REFERENCES
1.

Results of a current Homebrew ComDuter Club
survey (1/19/77):
Total systems in operation:

167 (100%)

Total with 16 K or more:

52 ( 31%)

Total with disks:

16

9.5%)

2.

This year will see volume production of 16K
dynamic RAM chips, and 64K-RAMs are in design.
IBM has fabricated CCD chips, which is the
same technology being employed in 16K RAM
design, of 500K bits.
It is therefore reasonable to project that 256K bits per chip is
practical, and perhaps one megabit per chip
may be achieved.

3.

Reference data on the IBM 360 is available
from IBM in their manual Order No. GA22-6821.

PAGE 306

HRSTCOMPUTER fAtRE PROCEEDINGS

SOX 1519,PAlO ALTO CA 94302

PAGE 301

BIPOLAR MICROPROCESSOR MICROPHOBIA
John R. Mick
Advanced Micro Devices
901 Thompson Place
Sunnyvale CA 94086

Introduction

system is controlled by a memory, usually PROM,

The MOS Microprocessor has created a computing

which contains long words called microinstructions.

revolution that brings the personal computer within the

Each microinstruction contains bits to control each

grasp of every household in America.

of the data manipulation elements in the signal.

Even more

important in bringing this revolution to reality

There are,

is the availability of large, low-cost memory chips

instruction lines, eight bits for the A and B

that are controlled by the microprocessor.

Certainly

until now, the hobbyist has concentrated on using

for example, nine bits for the Am290l

register addresses· for the Am2901, two or three bits
to control the shifting multiplexer at the end of

one of the various MOS microprocessors as the heart

the Am2901 array, and bits to control the shifting

of a home computing system.

multiplexers at the ends of the Am290l array,

In addition to finding a market in the personal

and bits to control the

register enables on the

computing field, the currently available hobby

memory address register, instruction, and various

equipment has found a very popular OEM segment in

bus transceivers.

the low-end computing systems marketplace.

applied to all the data elements and the entire system

As this

Bits in a microinstruction are also

segment of the market grows, many consultants pro-

is clocked; thus,one small operation (such as data

viding such equipment and services will soon find

transfer or a registered add) will occur.

that the MOS microprocessor
their application.

I1

runs out of gas" for

With some frustration and with

A "machine instruction" such as a mini-computer
instruction or an Arn90BOA instruction is performed

a burning desire to save their existing 8080 software,

by executing several microinstructions in sequence.

these creative engineers will seek a new hardware

Each microinstruction therefore contains not only

solution for the low-end computing market.

Three

bits to control the data hardware, but also bits to

cheers for Bipolar Bit Slice Microprocessors, such

define the location in PROM of the next microinstruc-

as the Am2900 Family.

tion to be executed.

These devices will provide

the necessary performance improvement required in
low-end systems and yet because of their rnicroprograrn-

An 8080 Emulation

ability will allow for the emulation of each·and
~1icroprocessor.

every

Once the small system designer realizes that
his MOS microprocessor has "run out of gas", he will
soon realize that an emulation is in

What Is a Bipolar Microprocessor
Most small minicomputers today are being designed
us~ng

order~

Suddenly,

a whole realm of trade-offs are faced in the design

a technique called microprogramming.

In micro-

programmed systems, a large portion of the system's

of such an emulator.

In addition, once the hobbyist

realizes the flexibility of a microprogrammed microprocessor, he will become intrigued with the new

control is performed by a PROM rather than large

"hands on" capability at his disposal.

arrays of gates and flip-flops.

Wyland has suggested in his paper for this session,

This technique

frequently reduces the package count in the control

As Mr. David

why not emulate an IBM 360 for your home hobby computer.
The intent of this paper is to give the hobbyist

section of the minicomputer and provides a highly
ordered structure in the controller, not present

audience in attendance some feel for the capability

when random logic is used.

as well as the complexity of the emulation.

Moreover, microprogramming

makes changes in the machine instruction set very
simple to perform.

Figure 1 illustrates a typical

system architecture.
system.

There are two sides to the

At the left side is the control circuitry;

at the right side is the data manipulation circuitry.

The

BOBO microprocessor has been selected for this
example.

An 8080 emulation actually consists of

emulating more than just the 8080 device itself.
In addition to emulating the 8080, the design must
also emulate the 8228, and a portion of the 8224.

The Am2901 Microprocessor devices contain the ALU,

Thus, the emulator design has the same input and

scratchpad registers, data steering logic

output lines and controls as the 8080/8224/8228 set

(all

For example, the emulation has a

internal to the Am2901's), plus left/right shift

of devices has.

control, and carry lookahead circuit.

16-bit wide address bus, a 16-bit wide data bus,

Data is

processed by moving it from the main memory
shown)

(not

into the Am2901 registers, performing the

the control outputs
WAIT,

(MNR, MMW, lOR, lOW, HLDA,

IE), and the required control inputs (HOLD,

required operations on i t and returning the results,

READY, HIT, RESET).

if required, to main memory.

was decided that the 8080 emulator should use a

Memory addresses may

After considerable study, i t

also be generated in the Am290l's and sent to the

16-bit wide ALU that would be realized using four

memory address register

Am290l Four-bit Bipolar Microslices.

(MAR)·.

In this diagram,

Their internal

the Arn2930's are used to perform this function.

registers were assigned as the B080 registers, includ-

The four status bits from the Am2901 ALU most signifi-

ing the program count and the stack pointer.

cant device are captured in the status register

four Am290l's are grouped into two pairs, a high-

after each operation.

order pair and a low-order

pair~

The

This representation

The logic on the left side of the Figure 1

enables an easy access to the 16-bit double length

drawing is the control section of the microprocessor.

registers BC, DC, and HL, as well as the PC and SP

Here, the Am2911 and Am29811 are used.

registers, which are also 16 bits wide.

The entire

Since the

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 308

8080 utilizes an 8-bit data bus and most of the

emulation of existing microprocessors to improve

internal registers can be used as an 8-bit working
register, it is necessary to have easy access to

their performance while maintaining compatibility
with existing software. A more exciting application

all the registers atothe lower eight bits of the ALU.

of Bipolar Microprocessors in the hobbyist arena

This is accomplished by mirroring the register pairs

lies in the challenge of designing new machines with
large scale computer capability for home use. For
example, why not dedicate microcode for the basic

as CB , ED, and LH, as adjacent pairs of registers

in the Am2901. Then, when single 8-bit wide operations
are performed in the low-order Am2901's, the highorder Am2901's are updated by using a byte swapping
technique.

This is usually performed during the

fetch of the next instruction, and therefore does

machine instruction set, then add microcode for

floating point capability, then add microcode for
a higher level language such as FORTRAN, then add
microcode for .

not slow the emulator in any way.

The microprogram portion of the 8080 emulator
consists of a microprogram memory with 56-bit wide
words.

The total amount of microcode required to

emulate the 8080 and its associated devices is 352
words.

The microprogram control unit is a classic

controller using three Am2909 Microprogram Sequencers.
The design was performed to demonstrate the feasibility and ease with which an MOS microprocessor

can be emulated.
The major purposes of the emulator design was

to demonstrate the use of the Am2900 Family components,
to demonstrate microprogramming, and to show the use

of the AMD microprogramming assembler, AMDASM.
Although speed was not the first consideration in
this design, the emulator needs about half the number
of clock cycles as does the 8080 and it can run with
a maximum clock frequency of approximately 5MHz. This
means that a speed improvement of about 3:1 to 5:1
is realized when compared with a standard 8080/8224/
8228 microprocessor chip set.

Additional speed

improvement could be realized by performing overlap
fetch of the next machine instruction.

In total,

the design utilizes circuits to implement the full
chip set capability.
Additional Emulation Benefits
One of the key reasons for emulating an existing
microprocessor is to save existing software.

However,

one of the major benefits from such an emulation

results from the ability to implement new machine
,instructions not currently found in the MOS microprocessor.

For example, the 8080 emulator can be

microprogrammed such that new instructions can be
performed.

For example, additional microcode can

be written so that such machine instructions as
multiply, divide, square root, and so forth, can
be executed.

This can save a considerable number of

machine instructions, a large amount of software,
and can improve the performance of an MOS microprocessor

a hundred fold. It is this microprogramability
of new instructions that provide the emulator
designer with the challenge. The advantage, of course,
is that new software can take advantage of these
new machine instructions, and significantly increase

the throughput of the machine. Still, the old software
is saved and can be executed on the microprogrammed
emulation without any modification.

Summary
The purpose of this paper has been to introduce
the hobbyist to the challenge of microprogrammed
machines in home computing as well as jts applicability
to design for the small OEM user. One of the uses
for such microprogrammed microprocessors is the

JRM/nls

. . .

FIRST COMPUTER FAIRE PROCEEOINGS

MICROPROGRAMMING FOR THE HOBBYIST

BOX 1579, PALO ALTO CA 94302

PAGE 309

An 8-bit microprogrammed computer can be constructed as shown below using
as little as thirty ICs_ A l00nsec microcycle is easily achievable_ Instruction decode is accomplished by direct vector from 8-bit macro instruction into microspace_ Dynamic RAM controls signals RAS, CAS and WRITE are under direct
microprogram control.

John Birkner
Monolithic Memories

OUTPUTS

INPUTS

Sunnyvale, California
In recent years, the MOS microcomputer revolution has made hobbyist computing a reality_ While all ofthe excitement and attention has been focused on the
microcomputer, an evolution in microprogrammed systems has been quietly
taking place_ The continued increase in MSI/LSI functions, the availability of
larger and larger PROMs and the rapid price attrition of both has slowly transformed virtually all new high performance system design to microprogrammed
techniques_ What the hobbyist will be surprised to find is that state-of-the-art
microprogrammed hardware design is well within his capability_ In fact, micro-

16Kx8

OYNAMIC
RAM
(41161

program hardware design has become a trivial task of interconnecting building
blocks_

1K PROM
price per IIIit Diy 100-999

50

~

......
....
8

ENABLE
80
CLOCK CONTROLS

40
30

20
This computer can read a keyboard, control a floppy disc and drive a television

10
1912

raster scan, all under microprogram control.

1973

1974

1975

1976

YEAR

The PROMs
8ipolar PROMs are available in 4-bit-wide or 8-bit-wide organizations_ They
range in speed from 45nsec to 100nsec, and in size from 1/4K to 8K_ Organizations are as follows:

Advantages
Performance is the name of the game in microprogrammed systems_ The micro4-BIT-WIDE

controlled system executes many operations in parallel across a wide microinstruction (24 to 64 bits) offering higher speed than the fixed instruction microcomputer_
512X4

Where blazing speed is not required, speed can be used in place of complexity_

256X4

For instance, reading a keyboard, handling floppy and also a CRT can be accom-

~D··

plished in sequential fashion by a single processor as opposed to individual processors and controllers_

AS

A7

A4

E2
fi

A3
Ao

Disadvantages
There is very little software available for microprogrammed systems_ Until inex-

01
Al
02
A2
03
6N0 8 9 04

1024 X 4

"0'·

AS
A7
A,
A8
A3
fi
AD
01
Al
02
A2
03
GNOl904

pensive microcode assemblers are available, the hobbyist will have to homebrew

AS
As
A,
A3

Ao
Al
~
E2
GNo 9

2048X4

18 Vee
A7
AS
Ag
01

Oz
D3

0,

10

E1

his own_ Microcode assemblers are available, however, on many timesharing computer services_ Monolithic Memories provides MICROAIDTfor its 6700 series
products, while Raytheon provides RAY ASM for its 2900 products_
The Microprogrammed Computer

FEATURES

The microprogrammed computer is composed of five basic elements:
•
•
•
•
•

Control Store PROMs
Data Loop
Control Sequencer
Program Store
I/O

•
•
•

High Speed
High Density
Compatible Pin Configurations
for Upward Expansion

•

Used in Microprogram Stores

AS 1
AS
A4
A3
AD
Al
A2
AID
GNo 9

18 Vee
A7
A8
Ag
01
02
03
04
10

r;

BOX 1579,PAlO ALTO CA94362

FIRSTCOMPlJTERFA1REPROCEEDlNGS

PAGE 310

8-BIT-WIDE
!:r

'D~
r;

..
..

A.

A2

..

"
..

01

E1

Oz

0,
0,
0,
110,

lit
07

•

Da

.... ..

'D~ 'D~ 'D~

0,

Da
0,

0110'

256 X 8, 512 X 8,
1024 X8

I024X8

512X8

256X8

UX8
A1

AI
..

Do

0,
... "

"7

At
At

§

"

~

..

"At

"

r;

...

0,
0,
0,

"'0,D

Os

DZ
03

As

..

AI

"

~

D2

0,
0,
0,

0;
0,

11101.

11

'7 ,

"Au
0,

GND 11

'7

Ii

05
12 D.

At
As

AI

Oz

0,
GNO 12

A
FILE
ADDRESSES

24 Vee
ABarRC

."

ABotNe

Ei

"

DATA IN

0,
07
0,
O.
13 D.

I - - - , } STATUS OUTPUTS

FEATURES
•
•

Convenient 8-Bit Format
for Byte-Oriented Applications
Used for:
-

Program Stores
EPROM Replacements
Table Look·ups
Character Generators

CONTROL
INSTRUCTION
ALU
CONTROL

The Sequencer

Choosing between 4-bit-wide and 8-bit-wide PROMs is a multi·variable problem depanding on some of the following:
•
•
•
•
•
•
•
•
•
•

Word Depth
Access Time
Package Size
Cost Per Bit
State of the Art Bit Densities
Power Consumption
Multiple Sourcing
Programming Yields
Access to PROM Programmer
Upward Socket Compatibility

The microprogram control memory address is driven by a sequencer which
can be as simple as a 74S163 4·bit counter or as complex as the 67110 microprogram controller. Other sequencers include the AMD 2909/11, the T .1. 74S482,
the Signetics 8X02, the Intel 3001 and the Fairchild 9408. The Monolithic
Memories 67110, shown below, is a complete controller in that it provides a
loop counter, shift linkage, status monitor, branch control and one level of
subroutine stack.

SEGMENT
COMPLETE

SUBROUTINE
MODE

INSTRUCTION

CONTROL

The Data Loop
The data loop can be as simple as an ALU and an accumulator. The most popu·
lar ALU is the 74181, although the 745381 is gaining. The 74181 is a 4-bit ALU
in a 0.6 inch wide 24'pin package and contains all the function combinations
you will ever need. The 745381 contains a reduced number of functions in a
20-pin, 0.3 inch wide package. AMD offers an important variation of the part,
which outputs CARRY and OVR for use as the most significant chip. The 745281
is a 24·pin ALU with an Accumulator/Shift Register on board. An "LS" version
is also available. This part efficiently compacts the basic ALU, accumulator and
shift functions required by a medium performance data loop and, thus, is a
versatile part for the microprogramming hobbyist.
The bit slices offer microprogrammers an ALU, accumulator/shift register and a
multipart file in a single 40-pin package. The Monolithic Memories' 6701 and
the AMD 2fOl are now in the $20 range, well within the hobbyist's reach. The
Texas Instruments 745481 should be available soon. Shown below is the Mono·
lithic Memories' 6701.

LOOPS
COMPLETE

LOOP
COUNTER

DATA IN
CONTROL
MEMORY
ADDRESS
END OF
CONTROL
MEMORY

SEQUENCER

BOX 1579, PALO ALTO CA 94302

FIRST COMPUTER FAIRE: PROCEEDINGS

PAGE 311

Interface

What's Coming?

Buffers like the 745240 and 74LS240 family provide the drive and isolation
necessary for interconnecting microprogram building blocks together. Registers
and latches are also necessary to hold data in time as instruction operands, address operands or simply data in transition. Shown below are the octal butters,
latches, and registers in their convenient 0.3 inch wide 20-pin skinny DIPs.

New PROMs, FPLAs and RAMs promise to make microprogrammed architecture
increasingly competitive in medium and high -performance computing. Shown
below is a Registered P ROM which saves space and power while increasing speed
in pipelined microprogram control stores.

ADDRESS
jALBUFFERS

54/74LS244
54/745244

54/74LS241
54/745241

54/74LS240
54/74S240

CLOCK

PROM

ENABLE ----,

REGISTER
OCTAL LATCH
54/74LS373
54/745373

OCTAL REGISTER
54/74LS374
54/745374

3-STATE DRIVERS

OUTPUTS

RAMs in PROM pin-outs like the Intel 2114 and the T.I. TMS4045 will make
writeable control store convenient for the hobbyist.

A spiffy new octal tranceiver, also in the skinny DIP, promises to be a big winner
.
for bidirectional data buffering.

B3

B4

85

86

87

88

A6
A5
A4
A3
Ao
A1

lS

A7
AS
Ag
01
02
03
04

C'I
In
C'I
CD

:E

:e

~

E2
GND 9

Vee

10

..
As

'.

..

"
Ao

"
"

co

1'°2
11°3
11°4

WE

E1

A concept of "Structured Logic" is beginning to form which embodies the principle of constructing ,computers entirely from RAMs, PROMs, FPLAs, Registers
and Buffers. This structured approach to architecture will offer more flexible
and more powerfu I solutions, not only to industry, but to hobbyists as well. And
after all, wouldn't we all like to be the architects of our "home-brew" computers?

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

HAM RTIY: ITS EVOLUTION AND FUTURE
Robert C. Brehm
Promedics Data Corporation

Box 7454
Menlo Park CA 94025
Today's RTTY amateur has available a choice of equipment and
techniques that allow him to develop sophisticated radioteletype and computer linkages which were only dreamed of
several years ago. Moreover, with the ever increasing usage of
RTTY on FM repeater networks across the country, the feasibility for radio-linked computer time sharing is not only
plausible, but is on its way to becoming a reality.
Today I would like to provide you with a general introduction
into amateur RTTY by describing the chronological background of
RTTY developments over the past 15 years which lead up to the
current state of the art using microcomputers. Then, if you
will allow me the liberty of looking into my crystal ball, I
will try and give you a prediction of what the marriage of
microprocessors and RTTY will bring in the future.

PAGE 312

On the receiving end of things, both FSK and AFSK generated
signals sound exactly alike, and it is unlikely that you could
tell them apart. On VHF, the audio tones are usually fed into
an Am or FM transmitter using either 850 HZ or 170 HZ shift,
depending upon which shift is being used in the particular area.
The similarity between AFSK signals used in RTTY equipment
is similar to the AFSK used in most computer-telephonemodem links. These similarities a.~ ~nown in Table I.
Now that you have a general idea of how RTTY is generated
and where it is used, let's take a look at some of the conventional equipment used in amateur stations.
RTTY Equipment
First let's look at a block diagram of a typical RTTY
station.

Amateur RTTY - What is it?
In order to understand amateur RTTY it is helpful to understand where it fits in to the amateur radio operator's reper)O·''I1I~
toire of transmission capabilities. The FCC allows hams to
transmit information via morse code (CW), amplitude modulation
(AM), single sideband (SSB), frequency modulation (FM), RTTY,
Slow Scan TV, and several other more exotic methods not commonly
In this setup, the receiver detects the signals, and
used today. As you can see the amateur has a variety of methods converts them to audio signals, and feeds them to the RTTY
to communicate with his fellow man. When compared to the total
convertor or Terminal Unit (TU). The convertor takes the
ham population, RTTY hams account for ·only 2-3% of all operators, signals, processes them through tone selective filters or a
phase locked loop system and finally modulates or keys a high
yet this number has grown rapidly in the past year and should
reach 10-15% (20,000 to 30,000) by 1980.
voltage 120VDC "loop" adjusted for 60ma of current required by
In addition to the variety of operating methods available
the selector magnets of the teleprinter. The keyboard of the
to amateurs, there is a large spectrum of frequencies which can
teleprinter is also connected in series with the loop supply;
be used for transmission. RTTY activity has traditionally used
consequently, whenever a key is depressed, it breaks the loop
80 meters (3.6 MHZ) for medium distance communication out to
in a predetermined sequence, which causes the printer to print
about 800 miles; it has used 20 meters (14.1 MHZ) for worldwide
that character. In addition, when the transmitter is on,
communication, and 2 meters (146 MHZ) for local and repeater
depressing a key will cause the BAUDOT encoded character to be
RTTY work. More recently 2 meters has also been used for RTTY
transferred into a FSK generator which can modulate the transtransmission through the amateur radio satelite, OSCAR 6 which
mitter.
revolves around the earth.
Transmitting and receiving are conceptually easy to understand although, depending upon the accessories that are hooked
As you can see, RTTY transmission takes place in two freinto the system, the switching circuitry can get quite compliquency spectrums, HF or frequencies below 30 MHZ and VHF or
cated.
frequencies above 30 MHZ (specifically 146-147 ~ffiZ). The
Many amateurs started with simple setups as shown in Figure
methods of signal generation and reception are slightly dif1; however, they soon learned that adding accessories could
ferent for VHF and HF although the end result is the same.
significantly
enhance both receiving and transmitting operation~
Below 30 ~ffiZ, the primary method of signal generation is called
Early in the RTTY game, most additions to the RTTY station were
frequency shift keying or FSK. This method involves changing
the carrier frequency each time a mark or space pulse is encoun- mechanical in nature. Paper tape perforators and transmitter
tered during a character's transmission. Using FSK, a constant distributors (tape readers) were probably the first added luxfrequency carrier is transmitted for a mark pulse, with a space uries. These items allowed you to punch a tape for transmission
pulse causing the carrier to shift down by 850 HZ. More recen- later at full speed. It is common practice to punch a tape
tly, common practice has changed the shift to 170 HZ due to the while the other person is sending to you, so that when he is
done, you can immediately start sending back to him. Another
increasingly crowded ham band signals which cause interference
within the wider 850 liZ shift. The other common method of RTTY mechanical feature which proved to be quite popular was the
stunt box available in the Model 28 machines. This mechanism
transmission on HF utilizes audio frequency shift keying, or
allowed the printer to decode or "recognize" certain characters·
AFSK. With this method, a pair of audio tones is fed into a
single sideband system, utilizing a well-suppressed carrier and or combinations of characters in such a manner that a switch
closure (or opening) could take place. This feature, in conoperating in the lower sideband mode. The shift of the audio
junc~ion with an option called answer-back (part of. an item
tones, usually generated with 2125 (mark) and 2295 (space) HZ
call~d a WRU or who are you?), allowed a person's machine to
signals, again presents a 170 HZ signal to a copying receiver.
answer or transmit back a programmed message when queried with
a preprogrammed recognition sequence. Some Model 28s are even
Computer Communication equipped with back space and reverse line feed so you can "roll
RTTY Communication
up" what has already been typed. Imagine coming home to a
Transmission
Ether/Radio waves
Hardwire/Audio Signals spindle of paper all rolled up and printed!
Media
Many of the above mechanical features were coupled with a
11 0, 300 BAUD or
Speed
45.5 BAUD or 5
very popular option called autostart, which is short for autochars/sec commonly
10 to 30 chars/sec
matic starting. This feature allows your TU to be activated by
called 60WPM
a steady mark tone lasting a given duration (usually about 3
seconds or more). Although employed to a limited extent on the-···
Code
5 level BAUDOT
8 level ASCII
low bands, autostart TTY is used quite extensively between club
32 lower case "letters lt 128 characters
or net members using the VHF bands for local communications.
32 upper case "figures" commonly used
The principle involved with autostart is simple. As an exampl~
suppose you have a receiver monitoring your favorite channel,
Frequency
850 HZ 2125, 2975 HZ
200 HZ 1800 through
and while you are out at a swapmeet, ·one of your friends calls
Shift
signals or
2200 HZ
you on the radio to leave you a message. When he transmits a
170 HZ 2125, 2295 HZ
Half or Full Duplex
continuous mark tone for 3 seconds, your TU responds by turning
signals
your printer motor on and subsequently prints your friend's
Half Duplex only
message and shuts itself off again ... all automatically. When
... - - '.. _- ._ ..
you arrive home, the message is there waiting to be read. This
Communication Characteristics of
feature is obviously very useful, and many amateurs monitor a
RTTY Versus Computer
given frequency 24 hours per. day in order to be in constant
Table I
communication with their friends.

_---

FIRST COMPUTER FAIRE PROCEEDINGS

TIle 1960' s
TIlese mechanical marvels were quite the state of the art in
the mid and late 1950's. But around 1960, with the everincreasing use of the transistor by amateurs, many of the
functions previously performed by mechanical means were being
performed by electronic circuits.
Probably one of the first mechanical items to give way to
electronic circuitry was the ubiquitous polar relay. TIl is
relay was used in the polar circuitry of terminal units where
current flowed in one direction for space and in the opposite
direction for mark. TIlus the relay could key a local loop
supply for a teleprinter when driven by tone decoders. TIlis
electronic "advancement" in modern technology, utilizing such

components as SCRs and switching transistors, got rid of noisy
clicking relays which often got out of adjustment or were
plagued with dirty contacts. More importantly, however, it
also sparked the beginnings of the evolution of solid state
technology in RTTY aoolications.
Several other changes took place during the 1960's. Tube
terminal units became more sophisticated, then finally gave way
to solid state equivalents during the late 1960's. AFSK generation was upgraded to crystal controlled oscillators using
digital divider ICs for increased accuracy. Mechanical stunt
boxes now had digital equivalents that could recognize selected
character strings during a transmission. All in all the evolution that took place in the 60's was not revolutionary, in
that no real new operating techniques or innovations of technological brilliance took place. The new circuitry developed
used state of the art components but the operational methods
used by RTTY hams didn't really change.
TIle 1970's

BOX 1579, PALO ALTO CA 94302

PAGE 313

a comparison matrix is shown in Figure 4.
1970

Mainline ST-3, 4
~Iainline ST-5

VHF TUs of modern design

1971

Mainline ST-6
Digital MSG gen.
Speed Converters
Digital AFSK gen.

First g·ood low band TU

1972

PLL TU-VHF
Audio Digital synthesizer

1973

Hal video display
Digital keyboards
Morse to RTTY Converter
Digital autostart

1974

Prom Memory for RTTY ID
RTTY MSG gen.
Using UART

1975

MITS introduces Altair
Programmable RAM MSG gen.
UT-4 (FIFO)
PLL TU
Solid state·TTY keyboard
uP control of RTTY STN

1976

DT-600 Digital ST-6
Hal MP unit
Digital Time Clock
BAUDOT/ ASC II
Digital Selcals

Digital accessories come into
wide use
PLL technology used

Morse to RTTY - uP
ASCII/BAUDOT
WACC Winner - RTTY Station

TIle 1970's have brought us not only a digital revolution
in consumer and industrial products, but also in RTTY, both for 1977
RTTY used with uP
high frequency and VHF application. Figure 2 illustrates this
Intelligent terminals
·evolution in both areas of RTTY operation.
uP control of repeaters
In 1970 the ST-3 and ST-5 terminal units were pioneered by
uP controlled RTTY stations - wide use
Irv Hoff. Although designed primarily for VHF, they have been
Computer oriented repeaters with A/D converters for
used extensively for HF also. In 1971 the ST-6 was born. TIlis L-______~t~im~e~_w~e~a~t~h~e~r~~t~e~~~e~r~a~t~u~r~e~~e~t~c~.~______________________~
TU represents a solid state attempt to incorporate the circuitry
Figure 2
developed in advanced tube TU's in the late 60's. It incorporated mostl)' op amps of the 709/741 series. Even today this
TU is the most popular and widely used on the HF bands.
Very few major technological differences have taken place in
1?41 S1STtrM
HF RTTY TU technology since the advent of the ST-6. ~~st
changes have involved accessories which interface with the ST-6
and provide more convenient operation. In 1971 speed convertors
using discrete components were introduced, as were preprogrammed
digi tal message generl.tors. In 1973 a crystal controlled
digital audio synthesizer was described for AFSK generation
with SSB transmitters. 1973 also brought several new accessories to the RTTY community, including video displays for
BAUDOT, digital keyboards, digital autostart units, and Morse
code to RTTY converters using discrete TTL circuits. 1974 was
also a good year for technological developments in digital HF
RTTY and the introduction of UARTs in RTTY circuitry. The
Phase locked loop also became popular in several TU designs
taking circuitry ideas modeled after the PLLs used in computer
modems. It appeared that technical developments were really
beginning to accelerate, but little did anybody know what was
to happen next.
It was in 1975 when RTTY technology really exploded, just
shortly after the introduction by MITS of the Altair 8800
microcomputer. Programmable logic had now been introduced into
RTTY and this would prove to be the most revolutionary happening
in RTTY since its beginning in 1951.
In 1975 several magazine articles described programmable RAM
message generators. Also UARTs and FIFOs were becoming very
popular. In late 1975 we began to observe the influence of
microprocessors as evidenced by several articles which outlined
microprocessor controlled RTTY stations both on VHF and HF.
TIlis exciting trend has continued to accelerate at an
increasing pace as the availability of hardware and software
~ys t~m I>iurrum
technology becomes more widespread. Hal Communications has
to'ir.uI'C 3
introduced an 8080 based RTTY terminal; digital Selcal circuits
are springing up everywhere; ASCII to BAUDOT and BAUDOT to
ASCII code converters have been written up in several magazines
TIle Future
with commercial units now available; and, to top it all off,
the grand prize winner at the World Altair Computer Converence
OK, so what's left, you may ask. If you let me take the
was a computer controlled RTTY station! We have certainly come
liberty of gazing into my crystal ball, here is what I see.
a long way from the days of polar relays and tube converters!
First, I can see quite clearly the ever-increasing use of
So here we are in 1977, the year of the microprocessor in
micros like the 4040, 8008, 8080, 6800, SC/MP, Z80, etc., in
RTTY; where to go now? Let's look back for a second and comamateur designed circuits dedicated to RTTY. By late 1977 the
pare a typical advanced RTTY station of 1976 with an advanced
majority of RTTY amateurs should have some type of micro in use
station in 1967. TIlese systems are illustrated in Figure 3 and
in their station, even if only to look at! Many of the micros

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

will be used to provide intelligent terminals which can be used
for text editing before transmission and for preparing data for
storage on a tape cassette.
It is also reasonable to expect microprocessor controlled
radio repeaters in 1977 for both RTTY and voice appl ications.

PAGE 314

resources. In addition the repeater's capability to cover a
large area could foster dissemination of software and computer
techniques at a nominal cost.
As an adjunct to the above system, it is also possible to
foresee the linkage, via radio waves and phone lines of computer
repeaters in such a manner as to allow message switching and

1977 Station

1967 Station

Terminal Unit
(RTTY Convertor)

Solid State with
analog and digital
circuitry." $300

Keyboard

Electronic with
ASCII Serial
output (multiple
speed).
$100

Printer

Video with 16x64
or 12x80 format
$200
ASCI IOfhermal
printer
$700

Operating System

Computer programs,
RAM memory, text
editor, real time

clock
Data Storage

$800

Floppy discs,
cassettes
$700

transmission of information across the United States. Thus you
could turn on your 5 watt transmitter, type in an appropriate
Advanced tube design
destination code and talk with another ham 3000 miles away!
(home brew)
$150
Obviously FCC approval is going to be required to implement
these ideas, but that confirmation will come providing there are
enough concerned people behind it. And that is where all of you
Michanical-probably
come in! If you are interested in what the future may bring in
part of model 28.
the RTTY and microprocessor world of amateur radio, join a radio
(one speed)
club with a license training program, pass you test and get on
the air! There are many RTTY repeater members around the country
and most of them would be more than happy to help you get on the
Model 28 printer $500 air - just ask one!
If you wish to learn more about RTTY try reading 73 Magazine
which has had more RTTY articles over the last 10 years than any
other amateur radio magazine. Other sources of information
include Kilobaud, Ham Radio Magazine and the RTTY Journal. But
perhaps the best way to learn about RTTY is to get on the air,
Mechanical switches,
practice the technique, become an expert and then you can give
operator memory, log
the next evolution of RTTY speech in 1978.
book, stunt box,
After the speech a short demonstration of RTTY operating techmechanical clock $50
niques using microcomputers was given by David Alterkruse, W6RAW.
5 level paper tape,
reperforators, transmitter distributers

$300
Morse Code Rx/Tx

Reception and
generation under

Operator ear, mechanical or electronic

program control
up to 1000 WPM

key-up to 60

Software

Greeb Text EditorDoctor Dobb's
Journal
ASC II to BAUDOT
BAUDOT to ASCII

Op.crator memory

System Cost

Full System $2100
Limited System
using BAUDOT I/O
$1100

$1100

WP~f.

$100

Systems Comparison Matrix
Figure 4
These will be interfaced with A/V converters which could give
time, temperature, weather reports, etc., when certain access

codes are received by the computer. In addition, I foresee
more sophisticated remote monitoring of repe.ater technical
parameters, where voltages, temperature, and currents are trans-

mitted in ASCII, when inquiry codes are received by the repeateL
I also can see the increased use of magnetic tape and floppy
discs. These will be used for contest record keeping, QSL
info., magazine indexes and personal accounting records. Also
in 1978 "canned" software for your favorite computer routines

will be readily available from your ham or computer dealer. In
addition, with the wide spread use of video discs and audio
terminals, more computer amateurs will be transmitting and
receiving video messages and symbols. Image processing and
computer graphics will be fully developed on RTTY frequencies.
But perhaps the most exciting event to take place will be the
integration of VHF repeaters and computers.
I foresee the wide spread linkage of computers with radio
repeaters for computer time sharing. Such a system could be
structured as shown in Figure 5.
Each remote user would have a transmitter/receiver and terminal. He would have a choice of 5 transmit/receive frequency
pairs to use for conversation with the computer. If one was
being used, he could use another or if all were in use, he
would have to wait until one was free. This system is analogous to the time shared computer networks operating around the
country which have multiple phone lines for input.
The computer could use the recently introduced 16/8 microprocessor board which allows real time hardware multiprocessing
so that several users could be executing programs simutaneously
and the computer could be transmitting and receiving on all
channels simultaneously. In this manner, many people could use
the capabilities of a computer which has a full complement of
accessories without having to settle for a machine with 1imited

~'igure

5

FIRST COMPUTER FAIRE PROCEEDINGS

GENERATE SSTV WITH YOUR SWTPC 6800
MICROPROCESSOR
Clayton W. Abrams, K6AEP
1758 Comstock Lane
San Jose CA 95124

gram performance exceeded my expectations; however, it had one

large drawback. The picture dot patterns had to be entered a
byte at a time into the main memory, which was a big job. This
article describes my third program which automatically loads
memory and generates SSTV pictures.
I think a short technical discussion about how I accomplish
this is in order. I first decided on a few basic specifications which were taken from my W0LMll keyboard design which were:
l.

2.

3.
4.
5.

A SSTV picture will contain 30 ASCII characters in a
5 x 7 dot matrix pattern
A SSTV picture dot will consist of three scan lines
(vertical) and 1 dot (horizontal)
A SSTV picture will consist of 117 scan lines
A SSTV scan line will consist of 7 eight bit bytes (6
data, 1 sync)
A SSTV picture in the SWTPC 6800 memory will consist of
819 bytes (117 lines x 7 bytes/line).

LOCATION

BYTE

1047

20
50
88
88
F8
88
88

I

It became obvious to generate SSTV I must

first slow the microprocessor way down to accomplish the proper
timings. I started by writing a short feasibility program
which generated timing pulses and video in the proper relationships. I fed these pulses into a SSTV modulator which uses only
three IC's and is external to the SWTPC 6800 system. This pro-

PAGE 315

(ASCII) were coded in this program due to their uncommon usage.
The translate table in this program allows for expansion of 13
dot patterns without rewrite of my generator routines. The
reader can code any of the patterns to suite his needs. In
order to accomplish this task I must explain in detail how the
various tables are coded.

Soon after completion of my SWTPC 6800 System I thought now
what can I do with it? Since my hobby is ham radio coupled with
an interest in Slow Scan TV (SSTV) the answer was obvious. I
decided to start in a small way with a program to load my W0LMO
SSTV keyboard (ref 1). This project was quite successful, and
I next attempted a more ambitious one to generate SSTV in the
CPU main memory.

BOX 1579. PALO ALTO CA 94302

1040
Figure 2.

Oat pattern and hex representation for the letter A

As you can see, you are only limited by your imagination. With
a little ingenuity a set of graphic-like dot patterns can be
created. The translate table in memory is contiguous with the
dot table. The low order address of the translate table is
equivalent to 6 of the 8 bit ASCII code. For example, take the
letter A. The ASCII code for A is 41 hex. If you strip off the
8 and 4 bits the code remaining is 01 hex. If you look in
translate table location 1001 (hex) you will find a 47. This
value means that the address of the dot bytes for A are located
at 1047 in memory. You will find in the translate table (1000
to 103F) a number of 04 characters. This value is a blank
character and is placed on numbers with ASCII codes between 21
and 20. The se 13 characters are rarely used so we save them
for use in calling special graphics. The character codes
(ASCII) 5B-SF will load characters with an inverted letter V
(see photos). You now know how the program operates, now let's
use it.

As you can see from these specifications the memory requirements
The program makes a few assumptions about how your 6800 sysare quite negligable and my first feasibility program fits
tern is configurated:
- The
easily into the 4k of memory provided with the basic SWTPC 6800
801C)PIA card is in location 7 (address
system.
Well we now have a set of specifications, now how is the

- MIKBUG or equivalent is used, with the
following:
E07E output a string of
characters
EIOI output a single
character
EIAC input a single character

programming accomplished? The only programming language which
makes sense in this application is assembly language. The 6800
assembly language instructions coupled with the use of MIKBUG
makes programming the SWTPC 6800 system an easy task. My first
job was to flow chart the entire program, which is a highly
recommended practice for anyone attempting such a project.
Now lets examine in general how the seven picture bytes are

used to generate the various sync pulses or picture dots.
100

- At least 8K of memory

I 00 I FO I 80 I 00 I 00 I FF I

- PIA bit 0 used for data pulses and bit
2 for sync pulses

Figure 1
Picture dots (hexadecimal) in memory

Figure I is an example of a typical SSTV scan line in memory. The first operation the program does in the transmit mode
is to load from memory the first byte into an accumulator. The
accumulator in the 6800 is a powerful register which can be
used to add, compare or shift, etc. This byte is then compared
to see if it is FF.

Some of the program constants which can be modified to fit your
specific requirement are:

Memory Location

Present Value

Name

031A

75 (hex)

Number of lines/
Picture (ll7)
Half frame=45 (hex)

02E3

80 (hex)

Horizontal line freq
80=15 hz (USA)
70=16 2/3 (Europe)

02E4

50 (hex)

Sync Pulse Width
Horiz=5 msec.
Vert=30 msec.

If it is, then it must he n sync pulse.

If not, it must be a data byte. The accumulator is then
shifted to the left a bit at a time. If the shifted bit is a
one then bit 0 of the parallel (PIA) interface is turned on.
If the bit is zero then the interface bit is turned off. If
the byte is a sync byte (FF) then interface hit 2 is turned on
for 5 or 30 milliseconds (for horizontal and vertical sync
pulses, respectively). Sounds easy? Well it is. All that is
required is to connect these pulses to a SSTV modulator and out
comes SSTV pictures. Obviously, programming delays must be
executed between all steps. Three program constants control
all of these delays. One for the horizontal line frequency,
and one for the sync pulse durations and one for the number of
scan lines. By manipulating these constants any number of scan
lines can be transmitted (up to 117) at any frequency, which is
only limited by the CPU cycle time and memory speed.
The generation of the SSTV is quite easy, the biggest trick
is to place the correct dots in the picture at the correct
location. This was accomplished by use of a translate table
and a dot table. The translate table is used to tell the program where in the dot table the correct dots are located. The
dot table is the 5 x 7 ASCII dot matrix array of bytes. The
character dots were taken from the specification sheet of the
2513 character generator ROM chip (ref 2). Not all characters

The program can be executed by loading MIOBUG location A048 and
A049 with 0000 and typing G. The first routine executed is
'LOAD'. This routine loads the picture buffers as you type in.
The first message printed on the TV terminal is:
PICTURE FORMATS 0-5
3

4

5

The program is now asking you to load 5 lines of 6 characters
each. You first type in the picture number you want to load
followed by 30 characters. The first character of each line
will be placed under its corresponding line number.
You can now load all 6 pictures or type a ASCII letter to
end the process. The next message printed on the TV terminal

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579. PALO ALTO CA 94302

screen is:

SELECT LOOPS-PICTURES
LOOP ~1AX=9
?

The program is now asking you to type in the number of times
each SSTV picture is transmitted. For example a 3 loop would
transmit approximately 24 seconds (3 x 8) of SSTV (each picture
requires 8 seconds to transmit). The program will then respond
with a slash after you enter the loop number. It will then
wait for the picture you have just loaded (0-5). You can enter
up to 7 loops/pictures and the process can be terminated by
entering an ASCII letter for the loop number. A SSTV picture
can be looped up to 9 times. This type of programming will
provide over 8 minutes of SSTV 7 loop/ pictures the SSTV transmission is executed. After transmission the program branches
back to the load routine.
This completes the description and
operation of the program. If you require more information
please write. All letters with enclosed return postage will be
answered. The following is a SSTV modulator which I use. The
circuit was constructed on a Vector board and installed in a
mini box. The design is quite straight forward and can be duplicated with little cost and difficulty. The timing pulses are
interfaced to the computer by a 7400 NAND gate. White letters
on a black background or black letters on a white background
are selected by a SPST switch. The video and sync pulses are
mixed by 4 diodes, I IC and I transistor. This video then
drives a 566 function generator. The output triangular waveform is shaped into a sine wave by the output active filter.
I hope you will enjoy using this SSTV generator. Over the
air reports have indicated that the video is considerably more
readable under QRM conditions than my W~LMD keyboard. The use
of micro-processors is an obvious choice for the generation of
SSTV. Considering that my special purpose SSTV keyboard is
complex (44IC's) and my SSTV 6800 generator runs on an unmodified SWTPC 6800, proves that the micro-processor is the
way to gOe for SSTV.

PAGE 316

BOX 1579. PALO ALTO CA 94302

FIRST COMPUTER FAIRE PROCEEDINGS

PAGE 317

CW OPERATOR'S UTOPIA - AUTOMATIC TRANSMISSION AND RECEPTION

IVlr Sanders. W6JDA

instances where we want to increase the time between characters
and between words. Code practice is a good example; it is
often desirable to send individual characters at a faster rate
than the overall code speed. The transmission algorithm described provides this capability.

1161 Rlbie, Ct.
Sunnyvale CA 94087

TRANSMISSION ALGORITIlM
Now that we understand Morse code's structure, let's take a
closer look at what we have to do to generate CW with our home
computers.

INTRODUCTION
This presentation is a description of two algorithms. One
algorithm generates Morse code at selectable rates in response
to data entered by an operator using an alphanumeric keyboard.
The other algorithm provides a visual display (on a CRT, teleprinter, or other output device) of received Morse code data;
this reception algorithm automatically adapts itself to a wide
range of code speeds. These algorithms are based on two articles in the October, 1976 issue of Byte magazine: "Add This
6800 Morser to Your Amateur Radio Station,1t and "If Only Sam
Morse Could See Us Now." Although the programs listed in these
articles are written for the 6800 microprocessor, this presentation does not assume the use of any specific processor. Instead, the algorithms are presented as more general flow charts
which can be easily implemented on any machine. Also, no
attempt has been made to include rout ines which are unique t.o
specific systems, such as keyboard input or display output
routines.

M$&

~S8

I " (POTS. D~S""S) ~ S'

1)/\1'" R>li:HIIT ... ~eRe:
(1)01'5

FI&.:2..

Although some hams may argue about the merits of using a
machine to transmit and receive Morse code instead of the
greatest computer of all - man's mind, many techniques have
been developed to accomplish the task. The algorithms presented
here work remarkably well and provide the ham operator with a
novel (and sometimes useful) way to operate CWo For example,
the transmission routine allows an operator to type a response
to another station's comments while still listening, and then
transmit the comments later in perfectly-sent CWo The "canned"
messages required in many contests can also be stored away and
transmitted as needed, thus allowing additional time·to fill
out log books, etc. The reception routine is an excellent tool
for code practice, allowing the veri ficat ion of hand-received
code. Another interesting application of these algorithms is
as a pseudo RTTY device. For example, stations could conceivably communicate using only keyboards and CRT displays and not
even listen very carefully to the CW, and the data rate could
be faster than the common 60 to 100 word-per-minute RTTY rates.

+

1>~S~ 1'5) s

CD~PUTlrR'S
OF

r,..

Re:p~eSE"""rATI.""

MORse COD"

D~TA

-

US"'t> BY PI'; 'TRAtJ!;MISSI ..... AL&.R, rliM.

Data Representation
The first problem we encounter ·is the representation of
Morse code characters in our computers, since Morse characters
have a variable number of elements. The representation we have
chosen (Fig. 2) for the transmission algorithm divides an 8-bit
byte into two fields: a data field and an element count field.
For characters having five or fewe'r elements J the count field
contains a binary number in the range one (001) to five (101),
denoting the number of elements within the Morse character.
The data field contains a binary representation of the dots and
dashes making up the character where "0" represents a dot and
"I" represents a dash. The character is right-justified wit.hin
the data field, and the first element is in the LSB. But what
about those special characters that have six elements? Since
there are no characters that contain seven elements, the LSB of
the count field is a "don't care" bit for characters of six
elements, and the LSB becomes available for use as the MSB of
the data field. Therefore a 11 code in the two MSB's uniquely
specifies a six-element Morse character. Using this encoding
method, we see that there is a unique 8-bit representation for
every Morse character with the exception of word spaces and the
error character (eight dots). These two exceptions are handled
as special cases; a word space is arbitrarily assigned a code
of all zeros, and the error code is assigned a code of all ones.

MORSE CODE STRUCTURE
So how do we get our expensive homebrew computers to speak
in Morse code? Well, let' s begin by looking briefly at the
structure of the data format we call Morse code. The timing
relationships for perfect code are based on the length of time
a telegraph key is held closed to produce a dot (or short)
Morse code element (Fig. 1). Assuming that a dot lasts one unit
of time, a dash is defined as three units of time. Similarly,
the key-open time between dot and dash elements within a character is one unit of time. So there we have the timing for a
Single Morse character. Now, how do we distinguish one character from another, and how do we distinguish one work from
another? By varying the key-open time of course! For perfectly
sent code, the time between characters is three units (same as
a dash) and between words is seven units. However, t~ere may be

Hardware Requirements
In terms of hardware requirements we are assuming that one
bit of a parallel output interface is dedicated to driving a
relay or transistor which keys the transmitter. Another bit of
the parallel output is used to drive a loudspeaker which is used
as a CW monitor.

w

E

tG!.*T,~:!~t

~AT'" FO/eMAT '" ~~Re

BACKGROUND

D

. )I

~fL'1>~

Generation Subroutine

DI&IT''''L.

I

I

I

I

I

I

I

I

I

I

I

I

por €t.eMeP'J7'

I

I

I

I

I

I

I

I

I

I

I

I UNIT

1)(=

I UN',

or; "IMf

T'IM!i

DASH- EL.e"Mefo.JT

C'"'''RACT"E.·. SP~cE
'NOR-£)

SPAC.E"

,3, .UNITS, ?F TtMi'

7 u,..a,r.:. of

T,,.1E

I

I

I

I

I

Now let's look at the flow chart (Fig. 3) to see how we use
this information to generate CW. Throughout this discussion we
are assuming that the Morse code transmission routine is really
a subroutine which is called by some other program as needed to
generate a single Morse character. For example, the call ing
program might also manage a FIFO (first-in-first-out) buffer
which is loaded with typed characters from an ASCII keyboard and
unloaded one character at a time with calls to the generation
subroutine.
After we call the subroutine, the first thing we have to do
is convert the ASCII character we want to transmit into the previously described digital Morse representation. We perform
this conversion with a look-up table which we have previously
stored in the computer. We use the character's ASCII code to
point to a specific memory location wi thin the conversion lookup table, the contents of this location being the digital Morse
representation of the character.
Next, we check the data to see if it is one of our specia.1
cases - a word space. If not, then we extract the count field
from the byte·and store it separately as an element count. In
the case of our other special cha.racter - the error code - we
force the element count to a value of eight and the data byte
to all dots. Hence, we now have a two-byte representation of
the Morse character, one containing the total number of elements
and the other containing a one or zero (dash or dot, respec-

FIRST COMPUTER FAIRE PROCEEDINGS

(""'\lear
-ro

BOX 1579, PALO ALTO CA 94302

cttAR

CyoJ CODe:

USI""~ LOO(·UP

"TAgLE

yes

SGf'AAATE

seT

MTA C.
,"""eel< DF

NuMBER.

OF EL£H£l-J~

To

ELEM£,Jrs

SE'! t-lUM8Ef<"

SET"

D~ ELEMfNfS

TIM,tJ6 FAc:roR

"TO

,0 I

8

lloTAr~
I)ATA rt4ROU,"",

RI""T

CARR Y SIT

Sf'T

SGT'

T'M'''''' F'AC.TOi-:.

-r,M",,,,:,,

"-01

;-03

PAGE 318

ti vely) for each element.
Now let I 5 rotate the data byte to the right by one bit
through the carry (Fig. 4). This places the first element to
be transrni tted in the carry bit, which we test to determine
whether we are to send a dot or a dash. I f a dot J then we set
a timing-factor register equal to one; if a dash, then we set
the timing factor equal to three. In either case, we close the
key at this point.
Next, we enter a delay loop which produces a time delay
equal to the timing factor times the length of time it takes to
transmit a single dot at the code speed we have selected for
operation. We are assuming here that the "dot time" used in the
delay loop has been specified and loaded into the computer by
the operator some time previous to calling the generation subroutine.
Upon exiting the delay loop, we open the key and set the
timing factor to one. Then we enter the delay loop again, and
generate an inter-element space equal to one "dot time".
Now that we have produced a single element of the Morse
character plus the inter-element space following it, we check
to see if there are other elements to be generated by decrementing the element count and testing to see if the count
equal s zero.
It it is not zero, we go back and rotate the data byte
through the carry bit again and generate the next element.
Once the character is complete, the timing factor is set
equal to the intercharacter space time minus one inter-element
unit of time and enter the delay loop again. For perfect Morse,
the timing factor would equal two at this point. How~ver, if
we want to transmit individual characters faster than the total
CW rate, then a value greate'y than 2 would be used here. Upon
completion of this final time delay, we return to the master
program from the generation subroutine.
What do we do with space characters? First, we generate a
"phantom" dot without closing the key by setting the number at
elements equal to one and setting the timing factor to one.
After producing this one unit time delay, we reenter the algorithm and produce one more unit time delay as though we had
actually sent a Morse element. Then we decrement the element
count, exit from the generation loop, and produce an intercharacter space. For perfect ly-sent Morse, we have produced a
space equal to four "dot times". When added to the three-unit
space produced after the previously-generated character, we
find that we have produced a seven-unit space - exactly what is
required for an inter-word space.

F'ACToR

DitTA

-----------------

IS

R{nATE"D t<.14Wr T/fR'oLMIf rl-fE

CARR. -t

'B I r) 1"l-tEN "-.-11; SiA.E OF iH-£

CAR.RY

SIT"

\,tJI-\ET,LIER
IS TO

BE.

A

IS ,eSTEl) 10 j)GTe.RMI,J£

po'" 0« DASH

6LeMc: ..... T

G.EI-JE'RATf[).

DELAY PR4""R
'T'IM£

To

AC.cok.~ItJ

T""'"," fiilcroR.
RECEPTION ALGORITHM

SET

TIM''''''- fACTOi(;
To

i

The task of Morse code reception is somewhat more difficult
than the task of Morse code transmission, largely because of
the irregularities and ambiguities associated with each operator's "fist". Let's face it, some hams transmit CW which is
far from ideal in its timing. The algorithm we are going to
look at allows for some irregularities in the received code.
However, it just does not work as well as a trained human o{lerator who knows the intended context of the received message.
This algorithm automatically adjusts itself to the incoming
code speed and provides a visual display of the received data
if the structure of the incoming CW is reasonable good.

DELA i PR,Pel(
1"1"1e

T.

AC(,ORDltJ~

TlMI~~

FACre"

oeCl?fMe>JT
E:L£MENT

CoLl"'r

Hardware Requirements
The reception routine assumes that the received CW is available at one bit of a parallel input interface, where the state
of the bit indicates whether a mark (key closed) or space (key
open) is being rece] ved. This input bit can be derived from
receiver audio by filtering and rectifying the audio or through
a phase locked loop set up to detect the desired audio frequency.
October 1976 Byte contains several circuits which should work
fine.
-Reception Routine

YES

The reception routine contains several parts (Fig. 5). Let I s
begin by looking at the audio sampling routine. First, we wait
for a period of time specified by a delay time value. This
delay time is varied by another part of the algorithm and provides the timing necessary to automatically lock onto any CW
speed. Then we sample the audio input and check to see if a
change has occurred in the mark/space status. If there is no
change from the previous sample, then we increment a value which
we call the time count. This time count value indicates the

FIRST COMPUTER FAIRE PROCEEDINGS
number of audio samples we have taken for the currently received
mark or space.
It is at this point that we send a data character to the output device if the device is ready and if there is
data in OUT output buffer. We remain in this waiting and audjo
sampl ing loop until we detect a change in the mark/space status
of the received audio. When a change is detected, we set a data
ready flag and check to see if we have just completed a mark or
a space interval. If the audio was a mark before the change,
then the time count is ~torcd in the s{lacc register. At this
point, the ne\~ mark/space status is stored, and the timE' count
value is set to one.
This time, as we go through start. the data ready flag is
set. Now, if the element we have just received is a mark, then
we apply three rules to sec if the mark is dot or a dash.
If
the mark is more than twice as long as the previous mark received, then the mark is a dash.
If the mark is less than half
as long as the previous mark received, then the mark is a dot.
If the mark is bet'"een half and twice the previous mark, thc-n
the mark assumes the same state as the previous mark.
Assume for now that the mark is a dot. We shift both the
dot and dash registers (Fig. 6) to the left by one bit.
lThcsc
registers are used later to determine the specific charJAI"r F(I~. PERIC';'"
SPECIF'IFL- f!'r'
"1~-1[

bE.LA't
\j ALUE

....~,E'i'CI::

TIME

rQiJJo.JT

YES~

~

PAGE 319

FIRST COMPUTER FAIRE PROCEEDINGS

~""'T DOT
t>A~t4

BOX 1579. PALO ALTO CA 94302

F.

S€T
CHAR SPACE'

Rf&I!TERS

LEFT ""'""

efr

YES

PAGE 320

we conclude that the character we have been receiving is complete and ready to be converted to ASCI [. The conversion process begins by shifting the dash register to the left one more
time, and then adding the dot and dash registers together (Fig.
6). The result is a binary value which uniquely represents a
specific ~1orse code character. To convert this binary value to
an ASCII code. a conversion look-up table is used. The ASClI
code is then placed in the output buffer. As a final step, the
space time i.s compared to the previously derived word space
value. If the space time is greater than the word space value,
then an ASCII space character is also placed in the output buffer before resetting the data ready flag and returning to the
sampling routine.
SLJ~I~IARY

DoT >1
V"~H RE'6ISTErl.S

u.aCt(EMENT
DOT' a:E'6tIf.7"ej~
(,MOSEfc:T" I

CLEA«

lfoR~E T T"'~

,'" Lst)

C_hCTErl)

DEcR.""p.JT

""1.

bELAY TI"1E
,.." SPE.ED uf"

S~"IPl..loJ" "'ATE"

i

I NCRE: Me:t.1T
DASH RE~l$n,<

(lfJ5E.r.. T I

''''''0

So there we have it. Morse code transmission and reception
algorithms to help us combine our amateur radio and home computer hobbi.es. Of course, many additions and improvements can
be made to these algorithms. How about combining a Sweepstakes
serial number suhroutine with the Morse transmission subroutine?
How about automatic log keeping? Or a subroutine for use with
the recept ion algorithm which looks for our call letters and
records a message during our absence? If we had a transceiver
whose frequency could be computer controlled, it might even be
possible to let the computer run an entire contest for us!
Have fun!

L.se)
I<:('(~

D'.'T

\NC.I

0

0:>

0

~.~

I"

~

1:,£("

1
:>.olS~

l!.("

R.SET
DATI\ RoADY
FLAil',

0

"'f(. L:;

-_._---------?!

: " ( flEr.

I

0

100

I

0

0

&ER":Re: REtE'''' ,.1(,
ANY DATA

AFT"E(r::

~~~~,-~~,~

~>:a>

,- o":=:~?

0

,;>

0

0

DOT

:01
I

ReCEIV//,J6,

ElEMEt--lT

AFTEk ~r;-CE''''It-J("I

I

DASH

E.LE HE"'1'

AF'T'Ei~

/C:E:CEh/rJ-l&

Cr-lARAt:T&,l~

~PA'E, 'OA'5H

1t.E'6. IS SltIFT'et>
I,..E FT -'1-,.,JD DOT (. OltSf'f
r<.eGr''''Te.r... ~ ADOEL T'O
PRovitE ofFSE r o\DI>RE'SS
IN MtJn.~E.IA$l:AI CO'"HIE(l,SI~''' "T"AIt.1i'

StjlFT c·AS"
R.&I~TEI.

LEFT ONE

,'r
F"16r.~.

SiATE
DU.{:IN.G.

AD/)

DOT e{

DASH RE61ST52S

Cc,N.rU MORSE
o A~CIIJ USUJI.
LOOK-UP

-rAe,-£"

rt.AC. ASCII

C""'''R ,""Tp
OUTPUT I!UFFfK.

NO

I'I.JICli

lise II

SPACE
,,",,T'O

eol>E

ourpVT tuFFlI(

OF bOT" AI-JO D,4\SJ.4 .QEG./!;rE1<$
({f!'CEP"6toJ

of:'

A N~SE

"A"

( __ ).

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579. PALO ALTO CA 94302

PAGE 321

MICROPROCESSOR CONTROL OF A VHF REPEATER
Lou Dorren. WB6TXD
107 W Bavshore Blvd
San Mateo CA 94401

In most repeater systems, control functions are generally
performed by hard wired integrated circuitry. This means that
each function is managed by a group of integrated circuits
whose specific job is to do that function only. In a repeater
system, with a reasonable number of controls performing very
simple management functions, as many as 60 to 70 integrated
circuits could be required. Most such systems use a touch tone
decoder and some form of logic that decodes the various control
numbers and turns on function outputs to operate the various
controls of the repeater. Changes in these systems require a
redesign of the circuit or a change in the output WIrIng.
With the advent of microprocessors a whole new era of
repeater control and management becomes possible. Here we will
describe a repeater control system built for WR6ABM around a
Motorola 6800 microprocessor. This repeater control system
performs all of the supervisory and management functions using
a software system instead of the hardware systems described
above. In this repeater control system, the microprocessor,
which is essentially a computer, has a series of outputs connected to the repeater controls. Signals appearing at the
inputs of the microprocessor program it to perform the various
test and control functions desired.
This system can be described according to the functional
blocks which do the work. Figure I shows the system block diagram. First is the central processor unit (CPU), which contains the microprocessor integrated circuit, a scratch pad or
working stack memory, a monitor or control memory and an asyn-

chronous communications device for talking to the data terminal
or teletype machine. The CPU is contained on a single printed
circuit card which is interconnected with the other cards in
the system via plug-in sockets held in a standard card frame.
The microprocessor card used as the CPU in this system is the
MADIC, manufactured by the Seivetek Corporation of Sail Mateo,
CA., who also make the other cards used in the system.
The second functional block is the random access memory. In
this case, we used 8,000 words of random access memory, contained in two printed circuit cards. Each card consists of 32
IKxl static memory chips, as well as the address decoding ICs
and the data and address line buffer ICs. In this memory is
stored the operational program for the repeater. Changes to
this program are effected through the data terminal or teletyp~
making it unnecessary to rewire the circuitry in order to
change control functions. All such changes can be made over
the air, or by phone line.
The third functional block is the peripheral interfact adaptor (PIA). Each one of the PIA cards serves some input or output function of the repeater. For instance, there is one card
called the COR PIA. This card connects the receiver COR lines
and the transmitter key lines to the CPU. It tells the processor when a receiver is h~yed up and also keys up the transmitters as instructed by the CPU.
The touch tone decoder and real time clock make up the
fourth functional block. Both are contained on the same card.
A hybrid touch tone decoder built around a Telenetics 7516 and
a real time digital clock huilt around a National MMS309 are
used. Also contained on this card is a touch tone encoder for
outputting high speed touch tone commands and data and for self
testing. This utilized a Motorola MC14410. The decoded touch
tones are presented to the CPU for appropriate action, while'
the real time clock permits the processor to time events and
make calculations involving the time of day.
Fifth in the series of functional blocks are the audio
matrix cards. Each card consists of a 8 x 4 audio matrix with
input and output buffers. The audio matrix is connected to the
audio outputs of every receiver and tone generator and to the
audio inputs of all the transmitters, local speakers and telephone lines. The audio matrix can be commanded by the audio
tone DVM PIA to switch between the various inputs and outputs.
The tone generator, contained on a single card, is the sixth
block in the system. It contains a pair of digital synthesizers for the generation of sine wave tones. It also contains ,
a three and one-half digit digital voltmeter which is commandable and which can be used for telemetry data taking by the CPU
The synthesizer and voltmeter controls are fed from their own
PIA registry. The audio matrix is also controlled by this PIA.
Last in the series of functional blocks is the system clock.
This clock, located on its own card, gives the necessary nonoverlapping phases for operating the microprocessor. It operates at I MHz. Additionally the clock card contains fI baud

rate generator to generate the necessary frequency for the
teletype interface and an interrupt request time generator
which produces a 50 Hz signal used during various supervisory
functions of the repeater. The clock for the audio synthesizer
and DVM are also supplied by this card.
Unlike most repeaters, there is no COR delay sensor or
detector and there is no transmitter key with hang time or
identifier. All of these functions are in the software that
is generated with the microprocessor. As an example, if the
command has been entered in the repeater to permit using the
VHF transmitter, the microprocessor is constantly waiting for
what is known as an interrupt signal. When this signal appear~
the microprocessor looks at all of the PIA's to determine
which one requested the interrupt. If the COR PTA is the one
requesting the interrupt, the microprocessor then looks to see
which receiver was keyed up. If it fines the VHF receiver
keyed up, it then looks in the memory to see if all the necessary parameters are present to permit keying up the transmitte~
i.e., has the repeater on command been entered. If all the
conditions are fulfilled in the software of the microprocessor
it keys up the transmitter and continues to keep the transmitter keyed up until the receiver drops. When the receiver COR
drops, the microprocessor calculates the hang time before it
drops the transmitter so that the transmitter stays up for a
pre-determined amount of time by software.
The microprocessor lends itself to many other aspects of
repeater control. Identification and Morse code generation are
some of the more interesting aspects. The Morse code is generated by an algorithm in the microprocessor memory. Each
character of the Morse code is encoded into an 8 bit word.
With this type of software, any CW message can be generated.
In addition, the CW messages can be changed without having to
do reprogramming or rewiring of 10 memories. It can be changed
merely by changing the software, as can all the other repeater
functions. With the microprocessor control system, the level
of sophistication of repeater control is limited only by the
programmer's ability and the amount of memory available.
In the WR6ABM system, the computer performs overlOO different functions at any given time. For example, the computer
executes 20 thousand instructions to output an identification.
All of the timing for the Morse Code CW is determined by the
microprocessor so that its rate and weight can be modified.
One of the commands that exists in the WR6ABM computer is 'what
we call the Banana Boat Special - Morse code with a slightly
Southern accent. Block diagrams of the various circuit cards
are shown in Figures 2 through 4. As can be seen, the microprocessor opens a whole new era of FM repeater control, allowing increased capability and functionality as well as individualism in design, together with the advantages of remotely
changing the capabilities of the repeater by software. It also
brings to the amateur knowledge of a new and very exciting
field of semiconductor electronics, the microprocessor.

COR ISPUTS
FROM RECEIVER

ADDRESS
LINES
(161

J

f~Mc:68~2:01~~lli__
PIA

lITP

_ __
R

UFFE'~

EGIS

_ _ _ _ TO

J(MIT
IRQ
DATA LINES
(8

IRQ

SYSTEM BLOCK DIAGRAM
Figure 1

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 322

AMATEUR RADIO AND COMPUTER
HOBBYIST LINK VIA RTIY REPEATER
)

S.\~1I'LI

lint

I.I\I.S 11(,1

~
~

r---:

Alan Bowker and Terry Conboy

A
I'!!'"''''

.__

1·\11

'

I'\':I'\I\~

i'C-----------

~---~==~----~

s,s
11I1'HI mml\

IIII'II! -

~-+--""'''~>

l __ ~~"
: I ',,'
---~

---+-

,\llill(! -7
IIUFlI'-*

,~

"------.-).

'-----.-..;.----..

-

-7

--~~~----~

---..2~::.:~..:~~---------1

Many people interested in computers and communications
,1E~

The functional blocks of the system are the MPU,
Program Memory, Data RAM, Scratch Pad RAM, Emulator Buffered
Outputs, UART/TTY Driver and Cassette Driver, Keyboard and
Control Switches, Display, 2704/2708 Programmer and Expansion
Plug which connects to optional slave modules for programming
other types of PROMs.
The microprocessor is an RCA COSMAC 1802, an 8 bit CMOS
device operating at 5 volts DC with a 1 MHZ crystal controlled
clock. The resulting low power dissipation of the system permits the use of PC mounted power transformers I! Hft>:ORY

System Block Diagram.

and cannot be altered by the users system. Bipolar buffers,
installed in sockets for easy replacement, protect the RAM from
over voltages or shorts in the users system.
In the Emulate ~lode, the microprocessor is in an idle state.
mrs
When the RUN/EMULATE switch selects the RUN mode, the Data RAM
is reconnected to the MPU. Load, modify, shift, move, dump and
assemble operations take place in the RUN mode.
The UART is an 8 bit C~10S Universal Assynchronous Receiver
Transmi tt'er wi th its own crYstal controlled clock. It interfaces the 8 bit data bus with 20 rna current loop TTY driver.
The UART may be run at 10 or 30 characters per second. Latched
error lights indicate parity, over-run or framing errors in
incoming or outgoing ASCII data. The standard system software
accepts BPNF formatted ASCII input and has a sophisticated data
analysis capability which permits rubouts, skips and other tape
anomalies to occur without producing load errors. A packed
format loader is available as an option. The user may change
the program to accept any other data format and perform any
other type of data manipulation he desires.
An optional cassette drive is available. It is supplied
complete with interconnect cables, test cassette and a preprogrammed PROM which may be plugged into the unoccupied PROM
socket in the machine. This sub-system loads and unloads PROM
data at the rate of 30 8-bit words per second. The data for a
512x8 PRO~I can be loaded from the cassette sub-system in under
20 seconds. Up to 50 512x8 PROM data blocks can be stored on
each cassette using a deyboard entered identifying code for
easy retrival. This feature reduces a large data library to
a handful of cassettes. The cassette drive greatly speeds the
loading operations when using any of the available cross
assemblers.
The keyboard and control switches permit the user to load,
dump and modify data, program, emulate, assemble and enter
I!U.
speciali::ed programs into unused RAM areas.
The components of the system are the
No training is required to operate the machine. The soft\"are consists of a simple operating system requiring a minimum

MPU, Program Memory, Data RAN, Scratch PAD RAM, Emulator

of button pushing hut having sufficient flexibility to allow
the user to expand the machine by adding new programs. The
Buffered Outputs, UART/TTY Driver and Cassette Driver,
steps in the procedures have names which correspond to the
switch, button and display names on the machine. This allows
Keyboard and Control SWitches, Display 2'104/2708 ProgramJiler an untrained, unskilled operator to load a tape, modify the
data, burn in a PROM and punch a new tape by following the
steps in the "Operating Instruction" card, Table 1.
and Slave Expansion Plug.

OPERATING INSTRUCTIONS

1.

Press the Reset Button and then the kun Button.
d1Eplay should show 000

an~

The three digit

the three status lights should be oft.

'{'he "QII light should be on.

2.

3.

Enter 4 Keystroke.s according to the following table.

To exit trom any function. press HeGet.
Function
Sub Func t10n
Load From TTY t •. Data HAM (BPN~')

2

3

4

18t

2nd

3rd

4th

Stroke

Stroke

Stroke

Stroke

o

C

x

X

x

A

2

Dump From Data RAM to TTY (BPNF)
Starting Address in Data HA.M

F

lIod try Data RAM

o

Address of Word to be Changed

X

x

X

New Data

X

X

HE

Load Data RAM from Keyboard Auto

B

. StartTii"g "Address in Da t8 RAM

X

x

X

x

Copy Master PROM to Data RAM

o

9

Burn in Dup. Prom from Data RAM

o

Data

Locate and Display Address

X

HE·
F

X

x
[

j
F
B

F

8 bit byte to be located - 1st
occurance

X

Next Occurance

X

Move Block
Starting ·Address of block to be
moved

Starting Address of New Locati"ln

X

7

x
x

HE

F

9

x
x

x

x

X

X

HE

TABLE 1.
Operating Instructions.

be used:by keying in the appropriate 4 Keystroke cpde shown on
his operating instruction card. Currently available modules
cover several EPROMs and TTL PROMs. Some of the modUles
planned for the immediate future have the capability of programming 4 or 8 PROMs at a time.
The final and perhaps most powerful feature of the system
is its cross assemblers. The MPU is· designed to execute a two
pass cross assembler which we call DATA J/Q. This cross assembler is designed to produce object code from the users Assembly
Language program. This object·program is then resident in RAM
and may be used immediately to simulate the PROM in the users
system, to burn in a PROM, to punch a tape or write an object
cassette for later use.
The Cross Assembler· for generating 8080 object code is now
available: We plan to produ':t cross assemblers for the 6800,
2650, F8 and COSMAC in. the immediate future.

x

Data

7

PAGE 330

BOX 1579, PALO ALTO CA 94302

FIRST COMPUTER FAIRE PROCEEDINGS

I .. ' ..

·1

Operation of the SMARTY is simple.

The operator need only apply powor, pross RESET and RUN
and then enter the appropriate keystrokes.
The flow chart, Figure 2, shows the machine operation and
operator interaction required to load a tape and burn in a
PROM.
.
Pushing ·'Reset" and then "Run" puts the machine into the
operating mude. The program quickly procedes to a keyboard
input mode. The operator keys in the address of the program
to be run. This address is conveniently called out on the
"Operating Instruction" card. For TTY ioad function, the operator keys in "OCI4" which causes a program jump to the TTY input program and to start reading the tape.
To summarize, the operator pushes:

"Rt':;.et"
"Run I!

"OCI4"
Turn on tape rcado·.
This simple operating system allows a number of program
modules to be added to the system without changing the original
program RO~1. As new programming slaves, a floppy disc or the
cassette drive are added, appropriate programs can be loaded
into a new PROM which plugs into the unused PROM #2 socket
inside the machine.
Whenever additional slaves or the cassette Data Recorder
are orucred, a ne" instruction card and program PROM are provided. The new PROM contains a set of programs for operating
the particular set of add on .equipment attached to that system.
The three digit hexadecimal display is under program control.
Keyboard entry data is displayed as entered. The display also
indicated addresse> and data during programming, data error
codes and other data appropriate to the machines' operating
mode.
The 2704/2708 family of 512x8 and IKx8 EPROMs are gaining
wide acceptance as industry standards for microprocessor software development. The programming section of the SMARTY is
designed for these PROMs.
SLAVES
A 40 pin expansion permits the attachment of numerous slave
modules. Slaves are connected by "daisey chain" which permits
the programming of many different types of PROMs without
having to plug in new modules. The user selects the module to

·.~ .... 1 !. ~
~. ~

i .

I

I'"

.
I

NO

!

..

'

·'·"1·t..
• .,..........
". -I.;t.
"."'" ~
j , :.~·,:li.;r ,rt .-'~ J~:.

·1,

. ; fil"11fJ~~,

Figure 2 - Flow chart of monito.r program.
Escape from any machine state is accomplished
by preSSing "RESET".
With this system the user can assemble a program, try it out
by emulation, modify and debug it on his system and then burn
in one PROM which will be correct. He can do this with any of
the popular 8· bit ·micl'oprocessors.
The SMARTY is a universal development tool as well as a versatile PROM programming system.
The microprocessor revolution has offered a marvelous opportunity for engineers to expand their useful knowledge base and
to apply their creative skills to new and existing projects.
Those of us who participated in the ·development of the SMARTY
consider it our most rewarding achievement. J hope those of
you who use it will enjoy working with it as ·much as we have.
The Model SM-l as descdbed in tMs article is priced at
$1,495.00. The Model SM-C Cassette Data Storage Unit is priced
at $995.00 complete. The Slave modules range in price from
$175.00 to $595.00.

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579. PALO ALTO CA 94302

PAGE 331

HOMEBREW EXHIBITORS
(as of 3:30 a.m. on 77 April 7)

Dr. Franz Frederick
Room 112, Education Building
Purdue University
W. Lafayette IN 47907
(317) 749·2589

Ken McGinnis, M.D.
Box 2078
San Mateo CA 94401
(415) 343-5611

[Computer controlled "turtle"]

[Dual Homebrew System]

George Ledin Jr.
Computer Science Department
Harney Science Center
University of San Francisco
San Francisco CA 94117
(415) 666-6530
[Time share game playing & small computer building
exhibit]

Laurence R. Upjohn
7297 Stanwood Way
Sacramento CA 95831
(916) 453·2476 x 3305

John S. French
846 Tamarack Ln.
Sunnyvale CA 94086
(408) 745-4763

[Direct human interface!]

[Homebrew Micro System]

Arthur Weigel
671 Iris Ave No. 14
Sunnyvale CA 94086
(408) 734·8102 x 550
[Self learning system]

Dave Arnold & Don Hanson
116F Escondido Village
Stanford CA 94306
(415) 497·4971

Don R. Donfray
770 Lakehaven Dr.
Sunnyvale CA 94086
(408) 245·7100

[100% Homebrew system]

[Complete Small Computer System]

Joseph V. Jaworski
7051 Natal Drive No. 128
Westminster CA 92683
(714) 835·6000 x 426

Ben J. Milander
1439 Kinsport Ln.
San Jose CA 95120
(408) 256-1832

Nishan Urkumyan
321 Cory Hall
University of California
Berkeley CA 94720
(415) 642-3730
[Computer driven locking system]

[Low cost 6800 Hardware design] [Homebrew 8080 System]

Dennis L. Wong
11266 Monterey Court
Cupertino CA 95014
[Micro disc Business Application]

Center for Contemporary Music
Mills College, Box 9991
Seminary and MacArthur Ave.
Oakland CA 94613
(415) 635-7620

Steven S. Shaw
6520 Beadnell Way No. 2E
San Diego CA 92117
(714) 452·4016

[Oracle Booth!]
[Computer Color Graphics]
Donald C. Schertz
764 Toyon Drive
Monterey CA 93940
(408) 646·2982
[Multi voiced music synthesizer]

Daniel L. Wright & Richard Fish
280 Perry mont Ave. Apt. 1
San Jose CA 95125
(408) 297·3000 x 3828
[6800 Based Home Micro System]

Tony Williams & Jim Coe
PO Box 369
Mill Valley CA 94941
(415) 383-7074
[Computer generated .& controlled audio]

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 332

COMMERCIAL EXHIBITORS
'uof2:20 •.m. on 77 Apr 7)

6502 PROGRAM EXCHANJE
2920 MOANA LN
!lENO NV
89509
(702) 825-8413
ASSOC. FOR COMPUrr NJ MACHI NERY
S. F. BAY AREA CHAPTERS
BOX 60355
SUNNYVALE CA 94088
(415)851-7075
ACTION AUDIO ciLECTRONICS
~ESTLAKE SHOPPING CENTER
323 S. MAYFAIR AVE
0ALY CITY CA
94015
( 4151756-7440
ADV AI',cED MI CROCOl>1PUTER PIIODS
BOX 17329
IRVINE CA
92713
(714)968-3655
ADVANCED TECHl\!)LOGY RESEARCI1
ASSOCIATES (ATRA)
130X 456
>II NNEAPOLIS ~N
55440
(612)377-731>7
ALPHA~ICROSYSTEMS

17875 SKYPAkK NORrH, SU rTE N
IRVINE CA 92714
(714)957-1404

BOOTSTRAP COMPUTER STORE
24 ST COMPONENr SHOP
3981 - 24 ST
SAN FRANC I seo CA
94114
(415)2fl2-3550
BYTE PUBLICATIONS, J NC.
70 MAIN ST
PETEIlBOROUGH 1'1'1
03458
(003)924-7217
BYTE SHOPS

O~

94086

CALI~ORNIA

BUSINESS ;'ACHI NES
22 I I THE ALAMEJA
95050
SANTA CLARA CA
(408) 244-7313
CALL COMPUTER &
COMPUTER Cilt/VEIISOH COkP.
1961 OLD '.WDLtfIELO
'.\T. VIEW, CA
94043
(415)964-9013

AM2kICAN IIAIJIO RELAY LEAGUE
225 I~AIN ST
NE11INGTON CT
06111
(203)666-1541
ANDERSON JACOdSON, INC.
521 CHARCOT AVE.
SAN JOSE, CA
95131
(408)263-8520

CO,',1Pi}j'lt:Nl SALtS. I
f'iS-A BkANNA,~ ST
SA~ "iiANCISCO CA

tJc.
;)4103

(415)8~1-1.345

~OMprE, k"AI. .'/ORLIJ 2L"Cl.WNICS
:lOX 516
LA CA~AlJA CA
'} I D' I
(213)790-79"7

COf.(PUCOLOR co~r.
5905 PEACHTkEc CORNi'"S. cAS f
~OlIC./(/SS ()A
.1,)071
(404) 449-5961

ARTEC ELECTROi,ICS
005 OLD COU~TY ROAD
SAN CARLOS CA ;4070

COMPUTALi\Ef? COi'SULTAIrfS

3ELL & HOi'IELL SCHOOLS
209 H. JACKSOI/
CHICAGO I L
60606
(312)939-B200
dEIlUER PUULICAfIOII6
NOHTHERN CALIfORNIA ELECTRONIC lJC~3
SOUTHERN CALI"OkNIA ELECTIIONIC ,~E~S
OOX 3031
LOS ANGELES CA
90051
(213) 737-6fl20
[JEil(; PUBLICATiONS
1360 SW 199 COURT
ALOHA OR
(503)649-7495

BILLINGS COMPUfER CORP.
BOX 555
PROVO UT
8460 I
(801 )375-0000
BLASTMASTERS, INC. &
MULLEN CO"PUTEk BOAHIJS
l31)X~()214

dAYWAkf) CA
(415)278-5122
[JOARD BYTERS
BOX 17512
IRVINE CA 92713
(714) 586-8133

I;!IX 1~51
SAtHA MOld CA, CA
(213) 3Y2-523)

94545

CUSTOM COMPUTE~ SYSTEMS
II CHEEJ(SIDE
IRVI NE CA
92715
( 714)752-1591
GYBERCOM / SOUD STATE MUSIC
2102-A WALSH
SANTA CLARA GA 95050
(408)246-27u7
I)AJEIl ELECTRO~IlCS
7214 SPRI WLEA~ CT
(;rnws HEIGf-rrS CA
(910)752-u,}47
lJATA '!ERMINALS
J 190 !JEll AVr'..
CAt~PUELL. CA
(408)378-1112

95610

CO:,MUN ICATl ONS

lJATA:.IATiO N
25~O BAYSHOHo, #40 I
,IT VI "'I CA
(415) 965-8222

95008

94043

iJAVlS LAbORAfOHIcS
2325 OUI rdJ A.h:'.

CWWUTEI-? DEcr 51 OfJS ,1,lk]i\ZI Ui:
HAYIJl'N PUIJLlSIl.~G CO., INC.
50 ESSEX 51"
.lOCi/ELLi PARr( I.)
07M2
(20 I } H43-055U
l:O'.iPU1ER )(I'15, I,lC.
IIJ44 lINIV,,;?f.lfY AVi
dEQ,\cLEY CA
(415) h45-5300

SAi'TI\ CLArt.A., CA
(40b) Y10

5 KANE I NDUSTR I AL DR.
HUDSON MA
01749
(617)562-9305

1922 ANNETTE LN
BOX 1223
LOS ALTOS CA

94022

MR CALCULATOR
CONTEMPORARY "tlKTG
39 TOWN & COUNfRY VILLAGE
PALO ALTO CA
9430 I
( 415)328-0740
,'ATIONAL SEMICONUUCTOR COtlP.
2900 SEMICONDUCTOR DR.
SAI,IA CLAtl~ CA
95051
(40H) 737-5543 -

94043

jCi;MAfi COMPUTE" EXCHANGE
1250 N. MAl r, 31.
AN/J ARBOR MI
48104
(313)994-3200

90291

.lORTH STAR CO~PUTERS, INC.
2465 - 4TH ST.
"oX 4672
~ERj("LEY CA
94710
(415)549-0tl58

9.2284
OHIO SCIENTIt'IC INSTHUMENTS
I 16H I H~VuEN Sf
44234
(216)509-7945

:jJ RA'~ OH

FIRST COMPUTER FAIRE PROCEEDINGS

BOX 1579, PALO ALTO CA 94302

PAGE 334

OJ( MACHINE & T(X)L CORP.
3455 CONNER ST
BRONX NY
10475
(2121994-6600

REALISTIC CONTROLS CORP.
3530 WARRENSVILLE CTR RD
CLEVELAND OH
44122
(216)751-315d

OLIVER AUDIO EOOINEERING, INC.
7330 LAUREL CANYON BLVD.
N. HOLLYWOOD f:A
91605
(213)765-8080'

RIGEL FOUR
BOX 1422
CAMPBELL CA
(4081379-8137

PACIFIC OFFICE SYSTEMS
2600 EL CAMI NO REAL #502
PALO ALTO CA
94306
(4151321-3866

RO-CHE SYSTEMS
7101 MAMMOUTH AVE.
VAN NUYS CA

PAIA ELECTRONICS, INC.
1020 WILSHIRE BLVD
OKLAHOMA CITY OJ(
73116
(4051843-9626

ROM. COMPUTER APPLICATIONS FOR
LIVINJ
(MAGAZINE)
RT. 97
HAMPTON CT
00247
(203)455-9591

PARASITIC ENGI NEERING &
MORROW'S MICRO STUFF
BOX 6314 & BOX 6194
ALBANY, CA
94706
(415) 547-6612

S. D. SALES
BOX 28810
DALLAS TX
(2141271-4667

PARSEC ELECTRONICS
5074 GEORGETO~N AVE
BOX A82327
SAN DIEGO CA
(714)276-3255

PERSCI
4087 GLENCOE AVE.
MARINA DEL REY CA
(213)822-7545

SZE ilL! P ENTE RP ill SES
1414 W 259 ST
HARBOR CITY CA
(2131325-9333

91405

[ARDELL ELECTRONICS
20620 S. LEAPWOOD AVE., SUITE P
CARSON CA
90746
(213)538-4251

90291

TECHNICAL SYSTEMS CONSULTANTS
BOX 2574
,1. LArA YEITE IN
47906
<317>742-7509

75228

rECHNICO
,) 130 RED BilANCH fiD
COLUMBIA MD
(800) 638-2893

SCIENTIfIC PROGRAMMI N:i
2213 JEfFERSON
IJERKELEY CA
94703
(415)692-1600
SCIENTIFIC RESEARCH, INC.
1712 FARM I NGTCM COURT
CROrTON MD 2 I I I 4
(301)721-1143
(800)638-9194
ITOLL-FREE, OUT-Or-STAre]
SHEPARDSON MICROSYSTEMS, INC.
20823 STEVE l>S CR EEJ( SLV D
tlLDG. C4-H
CUPERTI Nl CA 95014
(40d)257-9900
SI NAI-JOHNSON, INC.
317 DOUGLAS
ooX SZIB
REDWOOD CITY CA
(415) 365-6263

PFEI HER, E & L
BOX 2624
SEPULVEDA CA 91343
(2131368-3996

,MOKE SIGNAL 31l0ADCASTING
BOX 2017
HOLLY~IOOD CA 90028
( 213]462-5652

PMS PUBLISHING CO.
12625 LIDO WAY
SARATOGA CA 95070
(4081996-0471 OR 255-7894

SOFT,UR E TECH .NJLOG'{ COi-?P.
BOX 5260
SA N "ATEO CA 94402
( 4 I 5) 349-8080

POLYHEDRAL SYSTEMS
437-A ALDO AVE
SANTA CLARA CA
( 408)244-2155

SOUTHERN CALIFORNIA COMPUTER
SOCIETY & secs I NTERFAC" ,~AGAZI
BOX 54751
LOS ANGELES CA 90054
(213)980-7343

95050

POLYMORPHIC SYSTEMS
460 WARD DR
SANTA BARBARA CA 93.1 II
(8051967-2351

80211

PROCESSOR TECH NOLOGY
6200 HOLLIS Sf.
EMERYVILLE CA
94608
(415)652-8080
PSA, INC.
3677 WEST 1987 SOUTH
SALT LAKE CITY UT 84104
(80 I) 261-2529

R.D.C. ENTERPRISES
8352 STANFORD AVE
-GARDEN GROVE CA 92641
(7141638-2094
R.H.S. MARKETING
DUTRONICS, DYNABYTE, PROMEDICS
INFORMATION TERMINALS CORP.
2233 EL CAMI NO REAL
PALO ALTO CA
94306
(415) 321-6639

TECd,'!CAL PRODUCTS
CORP.
(SW[PC)
219 N. RHAPSOuY
78216
SAN AIITONIO TX
(512)344-0241 OR 344-0242
STANFORD ELECT,329-8941
.iEST"KN DATA SYSTeMS
3650 CHAf

(415)566-7472
AYBE::

CA )43u5
I fJH

94122

I

GEE,

You

WOULDN T BELIEV

E HOW MANY PEOPLE 1 HAVE TO TELL
SP SINCE
BEGAN WEARING

1

TO KEEP THEIR HANDS OFF MY A
F
E T-SHIRT!!
THE OFFICIAL FIRST WEST COAST COMPUTER
AIR

SHOW what

YOII

KNOW!!

Whether you're in the barroom or the boardroom, you may rest assured that The Official First
West Coast Computer Faire T-Shirt (official attire for the Computer Faire) will bring to you
sartorial splendor. This tri-color T-Shirt (top-o'-the-stack blue, Byte-this l ' violet, up-&-running
orange) will amaze your friends, restore hair, and prevent bullies from kicking sand in your
face--if your friends are gullible, your alopecia was temporary, and you avoid beaches.
On the other back, who cares!
In separate
Gaza Strip)
puter Faire
growth of a

laboratory tests, Dr Seymour Squintz (who was born outside of a log cabin in the
stated "When I go down to the beach of life [in my Official First West Coast ComT-Shirt] they may still kick sand in my mind's eye, but I see it as cause for the
pearl rather than for the use of Visine."

The fact that Dr Squintz subsequently and tragically incurred major cataracts, vehemently denied
he was an ardent voyeur, and accidentally committed reverse self-defenestration, is, of course,
unfortunate. And we will probably stop using his testimonial.
In the meantime, whether you're a shareholder or a sharecropper, on the board of directors or
simply bored of directors, buy a gross of these discreet garments, and flout them proudly.
Equally at home under a motorcycle jacket or a Brooks Brothers, the Computer Faire T-Shirt
will positively make you look stunning. Or maybe stunned.
In any case, keeping in mind that you are what you wear, and that, though this T-Shirt may be
taken to the cleaners, you never will be, we think you will agree that the
t
of $4 a shirt is modest-oat least compared to this solicitation I AFTER WEAR I NG TH I S
T-SHIRT, THEY BANNED

rJenerously. For as we sew, you shall reap.

BUSING

IN BOSTON.

(Please note: Because this is a limited edition, Officials from t
ranklin Mint will, at an unspecified time, uproot our cotton plants, shred our silkscreen, and set our copy writer adrift on
a small raft, blindfolded, in downtown Billings, Montana.)

! Send to me immediately (as ordered) The Official First West Coast Computer
T-Shirt(s). I understand they are additionally fabulous for their unique property of
cradling the wearer, and swaddling bystanders--innocent and guilty alike-·
exquisite envy. (So that Computer Faire may prepare legal defense for actionable
ripilatory incitement, please indicate your first intended bystander:
) Yves St Laurent. ( ) EE professor who flunked me, ( ) boss, ( ) janitor, ( ) janitor's
•________________________ ltax accountant, ( ) maitre d' at MacDonald's, ( ) cat, ( ) computer club executive

council, ( ) tech rep, ( ) cheeky proctologist, ( ) _ _ _ _ _ _ _ _ _ _ _ _ __

:
I~.~,

•: ___L. - - X L SHIRT(S)

@

$4 _ _

I

:CALIFORNIA
:RESIDENTS ADD 6% TAX

NAME
STREET __________________________________

I

CITY ___________________________________

: 1ST-CLASS POSTAGE
HANDLING ($I/SHIRT)

ST A TE, ______________ ZIP_______________

:&
I
I

:TOTAL AMOUNT ENCLOSED_ __
I

Please send your order & payment

:

(check or money orining the IEEE Computer
Society. You can send me my free copy of "Microprocessors and Microcomputers"
when join.
Name

~~

I
I

.I

I

I

I.

Note: Offer expires December 31,1977.
Please send a copy of the Computer Society Publications Catalog.

o

II

I
MAIL THIS FORM TO:
1 _______________________
IEEE Computer Society 5855 Naples Plaza Long Beach, California 90803
JI
~

TUTORIALS =puter
from the

IEEE COMPUTER SOCIETY

MICROCOMPUTER 77 CONFERENCE RECORD
Apr il 6 - 8, 1977 - 274pp .
A collection of over 50 papers describing the latest devel ·
opments in microcomputer hardware and software as well
as a wide range of microcomputer applications. Topics
include communications and intelligent terminals, development systems, high-level languages, Basic for microcomputers, systems design, simulation and emulation,
fault detection, and peripheral memories.
Members - $15.00
Non-members - $20.00
MINICOMPUTERS & MICROPROCESSORS - 271pp .
Review of recent developments in both minicomputer and
microprocessor technology. Each chapter begins with a
short section which introduces the topics to be discussed
and also highlights the significant points found in the
chapter. Topic headings include technological advances,
microprogram m i ng, min icompute r arch itectu res, microprocessors, mini and micro computer system development,
and interfacing and peripherals .
Non-members- $12.00
Members- $9.00
PROCEEDINGS OF THE SYMPOSIUM ON DESIGN
AUTOMATION AND MICROPROCESSORS
February 24 - 25, 1977 - 110pp.
A collection of 19 papers examining the development of
design aids for microprocessors and microprocessor-based
systems. Sample topics include: capability requirements in
a multimicro processors, hardware/ software simulation
environment; automatic design of mUltiprocessor microprocessor systems; automated design based upon microprogrammable bit-s l ice microprocessors; PLATO -PLA
translator/optimizer; user requirements for digital design
verification simu lators; simulation hierarchy for microprocessor design; verification of hardware designs through
symbolic manipulation; modeling for synthesis, the gap
between intent and behavior; and severa l discussions of
SARA.
Non·mem bers -$ 12.00
Mem bers-$9.00

~~

SOFTWARE DESIGN TECHNIQUES (2nd Edition) 282pp.
I ntended for both begi nning and experienced software
designers, this book contains 18 key papers plus over 100
pages of original material by the editors, Profs . Peter Free·
man of UC I rvine and Anthony I. Wasserman of UC San
Francisco. Major subject categories covered inc lude the
importance of design and specification, differences between
design and programming, basic design techniques (abstrac·
tions, representation, structure diagrams, metacode). Also
includes a series of reveal ing case studies.
Non-members- $12 .00
Mambers - $9.00

MIMI 76 : PROCEEDINGS OF THE INTERNATIONAL
SYMPOSIUM ON MINI AND MICROCOMPUTERS
November 8-11,1976 - 244pp.
Forty-eight papers on hardware, software, systems, appl ications, and education presented by an international
group of computer professionals. A sampl i ng of the titles
includes : A Timeshared Multi -User Approach to Microprocessor System Development; A Floating Point Computer for General ized Spectral Analysis; A Re sident
Micro-Assembler for Microcomputers; LSI Beyond the
MPU ; Privacy Based Computer Design Using Microprocessors; and Microprocessor I nstruction in Electrical Engi neering and Electrical Engineering Technology .
Non-members - $20.00
Members-$15.00

DESIGNING WITH MICROPROCESSORS - 150pp.
This unique tutorial, given by Professor Tilak Agerwala of
the University of Texas, Gerald Masson of Johns Hopkins,
and Roger Westgate of Johns Hopkins at COMPCON Fall
76, dea ls with the princip les and practice of microprocessor design. Covers such topics as chip architecture, microprocesso r selection criteria, software aids, development
systems, microprocessor ap pl ications, netwo rks, bussing
strategies, and distributed intelligence.
Non-members-$ 10.00
Members-$7.50

INSTITUTE OF ELECT R ICAL ANO ELECTRONICS ENGINEERS

ISBN 0-930418-00-X



Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.3
Linearized                      : No
XMP Toolkit                     : Adobe XMP Core 4.2.1-c043 52.372728, 2009/01/18-15:56:37
Create Date                     : 2013:10:26 14:38:04-08:00
Modify Date                     : 2013:10:26 17:42:09-07:00
Metadata Date                   : 2013:10:26 17:42:09-07:00
Producer                        : Adobe Acrobat 9.55 Paper Capture Plug-in
Format                          : application/pdf
Document ID                     : uuid:30a8ffff-c72d-3f45-99b2-211a1d494273
Instance ID                     : uuid:22fdb5cf-53c8-1b41-9616-a4c818119ca8
Page Layout                     : SinglePage
Page Mode                       : UseNone
Page Count                      : 356
EXIF Metadata provided by EXIF.tools

Navigation menu