Dr Dobb’s Journal of 

COMPUTER 


C 


alisthenics 


6 O 


rthodontia 


Running Light Without Overbyte 

Volume One People’s Computer Company, Box E, Menlo Park, CA 94025 


1976 


A Reference Journal 
for Users of 
Home Computers 



Volume One 



People’s Computer Company 








DR. DOBB'S JOURNAL OF 

COMPUTER CALISTHENICS & ORTHODONTIA 

Volume 1, 1976 

Library of Congress No. 77-73015 
ISBN: 0-918790-01-8 

Box E, Menlo Park CA 94025 

Copyright © 1977 by People’s Computer Company 

Publisher 

People’s Computer Company 
1263 El Camino Real 
Menlo Park, California 
(415) 323-3111 

Editor 

Jim C. Warren, Jr. 

Watchdogs 

Bob Albrecht 
Dennis Allison 
Underdog 

Rosehips Malloy 

Disclaimer 

We serve as a communication medium for the exchange of 
information. We do not guarantee the validity of that information. 


U.S. Subscriptions 

□ $12 for one year 

□ $22 for two years 

□ $21 for one year for first class/ 
airmail to anywhere in the U.S. 

Foreign Via Surface Mail 

□ $16/year - anywhere outside U.S. 
(2nd-class Regulations require surcharge 
on mail sent to Canada) 


Back Issues to U.S. 

□ All of Vol. 1 for $13 
Vol_No_for SKS0 


Vol.. 


.No.. 


.for $1.50 


Foreign Via Air Mail 

□ $21/year to Canada 

□ $28/year to Europe & Pan America 

□ $32/year - other foreign 


EDITOR’S PREFACE 


Jim C. Warren, Jr., Editor 


January 21, 1977 


First of all, some mundane details: this is not one of those 
“Best of. . . ” digests; it’s everything from the first year’s pub¬ 
lication of DDJ (except subscription forms & questionnaires, 
and propaganda concerning other PCC offerings. . . which we 
have managed to squeeze in at the end of the book). It con¬ 
tains all the rest of the content of the original issues—all ten 
issues of Volune 1. Please note that this includes now-obsolete 
product announcements, product pricing that is sometimes no 
longer valid, definitive predictions of things that didn’t happen, 
and all of our original, authentic typographical errors. We hope 
that you will also find that it contains considerable useful in¬ 
formation, program listings, and reference material. 

A Reference Periodical 

From the beginning, we have viewed Dr. Dobb’s Journal 
as a reference publication rather than merely as a periodical. 
Thus, as we ran out of back issues, we repeatedly reprinted 
them as the demand for them continued and increased. Now 
that a year of publication has passed, and we find a consider¬ 
able number of new subscribers requesting all back issues, we 
have chosen to bind Volume One into a more convenient form 
and continue to make it available. We expect to continue to 
reprint it, as long as there is a demand for it. We believe this 
is an appropriate policy for a reference periodical. 

A Year of Hindsight 

A more personal commentary: when Dennis Allison and 
Bob Albrecht first approached me about editing DDJ, I 
thought of it as an entertaining spare-time effort—an interest¬ 
ing project with which to diddle for a while. I’m an inveterate 
project phreaque, and had been a computer fanatic for most 
of a decade. I had been following the development of hobby 
computing ever since I stumbled into one of the early meetings 
of the Homebrew Computer Club in April, 1975, and had 
written a couple of obscure articles for some of the early 
issues of Byte. But, when I took over as Editor of Dr. Dobb’s, 

I actually did so with little foresight—little vision of where 
DDJ could go, and little vision of where personal computing 
could go. 

The vision remains misty, certainly, however some very exciting features are taking shape. The changes and growth that have 
taken place in this past year have been phenomenal, and they do little more than imply still greater development in the 
immediate future. 

At the most obvious level: hardware has gone from strictly glitchy kits to assembled and reliable complete units. Systems 
software has gone from virtually nonexistent, to where multitasking, multi-user soft-disc operating systems are being 
offered to the hobbyist community. Average memory capacity on home systems has probably doubled, and possibly 
quadrupled. Though applications have remained quite limited, awaiting adequate systems software, it appears certain that 
they will develop much more rapidly in 1977. 

The principal actors have also developed significantly. The customers — the hobbyists and users — have become more sophisticated 
and discriminating in their demands and their purchases. The vendors and manufacturers have, in many cases, overcome start-up prob¬ 
lems such as under-financing and inadequate customer service. Although there are still some highwaymen in this frontier community, 
most of the vendors are maturing into responsible, properly functioning organizations. As is the case with hardware and software, how¬ 
ever, there is still considerable room for further growth and development. 

The most exciting aspect of that hazy vision into the future, however, is my growing suspicion that personal and home computing 
well may have as significant an impact on the general public — the overall society — as has the automobile, the telephone, and tele¬ 
vision ... all of which were considered to be mere technical novelties of no practical value, when they were first developing. Having 
lived in the San Francisco Bay Area since the early 60’s, I have seen a number of attempts made at various forms of social utopias, and 
seen all of them fail — so I view this new potential utopia, “computer power to the people,” with a somewhat jaundiced eye. However, 
the more I see of it; the more I slowly come to believe that the massive information processing power which has traditionally been 
available only to the rich and powerful in government and large corporations will truly beocme available to the general public. And, I 
see that as having a tremendous democratizing potential, for most assuredly, information — data and the ability to organize and process 
it — is power. 

It is an exciting vision to me. I am honored to be a part of it. I wish to point out that you, who have chosen to read this book, 
must also be a part of that venture. This is a new and different kind of frontier. We are part of the small cadre of new frontiersmen 
who are exploring it. To the extent that we can blaze a trail to new and useful pastures, the larger society will follow, and hopefully 
the overall culture will benefit. So, pick up your eight-bit musket and forge onward. 





CONTENTS: Volume One 1976 

- VOLUME I, NUMBER 1, 1976 ——-—_ 

Page 

Tiny Basic Status Letter - Dennis Allison 5 

16-Bit Binary to Decimal Conversion Routine - Dennis Allison 6 

Build Your Own Basic - Dennis Allison & Others 7 

Build Your Own Basic-Revised - Dennis Allison & M. Christoffer 8 

Design Notes for Tiny Basic - Dennis Allison, Happy Lady & Friends 9 

Tiny Basic - Dennis Allison, Bernard Greening, Happy Lady & Lots of Friends 13 
Extendable Tiny Basic - John Rible 14 

Corrected Tiny Basic K - Bernard Greening 16 

Tiny Basic, Extended Version - Dick Whipple & John Arnold 18 

TB Code Sheet - Dick Whipple 20 


-- VOLUME I, NUMBER 2, 1976 ----- 

What’s DOJCC & O All About? - Jim C. Warren, Jr. 25 

A Critical Look at Basic - Dennis Allison 26 

Music of a Sort - Steve Dompier 28 

SCELBAL - A Higher Level Language for 8008/8080 Systems - Mark Arnold & 

Nat Wadsworth 30 

Tiny Basic, Extended (Part 2) - Dick Whipple & John Arnold 35 

Computers That Talk - Jim Day 54 

Letters and Notes 

TBX Mods for a SWTP TVT-2 56 

Tiny BASIC Available for the 6800 56 


- VOLUME I, NUMBER 3, 1976 - 

Where Do We Go From Here? - 58 

Quik Bits 59 

Program Repository & Tape Duplication Facility 63 

Signetics 2650 Kit for Under $200 - Roy Blacksher 64 

Public Interest Satellite Association 64 

Computer Process for Rapid Production of Musical Compositions 

(Reprinted from Campus Report) 65 

It Can Talk — But Can It Sing? 67 

Touchless Sensing for Under $100. 68 

Parser Saves Pain - Harvey Hahn 70 

Yet Another BASIC BOMBOUT! 70 

Keyboard Loader for Octal Code Via the TVT-2 - Jack O. Coats, Jr. 71 

Breakpoint Routines for 6502s - John Zeigler 72 

Denver Tiny BASIC for 8080s: A 2nd Version That Includes 1-0 Arrays - 

F. J. Greeb 75 


- VOLUME I, NUMBER 4, 1976 -- 

Editorial: History Repeats Itself — I Hope - Jim C. Warren, Jr. 89 

Scanning the History Periodicals (information Derived from electronic 

NEWS - May 24, 1976) - 90 

First Word on a Floppy-Disc Operating System - Jim C. Warren, Jr. 91 

Hardware & Software for Speed Synthesis - Lloyd Rice 92 

MINOL-Tiny BASIC With Strings in 1.75K Bytes - Erik T. Mueller 95 

System Monitor for 8080-based Microcomputers - Charlie Pack 104 


1 























-—— -- VOLUME I, NUMBER 5, 1976 —-- 

Copyright Mania - Jim C. Warren, Jr. 120 

The 1976 Trenton Computer Festival - Sol Libes 121 

Votrax Makes the Offer: Speed Synthesis Kit for Under $1K - 

John McDaniel 124 

Bad Bit Getters: Memory Test Programs - Ray Boaz 126 

Unizap: A Modification of “Shooting Stars” - John C. Shepard 127 

Palo Alto Tiny BASIC - Li-Chen Wang 129 

A Note to Members of the S. California Computer Society - Jim C. Warren, Jr. 142 
Index to THE COMPUTER HOBBYIST 143 

Texas Tiny BASIC (TBX) Marries TV-Cassette Operating System (TVCOS) - 

Digital Group Software Systems, Inc. Staff 144 

The Alpha-Numeric Music System - Malcolm Wright 148 


VOLUME I, NUMBER 6, 1976 


Consumer Comments 
A Novice Constructs an IMSAI - S.A. Cochran, Jr. 

Bootstrap for 8080 - Li-Chen Wang 

BYTE Saving Programming Tricks for the 8080 - Tom Pittman 
An Exercise for Novice Translator Implementors - Bill Thompson 
A Classy 8080 Text Editor - F. J. Greeb 
48 Lines of 64 Characters on a TV ((Video Terminal Technology) 
Variable Character Spacing in Video Displays - Jim Day 
TVT - II Mods to Get 64 Characters Per Line - David 0. Valliere 
Homebrew TV Display with Graphics - Glendon Smith 
$98.50 Graphics Terminal Kit - SWTPC 

Errors In & Improvements for Whipple & Arnold’s Tiny BASIC 
Extended (TBX) - Charles Skeldon 
MinErrata for MINA Plus Tiny TREK - Erik Mueller 
Button, Button in 8080 Machine Code - Ron Santore 
FCCPetition on ANSCII Transmissions by Hams - Bruce J. Brown 


155 

156 

157 
159 
161 

175 

176 

177 

178 
181 

182 

183 

186 

190 


- VOLUME I, NUMBER 7, 1976 —---— 

Personal Computing ’76: Looks Like It’s Going to Be a GREAT 

Show - Jim C. Warren 193 

1977 NCC Includes Significant Personal Computing Events 194 

The Time for Floppy’s is Just About NOW! - Editor 195 

Design Contest Offers Head-Per-Trade Hard DISCs as Prizes 197 

Proposed Hobbyist-Standard Bus Structure - D. Denney & J. Broom 198 

The PCM-12: A PDP-8 Look-Alike Well Worth Looking at - Jim C. Warren, Jr. 200 

7.-80. . . Coming on Strong - Jim C. Warren, Jr. 201 

Remember Those Secret Codes You Played With as a Kid? - Mai Stiefel 202 

8080 TECO and Floating Point Pack - William E. Severance, Jr. 206 

Floating Point Routines for the 6502 - Roy Rankin & Steve Wozniak 207 

Monitor for the 6502 - Jack Bradshaw 210 

Lunar Lander for the 6502 - Mark Garetz 212 

“Applications Software” - Games in Pittman’s 6800 Tiny Basic - Carl Kelb 216 

Low-Cost 6800 Systems Software & Games - Technical Systems 

Consultants’ Staff 218 

Shooting Stars for Vitersyk’s 6800 Micro-BASIC - Mark J. Borgerson 219 

Bugs & Fixes 

MINOL: Tiny Trek — More Details & A Correction - Erik Mueller 221 

MINOL Errata & Praise - Erik T. Mueller & Phillip Hansford 222 

Computer Music Bibliography - John Snell 223 

SMRT Will Hurt - Leroy Finkel 226 

Lou Field’s Response to the Editor’s Note to the SCCS - Lou Fields 228 


--VOLUME I, NUMBER 8, 1976 ---— 

Realizable Fantasy: Computer Control of Music Tapes for Your Home 

Stereo - Jim C. Warren, Jr. 230 

A Realized Fantasy: Unlimited Speech Synthesis for Home Computers - 

Jim C. Warren, Mr. 234 

Plessey Does Right by Hobbyists 238 

Proposal: A Board to Expand 8880 Instructions - Walt Ferris 239 


2 





















University of California Requests Suggestions About Stand-Alone Computers 


for Its 120,000 Students 241 

Personal Computers: A Bit of Wheat Amongst the Chaff - Jef Raskin 242 

How to Make the 6800 Resident Assembler Work in Your System - Tom Pittman 246 
A 6502 Disassembler from Apple - Steve Wozniak & Allen Baum 249 

A Number Game for the 6502 - Steve Wozniak 253 

The Bouncing Beastie: A Random Walker for Processor Tech’s VDM - 

Marvin R. Winzenread 255 

TBX Additions: String Handling and a New Print Delimiter - Penny Tiger 257 

More Mods to Comprer’s Music Program, A 5-Instruction Memory - Erase 

Routine & Other Memory-Test Programs - Richard Kaapke 259 

Bugs & Fixes 

A ‘Fix ’for Denver Tiny BASIC, Praise & a Bug-Note on P. T. ’s 5K 
BASIC - F. J. Greeb 261 

How Secure is Computer Data? Not Very, say Stanford Experts - 

from the STANFORD OBSERVER 262 


VOLUME I, NUMBER 9, 1976 


Policy Statement: Handling of Consumer’s Complaints Regarding Vendor’s 

Products and Services - Editor 265 

Hurray & Beware: Everybody’s Jumping on the Convention Bandwagon - 

(Computer Hobbyist Conventions Calendar ) - Jim C. Warren, Jr. 265 

Some Personal Observations on PERSONAL COMPUTING ’76 - 

Jim C. Warren, Jr. 268 

First West Coast Computer Faire 270 

Inside Dope From Motorola 271 

An Excellent, Point-by-Point Response to Complaints About the Digital 

Group - Richard C. Bemis 272 

Assembling an IMSAI Microcomputer - Pierre duPont V 273 

PCC Research Engineer Evaluates the 16-Bit PACER Kit - John Snell 274 

The Computer at Puberty from TECHNOLOGY REVIEW 216 

How to Code Code Jack Armstrong’s Super Decoder Ring - Jon 0. Stedman 278 
Music by Computer 280 

Timer Routines for 6800’s - Gregory Worth 281 

Micro BASIC Plus for $15.95 281 

Tiny BASIC for the 6800 & 6502 from Tom Pittman’s ‘Company’ 282 

Save + Load Mods to Pittman/s 6800 Tiny BASIC - Henry L. Lee 283 

A BASIC Terminal Exchange Program - Robert Wilcox 284 

Octal Debugging Program (ODT-80) for the MCS-80 Computer - E.R.Risher 286 

OOPS! A Line-Drawing Game for Your Video Terminal - Martin Winzenread 290 

SCRUNCH (Pass 1) - A Compact for BASIC in 8080 - Martin Winzenread 291 

TINY HI - Martin Buchanan 292 

Book Review Computer Power + Human Reason - Reviewed by Dave Caulkins 296 
Tutorials from the IEEE Computer Society - Selected Bibliography With Abstracts 296 
Wayne Green to Start Publishing KILOBYTE - John Craig 298 


VOLUME I, NUMBER 10,1976 


Product & Software Testing to Become Regular Feature in DDL 300 

Machine-Readable Programs in Magazine Format - Jim C. Warren, Jr. 303 

Use An Acoustic Coupler to Read/Write Tape Cassettes - Jim C. Warren, Jr. 304 

Thinking of Opening a Computer Store? 307 

Jim McCord Reports on the LSI-II - T. McCord 308 

Tarbell Responses, Compliments & Complaints 309 

NEC and IMSAI Incompatible with 8080A - Letters from Glen Tenney, IMSAI 

and NEC 311 

Product Review: POLY 88 - An Excellent System - Jef Raskin 313 

It’s a BASIC, It’s an APL ... It’s CASUAL! - Bob Van Valzah 316 

Active Low - Mark Space 329 

NIBL —Tiny BASIC for National’s SC/MP Kit - Mark Alexander 331 

Upgraded CP/M Floppy Disc Operating System Now Available 348 

Arithmetic Expression Evaluator Mod - Jim Abshire 349 

CHASE: A One or Two Player Video Game - Marvin Winzenread 355 

Life’s Like That: Life on an 8080 with a VOM - Marvin Winzenread 357 


















dr dobb's journal of 

COMPUTER 

(Calisthenics ^ Orthodontia 

Running Light Without Overbyte 


$ 1.50 


January, 1976 


Box 310, Menlo Park CA 94025 


Volume 1, Number 1 


A REFERENCE JOURNAL FOR USERS OF HOME COMPUTERS 


Table of Contents for Volume, 1, Number 1 (20 pages) page 

Tiny BASIC Status Letter - Dennis Allison 1 

16-Bit Binary-to-Decimal Conversion Routine - Dennis Allison 2 

Build Your Own BASIC [reprinted from PCC, Vol. 3, No. 4] - Dennis Allison & others 3 

Build Your Own BASIC, Revived [reprinted from PCC, Vol. 4, No. 1] - D. Allison & M. Christoffer 4 

Design Notes for Tiny BASIC [reprinted from PCC, Vol. 4, No. 2] - D. Allison, Happy Lady, & friends 5 
Tiny BASIC [reprinted from PCC, Vol. 4, No. 3] - D. Allison, B. Greening, H. Lady, & lots of friends 9 
Extendable Tiny BASIC - John Rible 10 

Corrected Tiny BASIC IL - Bernard Greening 12 

Tiny BASIC, Extended Version (TBX), Part 1 - Dick Whipple & John Arnold 

Example, Command Set, Loading Instructions, Octal Listing 14 

Letter & Schematics - Dr Robert Suding 

Using a calculator chip to add mathematical functions to Tiny BASIC 18 


THIS IS A REPRINT OF 
THE ORIGINAL 
VOLUME 1, NUMBER 1 


4 










dr dobh’s journal of 


T 

C 


y 


alisthenics 


BASIC 
60 


rthodontia 


Running Light Without Overbyte 

Box 310, Menlo Park CA 94025 Volume 1, Number 1 

Z&& i .i.iA ^S LJlSLSLJLSLSUULSLSt&Sl!l 8 8 8 880988868898839808089060000000(108001100800000000000 



MJULSSJUULAJLSJLS.JULSLSJIJLSUI 


STATUS LETTER 

by Dennis A Nison 

The magic of a good language is the ease with which a 
particular idea may be expressed. The assembly language of most 
microcomputers is very complex, very powerful, and very hard to 
learn. The Tiny BASIC project at PCC represents our attempt to 
give the hobbyist a more human-oriented language or notation with 
which to encode his programs. This is done at some cost in space 
and/or time. As memory still is relatively expensive, we have chosen 
to trade features for space (and time for space) where we could. 

Our own implementation of Tiny BASIC has been very slow. I 
have provided technical direction only on a sporadic basis. The real 
work has been done by a number of volunteers; Bernard Greening 
has left the project. As might be guessed. Tiny BASIC is a tiny part 
of what we do regularly. (And volunteer labor is not the way to run 
a software project with any kind of deadline!) 

While we've been slow, several others have really been fast. In 
this issue we publish a version of Tiny BASIC done by Dick Whipple 
and John Arnold in Tyler, Texas. (And other versions can't be far 
behind.) 

H (g U H m SS H H H H11HIIH H1! 

MY, HOW TINY BASIC CROWED! 

Once upon a time, in PCC, Tiny BASIC started out to be: 

t a BASIC-like language for tiny kids, to be used for games, 
recreations, and the stuff you find in elementary school math books. 

t an exercise in getting people together to develop FREE soft¬ 
ware. 

t portable-machine independent. 

t open-ended-a toy for software tinkerers. 

t small. 

Then . . . (fanfare!) . . . along came Dick Whipple and John 
Arnold. They built Tiny BASIC Extended. It works. See pp 13-17 
and 19 in this issue for more information. More next issue. 

WANTED: More Tiny BASICS up and running. 

WANTED: More articles for this newsletter. 

WANTED: Tiny other languages. I might be able to live with Tiny 
FORTRAN but, I implore you, no Tiny COBOL! How about Tiny 
APL? Or Tiny PASCAL (whatever that is)? 

WANTED: Entirely new, never before seen. Tiny Languages, 
imported from another planet or invented here on Earth. Especially 
languages for kids using home computers that talk to tvs or play 
music or run model trains or . . . 


BASIC 

BASIC, Beginners' All-purpose Symbolic Instruction Code, was 
initially developed in 1963 and 1964 by Professors John Kemeny 
and Thomas Kurtz of Dartmouth College, with partial Isupport from 
the National Science Foundation under the terms of Grant NSF GE 
3864. For information on Dartmouth BASIC publications, get 
Publications List (TM 086) from Documents Clerk, Kiewit Compu¬ 
tation Center, Dartmouth College, Hanover NH 03755. Telephone 
603-646-2643. 

Try these: TM028 BASIC: A Specification $3.15 
TM075 BASIC $4.50 

^1^ 'Kb? 

/p*-T'* 

It would help a lot if you would each send us a 3x5 card with your 
name, address (including zip), telephone number, and a rather 
complete description of your hardware. 

"CLf •JU' e »i>’ -\j> aJL*’ fctX** 

DRAGON THOUGHTS 

t We promised three issues. After these are done, shall we 
continue? 

t If we do, we will change the name and include languages other 
than BASIC. 

t This newsletter is meant to be a sharing experience, intended to 
disseminate FREE software. It's OK to charge a few bucks for tape 
cassettes or paper tape or otherwise recover the cost of sharing. But 
please make documentation essentially free, including annotated 
source code. 

t If we do continue, we will have to charge about $1 per issue to 
recover our costs. In Xeroxed form, we can provide about 20-24 
pages per issue of tiny eye-strain stuff. If we get big bunches of 
subscriptions, we'll print it and expand the number of pages, 
depending on the number of subscribers. 


t So, let us know. . . shall we continue? 



For our new readers, and those who have been following 
articles on Tiny BASIC as they appeared in People’s 
Computer Company , we have reprinted on pages 3-12 the 
best of Tiny BASIC from PCC as an introduction, and as 
a reference. 


5 











an 


uary 1976 Tiny BASIC Calisthenics & Orthodontia Box 310 , Menlo Park CA 94025 Page 2 


TECHNIQUES & PRACNIQUES 
by Dennis Allison, 1 2/1 /75 

(This will be a continuing column of tricks, algorithms, and 
other good stuff everyone needs when writing software. Contribu¬ 
tions solicited.) 

16-BIT BINARY TO DECIMAL CONVERSION ROUTINE 

t saves characters on stack 

t performs zero suppressed conversion 

t uses multiplication by 0.1 to obtain n/10 and n mod 10 

define crutch = OFFH; 

declare n, u, v, t; BIT (16) These could be registers, or on the 

if n < 0 then stack 

do; 

n = -n; 

call outch('-'); 

end; 

i call push (crutch) 

repeat; 

v = shr (n,1); 
v = v + shr (v,1); 
v = v + shr (v,4); 
v = v + shr (v,8); 
v = shr (v,3); 


a.a.a.a.fl a o.fl.8-tt_ajULfl a a a a.a.9-ajL8xaxajLajiajujLa.B_B.9.a.9.8_8_8_9-aji-ff 


The crutch marks the end of num¬ 
ber on the stack 


These all are 16 bit shifts 
Computes [n/10J or [n/IOJ - 1 by 
multiplication 
Call it x 


t = v + v; 
u = t + t; 
u = u + u +1 
u = n - u 

if u ^ 10 then 
do; 

u = u - 10; 
n =v+ 1; 

end 

else 

n = v; 

call push (u); 
until n = 0; 

ch = pop; 

do while < > crutch; 

call outch (ch + 030H); 

ch = pop; 


Computes 10 - x 

Byte only as high order must be 
equal 

Perhaps one could use a decimal 
feature here 

Corrects for case where / n/IOJ - 1 
is computed and creates ln/10J and 
n mod 10 

Saves result on stack 
Loop at least once 


Write result in reverse order 
Converts digits to ASCII 
0 = 030H 02 = 032H etc. 

Pop takes one word off the stack 


end 

oooooooooooaaooaaa islsh a a a a a a a aaaaaaaajLajLB.a.ajL9-B_a. 


2 t Letters from readers are most welcome. Unless they 
note otherwise, we will assume we are free to publish 
and share them. 


PCCTiny BASIC Reorganizes. . . 


OeA^<r\vS 


t We hereby assign reprint rights to all who wish to use 
Tiny BASIC Calisthenics & Orthodontia for non¬ 
commercial purposes. 

f To facilitate connection between our subscribers, we will 
in subsequent issues publish our subscriber list (including 
addresses and equipment of access/interest). 


Q-- 15 '75 




1 


^ -?ae\s 

f\ 1 t>S C.W- A. 

lUe. 

Vv\6’(G. 


\vkd 


n 

wav. 




1 

rL cw\_ 






.. . and so we procede somewhat more slowly than some 
of our readers 


Dennis Allison - 

technical editor 

Bob Albrecht 
John Arnold 
Dick Whipple 

contributing 

editors 

Lois Britton - 

circulation manager 

Rhoda Horse - 

midwife-at-large 

000000000000000000000000000000000 


I want to subscribe to 

« DR. DOBB'S JOURNAL OF 

TINY BASIC CALISTHENICS & ORTHODONTIA ■ 

(3 issues for $3) 


NAME. 


ADDRESS- 


CITY. 


.STATE. 


.ZIP. 


(If you would like us to publish your name, address, and equip¬ 
ment of access/interest in future issue(s), please indicate VERY 
SPECIFICALLY: 

EQUIPMENT 

OF ACCESS/INTEREST_ 


Please send check or money order (purchase order minimum: $6) 

to TINY BASIC CALISTHENICS & ORTHODONTIA 

Box 310, Menlo Park CA 94025. Thank you. 


6 





















January 1976 Tiny BASIC Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 Page 3 


BUILD YOUR OWN BASIC 
by Dennis Allison & Others 

(reprinted from People’s Computer Company Vol. 3, No.4) 

A DO IT YOURSELF KIT FOR BASIC?? 

Yes, available from PCC with this newspaper and a lot of your time. This is 
the beginning of a series of articles in which we will work our way through the 
design and implementation of a reasonable BASIC system for your brand X 
computer. We'll be working on computers based on the INTEL 8008 and 
8080 microprocessors. But it doesn’t make much difference — if your machine 
is the ZORT 9901 or ACME X you can still build a BASIC for it. But 
remember, it’s a hard job and will take lots of time particularly if you haven’t 
done it before. A good BASIC system could easily take one man six months! 
We'd like everyone interested to participate in the design. While we could do 
it all ourselves, (we have done it before) your ideas may be better than ours. 
Maybe we can save you, or you can save us, a lot of work or problems. Write 
us and we'll publish your letter and comments. 


WHICH BASIC? 

There is not any one standard BASIC (yet). 

The question is which BASIC should we choose 
to implement. A smaller (fewer statements, 
fewer features) BASIC is easier to implement 
and (more important) takes less space in the 
computer. Memory is still expensive so the 
smaller the better. Yet maybe we can't give 
up some goodies like string variables, dynamic 
array allocation, and so on. 

There is a standard version of BASIC which is 
to be the minimal language which can be called 
BASIC. It's a pretty big language with lots of 
goodies. Maybe too big. Is there any advantage 
to being compatible with, say, the EDU BASICS? 
We don't have to make any decision yet; but the 
time will come ... 


DATA STRUCTURES 

Data structures are places to put things so you can find them or use them later. 
BASIC has at least three important ones: a symbol table which looks up a pro¬ 
gram name, A or Z9 or A$, with its value. If we had a big computer where space 
was not a huge problem, we could simply preallocate all storage since BASIC 
provides for only 312 different names excluding arrays. When memory is so 
costly this doesn't make much sense. Somewhere, also, we’ve got to store the 
names which BASIC is going to need to know, names like LET and GO TO and 
IF. This table gets pretty big when there are lots of statements. 

Lastly, we need some information about what is a legal BASIC statement and 
which error to report when it isn't. These tables are called parsing tables since 
they control the decomposition of the program into its component parts. 

STRATEGY 

Divide and Conquer is the programmers maxim. BASIC will consist of a lot of 
smaller pieces which communicate with each other. These pieces themselves 
consist of smaller pieces which themselves consist of smaller pieces, and so forth 
down to the actual code. A large problem is made manageable by cutting it into 
pieces. 

What are the pieces, the building blocks of BASIC? We see a bunch of them: 

# a supervisor which determines what is to be done next. It receives control 
when BASIC is loaded. 

* a program and line editor. This program collects lines as they are entered 
from the keyboard and puts them into a part of computer memory for 
later use. 

#a line executor routine which executes a single BASIC statement, whatever 
that is. 

#a line sequence which determines which line is to be executed next. 

*a floating point package to provide floating point on a machine without the 
hardware. 

•^terminal I/O handler to input and output information from the Teletype and 
provide simple editing (backspace and line deletion). 

*a function package to provide all the BASIC functions (RND, INT, TAB, etc.) 

*an error handling routine (part of the supervisor). 

*a memory management program which provides dynamic allocation data 
objects. 

These are the major ones. As we get futher into the system we'll begin to see 
others and we'll begin to be able to more fully define the function of each of 
these modules. 


COMPILER OR INTERPRETER? 

V/e favor using an interpreter. An interpreter is 
a program which will execute the BASIC program 
from its textual representation. The program 
you write is the one which gets executed. A com¬ 
piler converts the BASIC program into the ma¬ 
chine code for the machine it is to run on. Com¬ 
piled code is a lot faster, but requires more space 
and some kind of mass storage device (tape or 
disk). Interpretative BASIC is the most common 
on small machines. 


DIRECT MODE? 

Some kind of "desk calculator" mode of opera¬ 
tion would be nice. At least, we would like to 
be able to look at and set different variables in a 
program and restart execution at any given point. 
This feature makes it easier to find and gently 
terminate the existence of “bugs." 


TINY BASIC 

Pretend you are 7 years old and don't care 
much about floating point arithmetic (what's 
that?), logarithms, sines, matrix inversion, 
nuclear reactor calculations and stuff like 
that. 

And . . . your home computer is kinda small, 
not too much memory. Maybe its a MARK-8 
or an ALT AIR 8800 with less than 4K bytes 
and a TV typewriter for input and output. 

You would like to use it for homework, math 
recreations and games like NUMBER, STARS, 
TRAP, HURKLE, SNARK, BAGELS,. .. 

Consider then, TINY BASIC 

® Integer arithmetic only — 8 bits? 16 bits? 
a 26 variables: A, B, C, D,.. ., Z 
a The RND function - of course! 
a Seven BASIC statement types 
INPUT 
PRINT 
LET 
GO TO 
IF 

GOSUB 

RETURN 

“ Strings? OK in PRINT statements, not 

OK otherwise. 


HOW MUCH MEMORY? AND ... WHAT KIND? 

Can we make some guesses about how big the BASIC system will be? Only 
if you don’t hold us to it. Suppose we want to be able to run a 50 line 
BASIC program. We need about 800 bytes to store the program, another 
60 or so bytes for storing program values (all numeric) without leaving any 
space for the interpreter and its special data. Past experience has shown 
that something like 6 to 8 Kbytes are needed for a minimum BASIC inter¬ 
preter and that at least 12K bytes are necessary for a comfortable system. 
That's a lot of memory, but net too much more than you need to run the 
assembler. A lot of BASIC could be put into ROM (Read Only Memory) 
once developed and checked out. ROM is a lot cheaper than RAM (Read 
and Write) memory, but you can’t change it. It's lots better to make sure 
everything works first. 

But... if we can agree on some chunks of code and get it properly checked 
out, some enterprising person out there might make a few thousand ROMs 
and save us all some $$$. Let's see now . . . how about ROMs for floating 
point arithmetic, integer arithmetic, Teletype I/O . .. 


7 




January 1976 Tiny BASIC Calisthenics & Orthodontia Box 310 , Menlo Park CA 94025 Page ^ 



BUILD YOUR OWN BASIC-REVIVED 
(reprinted from People’s Computer Company Vol. 4, No. 1) 

WHAT IS TINY BASIC??? 

TINY BASIC is a very simplified form of BASIC which can be 
implemented easily on a microcomputer. Some of its features are: 

Integer arithmetic 16 bits only 

26 variables (A, B,. . ., Z) 

Seven BASIC statements 

INPUT PRINT LET GOTO 
IF GOSUB RETURN 

Strings only in PRINT statements 

Only 256 line programs (if you’ve got that much memory) 

Only a few functions including RND 

It’s not really BASIC but it looks and acts a lot like it. I’ll be good 
to play with on your ALT AIR or whatever; better, you can change 
it to match your requirements and needs. 

TINY BASIC LIVES!!! 

We are working on a version of TINY BASIC to run on the INTEL 
8080. It will be an interpretive system designed to be as conservative 
of memory as possible. The interpreter will be programmed in 
assembly language, but we’ll try to provide adequate descriptions 
of our intent to allow the same system to be programmed for most any 
other machine. The next issue of PCC will devote a number of pages 
to this project. 

■Jf In the meantime, read one of these. 

Compiler Construction For Digital Computers , David Gries, Wiley, 1971 
493 pages, $14.95 

Theory & Application of a Bottom-Up Syntax Directed Translator 
Harvey Abramson, Academic Press, 1973, 160 pages, $11.00 

Compiling Techniques, F.R.A. Hopgood, American Elsevier, 126 pages 
$6.50 

1 BASIC Language Interpreter for the Intel 8008 Microprocessor 
A.C. Weaver, M.H. Tindall, R.L. Danielson. University of Illinois 
Computer Science Dept, Urbana IL 61801. June 1974. Report No. 

LI l'CDCS-R-74-658. Distributed by National Technical Informa¬ 
tion Service, U.S. Commerce Dept, Springfield VA 22151. $4.25. 

A BASIC language interpreter has been designed for use in a 
microprocessor environment. This report discusses the develop¬ 
ment of 1) an elaborate text editor and 2) a table-driven interpre¬ 
ter. The entire system, including text editor, interpreter, user 
text buffer, and full floating point arithmetic routines fits in 
16K 8-bit words. 

The TINY BASIC proposal for small home computers 
was of great interest to me. The lack of floating point 
arithmetic however, tends to limit its usefulness for my 
objectives. 

As a matter of a suggestion, consideration should be 
given to the optional inclusion of floating point 
arithmetic, logarithm and trigonmetric calculation 
capability via a scientific calculator chip interface, f 

The inclusion of such an option would tend to extend 


the interpreter to users who desire these complex calcu¬ 
lation capabilities. A number of calculator chip 
proposals have been made, with the Suding unit being 
of the most interest 

Thank you for the note of 13 June, regarding my letter 
on the Tiny BASIC article (PCC Vol. 3 No. 4). It was 
with regret that I learned that the series was not con¬ 
tinued in the next volume. Even though few responded 
to the article published, conceptually the knowledge 
and principles which would be disseminated regarding 
a limited lexicon, high level programming language 
are of importance to the independent avocational 
microcomputer community. 

At this time, PCC may not have a wide distribution in 
the avocation microcomputer community. This could 
be possibly the cause for the low number of respondies. 
Never the less, this should not detract from the dis¬ 
semination and importance of concepts and principles 
which are of significance. 

The thrust of my letter of 15 April, 1975, was to suggest 
a mechanism for the inclusion of F.P. in a limited 
lexicon and memory consumptive BASIC. I hope that 
the implication that F.P. must be included was not 
read into my letter. 

It is my interest that information, concepts and the 
principles of compiler/interpreter construction as it 
related to microcomputers be available to the limited 
budget avocational user. The MITS BASIC, which you 
brought up, appears from my viewpoint to be a licensed , 
blackbox program which is not currently available to: 

(a) 8008 users, (b) IMP-16 users, (c) independent 8080 
users (except at a very large expense) or (d) MC6800 
users who will shortly be on line. 

Presently it appears that microcomputer compiler 
interpreter function langauges will be coming available 
from a number of sources (MITS, NITS, Processor 
Technology and etc.). However, few will probably deal 
in the conceptualizations which are the basis of the 
interpreter. Information which will fill the void in the 
interpreter construction knowledge held by the avocation 
builder, should be made available. 

I strongly urge that the series started with Vol. 3 
No. 4 article be continued. Possibly the hardware, 
peripheral, machine programming difficulties incurred 
by the microcomputer builder, is prohibiting a major 
contribution at this time. However, I would expect 
that by Autumn a number of builders should have 
their construction and peripheral difficulties far enough 
along to start thinking about higher level languages. 

The previous objective for the article series sounds 
reasonable. It was*not my purpose in submitting the 
letter to detract from the objective of a very limited 
lexicon BASIC, ie., to be attractive and usable by the 
young and beginner due to its simplicity. 

If wives, children, neighbors or anyone who is not 
machine language or programming oriented is expected 
to use a home-base unit created under a restrained 
budget a high level language will be a necessity. It 
is with this foresight that I encourage the continuance 
of the “Build Your Own BASIC” series. 

This issue aside, I would like to encourage the PCC to 
continue the quite creditable activities which have 
been its order of business with regard to avocational 
computing. Michael Christoffer 

4139 12th NE No. 400 
Seattle, Wash. 98105 

t Please see Dr Robert Suding's article on p. 18 


8 






January 1976 Tiny BASIC Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 Page 5 


DESIGN NOTES FOR TINY BASIC 

by Dennis Allison, happy Lady, & friends 

(reprinted from People’s Computer Company Vol. 4, No. 2) 

SOME MOTIVATIONS 

A lot of people have just gotten into having 
their own computer. Often they don't know too 
much about software and particularly systems 
software, but would like to be able to program in 
something other than machine language. The 
TINY BASIC project is aimed at you if you are 
one of these people. Our goals are very limited— 
to provide a minimal BASIC-like language for 
writing simple programs. Later we may make 
it more complicated, but now the name of the 
game is keep it simple. That translates to a 
limited language (no floating point, no sines 
and cosines, no arrays, etc.) and even this is 
a pretty difficult undertaking. 

Originally we had planned to limit 
ourselves to the 8080, but with a variety of 
new machines appearing at very low prices, we 
have decided to try to make a portable TINY 
BASIC system even at the cost of some effi¬ 
ciency. Most of the language processor will be 
written in a pseudo language which is good for 
writing interpreters like TINY BASIC. This 
pseudo language (which interprets TINY BASIC) 
will then itself be implemented interpretively. 

To implement TINY BASIC on a new machine, 
one simply writes a simple interpreter for this 
pseudo language and not a whole interpreter for 
TINY BASIC. 

We'd like this to be a participatory design 
project. This sequence of design notes follows the 
project which we are doing here at PCC. There may 
well be errors in content and concept. If you're 
making a BASIC along with us, we'd appreciate 
your help and your corrections. 

Incidentally, were we building a production 
interpreter or compiler, we would probably struc¬ 
ture the whole system quite differently. We chose 
this scheme because it is easy for people to change 
without access to specialized tools like parser 
generator programs. 


THE TINY BASIC LANGUAGE 

There isn't much to it. TINY BASIC 
looks like BASIC but all variables are integers 
There are no functions yet (we plan to add RND, 
TAB, and some others later). Statement numbers 
must be between 1 and 255 so we can store them 
in a single byte. LIST only works on the whole 
program. There is no FOR-NEXT statement We've 
tried to simplify the language to the point where it 
will fit into a very small memory so impecunious, 
tyros can use the system. 

The boxes shown define the language. The 
guide gives a quick reference to what we will include. 
The formal grammar defines, exactly what is a legal 
TINY BASIC statement. The grammar is important 
because our interpreter design will be based upon it. 


IT'S ALL DONE WITH MIRRORS- 

OR HOW TINY BASIC WORKS 

All the variables in TINY BASIC: the 
control information as to which statement is 
presently being executed and how the next state¬ 
ment is to be found, the returnaddressesof active 
GOSUBS-—all this information constitutes the 
state of the TINY BASIC interpreter. 

There are several procedures which act upon 
this state. One procedure knows how to execute 
any TINY BASIC statement. Given the starting 
point in memory of a TINY BASIC statement, it 
will execute it changing the state of the machine 
as required. For example, 

100 LET S = A+6 © 

would change the value of S to the sum of the con¬ 
tents of the variable A and the interger 6, and sets 
the next line counter to whatever line follows 100, 
if the line exists. 

A second procedure really controls the 
interpretation process by telling the line interpreter 
what to do. When TINY BASIC is loaded, this 
control routine performs some initialization, and 
then attempts to read a line of information from the 
console. The characters typed in are saved in a buffer, 
LBUF. It first checks to see if there is a leading 
line number. If there is, it incorporates the line 
into the program by first deleting the line with the 
same line number (if it is present) then inserting 
the new line if it is of nonzero length. If there is 
no line number present, it attempts to execute 
the line directly. With this strategy, all possible 
commands, even LIST and CLEAR and RUN are 
possible inside programs. Suicidal' programs are 
also certainly possible. 


TINY SASIC GRAMMAR 

The things in bold face stand for themselves. The names in lower case 
represent classes of things. ': :=' is read 'is defined as'. The asterisk denotes 
zero or more occurances of the object to its immediate left. Parenthesis 
group objects, t is the empty set I denotes the alternative (the 
exciusive-or). 

Iine::= number statement @ I statement © 
statement::= PRINT expr-list 

IP expression relop expression THEN statement 

GOTO expression 

INPUT var-list 

LET var = expression 

GOSUB expression 

RETURN 

CLEAR 

LIST 

RUN 

END 

expr-list::= (string I expression) (, (string | expression) *) 
var-list::= var (, var)* 

expression:^ (+1 -1 £) term ( ( +1 -) term)* 

term::= factor ( (* | /) factor)* 

factor::=var | number | (expression) 

var::= A |B 1C ... |Y |Z 

number::= digit digit* 

digit::= 0|1 I 2 I... 18 19 

relop::=< ( >| = | £ ) | >(< I = I £ ) I = 

A BREAK from the console will interrupt execution of the program. 


9 








January 1 976 Tiny BASIC Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 Page 6 


IMPLEMENTATION STRATGIES AND ONIONS 

When you write a program in TINY BASIC 
there is an abstract machine which is necessary to 
execute it. If you had a compiler it would make 
in the machine language of your computer a 
program which emulates that abstract machine 
for your program. An interpreter implements 
the abstract machine for the entire language and 
rather than translating the program once to machine 
code it translates it dynamically as needed. Inter¬ 
preters are programs and as such have their's as 
abstract machines. One can find a better instruc¬ 
tion set than that of any general purpose computer 
for writing a particular interpreter. Then one 
can write an interpreter to interpret the instruc¬ 
tions of the interpreter which is interpreting the 
TINY BASIC program. And if your machine is 
microprogrammed (like PACE), the machine 
which is interpreting the interpreter interpreting 
the interpreter interpreting BASIC is in fact 
interpreted. 

This multilayered, onion-like approach 
gains two things: the interpreter for the inter¬ 
preter is smaller and simpler to write than an 
interpreter for all of TINY BASIC, so the resul¬ 
tant system is fairly portable. Secondly, since 
the major part of the Tl NY BASIC is programmed 
in a highly memory efficient, tailored instruction 
set, the interpreted TINY BASIC will be smaller 
than direct coding would allow. The cost is in 
execution speed, but there is not such a thing as 
a free lunch. 



"-jj’vji x your machine 

/your program in TINY BASIC 
/interpreter for TINY BASIC 

interpreter for TINY BASIC's interpreter' 

LINE STORAGE 

The TINY BASIC program is stored, except 
for line numbers, just as it is entered from the 
console. In some BASIC interpreters, the program 
is translated into an intermediate form which speeds 
execution and saves space. In the TINY BASIC 
environment, the code necessary to provide the 


Uiei REFERENCE GUIDE 
FOR TIN! BASIC 

LINE FORMAT AND EDITING 

• Lines without numbers executed immediately 
- • Lines with numbers appended to program 

• Line numbers must be 1 to 255 

• Line number alone (empty line) deletes line 

• Blanks are not significant, but key words must 

contain no unneeded blanks 

• deletes last character 

• X c deletes the entire line 

FXFCUTION CONTROL 

CLEAR delete all lines and data 
RUN run program 
LIST list program 

EXPRESSIONS 

Operators 

Arithmetic Relational 
+ - > > = 

* / 4 4 = 


<>>>< 


Variables 
A.Z (26 only) 


All arithmetic is modulo 2 
(+32762) 

INPUT/OUTP UT 

PRINT X,Y,Z 
PRINT'A STRING' 

PRINT 'THE ANSWER IS' 
INPUT X 
INPUT X,Y,Z 

ASSIGNMENT STATEMENTS 

LET X=3 
LET X= -3+5.Y 

CONTROL STATEMENTS 

GOTO X+10 
GOTO 35 
GOSUB X+35 
GOSUB 50 
RETURN 

IF X >Y THEN GOTO 30 


15 


transformation would easily exceed the space saved. 

When a line is read in from the console device, 
it is saved in a 72-byte array called LBUF (Line 
BUFfer). At the same time, a pointer, CP, is 
maintained to indicate the next available space in 
LBUF. Indexing is, of course, from zero. 

Delete the leading blanks. If the string 
matches the BASIC line, advance the cursor over 
the matched string and execute the next IL in¬ 
struction. If the match fails, continue at the IL 
instruction labeled Ibl. 


10 
















January 1 976 Tiny BASIC Calisthenics & Orthodontia Box 31 0, Menlo Park CA 94025 Page 7 


The TINY BASIC program is stored as an 
array called PGM in order of increasing line num¬ 
bers. A pointer, PGP, indicates the first free place 
in the array. PGP=0 indicates an empty program; 
PGP must be less than the dimension of the array 
PGM. The PGM array must be reorganized when 
new lines are added, lines replaced, or lines are 
deleted. 

Insertion and deletion are carried on simul¬ 
taneously. When a new line is to be entered, the 
PGM array searches for a lirje with a line number 
greater than or equal to that of the new line. 
Notice that lines begin at PGM (0) and at PGM 
(j+1) for every j such that PGM (j)= [carriage 
return]. If the line numbers are equal, then the 
length of the existing line is computed. A space 
equal to the length of the new line is created by 
moving all lines with line numbers greater than 
that of the line being inserted up or down as 
appropriate. The empty line is handled as a 
special case in that no insertion is made. 

TINY BASIC AS STORED IN MEMORY 


Two different things are going on at the same 
time. The routines must determine if the TINY 
BASIC line is a legal one and determine its form 
according to the grammar; secondly, it must 
call appropriate action routines to execute the 
line. Consider the TINY BASIC statement; 

GOTO 100 

At the start of the line, the interpreter looks for 
BASIC key words (LET, GO, IF, RETURN, etc.) 
In this case, it finds GO, and then finds TO. By 
this time it knows that it has found a GOTO 
statement. It then calls the routine EXPR to 
obtain the destination line number of the GOTO. 
The expression routine calls a whole bunch of 
other routines, eventually leaving the number 100 
(the value of the expression) in a special place, the 
top of the arithmetic expression stack. Since 
everything is legal, the XFER operator is invoked 
to arrange for the execution of line 100 (if it 
exists) as the next line to be executed. 

Each TINY BASIC statement is handled 
similarly. Some procedural section of an IL 
program corresponds to tests for the statement 
structure and acts to execute the statement. 


memory treated as an integer 
byte treated as a character 


? R I k( T 
S “ I N V U T 


M 

N 


T 

< 


t-j 

> 


tsi 

T 


N * M 


N 

0 <—> T W E M i_j 


* P o 
Kf 'a# 
% H 0 
(k O T 


\J 

P 


£ 

ft 

r 


1 0 @ % £ U 3 ) @ 

\ 

a carriage return symbol 
ERRORS AND ERROR RECOVERY 


ft 

1 

f 

1 


free space 


m 


There are two places that errors can occur. 

If they occur in the TINY BASIC system, they 
must be captured and action taken to preserve 
the system. If the error occurs in the TINY 
BASIC program entered by the user, the system 
should report the error and allow the user to 
fix his problem. An error in TINY BASIC can 
result from a badly formed statement, an il¬ 
legal action (attempt to divide by zero, for ex¬ 
ample), or the exhaustion of some resource 
such as memory space. In any case, the de¬ 
sired response is some kind of error message. 

We plan to provide a message of the form: 

! mmm AT nnn 

where mmm is the error number and nnn is 
the line number at which it occurs. For direct 
statements, the form will be; 

! mmm 

since there is no line number. 

Some error indications we know we will need are: 

1 Syntax error 5 RETURN without GOSUB 

2 Missing line 6 Expression too complex 

3 Line number too large 7 Too many lines 

4 Too many GOSUBs 8 Division by zero 

THE BASIC LINE EXECUTOR 

The execution routine is written in the inter¬ 
pretive language, IL. It consists of a sequence of 
instructions which may call subroutines written 
in IL, or invoke special instructions which are 
really subroutines written in machine language. 


ENCODING 

There are a number of different considerations 
in the TINY BASIC design which fall in this general 
category. The problem is to make efficient use of 
the bits available to store information without 
loosing out by requiring a too complex decodinq 
scheme. 

In a number of places we have to indicate 
the end of a string of characters (or else we have 
to provide for its length somewhere). Commonly, 
one uses a special character (NUL = 00H for ex¬ 
ample) to indicate the end. This costs one byte 
per string but is easy to check. A better way de¬ 
pends upon the fact that ASCII code does not 
use the high order bit; normally it is used for parity 

ONE POTENTIAL IL ENCODING 


ML 

r-~ 

1 

1 



IL instruction byte 


IL 




0 

o 

M 


0 

1 

‘Wf/ti 
/ ' /• 2 


7 6 0 

PC +<* gives 
new IL address 


TST with fail 
address PC +a 


table of entry 
points for ML subs. 


PC + a gives new 
IL address. Current 
PC stacked 


11 




















































January 1 976 Tiny BASIC Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 Page 8 


on transmission. We can use it to indicate the end 
(that is, last character) of a string. When we process 
the characters we must AND the character with 
07 FH to scrub off the flag bit. 

The interpreter opcodes can be encoded into 
a single byte. Operations fall into two distinct 
classes—those which call machine language sub¬ 
routines, and those which either call or transfer 
within the IL language itself. The diagram indi¬ 
cates one encoding scheme. The CALL operations 
have been subsumed into the IL instruction set 
Addressing is shown to be relative to PC for IL 
operations. Given the current IL program size, 
this seems adequate. If it is not, the address 
could be used to index an array with the ML 
class instructions. 

TINY BASIC INirnnilETIVE OPERATIONS 

TST Ibl, 'string' delete lending blanks 

If s'dng matches the BASIC line, advance cursor over the 
mulched string and execute the next IL instruction. If a 
match fails, execute the IL instruction at the labeled Ibl. 


A STATEMENT EXECUTOR WRITTEN IN IL 

Thii program in IL will execute a TINY BASIC 
itatament. Tl«xr operators TST. TSTV. TSTN. and PRS 
all use a cursor to Imd < bar octet isitcs ot tbe TINY 
BASIC line. Or bn orciai.oni INXT. XPER) move 
Urc cursor so it points to ahoti«r TINY BASIC 
line. 


S3. GO’ 
S?. -TO* 
EXPR 


CALL Ibl 

RTN 

DONE 

JMP Ibl 
PRS 

PRN 

SPC 

NLINE 

NXT 


SAV 

RSTR 

CMPR 


Execute the IL subioutine starting at Ibl. Save the IL ad- 
dtess following the CALL on the control stack. 

Return to the IL location specified by the top of the con¬ 
trol stack. 

Report a syntax error if after deletion leadinq blanks the 
cursor is not positioned to read a carriage ref r n. 

Continue execution of IL at the label specified. 

Print characteis from the BASIC text up to but not including the 
closing quote mark. If a cr is found in the program text, report an 
error. Move the cursor to the point following the closing quote. 

Print number obtained by popping the top of the expres¬ 
sion stack. 

Insert spaces to move the print hejd to next zone. 

Output CRLF to Printer. 

If the present tr.odc is direct (line numlrcr zero), then 
return to line collection. Otherwise*, select the next 
sequential line and begin interpretation. 

Test valuybt the top of the AE st ■< k to tie within range. 

If not, upon an error. If so, attempt to position cursor 
at that line. If it exists, begin interpretation tticre; if not 
report an eiror. 


THE IL CONTROL SECTION 

START; INIT 
NLINE 

CO: GET LINE 

TSTL XEC 

INSRT 

JMP CO 

STMT: XINIT 

STATEMENT EXECUTOR 

STMT: T..T St;‘LET* 

•■STV SIC 
CAIL EXPR 
DONE 
STORE 
NXT 

SI: TST 

TST 
CALL 
DONE 
XPER 

S2: TST 

CALI. 

DONE 
SAV 
XFCR 

53 TST 

54 TST 
PRS 

S6. TST 

sec 
JMP 

S8: DONE 

NLINE 
NXT 

S7: CALL 

PRN 
JMP 

SB: TST 

CALL 
CALL 
CALL 
CMPR 


.-INITIALIZE 
; WRITE CR/LF 

; WRITE PROMPT & GET A LINE 
. TEST TOR LINE NUMBER 
; INSERT IT (MAY BE DELETE) 

; INITIALIZE FOR EXECUTION 


; IS STATEMENT A LET? 

: YES! PI ACE VAR ADDRESS ON AESTK. 
. PI ACE EXPR VALUE ON AESTK. 
.-REPORT ERROR IF cr NOT NEXT. 
.STORE RESULT*. 

; AND SEQUENCE TO NEXT. 

; GOTO OR GOSUB? 

. YES ...TO OR ...SUB. 

.GET LABEL. 

.ERROR IF e. NOT NEXT. 

. SET UP ANO JUMP. 

; ERROR ir NO MATCH. 

; GE T Ot STINAT ION. 

. ERROR IF cr NOT NEXT. 

; SAVE RETURN LINE. 

; ANO JUMP. 

.-PRINT. 

; T 1ST FOR OUOTE. 

. PRINT STRING. 

; IS THERE MORE? 

.SPACE TO NEXT ZONE. 

YES. JUMP BACK. 

;NO. ERROR IF NOcr. 


CALL 

INNUM 

SIORE 


TST 
DONE 
RST R 
NXT 


; GET EXPR VALUE. 

; PRINT IT. 

. IS THERE MORE? 

; IF STATEMENT. 

: GET EXPRESSION. 

. nr rniMiNE opr and put on stk. 

;GIT EXPRESSION. 

; PERI OHM COMPARISON-PERFORMS NEXT IF FALSE. 
;C.t T Nl XT STATEMENT. 

: INPUT STATEMENT. 

: GIT VAR ADDRESS. 

:MOVE NUMBER FROM TTY TO AESTK.' 

: STORE IT. 

SI l.V ; IS THERE MORE? 

S10 ; YES. 

; MUST BE cr. 

: SEQUENCE TO NEXT. 

S13.'RETURN* ; RETURN STATEMENT. 

. MUSI RE cr. 

.-RESTORE LINE NUMBER OF CALL.[ 

: SEQUENCE TO NEXT STATEMENT. 


S9. ’IF’ 
EXPR 
HELOP 
EXPR 

STMT 

SI?. "INPUT 
VAR 


514, 'END* 

515. 'LIST 


S17: 

EXPR: 


Place present line number c 


511 RSI K. Report overflow 

SBRSTK. If 


Replace current line number with value 
stack is empty, rex>ort error. 

Compare AESTK(SP), the top of the stack, with 
AES1KISP ?) as per the relation mdic.Ue.t by ALSTKfSP 1). 
Delete nil from stuck. It condition specified did not match, 

then perform NXT action. 


TST 
DONE 
LST 
NXT 

TST S16. *RUF 

DONE 

NXT 

TST SI7. CLEAR- 
DONE 
JMP START 


ERR 

TST 

CALL 

NEC 

JMP 

tst 

CAl L 

TST 

CALL 

AOO 

JMP 

TST 

CALL 

SUB 

JMP 

RTN 


TERM 
E2. *♦* 
TERM 


; LIST COMMAND. 

; RUN COMMAND. 
;CLCAR COMMAND. 

;SYNTAX ERROR. 


TEST FOR UNARY 
GET VALUE. 
NEGATE IT. 

LOOK FOR MORE. 
TEST FOR UNARY ♦. 
LEADING TERM. 
SUM TERM. 


INNUM 

Read a number from the terminal and push its value onto 
the AESTK. 

TERM: 

CALL 

FACT 






TO: 

TST 

T1/" 




FIN 

Return to the line collect routine. 


CALL 

FACT 

;PRODUCT FACTOR. 


ERR 

Report syntax error and return to line collect routine. 


MPY 








JMP 

TO 




ADD 

Replace top two elements of At.SI K by their sum. 

T1 : 

TST 

T2, 7* 

; ANY MORE? 



SUB 

Replace top two elements of AESTK by their difference. 


CALL 

FACT 

; QUOTIENT FACTOR. 




DIV 





NEG 

Replace top of AESTK with its negativo. 


JMP 

TO 




MUL 

Replace top two elements of AESTK by their product. 







DIV 

FACT: 

TSTV 

FO 

: VARIABLE. 



Replace top two elements of AE ST K by their quotient. 


IND 


; YES, GET THE VALUE.! 


STORE 

Place the value at the top of the AESTK into the variable 


RTN 






designated by the index specified by the vjlue immediately 

F0: 

TSTN 

FI 

.-NUMBER. GET ITS VALUE. 


below it. Delete both from tin* sMck. 


RTN 





TSTV Ibl 

Test for variable (i.e letter) if present.. Place its index 

FI: 

TST 

F2.T 

.-PARENTHESIZED EXPR. 


value onto the Af STK and continue oxecui.on at next 


CALL 

EXPR 





suggested location. Otherwise, continue at Ibl. 


TST 

F2. *)* 

; MATCHING PARENTHESIS. 

TSTN Ibl 

Test for number. If present, place its value onto the 


RTN 






AES1 K and continue execution at next suggested location. 

Otherwise, continue at Ibl. 

F2: 

ERR 


; ERROR. 



IND 

Replace top of stack by variable value if indoxes. 

RELOP: 

TST 

RO. *=* 




LST 

list thn contents of the program area. 


LIT 

0 

;= 



INIT 

Performs global initialization 

Clears program area, emptys GOSUB stack, etc. 

RO: 

RTN 

TST 

R4, •< * 






TST 

R1, '=' 




GETLINE 

Input a line to LBUF. 


LIT 

2 

;< = 

R4: 

TST 

TSTL Ibl 

After editing leading blacks, look for a line number. Report error if 


RTN 




TST 


invalid; transfer to Ini if not present. 

R1: 

TST 

R3, ’>' 



LIT 

INSRT 

Insert line 8fter deleting any line with same line 
number. 


LIT 

3 

:<> 


RTN 


RTN 


R5: 

TST R6. 7 


R3: 

LIT 

1 

; < 


LIT 3 

XINIT 

Perform initialization for each stated execution. 


RTN 



R6: 

LiT 4 


Fmpties AEXP stack. 





RTN 


R5'= l 


:>* 

<> 

> 


12 









TINY BASIC 


January 1 976 Tiny BASIC Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 Page 9 


by Dennis Allison, Bernard Greening, happy Lady, & lots 
of Friends 

(reprinted from People’s Computer Company Vol. 4, No. 3) 

Dear People, 

After a quick pique at TINY BASIC 1 have the following 
(possibly ill-considered) comments: 

1. It looks useful for tiny computers, which is as intended. 

2. Those accustomed to extended BASIC, or even the original Dart¬ 
mouth BASIC, will be irked by its limitations. But then, that's how 
the bits byte! 

3. How does the interpreter scan the word THEN in an IF statement? 

4. Some of the comments for EXPR seem to be on the wrong line, or 
my reading is more biased than usual. 

5. Users should note that arithmetic expressions are evaluated left-to- 
right unless subexpressions are parenthesized (i.e., there is no implicit 
operator procedure). 

6. Real numbers would be nice, but would take up a lot more space. 
Probably too much. Ditto for arrays and string variables. 

7. Please consider adding semicolon (i.e., unzoned) PRINT format 
with a trailing semicolon inhibiting the CRLF. This would be very 
useful and would be easy to add. 

8. If INPUT prompts with a question mark, please print a blank 
character after the question mark (for readability). 

9. I suggest allowing THEN as a separator in any multi-statement line, 
not just in IF statements. Since lines like 

IF 5<X THEN IF X<10 THEN GOSUB 100 
are already legal, why not allow lines like 
LET A=B THEN PRINTA 
or any other combination, including silly ones like 
GOTO 200 THEN INPUT Z 

the second statement of which would never be executed. If THEN 
works for IF, it should be possible to make it work for anything. 

10.1 also suggest allowing comments somehow. At present, comments 

must be held to a minimum 

are possible via subterfuges such as 

IF XOX THEN PRINT."THIS IS A COMMENT” 

but that seems kind of gauche. Naturally, comments must be held to 
a minimum in TINY BASIC, but sometimes they may be vital. 

11. Doing a 

PRINT" " 

seems to be the only way to print a blank line. Well, all right. 

12. Exponentiation via * * would seem fairly easy to add, and might 
be worthwhile. 

13. By the way, all of this will execute in 1 K, won't it? 

Jim Day 

17042 Gunther St. 

Granada Hills, CA 91344 

Answering your Questions by number where appropriate: 

3&4. Woops! There should be a TST instruction to scan the THEN. 
The comments are displaced a line. See the corrected IL listing in 
this issue. 

5. Expressions are evaluated left-to-right with operator precedence. 

That is, 3+2*5 gives 13 and not 25. To see this, note that the rou¬ 
tine EXPR which handles addition gets the operands onto the stack 
by calling TERM, and TERM will evaluate any product or quotient 
before returning. 

7. Agreed, but this is intended as a minimal system. 

9. One man's syntacic sugar is anothers poison. I don't like the idea. 
Incidentally, how would you interpret 

LET A=B THEN GOSUB 200 THEN PRINT 'A' 

The GOSUB then has to store a program address which botch¬ 
es up the fine entry routine or one has to zap the GOSUB stack 
wherwjsan error is found. Both are solved only by kludges. 

10-12. See 7. 

13. Maybe. But 2K certainly. See below. 


Dear PCC, 

I am thrilled with your idea of an IL but I think that if you 
intend only to write a BASIC interpreter that a good symbolic 
assembler would be appropriate. With an assembler similar to 
DEC's PAL 3 or PAL 8 the necessary routines could be written 
and used in nearly the same way without having to write the 
associated run time material that would be necessary for its 
use as an interpreter. A command decoder, a text buffer, and a 
line editor would be necessary and all of this uses up a good 
amount of space in memory. 

If you are aware of all these things and still plan to develop 
an IL interpreter, then I suggest you start as DEC did with a 
simple symbolic editor as the backbone of the interpreter. In 
this way you allow a 2800% increase in development and debug 
ging speed (according to Datamation's comparison of interpreters 
and compilers whose fundamental difference is the on line editing 
capability). Once this has been implemented and IL is running 
on a particular system then the development of interpreters of 
all types is greatly simplified. By suggesting IL you have stumbled 
onto the most logical and easiest way to develop a complete 
library of interpreters. In addition to BASIC, it is very easy to 
write interpreters for: FOCAL, ALGOL, FORTRAN, PL 1, LISP, 
COBOL, SNOWBAL, PL/m, APL, and develop custom interpreters 
ters-with the ease with which one would write a long BASIC 
program! 

As I pointed out earlier, all these features take up memory 
space and, as you have pointed out, run time is much slower. The 
way around this is to define the IL commands in assembly lan¬ 
guage subroutines then assemble the completed interpreter as 
calls to these subroutines. Thus the need for the IL interpreter 
as a run time space and time consumer is no longer necessary! 

(OK symbolic assembler haters, let's see you do this in machine 
language in less than ten man-years!) 

In places where time and space are not so much of a prob¬ 
lem, I suggest the addition of an interrupt handler and priority 
scheduler to allow IL to be used as a simplified and painless 
TIMESHARED system enabling many users to run in an inter¬ 
preter and use more than one interpreter at once. Multi-lingual 
timeshare systems previously being available to those who have 
a highspeed swapping disk, drum, or virtual memory, are now 
avaliable to the user who has about 16K of memory and a method 
of equitably bringing interpreters in to main memory from the 
outside world (a paper tape reader or cassette system is the eas¬ 
iest to come by). 

In short, IL as I suggested, in its minor stages would be a 
powerful software development aid; and in its final, most com 
plex stages would provide a runtime system of unheard of 
inexpense. 

I have hr>ard from unofficial sources that ordinarily an 
interpreter or compiler requires ten man-years to write and 
debug to the point of use (if one man works the job would 
require 10 years, if 10 men work it would take one year). 

Since this is to be expected as the initial development of IL 
and since I have a general idea of the circulation of PCC, we 
should have IL up and running by the next issue of PCC!! 

At this time I would like to request a few reprints of 
the article dealing with IL because I want-to get some help 
from others in my school in getting a timeshared version 
working on our 16K PDP 8/m with DECTAPE. I seem to 
have lent my copy of that issue to one of the people I had 
been trying to get on this project and he has not returned it 
to me. Meanwhile, I need the article to begin initial work on 
the interpreter to insure compatibility with the version coming 
across through PCC. I will keep you posted as with regards 
to the development. 

William Cattey 
39 Pequet Road 
Wallingford, Ct. 06492 

The IL approach to implementation is quite standard and 
dates back to Schorre's META II, Gleenie's Syntax Machine, and 
numerous early compilers. It was widely used in the Digitek 
FORTRAN systems. We did not "stumble" on to the technique, 
we chose it with some deliberation. 

You are right that a symbolic assembler can be used either 
to assemble the pseudocode into an appropriate form or to 


13 






January 1976 Tiny BASIC Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 Page 10 


expand the pseudocode into actual machine instructions with the 
attendant cost in space (and decrease in execution time). Our 
goal is a small, easily transportable system. The interpretive ap¬ 
proach seems consistant with this primary goal. We are using 
the Intel 8080 assembler's macro facility to assemble our 
pseudocode. 

I certainly agree that it is relatively easy (but not simple!) 
to implement other languages using the IL approach. From 
the users standpoint, provided he is not compute bound, there is 
little difference. Interpreters are often a bit more forgiving 
of errors and can give better diagnostics. 

In my experience, your figure of 10 man-years is high for 
some languages and low for others. A figure of two to four 
man-years is probably more accurate, and that includes 
documentation at both the implementation and user level. 

Good luck on your implementation. 

....I have found in my adaptation of it (TINY BASIC IL) for full 
use that certain commands need strengthening, while some might 
be dropped. I will hopefully be coming out with these possible 
modifications. Concerning my ideas on space trade-offs; I think 
an assembled version would take less space, since each command 
is treated as a subroutine call in a program made up of routines, 
while the interpreter needs a run time system in the background 
which, since it is interpretive in iiself, takes up space. 

P.S. You missed my allusion to assembler over strictly octal or 
hexidecimal op codes (my meaning was twofold). In DEC'S 
PAL8 assembler the following syntax is needed to make the most 
efficient use of routine calling: 

TSTN=JMSI (jump to subroutine indirectly via this location) 
ui: XTSTN 

The assembler shows the binary as if TSTN were like a JMSI 100/ 
JMP to subroutine indirectly via 100 (requiring very very little 
extra space per routine—one word, to be exact). 

I would be happy to resolve any questions regarding com¬ 
pilers vs. interpreters. (Datamation did an article on the writing 
of a standard program in several languages then documented 

development and run time.) ....... 

William Cattey 

There are several different varieties of interpreters. One 
is simply a sequence of subroutine calls. Another is, as you 
suggest, a list of indirect references to subroutine calls. We are 
considering a different organization where the call address and 
some additional information is packed into a single byte. This 
is a good strategy vis a vis memory conservation only if the size 
of the code memory to decode the packed instruction plus the 
size of the encoded instructions is smaller than the size of a 
more straightforward encoding. This remains to be seen. 

I guess I did miss your point on assemblers. However, let 
me assure you that I would never advocate making software by 
programming directly in hex or binary. Even an assembler 
seems cumbersome and difficult to me; I prefer a good 
systems language like PL/M! 

Dear Dennis and other PCCers, 

In my last crazily jumbled letter I made some comments 
about TINY BASIC. Here is the result of 2-3 days work and 
thinking about it. Instead of having an interpretive IL, I chose 
to set it up as detailed as possible, then have people with different 
machines code up subroutines to perform each IL instruction. 

I'm not convinced that this way would take more space, and I'm 
sure it would be faster. 

There are a couple of changes fn the syntax from your pub¬ 
lished version: separate‘commands from statements, add terminal 
comma to PRINT, and restrict IF-THEN to a line number (implied 
GOTO). 

The semantics are separated out from the syntax in IL as 
much as possible. This should make it easier to be clear about 
what the results of any given syntatic structure. This is most 
apparent in the TST instructions, and the elimination of the 
NXT instruction. That one in particular was a confusion. 

Please let me know how this fits with what you're doing. 

I don't have a micro yet-time, not money p-events it. 

John Rible 
51 Davenport St. 

Cambridoe, MA 02140 


Because of space limitations, we have not been able to 
publish all of John Rible's version (dialect) of TINY BASIC. 

We'll probably include it in the first issue of the TINY BASIC 
NEWSLETTER. Limited space requires it to be in 2nd issue. 

By seperating the syntax from the semantics he has 
produced a larger and possibly simpler to understand IL. 

There are more IL instructions so, I believe, the resultant system 
will be larger; further, the speed of execution is roughly pro¬ 
portional to the number of IL instructions (decoding IL is 
costly), it will be slower. 


TIIMY 


JOHN RIBLE 


a h ii b a a a a a a a a m mm m m a a a a ■ 

ii 

a 
® 
a 
® 

® 

® 

® 

g INTERMEDIATE LANGUAGE PHILOSOPHY 

® Instead of IL being interpreted, my goal has been to describe IL. well 
jfgj enough that almost anyone will be able to code the instructions as either 

H single machine language instructions or small subroutines. Besides speed¬ 
ing up TINY BASIC, this should decrease its size. Most of the instruc- 
H1 tions are similar to those of Dennis' (PCC V4 no. 2), but the syntactical 
H has been seperated from the active routines. This would be useful if 
I—. you want the syntax errors to be printed while inputting the line, rather 
usi than when RUNning the program. 

|g] Most subroutines (STMT, EXPR, etc.) are recursively called, so in 
jjsgi addition to the return address being stacked, all the related data must be 
stacked. This can use up space quickly. 

09 


HI 
® 

® 

® 

@ 

s SI SI 9 ] Bin IB IS IB IB (9 SI SI IS I! (a a HI (HU BIB 



siBifflinaiHHHiiiiHaauui 

is 
a 
a 
a 
a 
a 
a 
a 
a 
a 
a 
a 
a 
a 
a 
a 
a 
a 
a 
a 
a 
® 
a 
a 
a 

anannualnunufflinanflHass 


SYNTAX for John Rible's version of TINY BASIC 

(PROGRAM)::-(PLINE)*' 

(PLINE): -(NUMBER) (STATEMENT> 

<ILINE>:: -(COMMAND) I (STATEMENT) 

(COMMAND)*: = CLEAR@| LISTOlRUN© 

(STATEMENT)::- © I 

LE7<VAR> = <EXPR^©! 

GOTO(EXPR)©! 

GOSUB(EXPR>©‘ 
PRINT<EXPR-UST>!,IO@l 
IF (EXPR) < RELOPX EXPR) 

THEN (STATEMENT)©! 

INPUT ( VAR-LIST>©I 
RETURN © ! 

END© 

(EXPR-LIST).: KSTRING) ! < EXPR) I (}(( STRING) I (EXPR) ) )*' 
(STRING)::* "(ANY CHAR) *4" 

<ANY-CHAR>:: = any character except " or (Q) 

(EXPR>:: = (+ I — | e ) (TERM) { (+I-KTERM))* 2 
(TERM>::*< FACTOR) ( I *|/)( FACTOR >) * 2 
< FACTOR) :: = (VAR) | (NUMBER) I ((EXPR) ) 

<VAR-LIST> ::=<VARX,(VAR >)* 2 

(VAR>::= A i B I ,...| Y I Z 

(NUMBER)::* <DIGIT )(DIGIT)* 3 

(DIGIT)::- 0 I 1 | .... | 8 | 9 

(RELOP>::= <( = |>| t ) | >(=|< |C)| = 


: € is null character 
actual characters are in bold face 
* repeat limited by size of program memory space 
repeat limited by length of line 
* J repeated 0 to 4 times 


14 




January 1 976 Tiny BASIC Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 Page 11 


Dear Mr. Allison, 

I was very interested in your Tiny BASIC article in PCC. 
Vour ideas seem quite good. I have a few suggestions regarding 
your IL system. I hope I am not being presumptuous or pre¬ 
mature with this. Unless I misunderstood you, your IL encoding 
scheme seems inadequate. For instance, IL JMPs must be capa¬ 
ble of going up and down from the current PC. This means 
allotting one of the 6 remaining bits of the IL byte as a sign 
bit resulting in a maximum PC change of 4 31 which is not ade¬ 
quate in some cases, ie. the JMP from just above SI7 back to 
START. May I suggest the following scheme which is based on 


2 bytes per IL instruction: 



IL 


ML 


JMP 

CALL 

TST 

CALL 

OX Xg 

1X Xg 

2XXg 

1 XXg list byte) 

YYYg 

YYYg 

YYYg 

YYYg (2nd byte) 


vdiere XX= lower 6 bits of high part of address (assume upper 2 
bits are 00) 

YYY= all 8 bits of low part of address. 

The complete address being OXXYYYg. These addresses repre¬ 
sent the locations associated with the IL and ML instructions. 
Note that if n points to a table with a stored address, you have 
3 bytes used— my scheme uses only 2 bytes with the same basic 
information. 


I also wondered about the TST character string. In my 
implementation I am using the following technique: the string 
follows the TST byte pair immediately with a bit 7 set in the 
last character. 

Example: gggj’ TST fai | address in 0400068 

0U-\ 

0*E$ 

UTJ 

On the TSTL, TSTV, and TSTN IL's, it appears you need 
a ML address for the particular subroutine and 2 additional bytes 
for the fail address. At least this is how I am handling it. 

I am looking forward to future articles in the series. 

Thanks again— keep up the good work! 

P.S. I am co-owner of an Altair. We are writing our Tiny BASIC 
in Baudot to feed our Model 19's. 

Richard Whipple 
305 Clemson Dr. 

Tyler, Tx. 75701 

We found the same problem with the published IL inter¬ 
preter. We solved it by doing a bit of rearranging and intro¬ 
ducing a new operations code which does jumps relative to the 
start of the program, but has the same basic encoding. Your 
mechanization will, of course, work, but requires one more 
byte per IL instruction, may be harder to implement on some 
machines, and takes more code. 

We are using the same scheme of string termination (i.e., 
using the parity bit) as you are. It's simple, easy to test, and 
difficult to get into the assembler. 

There are a few errors and oversights ; n the IL language 
and in the interpreter you didn't mention. See the new 
listing in this issue. 

Good luck. Keep us informed of your progress. 


Dear People at PCC, 

I have a couple of comments on Tiny BASIC: 

S4 says TST S7, but S7 got left out. T1 says TST on my 
paper which I suppose should be TST T2. 

What is LIT and all these "or 2000"? When are we going to 
start putting some of this into machine code? 

Sincerely, 

BOB BEARD 

2530 Hillegass, No. 109 

Berkeley CA 94704 

Soon! Ed. 


Dear Tiny BASIC Dragon, 

Please scratch my name onto your list for Tiny BASIC Vol. 1. 
Enclosed is a coupon for 3 chunks of fire. 

I am really enjoying my subscription to PCC, especially the 
article on Tiny BASIC. 

Someday I am going to build an extended Tiny BASIC that 
will take over the world. 

Basically yours, 

RON YOUNG 
2505 Wilburn, No. 144 
Bethany OK 73008 




Since the last issue came out, the IL 
code, macro definitions for each IL in¬ 
struction, a subroutine address table for 
the assembly language routines that exe¬ 
cute the IL functions, the assembly lan¬ 
guage code that executes the IL func¬ 
tions (all except the 16-bit arithmetic 
ones), and the IL processor have been 
punched on paper tape in source form. 

HOP, TST, TSTN, and TSTL now do 
branches +32 relative to the current posi¬ 
tion counter. If the relative branch field 
has a zero in it, indicating a branch to 
here", the IL processor prints out the 
syntax error message with the line num¬ 
ber. The ERR instruction that was in 
the old IL code no longer exists. 

I JMP and I CALL are used because 
the Intel S080 assembler uses JMP and 
CALL as mnemonics for 8080 instruc¬ 
tions. IJMP and /CALL are followed by 
one byte with an unsigned number from 
0 to 255. This is added to START to 
do an indexed jump or call. 

Bernard 


15 





January 1 976 Tiny BASIC Calisthenics & Orthodontia Box 31 0, Menlo Park CA 94025 Page 1 2 


J INTERPRETIVE 

; 


LANGUAGE SUBROUTINES 


EXPR: 

TST 

E0 

;TEST FOR UNARY ' 


DB 

’ -* OR 

2000 


ICALL 

TERM 

/•PUT TERM ON AESTK 


NEG 


JNEGATE VALUE ON AESTK 

j 

E0 t 

HOP 

El 

jgo get a term 

TST 

E01 

/•TEST FOR UNARY 


DB 

* + r OR 

2000 

E0I * 

ICALL 

TERM 

JPUT TERM ON AESTK 

El t 

TST 

E2 

/•TEST FOR ADDITION 


DB 

• ♦* OR 

2000 


CALL 

TERM 

;GET SECOND TERM 


ADD 


/•PUT SUM OF TERMS ON AESTK 


HOP 

El 

;L00P AROUND FOR MORE 

J 

E2 » 

TST 

E3 

/•TEST FOR SUBTRACTION 


DB 

• -* OR 

2000 


CALL 

TERM 

/•GET SECOND TERM 


SUB 


/•PUT DIFFERENCE OF TERMS ON 


HOP 

El 

;loop around for more 


corrected 

TINY 


BASIC IL 


; 

E3 : 

; 

; 

j 

TERM: 
T0 I 


J 

T1 


RTN 


j 

T2 

; 

j 

j 


;this can be recursive 


ICALL 

FACT 

JGET ONE FACTOR 

TST 

T1 

JTEST FOR MULTIPLICATI( 

DB 

* *• OR 

2000 

ICALL 

FACT 

JGET A FACTOR 

MPY 


JPUT THE PRODUCT ON AE! 

HOP 

T0 

ILOOP AROUND FOR MORE 

TST 


JTEST FOR DIVISION 

DB 

V OR 

2000 

ICALL 

FACT 

JGET THE QUOTIENT 

DIV 


JPUT QUOTIENT ON AESTK 

HOP 

T0 

J LOOP FOR MORE 

RTN 


JRETURN TO CALLER 


FACT: 

TSTV 

IND 

RTN 

F 0 

F0: 

TSTN 

RTN 

FI 

FI : 

TST 

FI 


DB 

* (' i 


ICALL 

EXPR 

J 

El : 

TST 

FEI 


DB 

RTN 

* ) • i 

; 

j 

j 

RELOP: 

TST 

R0 


DB 

•*=' l 


LIT 

RTN 

0 

; 

R0 l 

TST 

R4 


DB 

• < * 1 


TST 

R1 


DB 

* n * | 


LIT 

RTN 

2 

J 

R1 I 

TST 

R3 


DB 

•>• ( 


LIT 

RTN 

3 

J 

R3 t 

LIT 

RTN 

1 

J 

R4 : 

TST 

R4 


DB 

• >• < 


TST 

R5 


DB 

*«• ( 


LIT 

RTN 

5 

J 

R5 * 

TST 

R6 


DB 

• < * 


LIT 

RTN 

3 

J 

R6t 

LIT 

RTN 

A 


;test for variable 

;get indes of the variable 


;test for number 


;error if its not a 


/•THIS IS A RECURSIVE PROCESS 


/•EVERY 
OR 2000 


HAS TO HAVE A ' ) ' 


/•CHECK FOR 
OR 2000 


/•CHECK FOR •<* 
OR 2000 


OR 2000 


;check for •>• 

OR 2000 


OR 2000 
OR 2000 


STATEMENT EXECUTOR WRITTEN IN IL (INTERPRETIVE LANGUAGE) 
THIS IS WRITTEN IN MACROS FOR THE INTEL INTELEC 8/MOD 80 
SYSTEM USING INTEL’S ASSEMBLER. 

CONTROL SECTION 


START* 

IN IT 


IINITIALIZE 

ERRENTl 

NLINE 


/’WRITE A CR-LF 

CO* 

GETLN 


;VRITE PROMPT AND GET A LINE 


TSTL 

XEC 

IIF NO LINE NUMBER GO EXECUTE IT 


INSRT 


/’INSERT OR DELETE THE LINE 


IJMP 

CO 

ILOOP FOR ANOTHER LINE 

XECi 

J 

X1NIT 


UNITIALIZE FOR EXECUTION 

t 

i STATEMENT EXECUTOR 


STMT l 

TST 

SI 

ICHECK FOR ’LET* 


DB 

* LE’ / *1 

■’ OR 2000 

SEI * 

TSTV 

SEI 

IERROR IF NO VAPIA3LE! 

SE21 

TST 

SE2 

IERROR IF NO 


DB 

’«’ OR 

2000 


ICALL 

EXPR 

IPUT EXPRESSION ON AESTK 


DONE 


iCHECK FOR CR LINE TERMINATOR 


STORE 


IPUT VALUE OF EXPRESSION IT ITS CELL 

J 

NXT 


ICONTINUE NEXT LINE 

i 

SI i 

TST 

S3 

iCHECK FOR ’GO* 


DB 

•G’/’O’ 

OR 2000 


TST 

S2 

JCHECK FOR ’GOTO* 


DB 

•T’/’O’ 

OR 2000 


ICALL 

EXPR 

iGET THE LABEL 


DONE 


iCHECK FOR CR LINE TERMINATOR 

J 

XFER 


iDO A ’GOTO* TO THE LABEL 

l 

S2 i 

TST 

S2 

ICHECK FOR ’GOSUB'/ FAILURE IS AN ERROR 


DB 

’ SU* , ’E 

i’ OR 2000 


ICALL 

XPER 

iPUT EXPRESSION ON AESTK 


DONE 


ICHECK FOR CR LINE TERMINATOR 


SAV 


ISAVE NEXT LINE NUMBER IN BASIC TEXT 

1 

XFER 


IDO A ’GOSUB’ TO THE LABEL 

l 

S3* 

TST 

S8 

ICHECK FOR ’PRINT* 


DB 

* PR IN*/ 

•T’ OR 2000 

S4i 

TST 

S 7 

ICHECK FOR ”V TO BEGIN A STRING 


DB 

OR 

2000 


PRS 


IPRINT THE DATA ENCLOSED IN QUOTES 

SS t 

TST 

S6 

I'/’ MEANS MORE TO COME 


DB 

*/• OR 

2000 


SPC 


I SPACE TO NEXT ZONE 


HOP 

S4 

I GO BACK FOR MORE 

S6 t 

DONE 


iCHECK FOR CR LINE TERMINATOR 

t 

NXT 


ICONTINUE NEXT LINE 

J 

S8 i 

TST 

S9 

ICHECK FOR ’IF’ 


DB 

’I’/’F’ 

OR 2000 


ICALL 

EXPR 

I GET THE FIRST EXPRESSION 


ICALL 

RELOP 

luET THE RELATIONAL OPPERATOR 


ICALL 

EXPR 

/GET THE SECOND EXPRESSION 

S8A* 

TST 

S8A 

ICHECK FOP. ’THEN* 


DB 

•THE'/* 

N’ OR 2000 


CMPR 


IIF HOT TRUE CONTINUE NEXT LINE 

J 

IJMP 

STMT 

IIF TRUE PROCESS THE REST OF THIS LINE 

l 

S9 i 

TST 

S 1 2 

ICHECK FOR ’INPUT’ 


DB 

'INPU’/ 

•T* OR 2000 

SIB * 

ICALL 

VAR 

I GET THE VARIABLE’S INDEX 


INNUM 


I GET THE NUMBER FROM THE TELETYPE 


STORE 


IPUT THE .VALUE OF THE VARIABLE IN ITS < 


TST 

SI 1 

I’/’ MEANS MORE DATA 


DB 

*/’ OR 

2000 

SI I t 

DONE 


ICHECK FOR CR LINE TERMINATOR 

1 

NXT 


ICONTINUE NEXT LINE 

1 

SI 2 i 

TST 

S1 3 

ICHECK FOR ’RETURN* 


DB 

•RETUR* 

/ ’ N* OR 2000 


DONE 


ICHECK FOR CR LINE TERMINATOR 

I 

RSTR 


I RETURN TO CALLER 

} 

SI 31 

TST 

S1 4 

ICHECK FOR ’END’ 


DB 

•EN’/’D 

’ OR 2000 

J 

FIN 


I GO BACK TO CONTROL MODE 

I 

SI 4 i 

TST 

SIS 

ICHECK FOR ’LIST* 


DB 

•LIS’/’ 

T’ OR 20eO 


DONE 


ICHECK FOR CR LINE TERMINATOR 


LST 


I TYPE OUT THE BASIC PROGRAM 

i 

NXT 


ICONTINUE NEXT LINE 

j 

SI 51 

TST 

S I 6 

ICHECK FOR ’RUN' 


DB 

* RU ’ *'N 

* OR 2000 


DONE 


ICHECK FOR CR LINE TERMINATOR 

J 

NXT 


/’CONTINUE NEXT LINE 

i 

Si 6 t 

T ST 

S 1 6 

JCHECK FOP. ’CLEAR’/ FAILURE IS AN ERROR! 


DB 

•CLEA*, 

•R' OR 2000 


IJMP 

START 

IF.EINIT1ALIZE EVERYTHING! 


16 







January 1976 Tiny BASIC Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 Page 1 3 


December 12, 1975 


The Tyler Branch of the North Texas Computer Club is still having 
fun with Tiny BASIC as you can see by examining the print-out that 
follows. We are now calling it Tiny BASIC Extended after the addi¬ 
tion of FOR-NXT loops, DIMension statements-arrays, and a few 
other goodies. The LIFE program was written by David Piper, a 
high school student of John's (he teaches at Robert E. Lee High 
School). David is working on KINGDOM now--we can hardly wait. 
Below are a few comments about our system and Tiny BASIC that 
may be of interest to your readers. 

1. Our Altair 8800 is interfaced to a Model 19 Baudot Teletype 
at John's and via modems and a leased telephone line to a Model 15 
Teletype at my house about 3/4 mile away. At present the system 
is strictly BAUDOT-no ASCII conversion whatsoever. 

2. We use a Suding-type cassette interface that has been very 
reliable. 4K bytes load in about 1 minute 20 seconds. 

3. The Tiny BASIC Extended takes about 2.9K bytes of 
memory. 

4. The storage format for our Tiny BASIC is as follows: 

2 byte statement label - 1 byte length of text - multibyte text - (cr) 
The statement label range is 1 to 65535. The "length of text 
byte" is used to speed up label searching in GOTO and other 
branching. 

5. To conserve memory, we have shortened some commands to 
two or three letters (i.e., PR for PRINT, IN for INPUT, NXT for 
NEXT, etc.). 

6. A "$" is used to write multi-statement lines. A "!" is used to 
suppress new line output in a PR statement. This allows continuing 
the next PR on the same line. The provides one skipped space in 
a PR statement. 

7. Functions currently on line are: 

RN -► generates random numbers between 0 and 10,000 decimal. 
TB (exp) > TAB function in PR statement produces a number 
of skipped spaces equal to the value of "exp," an arithmetic 
expression. 

8. Memory for arrays is allotted from the top of memory down 
while the program builds from the bottom up. If they cross, you get 
error message. Arrays may be 1 or 2 dimension. Max. size: 255 by 
255. 

9. Here are some BAUDOT equivalances: 

: = (equal to) 

): > = (greater than equal to) 

(: < = (less than equal to) 

)( <> (not equal to) 

& + (plus) 

4 * (times) 

Parentheses are also used in arithmetic expressions. The system 
understands the difference by context. 

10. FOR 1=1,1000 
NXT I 

END takesabout 1.6 seconds to execute. 

11. The colon is used as a Tiny BASIC prompt. 

12. "?" is used as a rubout key and two LTR's keystrokes are 
used to begin a line over (LTR and FGS are keystrokes used to 
change case in Model 15/19 Teletypes) 

13. Model 15/19 Teletypes are great machines and we have 
proved their worth to computer hobbyists! 

Thanks again for your fine work at PCC, we remain 

Yours Truly, 


DICK WHIPPLE 
305 Clemson Dr. 
Tyler TX 75701 


JOHN ARNOLD 
Rt 4, Box 52A 
Tyler TX 75701 


00090 
00100 
00105 
00110 
00112 
00115 
00120 
00130 
00140 
00150 
001 <10 
00170 
00175 

ooirco 

00190 

00200 

00210 

00212 

0021*1 

00220 

00225 

00230 

00240 

00250 

00260 

00270 

002:50 

00255 

00287 

00290 

00300 

00301 

00302 

00303 

00305 

00310 

00315 

00320 

00330 

00335 

00336 

00345 

00350 

00355 

05000 

05010 

05020 

05030 
05040 
05110 
05120 
05130 
05140 
05150 
05160 
05170 
05180 
05200 
05205 
05210 
05220 
05230 
05240 
05250 
05260 
05270 
05230 
05290 
06000 
06010 
06020 
05030 
06040 
06050 
05060 
06070 
06080 
06090 
05100 
06110 
06120 
06130 
06140 
06150 
1 


PS "LIFE WITH TINY B1SIC EXTENDED" 
PR "SIZE"}I 
LET F:0 
IN A 

PR""$ PR "THE BEGINNING-WAIT'S PR”" 

LET B1AA2 

DIN G(B,B),H(B,B) 

FOR J:l TO B 
FOR III TO B 

LET C(I,J)tO$ LIT H(I,J)10 


POPULATION IS 7 


NXT I 
NXT J 
LET HlAll 
FOR JI2 TO M 
FOR I 12 TO M 
IN K 

IF K <1 I GO TO 220 
LET I1M 
GO TO 230 
LET GCI,J)!K 
IF K 1 1 LIT FlFil 
NXT I 
PR"" 

NXT J 

PR "GENERATIONS"J! 

IN D 
PR"" 

Pi!"" 

LIT SlO _ 

FOR ElS TO D 
PR "GENERATION";E$PR"" 

PR"" 

IF F ) 0 GO TO 305 
PR "POPULATION 13 2ER0"SPR""$END 
PI! "POPULATION IS"JFSPR"" 

GO SUB 6000 
LET FlO 
GO SUB 5000 
NXT E 

PR "HOW MANY MORE"; !$IN C$PR"" 
PR"" 

IF C 1 0 END 
LET SlESLET DIDAC 
GO TO 290 
FOR I 12 TO M 
FOR J12 TO M 
LET N10 

LF.T NlG(I-l,J-mC(I.J-l>iG(Ul.J- 
LETN:NiCa-l,JAl > AG Cl ,JU >A GCIil, 
IF ) C 1 GO TO 5130 

IF N > 1 GO TO 5150 
LET H(I,J)!0 
GO TO 5210 

IF N (S 3 GO TO 5200 
LET K(I ,J> 10 
GO TO 5210 

IF N >< 3 GO TO 5210 
LET H(I.J)li 
LET FlFil 
NXT J 
NXT I 

FOR Ill TO B 
FOR JllTO B 
LET G(I,J):H(I,J) 

LET H(I,J)10 
NXT 0 
NXT I 
RET 

FOR J12 TO M 
LET R 10 
FOR Oil TO M 
IF G CQ j J ) l 1 LET R 11 
NXT 0 

IF RIO GO TO 6120 
FOR I 12 TO M 
IF GCI 3 J) 1 1 GO TO 6100 
PR " ■;! 

GO TO 6110 
PR "X/";I 
NXT I 
PR "" 

NXT J 
PR""$PR"" 

RET 


IRUN 

LITE WITH TINY BASIC EXTEN3ED 
SIZE t II 

THE BEGINNING-WAIT 

T 2 
7 2 
t 2 
7 2 
1 2 
7 0 
7 2 
7 2 
7 2 
7 2 
7 2 

GENERATIONS 7 
GENERATION 0 


707171717171717172 


* t ! > t l t 


GENERATION 1 
POPULATION IS 15 




8 s # # fi 
8 8 8 8 8 
# 8 8 i 8 


lHC(I-l,JKC(Iil,J) 
Jil) V 

•ENERATION 2 


POPULATION IS 12 


# 8 8 
8 / 

8 8 
# *» 

8 8 8 


GENERATION 3 
POPULATION IS 22 


# 

9 8 8 
8 9 8 8 8 

9 9 8 9 

8 9 8 9 8 
9 9 9 
# 


KOU MANY MORE ? 1 
GENERATION k 

POPULATION IS 16 


8 9 8 
8 8 

9 8 

8 8 

# 8 

8 # 

8 8 9 

KOU MANY MORE ? 0 


17 







January 1 976 Tiny BASIC Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 Page 14 


TINY BASIC, EXTENDED VERSION 

by Dick Whipple (305 Clemson Dr., Tyler TX 75701) 

& John Arnold (Route 4, Box 52-A, Tyler TX 75701) 

INTRODUCTION 

The version of TINY BASIC (TB) presented here is based on 
the design noted published in September 1975 PCC (Vol. 4, No. 2). 
The differences where they exist are noted below. In this issue we 
shall endeavor to present sufficient information to bring the system 
up on an Itel 8080-based computer such as the Altair 8800. Included 
is an octal listing of our ASCII version of TINY BASIC EXTENDED 
(TBX). In subsequent issues, structural details will be presented 
along with a source listing. A Suding-type cassette is now available 
from the authors (information to follow). We would greatly 
appreciate comments and suggestions from readers. Unlike some 
software people out there, we hope you will fiddle with TINY 
BASIC EXTENDED and make it less Tiny'. 


ABBREVIATED COMMAND SET 


TB AND TBX 


STANDARD BASIC 



LET 

PRINT 

GOTO 

GOSUB 

RETURN 

IE 

INPUT 

LIST’ 

RUN 

NEW 

SIZE 

DIMENSION 

FOR 

NEXT 


TBX — ilQVJ IT PJTTERS FROM TB 

1. TEX system prompt is a colon 

2. Statement label values 1 to 65535, 

3# Error correction during lino entry : 

a) Hubout (ASCII 177u) to delete a character. Prints 
a " «- 

b) Control L (£orra Feed ASCII 014g) to delete full lino. 


6. HJM Statement: Ono or two dimensional arrays permitted. 
Array arguments can be expressions. 

Example: 10 LST V = 10 

20 DIM A(10,10),B(2+ V) 


Array variables can bo used in the came manner as ordinary 
variables. 

7. £QR and 2 DCT Statements: Step equal to 1 only. Iterative 
limits can be expressions. Nesting permitted. Caro must 
be exercised when exiting a loop prior to completion of 
indexing. See Example. 


Example: 


10 LET X = 10 

20 FOR I n 1 to X 

30 LET Y = 2 * A + 3 

40 IT Y=Z I = X&NXT I$GOT0 60 * 

50 NXT I 

60 LET Y = 3 


* Tor explanation of "$ n see no. 9. 

8. Available Functions: 

a) RN: Random number generator. Range 0iRNil0,OO0. 

No argument permitted. 

b) TB(E) : Tab function. In a PR statement, TB(K) prints 

a number of SPACE 1 s equal to tho value of expression "E", 

9- The dollar sign can be used to write multiple statement lines. 

Example: 10 IN B 

20 LET A=2#(B+1)$PRA&END 

When, using an IF statement, a “false" condition transfers 
execution to the next nu mber ed. lino. Thus in lino 40 of 
the example of no. 7, the chained statements will not be 
executed unless a "true" condition is encountered. 

10. L£2? Command: Can tako aryone of three forms: 

a) LST CR— lists all statements in program 

b) LST a Qil— lists only statement labelled a 

c) IoT a,b C&— lists all statements between labels a and b 
inclusive. 

11. iSZS Command: Prints two decimal numbers equal to: 

a) Number of memory byte3 used by current program. 

b) Number of memory byte3 remaining. 

Note: Array storage included only after first execution 
of program. 

12. Recording Programs on Cassette: Core dumps to cassette 
should begin at 033350 ( guilt octal) and continue through 
address stored at 

033354 (low byte of address) 

033355 (high byte of address) 

Of course these cassette programs should bo loaded 
back at 033350. 


Memory Allocation: 


IMPLEMENTING THX 


4. IN Statement: Termination of numeric input is accomplished I. Misc. Storage (i/O Routines) 000000 to 000377* 

by SPACE keystroke. All other terminations use CR (Carriage 

Return). II, TBX 020000 to 033377 


5* £3. Statement: A comma is used for zone spacing while a 

semicolon produces a single space. A comma or semicolon 
at the end of a line surprosses CR ana IT (Line Feed). 

To skip a lino, use PR by itself. 


III. TEX Programs 034000 to upper limit of memory. 

* In our system we maintain a Monitor/Ed it or in the first IK 
byte of memory. 3/4 K ip protected and l/4 K can be U36d for 
system PAM. .Such a configuration is useful but not necessary. 


18 











January 1976 Tiny BASIC Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 Page 15 


External Program Requirements: 
1. System Entry Routine 


ADRS 

nisi 

000000 

0611 

000001 

377 ] 

000-002 

000 J 

000003 

303") 

000004 

2541 

000005 

021 ) 


3. 


LXI SP 


JMP TEX Entry Point 


The stack pointer (SP) must not be in protected memory. 
If you desire to relocate the SP change the following 
locations accordingly: 

a) OOOOOl (SP low) and 000002 (SP high) 

b) 026301 (SP low) and 026302 (SP high) 

System Recovery Routine — 

ADRS INST 

0000 TO 303 

000071 000 

000072 000 

Input Subroutine: Your input subroutine must begin at 
000030, It should carry out the following functions: 

a) Move an ASCII character from the input device to 
register A, The ASCII character should bo right 
justified in A with Parity bit equal to zoro. 

Example: n B" keystroke should set A to 102^, 

b) Test for ESC keystroke (ASCII 177g) and jump if 
true to 000000, Suggested instructions 


CPI ‘ESC* 

JPZ System Entry Routine 

c) Output an echo check of the inputed character. 

d) No registers should be modified except A. 

4. Output Subroutine: Your output subroutine should begin at 
000030, It should move the ASCII character in register A 
to the output device. Parity bit is zero. No registers 
including A should be modified. 

5. CR-U' Subroutine: At 000020 you must have a subroutine 
that will output a CR followed by a If. Only register 
A may be modified. 


LOADING TBX: 

The octal listing of TBX is reproduced later in the text. 
Addressing is split octal and gives the address of the first byte of 
each line. An octal loader of some kind is almost a necessity. Load¬ 
ing by front panel switches would be a considerable chore. A 
Suding-type cassette is available for $5, postpaid, from the authors. 
Send check or money order to: TBX Tape c/o John Arnold, Route 4, 
Box 52-A, Tyler TX 75701. If you are interested in a Baudot version 
of TBX, please inquire at the same address. 

Use of a cassette tape to store TBX is virtually a necessity. 
Every effort has been made to protect TBX against self-destruction 
byt nothing is 100% sure! 

The highest address available in your system for program 
storage must be loaded as follows: 

026115 XXX 8 low part 

026116 XXXg high part 

Example: Suppose you have one 4K board: 026115 377 

026116 037 


EXECUTING TBX: 

Simply examine 000000 and place the computer in the RUN 
mode. A colon indicates the system is operative. 

ERROR MESSAGES 

The form of error messages is: ERR a 3 where a is error num 
her, and 3 is statement number where error was detected. Label 
00000 indicates error occurred in direct execution. 

ERROR NUMBER 

1 Input line too long-exceeds 72 characters. 

2 Numeric overflow on input. 

3 illegal character detected during execution. 

4 No ending quotation mark in PR literal. 

5 Arithmetic expression too complex. 

6 Illegal arithmetic expression. 

7 Label does not exist. 

8 Division by zero not permitted. 

9 Subroutine nesting too deep. 

10 RET executed with no prior GOSUB 

11 Illegal variable. 

12 unrecognizable statement or command. 

13 Error in use of parentheses. 

14 Memory depletion. 

EXAMPLE PROGRAM OF TBX 

One example program written in TBX follows. It might assist 
you in debugging. A TBX line is structured as follows: 



n+1 


Byte No. 

1 & 2 Binary value of label; most significant part in 1. 

3 Length of text plus 2 in octal. 

4 thru n Text of line. 

n+1 CR (015 8 ). 

After the last line you should find two 377s. At the end of the 
example run is an octal dump of the program area of memory. 

EXAMPLE PROGRAM IN TBX 


!NEW 

!10 IN A 
:20 PR* TEST 
!30 PR 
I AO GOTO 10 
:LST 


A IS *;A 




00010 IN A 

00020 PR" TEST A IS ";A 
00030 PR 
qqoaq GOTO 10 
:lst 20 

00020 PR* TEST A IS "jA 
:LST 20,30 

00020 PR" TEST A IS *;A 

00030 PR 

tRUN 

T 12 TEST A IS 12 
? 336 TEST A IS 356 


IDPO:034000 007 


034000 

000 

012 

007 

040 

ill 

116 

040 

101 

034010 

015 

000 

024 

025 

040 

120 

122 

042 

034020 

040 

040 

124 

105 

123 

124 

0 40 

101 

034030 

040 

11 1 

123 

OhO 

042 

0 73 

101 

0 15 

034040 

000 

036 

00 5 

040 

120 

122 

015 

000 

034050 

050 

012 

040 

107 

117 

124 

117 

040 

034060 

061 

060 

015 

377 

377 

POT- 


000 


19 















January 1 976 Tiny BASIC Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 Page 1 6 


020000 

041 

ill 

020 

006 

1 10 

337 

376 

015 

TIKI BASIC EXTENDED 

023000 

227 

276 

502 

021 

023 

275 

302 

02 i 

020010 

312 

036 

020 

376 

1 77 

3 12 

040 

020 


01)3010 

023 

041 

004 

032 

30 i 

343 

305 

247 

020020 

376 

014 

312 

067 

020 

167 

043 

005 


023020 

311 

023 

03/ 

147 

0/ 3 

032 

1:7 

042 

020030 

312 

306 

026 

303 

005 

020 

167 

31 1 


023030 

350 

033 

023 

023 

301 

04 1 

022 

032 

020040 

053 

004 

076 

077 

3 57 

303 

005 

020 


023040 

343 

305 

247 

31 1 

305 

104 

1 15 

052 

020050 

332 

000 

021 

076 

05 7 

27 6 

322 

OCO 


023050 

361 

033 

160 

043 

161 

043 

042 

361 

020060 

02) 

303 

371 

020 

000 

000 

000 

327 


023060 

033 

501 

175 

376 

177 

330 

303 

322 

020070 

076 

072 

357 

076 

015 

062 

00 7 

020 


023070 

026 

305 

0 52 

361 

033 

053 

)C6 

053 

020100 

303 

000 

020 

000 

000 

000 

000 

000 


023100 

042 

361 

033 

146 

175 

376 

100 

150 

0201 iO 

000 

1 ; 4 

123 

124 

040 

066 

060 

060 


023)10 

301 

320 

303 

325 

026 

174 

057 

147 

020120 

054 

066 

062 

060 

015 

015 

042 

124 


023120 

175 

057 

157 

043 

311 

315 

071 

023 

020130 

105 

123 

124 

061 

042 

044 

120 

122 


023)30 

174 

267 

362 

147 

02 5 

315 

115 

023 

020140 

040 

042 

105 

116 

104 

042 

015 

106 


023140 

076 

055 

345 

315 

026 

0/2 

341 

315 

020150 

11 7 

122 

040 

122 

117 

12 7 

040 

042 


023150 

101 

022 

24 7 

31 1 

345 

052 

352 

033 

020160 

073 

11 1 

015 

015 

1 11 

124 

040 

1 16 


023160 

104 

115 

34 1 

012 

2 74 

312 

174 

023 

020170 

i n 

122 

105 

040 

1 14 

1 1 1 

1 16 

105 


023)70 

320 

303 

206 

023 

003 

012 

275 

312 

0/0200 

123 

042 

015 

015 

042 

015 

057 

067 


023200 

220 

023 

320 

013 

003 

003 

012 

201 

020210 

062 

010 

000 

00 0 

000 

000 

000 

000 


023210 

1 1 7 

3/2 

1 63 

023 

004 

303 

163 

023 

020.^0 

000 

032 

3 76 

060 

330 

576 

072 

320 


023220 

013 

140 

151 

31 1 

315 

07 1 

023 

315 

020230 

34 6 

017 

31 1 

000 

000 

000 

000 

000 


023230 

154 

023 

353 

312 

022 

023 

303 

330 

020240 

000 

000 

000 

OOu 

OoO 

000 

000 

000 


023/40 

026 

32 5 

076 

077 

315 

026 

022 

076 

0202SO 

000 

000 

000 

000 

0 JO 

000 

000 

000 


023/50 

040 

357 

06/5 

00 7 

020 

315 

000 

020 

020260 

000 

000 

000 

000 

000 

02 1 

111 

020 


023260 

02 1 

1 1 1 

020 

032 

376 

055 

04 1 

000 

020270 

325 

032 

376 

040 

02 3 

3 12 

2 7 1 

020 


023270 

000 

312 

312 

02 3 

315 

331 

020 

315 

020300 

033 

04 1 

000 

000 

376 

100 

3 32 

320 


023300 

044 

023 

076 

015 

062 

00 7 

020 

32 1 

0203 iO 

020 

042 

350 

033 

000 

321 

311 

000 


023310 

247 

311 

023 

3 15 

331 

020 

3 15 

115 

020320 

315 

33) 

020 

042 

3 50 

033 

067 

321 


023320 

023 

303 

277 

023 

032 

37 6 

040 

023 

020330 

311 

315 

221 

020 

376 

012 

320 

023 


023330 

312 

324 

023 

033 

306 

300 

320 

00 7 

020340 

104 

115 

051 

051 

Qi 1 

051 

332 

311 


023340 

157 

046 

024 

315 

044 

023 

067 

023 

020350 

026 

1 17 

006 

000 

Ol l 

303 

551 

020 


023350 

311 

032 

376 

040 

023 

312 

351 

023 

020360 

325 

052 

350 

033 

104 

11 5 

04 1 

) 1 1 


023360 

033 

3 7 6 

100 

322 

3 10 

023 

376 

050 

020370 

020 

076 

07 1 

043 

276 

303 

050 

020 


0/3370 

310 

04 1 

000 

000 

303 

124 

024 

000 

021000 

345 

026 

00) 

076 

015 

276 

312 

016 


024000 

000 

023 

055 

0 50 

007 

056 

073 

025 

021010 

021 

024 

043 

303 

005 

021 

1 72 

062 


024010 

000 

001 

00/ 

000 

001 

000 

001 

000 

021020 

356 

033 

32 1 

052 

362 

033 

176 

2 70 


024020 

002 

000 

001 

000 

013 

000 

010 

000 

021030 

312 

0 52 

021 

322 

064 

021 

043 

043 


024030 

000 

000 

000 

000 

070 

000 

025 

000 

021040 

175 

206 

157 

322 

0/6 

021 

044 

303 


024040 

000 

000 

000 

000 

QUO 

000 

002 

000 

021050 

026 

021 

043 

176 

271 

312 

170 

021 


024050 

324 

046 

0O4 

000 

002 

000 

001 

000 

021060 

332 

037 

021 

053 

053 

325 

353 

052 


024060 

000 

000 

003 

000 

126 

Op3 

000 

023 

021070 

354 

033 

345 

0 7/ 

356 

033 

306 

003 


024070 

016 

000 

004 

000 

000 

023 

000 

023 

021100 

205 

322 

105 

0<)1 

044 

157 

515 

340 


024100 

032 

023 

376 

040 

312 

100 

0/4 

033 

021 no 

030 

104 

115 

34 1 

176 

002 

053 

013 


024 1 iO 

3 76 

015 

510 

376 

044 

310 

303 

3 14 

021120 

m 

272 

302 

114 

021 


273 

302 


024120 

026 

023 

076 

001 

315 

331 

020 

315 

021130 

1 14 

021 

023 

052 

3 50 

033 

353 

162 


024130 

044 

0/3 

311 

315 

07 1 

02 3 

106 

043 

021140 

043 

163 

043 

072 

356 

033 

074 

167 


024 140 

146 

150 

315 

044 

023 

24 7 

311 

315 

021150 

043 

32 1 

032 

167 

376 

015 

312 

166 


024150 

07 1 

02 3 

1 14 

105 

315 

071 

023 

160 

021160 

02 1 

043 

023 

303 

152 

021 

321 

311 


024160 

043 

161 

247 

311 

03 5 

37/ 

034 

125 

021170 

053 

345 

043 

043 

043 

176 

376 

015 


024170 

023 

321 

076 

001 

311 

023 

000 

023 

021200 

312 

207 

021 

043 

303 

175. 

021 

043 


024200 

315 

07 1 

023 

104 

1 15 

315 

071 

023 

021210 

353 

052 

3 56 

033 

043 

104 

115 

341 


024210 

0) i 

315 

044 

02 3 

24 7 

311 

315 

071 

021220 

032 

157 

043 

023 

172 

270 

302 

220 


024220 

023 

315 

115 

023 

104 

115 

315 

0? 1 

021230 

021 

173 

271 

302 

220 

021 

053 

042 


024230 

023 

01 i 

315 

066 

023 

24 7 

311 

000 

02)2<i0 

354 

033 

072 

356 

033 

376 

001 

302 


024240 

325 

006 

000 

315 

07 1 

023 

174 

267 

02)250 

361 

020 

321 

311 

04 1 

00/ 

032 

176 


024250 

374 

301 

024 

353 

315 

07 1 

023 

174 

021260 

37 6 

200 

322 

314 

02 1 

376 

100 

322 


024260 

267 

374 

301 

024 

315 

306 

024 

005 

021270 

300 

0/1 

043 

156 

147 

303 

257 

02 i 


024270 

314 

115 

02 3 

315 

044 

023 

321 

24 7 

021300 

346 

077 

107 

043 

116 

043 

345 

140 


024300 

311 

004 

3,5 

115 

023 

311 

305 

104 

0213)0 

151 

303 

257 

021 

376 

300 

322 

000 


0243)0 

115 

041 

000 

000 

07 6 

021 

062 

363 

021320 

022 

346 

077 

107 

043 

116 

043 

032 


024320 

033 

170 

037 

107 

1 7 1 

037 

117 

322 

021330 

023 

376 

040 

312 

3/7 

021 

033 

325 


024330 

333 

024 

03 1 

174 

037 

147 

1 7 5 

037 

021340 

353 

03* 

37 6 

200 

322 

363 

021 

276 


024340 

157 

072 

363 

033 

075 

312 

356 

024 

021350 

063 

023 

312 

341 

021 

321 

140 

151 


024350 

062 

363 

033 

303 

321 

024 

1 40 

151 

021360 

303 

257 

021 

346 

177 

276 

302 

3 55 


024360 

301 

311 

325 

006 

000 

315 

07 1 

0/3 

02)370 

021 

353 

301 

023 

04 3 

303 

257 

02) 


024370 

174 

267 

374 

301 

0/4 

353 

315 

071 

022000 

346 

07 7 

043 

116 

043 

34 5 

04 1 

0)5 


025000 

023 

174 

267 

374 

301 

024 

.553 

22 7 

022 0 10 

022 

345 

147 

151 

351 

34 1 

322 

25 7 


025010 

274 

302 

020 

025 

/75 

312 

333 

026 

022020 

02) 

04 3 

043 

303 

257 

021 

04 1 

357 


025020 

515 

026 

02 5 

303 

267 

0/4 

305 

JJC 

022030 

033 

357 

04 3 

065 

300 

066 

017 

311 


025030 

001 

174 

346 

100 

302 

04 4 

025 

051 

022040 

000 

000 

000 

000 

000 

000 

000 

000 


025040 

004 

303 

031 

02 5 

170 

0 62 

363 

033 

022050 

000 

00 J 

000 

000 

000 

000 

000 

000 


025050 

104 

115 

04 1 

000 

000 

i/3 

22 1 

in 

022060 

000 

00 J 

000 

000 

000 

000 

000 

000 


025060 

172 

230 

127 

322 

1 17 

02 5 

173 

201 

022070 

000 

00 0 

000 

coo 

000 

000 

000 

000 


025070 

137 

172 

210 

127 

051 

072 

363 

Oj>3 

022100 

000 

345 

325 

305 

353 

0 16 

000 

04) 


025100 

075 

312 

1 15 

02 5 

062 

363 

033 

353 

0221 10 

020 

047 

315 

147 

022 

04 1 

350 

003 


025110 

051 

5 55 

303 

055 

02 5 

301 

in 

051 

022120 

3 15 

147 

022 

04 1 

144 

000 

315 

147 


025120 

043 

072 

363 

0 j3 

C75 

312 

115 

02 5 

022130 

022 

04 1 

012 

000 

315 

147 

022 

173 


025130 

303 

104 

0/5 

315 

071 

023 

315 

1 15 

0221)10 

315 

20) 

022 

301 

321 

34 1 

3 i 1 

006 


025140 

023 

315 

04 4 

02 3 

247 

311 

000 

000 

022150 

377 

004 

173 

225 

137 

172 

234 

127 


025150 

000 

325 

315 

07 1 

023 

3 53 

3 15 

07 1 

022160 

322 

151 

022 

173 

205 

137 

172 

214 


025160 

023 

34 5 

315 

07 1 

023 

174 

346 

200 

022170 

127 

170 

27 1 

310 

0)5 

5)5 

201 

022 


025170 

302 

262 

025 

172 

346 

200 

302 

227 

022200 

311 

000 

000 

000 

000 

306 

060 

315 


025200 

025 

174 

272 

3 12 

2)4 

025 

322 

227 

022210 

026 

022 

3) 1 

32 5 

052 

306 

033 

053 


025210 

02 5 

303 

224 

025 

175 

273 

3 12 

232 

022220 

104 

1 15 

052 

304 

033 

353 

033 

023 


025220 

025 

322 

22 7 

025 

076 

0O1 

04 1 

076 

022230 

327 

170 

272 

302 

243 

022 

171 

2 73 


025230 

004 

04 1 

076 

000 

341 

021 

242 

025 

022240 

312 

275 

022 

032 

147 

023 

032 

157 


025240 

325 

351 

312 

260 

02 5 

321 

032 

376 

022250 

315 

205 

02 6 

023 

0/3 

032 

37 6 

015 


025250 

015 

312 

375 

022 

023 

303 

24 6 

025 

022260 

312 

227 

022 

305 

345 

315 

026 

022 


02 5260 

321 

311 

172 

346 

200 

302 

201 

02 5 

022270 

341 

301 

303 

264 

022 

32 1 

3 1 1 

000 


025270 

303 

224 

0/5 

376 

000 

31 1 

376 

00 i 

022300 

34 1 

301 

34 5 

31 1 

032 

023 

376 

040 


025300 

311 

376 

000 

310 

376 

001 

311 

376 

022310 

312 

304 

022 

033 

376 

0 15 

310 

303 


025310 

00 1 

310 

376 

004 

311 

376 

004 

51 1 

0D232O 

022 

030 

0 32 

0/3 

376 

042 

3 10 

376 


025320 

376 

000 

310 

37 6 

004 

311 

056 

273 

022330 

015 

312 

317 

026 

315 

026 

022 

303 


025330 

001 

056 

2 76 

00 1 

056 

301 

001 

0 56 

0<*23)t0 

322 

022 

04 1 

360 

03 3 

076 

040 

357 


025340 

307 

0 01 

056 

315 

001 

056 

3/0 

04 6 

022350 

065 

302 

34 5 

022 

066 

017 

247 

31 1 


025350 

025 

315 

066 

023 

247 

311 

305 

104 

022360 

041 

360 

033 

066 

0)7 

000 

076 

012 


025360 

115 

052 

36h 

033 

160 

043 

161 

043 

022370 

357 

227 

311 

000 

311 

052 

350 

033 


025370 

042 

364 

033 

301 

175 

376 

177 

330 


20 



January 1976 Tiny BASIC Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 Page 1 7 


026000 

303 

336 

026 

305 

052 

364 

033 

053 

031000 

052 

354 

033 

053 

104 

115 

052 

376 

026010 

106 

053 

042 

364 

033 

146 

175 

376 

031010 

033 

on 

345 

052 

366 

033 

104 

115 

026020 

164 

150 

301 

320 

303 

34 1 

026 

142 

0J1020 

052 

352 

033 

01 1 

301 

.515 

060 

031 

026030 

153 

315 

356 

025 

247 

311 

315 

003 

031030 

315 

101 

022 

076 

040 

357 

052 

366 

026040 

026 

353 

247 

311 

076 

OaO 

315 

026 

031040 

033 

104 

115 

052 

354 

033 

053 

315 

026050 

022 

247 

311 

000 

000 

000 

041 

077 

031050 

060 

031 

315 

101 

022 

32 7 

247 

311 

026060 

026 

00) 

350 

033 

176 

002 

175 

376 

031060 

171 

225 

157 

170 

234 

i(i 

M! 

052 

026070 

033 

310 

003 

0*3 

303 

064 

026 

000 

031070 

352 

033 

042 

304 

033 

052 

354 

033 

026100 

000 

000 

034 

001 

034 

000 

040 

017 

031100 

042 

306 

033 

247 

311 

315 

165 

031 

Ui6110 

100 

030 

000 

i 64 

O^ii 

377 

057 

000 

0311 10 

042 

304 

033 

043 

043 

076 

015 

04 3 

026120 

000 

056 

24 1 

051 

32 1 

377 

057 

377 

031120 

276 

302 

117 

03 1 

043 

043 

042 

306 

026130 

377 

04 1 

100 

030 

0<*2 

361 

033 

04 \ 

031)30 

033 

24 7 

311 

000 

315 

165 

031 

043 

026140 

164 

024 

042 

364 

033 

3 15 

020 

02 7 

031140 

043 

076 

015 

043 

276 

302 

143 

031 

026150 

0 52 

352 

033 

126 

04 3 

136 

553 

000 

031150 

043 

043 

042 

306 

033 

315 

165 

031 

026160 

042 

350 

033 

023 

023 

247 

311 

0 76 

031160 

042 

304 

033 

2 47 

311 

315 

071 

023 

026170 

015 

357 

303 

360 

022 

327 

076 

017 

031170 

315 

1 54 

023 

3 10 

303 

330 

026 

000 

026200 

062 

360 

033 

24 7 

311 

345 

32 5 

305 

031200 

000 

000 

000 

000 

000 

000 

000 

000 

026210 

353 

016 

377 

303 

107 

022 

000 

000 

031210 

000 

000 

000 

000 

000 

000 

000 

000 

026220 

327 

000 

000 

000 

076 

105 

357 

076 

031220 

000 

000 

000 

000 

000 

000 

000 

000 

026230 

122 

357 

357 

07 6 

040 

357 

04 6 

000 

031230 

000 

000 

000 

000 

000 

000 

000 

000 

026240 

000 

000 

000 

315 

101 

022 

052 

350 

031240 

000 

000 

000 

000 

000 

000 

000 

000 

026250 

03 3 

076 

04 0 

357 

315 

205 

026 

016 

031250 

000 

0 00 

coo 

000 

000 

000 

000 

000 

026260 

010 

041 

357 

03 3 

02 1 

106 

026 

032 

031260 

000 

000 

000 

00 0 

000 

000 

000 

000 

026270 

167 

015 

302 

267 

026 

04 1 

002 

032 

031270 

000 

000 

000 

000 

000 

GOO 

000 

000 

026300 

061 

377 

000 

303 

2 57 

021 

056 

001 

031300 

23) 

310 

122 

316 

330 

204 

322 

300 

026310 

001 

056 

002 

001 

056 

003 

001 

056 

031310 

232 

330 

124 

302 

132 

343 

330 

300 

026320 

004 

001 

056 

005 

001 

056 

006 

001 

031320 

322 

300 

231 

331 

215 

326 

175 

322 

026330 

056 

007 

001 

056 

010 

001 

056 

Oil 

031330 

375 

232 

210 

244 

326 

175 

323 

034 

026340 

001 

056 

012 

00 1 

056 

013 

001 

056 

031340 

231 

351 

215 

331 

067 

322 

213 

322 

026350 

014 

001 

056 

015 

001 

056 

016 

001 

031350 

375 

132 

343 

231 

366 

254 

132. 

343 

026360 

056 

017 

001 

056 

020 

303 

2 i 6 

026 

031360 

331 

134 

322 

213 

032 

216 

331 

105 

026370 

000 

000 

000 

000 

000 

000 

000 

000 

031370 

322 

213 

032 

216 

047 

041 

066 

010 

027000 

000 

000 

000 

000 

000 

000 

000 

000 

032000 

326 

053 

326 

167 

320 

070 

322 

360 

027010 

000 

000 

000 

000 

000 

000 

000 

000 

032010 

320 

265 

032 

022 

320 

360 

032 

C04 

027020 

076 

012 

357 

052 

115 

02 6 

042 

366; 

032020 

326 

131 

232 

04 1 

114 

105 

324 

133 

027030 

033 

31 i 

325 

315 

07 1 

023 

353 

3 15 

032030 

310 

132 

340 

324 

147 

322 

304 

322 

027040 

071 

023 

104 

115 

315 

044 

023 

353 

032040 

375 

232 

074 

107 

317 

232 

057 

124 

027050 

315 

044 

023 

32 I 

305 

315 

240 

024 

032050 

317 

132 

343 

322 

304 

323 

224 

232 

027060 

315 

07 1 

02 3 

303 

072 

027 

315 

07 1 

032060 

275 

123 

125 

302 

132 

343 

324 

100 

02 7 0 70 

023 

345 

051 

.04 

1 15 

052 

366 

033 

032070 

326 

027 

323 

224 

232 

1 12 

1 11 

306 

027100 

175 

221 

117 

174 

230 

107 

013 

052 

032100 

3 32 

343 

133 

1 14 

132 

343 

325 

1 5 i 

027110 

354 

033 

274 

302 

120 

027 

171 

275 

032110 

032 

022 

233 

326 

106 

117 

322 

323 

027120 

332 

360 

026 

140 

151 

30 i 

160 

053 

032120 

324 

326 

363 

132 

340 

324 

147 

226 

027130 

161 

104 

115 

042 

366 

033 

315 

071 

032130 

363 

124 

5 17 

327 

30 5 

132 

343 

322 

027140 

023 

161 

043 

160 

247 

311 

315 

071 

032140 

304 

322 

375 

075 

04 6 

062 

004 

032 

027150 

023 

053 

051 

104 

115 

315 

071 

023 

032150 

232 

226 

120 

322 

231 

322 

242 

322 

027160 

Oil 

315 

044 

023 

2 47 

311 

315 

071 

032160 

322 

232 

173 

254 

322 

342 

232 

332 

027170 

023 

053 

315 

044 

023 

052 

370 

033. 

032170 

215 

322 

375 

232 

202 

273 

326 

044 

027200 

315 

044 

023 

315 

240 

024 

315 

200 

032200 

032 

166 

326 

175 

322 

304 

322 

375 

027210 

024 

303 

146 

02 7 

032 

023 

376 

040 

032210 

132 

343 

32 3 

125 

032 

161 

322 

304 

027220 

312 

214 

02 7 

033 

306 

300 

320 

00/ 

032220 

322 

375 

000 

000 

000 

000 

232 

251 

027200 

117 

023 

032 

376 

050 

312 

243 

027 

032230 

11 1 

315 

133 

3)0 

323 

24 1 

324 

H7 

027240 

033 

247 

31 l 

151 

046 

024 

116 

043 

032240 

232 

245 

254 

032 

232 

322 

304 

322 

027250 

146 

151 

1 16 

04 3 

106 

043 

315 

044 

032250 

375 

232 

264 

122 

105 

324 

326 

036 

027260 

023 

140 

151 

042 

370 

033 

067 

311 

032260 

322 

304 

322 

375 

233 

200 

105 

116 

027270 

300 

32 5 

342 

000 

000 

000 

000 

000 

032270 

304 

326 

167 

32 3 

Oil 

232 

306 

i 14 

027300 

000 

000 

000 

0 00 

000 

325 

023 

032 

032300 

123 

324 

031 

34 0 

322 

3/5 

232 

31/ 

027010 

376 

015 

302 

064 

030 

353 

315 

044 

032310 

122 

125 

316 

322 

304 

032 

020 

233 

027320 

023 

321 

247 

311 

325 

■515 

071 

023 

032320 

101 

116 

105 

32 7 

322 

304 

032 

000 

027330 

345 

116 

043 

106 

315 

071 

023 

353 

032330 

326 

347 

232 

1 54 

24 4 

323 

034 

000 

027340 

315 

071 

023 

003 

172 

270 

302 

361 

0323.*0 

232 

34 3 

275 

232 

354 

255 

133 

003 

027.550 

02 7 

173 

271 

322 

361 

027 

303 

006 

032350 

32 5 

133 

032 

361 

232 

357 

253 

13-3 

027360 

030 

345 

315 

Oit* 

023 

34 1 

353 

315 

032360 

00 3 

232 

372 

253 

133 

003 

324 

200 

027370 

044 

023 

341 

315 

044 

023 

140 

151 

0323/0 

032 

361 

233 

055 

255 

133 

003 

324 

030000 

315 

044 

023 

34 1 

247 

311 

34 1 

315 

033000 

216 

032 

36) 

133 

02 7 

233 

016 

252 

030010 

044 

023 

140 

151 

315 

044 

023 

321 

033010 

133 

02 7 

324 

240 

03 3 

00 5 

233 

055 

030020 

24 7 

311 

376 

O'l'i 

302 

314 

02 6 

303 

033020 

257 

133 

02 7 

324 

362 

033 

005 

330 

030030 

033 

023 

032 

376 

040 

02 3 

312 

032 

033030 

032 

033 

035 

031 

300 

327 

214 

033 

030040 

030 

033 

306 

300 

320 

325 

023 

032 

033040 

04 7 

133 

2 54 

324 

133 

322 

300 

323 

030050 

306 

300 

321 

320 

376 

015 

3 iO 

376 

033050 

324 

033 

057 

324 

133 

322 

300 

323 

030060 

040 

310 

067 

31 1 

376 

044 

312 

315 

033060 

351 

033 

065 

322 

300 

233 

07 / 

250 

030070 

027 

303 

306 

02 7 

347 

323 

241 

324 

033070 

132 

343 

23 3 

077 

251 

322 

300 

326 

030:00 

000 

120 

000 

036 

000 

006 

000 

007 

033100 

352 

232 

330 

123 

132 

305 

331 

000 

0301 lO 

000 

010 

000 

012 

000 

000 

000 

030 

0331 10 

032 

2 16 

000 

000 

233 

123 

275 

325 

030120 

000 

000 

000 

030 

326 

036 

322 

375 

033120 

326 

322 

300 

233 

150 

274 

233 

135 

030130 

230 

141 

00 i 

014 

21 1 

326 

167 

323 

033130 

275 

325 

334 

322 

300 

233 

:44 

276 

030140 

Oil 

230 

155 

022 

006 

005 

220 

322 

033)40 

325 

337 

322 

300 

325 

331 

322 

300 

030150 

304 

322 

213 

322 

37 5 

230 

166 

012 

033150 

232 

330 

276 

233 

162 

275 

325 

3‘i 5 

030160 

007 

214 

322 

50 4 

027 

320 

230 

073 

033160 

322 

300 

233 

171 

27 4 

325 

337 

322 

030170 

014 

001 

223 

322 

304 

027 

300 

000 

033170 

300 

325 

342 

322 

300 

000 

000 

000 

030200 

204 

232 

146 

015 

04 1 

375 

033 

006 

033200 

232 

27 5 

104 

1 11 

315 

323 

324 

32 6 

030210 

010 

176 

007 

00 7 

007 

2 56 

02 7 

02 7 

033210 

352 

226 

355 

250 

132 

34 3 

233 

241 

030220 

055 

055 

055 

176 

027 

167 

054 

176 

033220 

254 

132 

34 3 

226 

355 

251 

327 

032 

030230 

027 

167 

054 

176 

027 

167 

054 

176 

033230 

233 

235 

254 

033 

20 5 

322 

50 4 

322 

030240 

027 

167 

005 

302 

211 

030 

052 

374 

033240 

375 

226 

355 

251 

32 7 

066 

033 

230 

030250 

033 

174 

346 

077 

14 7 

376 

04 7 

312 

033250 

000 

000 

000 

000 

226 

355 

250 

132 

030260 

272 

030 

322 

204 

030 

315 

044 

02 3 

033260 

34 3 

233 

275 

254 

132 

54 3 

226 

355 

030270 

077 

31 1 

175 

376 

020 

303 

262 

030 

033270 

251 

32/ 

166 

322 

300 

226 

355 

251 

030300 

315 

071 

023 

105 

076 

040 

315 

026 

033300 

327 

146 

322 

300 

044 

034 

0 54 

034 

030310 

022 

00 5 

302 

304 

030 

063 

063 

063 

033310 

327 

214 

033 

320 

133 

254 

522 

300 

030320 

063 

063 

063 

30 1 

34i 

043 

043 

345 

033320 

323 

324 

326 


322 

300 

232 

150 

030330 

305 

07 3 

07 3 

G73 

073 

073 

073 

311 

033330 

116 

130 

324 

323 

32 4 

326 

352 

32 7 

030340 

072 

36 7 

033 

274 

312 

360 

030 

332 

033340 

324 

324 

147 

322 

304 

322 

3 75 

072 

030350 

360 

026 


334 

033 

3 11 

OOu 

000 

033350 

000 

000 

000 

034 

054 

034 

00 h 

040 

030360 

072 

366 

033 

326 

000 

275 

322 

352 

033360 

017 

100 

030 

000 

164 

024 

37 7 

057 

030370 

030 

303 

360 

026 

000 

000 

000 

000 

033370 

000 

000 

056 

241 

05 i 

321 

377 

057 


21 



January 1976 Tiny BASIC Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 Page 1 8 


po box 6528. denvcr, Colorado 80206 
December 14, 1975 


Mr. Dob Albrecht & Bernard Greening 
People's Computer Company 
PO Box 310 

Menlo Park, CA 94025 


Dear Dob and Bernard, 

I am very interested in helping out with your Tiny BASIC (perhaps 
Micro BASIC might bo more appropriate). Since my specialty is 
Hardware and the lowest level Software to interface this hardware 
to a system, I would like to suggest a simple hardware subsystem. 

A scientific calculator IC can be easily interfaced to a micropro¬ 
cessor to provide all of the various mathematical operations very 
accurately with minimal software overhead. I am including a copy 
of some of the scientific calculator documentation out by the 
Digital Group. 

This scientific calculator has boon interfaced to an 8008 (Mark-8 
modified) and MGS Technology 6601/2 system. The software can be 
easily modified to support an 8080 or 6800, thereby providing an 
easy access to building "Tiny BASIC" for 8008, 8080, 6800, 6501 or 
6502 systems. 

The major drawback of a calculator chip for math routines is that 
it is very slow compared to specialized hardware and software systems. 
The major advantages arc: 

1. Low software overhead (about 300 bytes for interfacing) 

2. Low cost (around $45 worth of parts & PC board) 

3. Quick way to develop Math routines with high accuracy. 

I would be happy to assist PCC in developing Tiny BASIC using these 
Scientific Calculator IC's. 

Dr. Robert Suding 

c/o The Digital Group 

SCIENTIFIC CALCULATOR 

Here is a calculator circuit designed to be used with any 
computer of 8 bits or more capacity. I am presently using it 
with an 8008 system, approximately 300 bytes of storage being 
required to basically interface this circuit to my TV readout 
and keyboard. Only one 8-bit input port and one 8-bit output 
port is required. 


I would question the advisability of using these simpler chips 
with their much lower calculation power return. Mos Technology 
also makes an RPN format calculator IC, the 2529-106 for H.P. 
buffs. A metric conversion chip (2529-104) is also available from 
Mos Technology. These IC's have been tried in the circuit. They 
are directly usable in the enclosed circuit. 

The basic functions are roughly equivalent to the Tl SR-50, but 
the enhanced software version will be considerably better than 
the HP-65 programmable calculator due to its message display 
capacity and "almost” unlimited memory capacity. 

-Dr Robert Suding WOLMD 


SCIENTIFIC CALCULATOR SUBASSEMBLY 
FOR x-BI T MS CR0C0MPUTE R S_ 


FPFAT RFSISTER Z DIODE 
:E TWORK FOR EACH OF 5 
rr-VENTS Z DECIMAL POINT 


The heart of the circuit is the 2529-103 calculator IC from 
Mo3 Technology. This is a simple IC which gives trig, log, 
memory, square root, etc., functions. The display is normally 
a 12-digit LED 7-segincnt assembly. The segment drivers are 
built into the 2529. The 12-digit outputs are usually fed to 
a pair of 75492’s which serially scan each of the 12 digits at 
about a 60!lz cycle rate from an internal clock. A matrixed 
keyboard is normally attached between the 12 digit outputs of the 
2529 and 4 keyboard inputs of the 2529, giving a potential 
48-kcy input capability, 41 of which are actually used. 

The design required efficient handling of the 12-digit outputs. 
Since it was necessary to utilize the digit outputs for both 
data entry and digit segment output, the design was centered 
on a controlled accessing of the asyncronously scanning 12 
digits. The computer has 4 bits of an output port assigned 
to the duty of selecting a given digit by sending its binary 
equivalent to the inputs of a 74150 sixteen input selector. 

When the selected digit becomes present the output at pin 10 
of the 74150 goes low as long as the digit is present. By 
combining this input with throe more bits from the computer, 
the desired "keyboard" input is sent to the 2529. The computer 
word should be held for at least 40 m3 to be certain that the 
asyncronously scanning digit has been accessed. P(ji 

Likewise, the digit output must identify the digit to which the 
current segment outputs apply. By using the same coding scheme 
for the four inputs to the 74150, a computer controlled sampling 
system is established. The MSB output from the computer informs 
the calculator interface that a digit/segment output is desired. 
When the desired digit finally ripples by, a strobed MSB+ pulse 
appears on the interface output. This pulse then interrupts 
the computer to inform it that the segment data for the desired 
digit is present and valid as long as the MSB stays +. 

Several considerations: First, only 5 of the 7 segments are 
needed to decode 0 through 9, minus, blank, and the error 
signs. Each digit may also have a decimal point attached to 
it, so the output becomes 6 bits, plus the MSB strobe bit. Be 

aware that these calculator chips are quite slow. When entering a 
data item or especially a function, the display will go blank up 
to 1 /3 second while internal processing takes place. The result 
can take on any number of digits, but digit 9 is always used. By 
sampling for "digit 9 not blank," the end of internal processing 
can be detected. When this occurs, either further entries, or sam¬ 
pling of all 1 2 digits may proceed without data loss. 8008 pro¬ 
grams have been written to handle simple keyboard entry and tv c 
result display, and interactive calculation operations involving 
messages anf formula building and reiteration. These are avail¬ 
able through the Digital Group. 

The 2529 is available from Mos Technology at $27.50 apiece. 

Some newer scientific calculator chips have been announced by 
Mos Technology and are being presently sampled. 

Other calculator chips could be used in similar circuits. However, 



ADJUST R1 Z 37 FOR 
SOMA CRAIN IF USING 
OThFR TnAN »1?, -JXV 
Supply voltages 


OUTPUT CODES FOR SEGMENT DECODE 


INPUT CODES FOR FUNCTION ENTRY 


r 

l/x 


NO Op 


OCTAL 

HEX 

FUNCTION 

OCTAL 

HEX 

021 

11 

ARC 

033 

IB 

022 

12 

SIN 

061 

31 

023 

13 

COS 

062 

32 

024 

14 

TAN 

063 

33 

025 

15 

LN 

064 

34 

026 

16 

LOG 

065 

35 

027 

17 

RCL 

067 

37 

030 

18 

Z 

070 

38 

031 

19 

x*-y 

071 

39 

032 

1A 

DGR 

072 

3 A 

041 

21 

STO 

073 

3B 

042 

22 

CA/CE 

074 

3C 

043 

23 

CHS 

053 

2B 

044 

24 

EEX 

054 

2C 

045 

25 

y x 

046 

26 

047 

27 

{ 

050 

28 

052 

2A 

} 

051 

29 

066 

36 

10* 

103 

43 

101 

41 

e x 

104 

44 

102 

42 

n: 

105 

45 

000 

00 

Restore- 

034 

1C 


DIGIT 



DIGIT AND 



ALONE 

OCTAL 

HEX 

DECIMAL PT 

OCTAL 

HEX 

0 

260 

B0 

0. 

220 

90 

1 

275 

BD 

1. 

235 

9D 

2 

250 

A8 

2. 

210 

88 

3 

254 

AC 

3. 

214 

8C 

4 

245 

A5 

4. 

205 

85 

5 

246 

A6 

5. 

206 

86 

6 

243 

A3 

6. 

203 

83 

7 

274 

BC 

7. 

234 

9C 

8 

240 

A0 

8. 

200 

80 

9 

244 

A4 

9. 

204 

84 

- 

257 

AF 


217 

8F 

ERROR* 

262 

B2 

ERROR.* 

222 

92 


or 

or 


or 

or 


242 

A2 


202 

82 

Blank 

277 

BF 

Blank. 

237 

9F 


Display 

INPUT CODES FOR DIGIT DATA REQUEST 


OCTAL 

HEX 

DIGIT 

OCTAL 

HEX 

201 

81 

7 

207 

87 

202 

82 

8 

210 

88 

203 

83 

9 

211 

89 x 

204 

84 

10 

212 

8A 

205 

85 

11 

213 

8B 

206 

86 

12 

214 

8C x 


*(leftmost digit only) 

* INPUT CODES SENT TO ENTER DIGITS AND FUNCTIONS. 
CODE MUST BE HELD MORE THAN 40MS. 

* SEND DIGIT 9 DATA REQUEST (211 OR 89) AND WAIT 
FOR MSB FROM 7602 TO GO +. THIS INDICATES 
INTERNAL CALCULATIONS FINISHED. 

SEND DIGITS 12 THROUGH 1 DATA REQUESTS, DECODE 
EACH KITH SEGMENT DECODE DATA TABLE AS DATA 
AVAILABLE MSB LINE FROM 7402 GOES + FOR EACH 
DIGIT. 

LONGEST CALCULATION DELAY APPEARS TO BE 69! 
(ABOUT 1/3 SEC). 

RPN (2529-106) AND METRIC-CONVERSION (2529-104) 
CALCULATOR IC’S FROM MOS TECHNOLOGY WILL WORK 
WITH THE SAME CIRCUIT. 


DR - ROBERT SUDING WOLMD 


22 
































































































January 1 976 Tiny BASIC Calisthenics <& Orthodontia Box 310, Menlo Park CA 94025 Page 19 
SNOBOL FOR THE ALTAIR 


Dear Dragons, 

Thanks for the great publication and other nice things--like 
dragon shirts!. What a way to learn. 

I have a problem. Without considering any possible consequences, 

I have committed myself to writing a SNOBOL Compiler (inter¬ 
preter?) for an Altair 8800. My officemate has built the Altair for 
the college at which he teaches, and after many months of promis¬ 
ing some kind of assistance, I finally offered to write a compiler. 

To get to the point: does anyone out there have any experience in 
compiler writing, particularly in SNOBOL compiler writing? I know 
that some of the sharpest people in this field read PCC, so I'm really 
hoping to hear from someone. 

Of course, once I get the compiler working, I will make it avail¬ 
able to other Altair owners and users (for a nominal fee and a lot of 
glory). 

(I realize all you people are heavily into BASIC, but SNOBOL is a 
pretty neat language for things like compiler writing, natural 
language translation, and general string manipulation.) 

Also, since my friend's Altair is 75 miles away from my home, 
donations of Altairs will be accepted. 


TB CODE SHEET 

by Dick Whipple 

You may be interested in knowing that John Arnold and / 
write our programs (like TB) in machine language. We have found it 
to be less restrictive and more versatile although not having a source 
file of some kind is a disadvantage. We do keep a hand-generated 
source listing on coding sheets for our reference. A major program 
like TB requires a two-pass development: the first pass ends up with 
lots of "fixes" and "patches" to get the program to work; the second 
pass is then used to dean-up the mess produced in pass one. The 
coding sheets from pass two represent the nearest thing to source 
code we have. For your reference / have included a copy of one of 
our coding sheets from TB. The addresses are split octal. 

pr«*■»*, r : Toy.MVC (fal) ££ 

Zylfttw Ooie Ji/io/jr H - 020 


MAUREEN SUPPLE 
828 S. Irving St 
Arlington VA 22204 


BUFF ID : 


/ at 000'0‘fD') 

V , I ( 


(SNOBOL compilers are tough. An interpreter would be easier. A 
good place to start looking for information would be Griswold's book. 
The Macro Implementation of SNOBOL, W.H. Freeman, San Fran¬ 
cisco, 1973; and Waite's book. Implementing Software for Non- 
Numeric Applications, Prentice Hall, Englewood Cliffs, New Jersey, 
1971.) 

FULL OF HOLES 


Dljl II WxX H OUFSTFT 
OZ\020 ) 

OliOOll 

os\ouo f 


L*I 


8 


DFi/IClJ 
Con/TW: DPS \337 


: In/wDTH 

etna 


0<JD 
B)\07l J 

3121 

i /3 yoi r Jr; 

W]o20 j 


<?>-rCN0 l 


ruBout 


I guess you know. Tiny BASIC as presented in its first chapter is 
full of holes. Look, for example, at what happens if you try to 
evaluate an expression without aunary plus or minus on the front. Ich. 
Also, I wonder if the interpreted interpreting interpreter interpreter 
executor is viable for a really small, slow system like an 8008 system. 
Talk about crunching! Anyway, I want to see more. I'm crazy, 
maybe? Who cares. 

Sincerely, 

FRITZ ROTH 
Rt 7 

Carbondale IL 62901 
A HIGH ORDER 

Dear Bob Albrecht, I am writing this letter about many things T ve 
read about in PCC. The Tiny BASIC project looks like something 
everyone would like to tackle. The interpreter idea is a little costly 
on time and storage, unless you plan to use it on many systems. 
Otherwise, it's a good idea. I'm interested in simulating languages 
using BASIC or FORTRAN as the "machine," so this type of thing 
is interesting. If only someone had the plans for ALGOL in IL . . . 

If anyone has done any projects simulating languages/computers 
in a high order language, would they please contact me?! 

Thanks for everything, PCC\ 

Respectfully, 

REED CHRISTIANSEN 


ccrvra: oCD 

_ 10 

11 

12 
13 
IS 
IF 
/(>' 
//. 

Pi] 

£3 
ZS 


RST ,rJ 
err <ros> 

JF2 FC-S 

Crr Yltrty 


776? 

033 I 
312 
OS 2 
020 
376? 

’037) 

3/2? 

'OSTfJPl tTr ? 

020 ) 

OOF DO? 8 
3121 

30 C > J,J ? FFR30C, 


02 C) 


«• 

ziSpio. 

z 7)3121 

30 j /07 


err <ck> 


) jr ? end G-ETume-.o 



ITR: 


3031 

00G S 7cor CC-niTU 


try vl C C‘/C s 

j>rr cervtq 

navi c (Zj 
RTT irJ 

c ft <3 rn y 

JW? con/rj 
t?sr cflf 


I I 
31 1020 1 

3Z\37G1 
3S'\oov J 

3>'j3> 27 

0YF)7Fi SP 


CPI <!'/’> 


M f 020 J 

311201 fiOR c 


VI \033 J 
72 [oiC ? 

7Vj '01 6 J 

7TJ35-? 

7 { 3)303 
V\ooo 


<r0 r> 
r?sT e> u T 

mvr /) Y ■ y 
/?rr our 

jrnp BUFF/nJ 


Are you implementing Tiny BASIC or some other software. 
Let us know and we’ll let others know. Let’s stand on each 
others shoulders and not on each others toes (to paraphrase 
C. Strachey). 


2756 Fernwood No. 
Roseville MN 55113 


23 








dr dobb's journal of 


$ 1.50 


COMPUTER 


C 


alisthenics 


60 


rthodontia 


* 


Running Light Without Overbyte 


February 1976 


Box 310, Menlo Park CA 94025 


Volume 1, Number 2 


Table of Contents for Volume, 1, Number 1 (20 pages) 
Tiny BASIC Status Letter - Dennis Allison 


16-Bit Binary-to-Decimal Conversion Routine - Dennis Allison 

Build Your Own BASIC [reprinted from PCC, Vol. 3 , No. 4] - Dennis Allison & others 
Build Your Own BASIC, Revived [reprinted from PCC, Vol. 4, No. 1] - D. Allison & M. Christoffer 
Design Notes for Tiny BASIC [reprinted from PCC, Vol. 4, No. 2] - D. Allison, Happy Lady, & friends 5 
Tiny BASIC [reprinted from PCC, Vol. 4, No. 3 ] - D. Allison, B. Greening, H. Lady, & lots of friends 9 
Extendable Tiny BASIC - John Rible 10 

Corrected Tiny BASIC IL - Bernard Greening 12 

Tiny BASIC, Extended Version (TBX), Part 1 - Dick Whipple & John Arnold 

Example, Command Set, Loading Instructions, Octal Listing 14 

Letter & Schematics - Dr Robert Suding 

Using a calculator chip to add mathematical functions to Tiny BASIC 18 


page 

1 

2 

3 

4 


IN THIS ISSUE . . . 

What? Another Computer Hobbyist Magazine? - Editorial 
A Critical Look at BASIC - Dennis Allison 
Music of a Sort - Steve Dompier 

SCELBAL: a higher level language for 8008/8080 systems - Mark Arnold & 

descriptive information Nat Wadsworth 

Tiny BASIC, Extended (TBX), Part 2 - Dick Whipple & John Arnold 
complete implementation documentation, source listing, 
error corrections, notes on two relocated versions 
Computers that Talk - Jim Day & Editor 

unlimited English language voice synthesis equipment, available in kit form for $1000 
Letters & Notes 

TBX Mods for a SWTP TVT-2 - Adolph Stumpf 
Tiny BASIC Available for the 6800 - Tom Pittman 
Byte Swap (classified ads) 

Database Questionnaire, and Subscription Blank 


page 

3 

4 
6 


13 

32 

33 


35 


In Future Issues . . . 

t DOCUMENTED SOURCE CODE FOR THE DENVER VERSION OF TINY BASIC 
t A PUBLIC-DOMAIN FLOPPY DISC FILE SYSTEM 

t SCHEMATICS & ARTICLES, REPRINTED FROM MANY COMPUTER CLUB NEWSLETTERS 
t DIRECTORIES OF CLUBS & ORGANIZATIONS, COMPUTER HOBBYIST STORES & 
DISTRIBUTORS, PUBLICATIONS, ETC. 
t LISTS OF COMPUTER HOBBYISTS & THEIR EQUIPMENT 

t INDICES TO COMPUTER HOBBYIST ARTICLES IN OTHER PUBLICATIONS 

juum a b mjuuuun mmurnuu mmmmai 

^previously dr dobb's journal of tiny basic calisthenics a orthodontia 


24 










February 1976 Dr Dobb's Journal of Computer Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 Page 3 

What’s DDJCC 60 all about? 

My gawd! Not another computer hobbyist magazine! That was my first reaction when 
People’s Computer Company approached me about becoming Editor of their one-issue-old 
infant, DR DOBB'S JOURNAL OF TINY BASIC CALISTHENICS & ORTHODONTIA. 

PCC had originally planned on publishing three issues of the JOURNAL. The response to 
the first, patchquilt issue, however, convinced them (and me) that an area of badly-needed 
information is not being covered by the presently existing publications. Furthermore, it 
seems unlikely that the other publishers will choose to cover that area; they have their 
hands (and pages) full just covering hardware and small bits of software. 

What is this area; this information vacuum? It’s free and very inexpensive software. 

One of the primary thrusts of DR DOBB'S JOURNAL will be to present detailed informa¬ 
tion concerning low-cost systems software; interpreters, compilers, structured assemblers, 
graphics languages, floppy disc file systems, etc. This will include user documentation and 
examples, documentation on implementation including complete source code listings, up¬ 
dates giving errors and their fixes, explicit and detailed notes on the design and imple¬ 
mentation of such systems software, and so on. This JOURNAL is explicitly available to 
serve as a communication medium concerning the design, development, and distribution of 
free and low-cost software for the home computer. 

We encourage you to send in documented software, as you develop it. We hope that 
you will use the software that we publish in this JOURNAL; that you will study it and 
modify it to expand its capabilities, and that you will report any bugs you may note to 
us and to the authors. 

We are also quite interested in publishing evaluations of any software and hardware 
that is being sold to the home computer user. We are supported by readers’ subscriptions 
rather than advertising. We will not hesitate to publish positive and negative evaluations. 

We adamantly hold the position that, if a manufacturer of some hardware or software is 
going to peddle it to unsuspecting consumers for a healthy profit, their product damn 
well ought to perform as well as their advertisements and profit imply it will! 

There are some other areas of information that we expect to cover, not seen in most 
of the other major computer hobbyist publications. These include complete indices to all 
of those publications, directories of computer stores and distributors, listings of computer 
clubs and organizations, listings of users and their equipment, etc. Another tidbit: as long 
as we can afford to, we will carry classified ads. 

We also plan to begin reprinting articles and schematics from the club newsletters. 

We have heard the comment, over and over, “I wish I could see the stuff that’s being 
printed by all the homebrew groups, but I just can’t afford to subscribe to all of them.” 

We expect to help with this desire. 

Finally, we will be doing some fairly detailed “blue skying.” Everyone is wondering 
where home computers are going, and what the potentials are. We have a number of ideas 
(with more rolling in, every day) about what can be done in the immediately foreseeable 
future. We will be presenting them and encouraging their realization. The Votrax articles 
on page 32 of this issue are one small example of this. 

Thank you for reading. We want your suggestions. We want your contributions of 
software, hardware designs, evaluations, and anything else you’re willing to share with 
other home computer enthusiasts. And, of course, we want your subscriptions. The more 
subscriptions we have; the more pages we can print; the more information we can pass 
along to you and your friends. If you like what you see here, we hope you will spread 
the word. 

Nuf sed, for now. More in a coupla weeks. -Jim C. Warren, Jr., Editor 


25 




Page 4 February 1976 Dr Dobb's Journal of Computer Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 


A CRITICAL LOOK AT BASIC 

Dennis Allison, 169 Spruce Ave, Menlo Park CA 94025 
Consultant (415) 325-2962 

[This article appeared in Timesharing: Past, Present, 
Future. Proceedings of the Second Annual Computer 
Communications Conference, San Jose, January 1973.] 


0. INTRODUCTION 

BASIC is the dominate interactive programming 
language. It has been widely implemented since 
its introduction in 1965 as a component of the 
Dartmouth timesharing system. BASIC is presently 
widely used as an instructional language at 
both the high school and college level. Standard¬ 
ization efforts are now in progress, but are 
hampered by the proliferation of dialects and 
incompatible extensions. 

The purpose of this paper is to evaluate the 
BASIC language as a problem solving tool. BASIC 
is not the language of choice for problem solving 
given our present understanding of the programming 
process. That is not to say that programs, even 
good programs, cannot be written in BASIC. There 
is overwhelming evidence which indicates they can 
be. Rather, it says that the language structure 
makes it difficult to write a clear, concise, well 
structured program. 

The emerging discipline of software engineering has 
provided us with a pair of complementary methodol¬ 
ogies which, when properly applied, help minimize 
the difficulty of developing error-free software 
systems both large and small. 

One might say that BASIC is too simple, too easy 
to use. It is possible for a novice user to learn 
to program in a single day. It is also almost 
axiomatic that large programs written by BASIC 
programmers will be ridden with bugs. The language 
lacks the mechanisms to structure the problem's 
algorithm and data well. It breeds bad habits, 
habits which are difficult to unlearn. 

1. MAKING A PROGRAM 

The program development cycle can be summarized as 
repetative application of the following: 

o Problem definition 
o Algorithm development 

o Program entry (error prone, mechanical) 
o Testing to discover errors 
o Debugging (localizing errors) 
o editing (mcchanicul) 

Contemporary timesharing systems support the 
mechanical portion of program development and 
neglect the conceptual and definitional part. 

BASIC systems provide for program entry, syntax 
checking, editing, and the like, but don't really 
provide much help when it comes to deciding how 
to solve the problem at hand. The program is 
expected to blossom forth in full bloom from the 
gestalt mind of the user. A corollary to the 
above observation: BASIC programs written at the 


console usually look it. 

While little support is given to testing and 
proofs of correctness, debugging is well supported 
within BASIC. BASIC is usually interpreted, so 
the state of the BASIC machine is available to 
construct diagnostics. Simple errors, array-bounds 
violations are checked and diagnostics reported 
at run-time. Many BASIC systems defer reporting 
structual errors (for example, a missing NEXT) to 
run-time as well, a practice not to be commended. 

The ease of finding errors in BASIC programs allows 
one to build programs on a pragmatic, experimental 
basis. That leads to a false sense of security. 

One had best remember Dijkstra's dictum: "Program 
testing can be used to show the presence of bugs, 
never to show their absence." 

2. MODULAR PROGRAMMING 

If any rule of the thumb as to how to construct good 
programs exists, it is: Divided and Conquer. Problems 
are best solved by decomposing them into smaller and 
smaller problems until the resultant problem can be 
solved in a simple, direct manner. 

Dijkstra has pointed out that the process of dividing 
a problem into its natural fragments results in the 
introduction of levels of abstraction. At each level 
of abstraction primative functions are defined which 
manipulate primative data aggregates; the operations 
and the data structures mirror an abstract model of 
the problem being solved. At lower levels of abstraction 
these primative operations and data structures are 
themselves decomposed into still more primative units. 

For example, a sort-merge program may deal on one 
level with manipulations of files, and on another 
level with records and keys. 

BASIC provides few mechanisms for modularity. There 
is a one-line arithmetic function capability and an 
unparametered subroutine (GOSUB/RETURN) facility. 

The first has limited usefulness; it provides a 
convenient shorthand for computation, nothing more. 

The subroutine facility is very primative. It 
requires the user to develop conventions for passing 
parameters and for the naming of local data. All 
variables are global in BASIC and are shared between 
all modules of the program. Subroutines are not 
distinct from the corpus of the main program (and 
other subroutines); transfers into and out of 
subroutines is unrestricted and often unmanageable. 
Subroutine reference is by line number rather than 
a mnemonic name, a convention which tends to obscure 
the functional purpose of the subroutine. 

3. STRUCTURED PROGRAMMING 

Structured programming is a technique which limits 
the control structures which interconnect the modules 
of a program to a few well-defined forms. Modules 
include procedures and collections of statements, 
oithor of which may be nested. The flow of control 
utilizes conditional and plex selection to select 
paths and provide for repetition unconditionally, 
under control of a boolean expression, or under 
control of an indexing variable. Recent systems 
provide escape statements which allow control to 
exit several nested modules. All systems forbid the 
use of unconditional branching. 

The rationale behind structured programmin is the 
minimization of the connectivity within a program. 
Programs which have a well defined, nested structure 


26 



February 1976 Dr Dobb's Journal of Computer Calisthenics 81 Orthodontia Box 310, Menlo Park CA 94025 Page 5 


tend to be clear. The logical flow is usually 
sufficiently clear that a flowchart is not necessary 
to tour all paths in the program. In addition, 
the conditions under which any given path is to 
be executed are clearly spelled out. 

BASIC is the antithesis of a language for writing 
structured programs. The GOTO and the IF...THEN 
both result in unstructured transfers of control. 

No means is provided for collecting statements 
into a group to be executed as a module. And 
instead of eliminating labels, BASIC requires all 
statements to have one. 

True structured programming is difficult in BASIC. 

It requires unmitigated attention and discipline 
to maintain a structured programming style. And 
the clarity which ono normally acquires is lost 
because module boundaries are not distinct. 

4. SUMMARY 

BASIC does not provide those features which appear 
desireable in an interactive programming language 
to be used for real-world problem solving. The 
flaws are not superficial; they are buried deeply 
in the structure of the language. In particular, 

BASIC is not a vehicle for the best techniques 
known for the construction of programs: modular 
programming and structured programming. 

Making programs is not an easy task. A problem of 
even moderate complexity often cannot be comprehended 
in the whole. We must abstract and localize the 
processing to make it tractable. Our contention 
is that BASIC does not help this process and, 
because of its structure, often hinders it. The 
time is ripe to find a better language, one more 
closely related to our needs. 

5. REFERENCES 
BASIC 

Anon. (1970) BASIC, Fifth Edition, Dartmouth College, 
Hanover, New Hampshire. 

Lee, J.A.N., The Formal Definition of the BASIC 
Language, The Computer Journal, Volume IS 
Number 1 (February 1972), pages 37-41. 

Ogdin, J., The Case Against BASIC, Datamation 
(September 1, 1971), pages 34-41. 

Sammet, Jean E., Programming Languages, Prentice- 
-Hal1 (1969). 

Modular and Structured Programming 

Baker, F. T., System Quality Through Structured 

Programming, Proc. FJCC (1972), pages 339-343. 

Buxton, J. N. and B. Randell (eds.). Software 

Engineering Techniques, Report on a Conference 
Sponsored by NATO Science Committee, Rome 
Italy (1969). 

Dijkstra, E. W., Notes on Structured Programming, 

Report 241, Technische Hogeschool Eindhoven (1969). 


Levenworth, B. M., Programming With(out) the GOTO, 

Proc. ACM Nat. Conf. (1972), pages 782-786. 

Liskov, B. H., A Design Methodology for Reliable 

Software Systems, Proc. FJCC (1972), pages 191-199. 

Mills, H. D., Mathematical Foundations for Structured 
Programming, IBM FSD Report FSC72-6012, 
Gaithersburg Maryland (February 1972). 

Naur, P. and B. Randell (eds.). Software Engineering, 
Report on a Conference Sponsored by the NATO 
Science Committee, Garmisch Germany (1968). 

Wirth, N., Program Development by Stepwise Refinement, 
CACM 14 (April 1971). 

Wulf, W. A., A Case Against the GOTO, Proc. ACM Nat. 
Conf. (1972), pages 791-797. 


PC BOARDS 

For those inclined to design their own microcomputer sys¬ 
tem, Schweber Electronics (Westbury NY 11590, 516-334-7474), 
is marketing several PC boards that appear interesting. Their Micro¬ 
computer Panel No. 9045-3BD-60 purports to accommodate 
nearly all currently available microprocessor kits. Their Memory 
Panel No. 9042-3BD-60 accepts any 16-, 18-, 22-, or 28-pin LSI 
RAM, ROM, or PROM in 4K increments. These 6”xl0” boards 
mate to standard 44-pin edge connectors for ease of system expan¬ 
sion. By standardizing pinouts for address and data buses, control 
and power lines, it becomes simple to interchange processor boards, 
memory boards, I/O boards, etc., all within the same card cage, 
regardless of whose LSI devices are on any board. 

Schweber has 18 outlets in the U.S. If none of them are 
handy for you, contact the manufacturer, Excel Products, 401 
Joyce Kilmer Ave, New Brunswick NJ 08903; 201-249-6600. 

FAIRCHILD F-8 KITS 

If you don’t want to do hardware diddling, Fairchild is 
peddling a F-8 Microprocessor Kit for $185 (plus tax where applic¬ 
able). The “kit” contains a fully assembled and tested unit includ¬ 
ing an F8 CPU, a pre-programmed PSU (Program Storage Unit), an 
F8 Memory Interface Circuit, and IK bytes of static RAM. It in¬ 
cludes a wired edge connector, one end for the board, another for 
your TTY, and three wires for power. The board includes 32 TTL- 
compatible I/O bits, two interrupt levels, two programmable timers, 
and all the necessary control circuits. Internal signals have been 
brought out to the edge connector for possible system expansion. 
Just add power; there is no additional soldering or wiring to do. 

The price includes a F8 Programming Manual, F8 Databook, and 
the “Fairbug” program in the PSU. Fairbug includes such capabili¬ 
ties as a loader, memory dumper, debugger, and TTY and paper tape 
I/O drivers. They say its immediately available from Fairchild 
Distributers or from Fairchild Microsystems Division, 1725 Tech¬ 
nology Dr., San Jose CA 95110. 


COMMERCIAL GOODIES OF INTEREST 


27 








Page 6 February 1976 Dr Dobb's Journal of Computer Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 


MUSIC OF A SORT 

Steve Dompier, 2136 Essex St, Berkeley CA 94705; 

415-841-1868 

[Reprinted from May 1975 PCC, Vol. 3, No. 5.] 

IT WORKS! 

I received my ALT AIR 8800 in the mail at 10 a.m., and 
30 hours later it was up and running with only one bug in the 
memory! That turned out to be a scratch in a printed circuit 
that took 6 more hours to find. After that was fixed, everything 
worked!! 

Now, what do you do with a machine that so far has no 
I/O boards or peripherals? Well, there’s always the front panel 
switches and machine language, so I was soon busy making up 
programs to test all of the 8080’s functions; and getting a good 
set of calluses on my ten input devices. There’s a lot of 8080 
instructions! 

ZZZIIIPPP 

I had just finished setting in a ‘sort’ program, and at the 
same time I was listening to a weather broadcast on a little 
transistor, low-frequency radio, which was sitting next to the 
Altair. I hit the ‘run’ switch on the computer and it took off 
sorting the same list of numbers over and over again. 

At the same time my radio also took off! 

The computer was sorting numbers and the radio was going 
ZZZIIIPP! ZZZIIIPP! ZZZIIIPP! 

Well, what do ya know! My first peripheral device!!! 

The radio was picking up the switching noise of the 8800. 

I tried some other programs to see what they sounded like, and 
after about 8 hours of messing around I had myself a program 
that could produce musical tones and actually make music; of a 
sort. (Or any other program you have!) 

MUSIC 

The closest sheet of music that I could find was The Fool 
on the Hill by the Beatles, so I translated it into OCTAL code, 
picked up the Altair, and headed down to Menlo Park for the 
3rd meeting of the Bay Area Amateur Computer Users Group- 
Home Brew Computer Club. I thought everyone there should 
see just what a computer can do! 

RECITAL 

This being the Altair’s first recital, it was a bit shy at first, 
and refused to power up--even though Fred’s tape recorder was 
plugged into the same wall outlet and working just fine. One 
forty-foot extension cord and half an hour later we were ready. 
(Fred’s tape machine turned out to be running on its own 
battery power, and all of the wall plugs were dead!) 

The recital then proceeded with nary a glitch, much to every¬ 
one’s delight. (Although during the demanded encore, the 
machine did break into its own rendition of Daisy , apparently 
genetically inherited.) 


Data For THE FOOL ON THE HILL Data for “DAISY” 

Beatles 

Address Data Address Data Address Data Address Data 

040 

105 

120 

055 no 

034 

250 

040 

041 

105 

121 

053 171 

034 

251 

042 

042 

125 

122 

071 172 

034 

252 

046 

043 

100 

123 

066 173 

042 

253 

034 

044 

071 

124 

100 174 

042 

254 

034 

045 

063 

125 

071 175 

042 

255 

042 

046 

063 

126 

071 176 

053 

256 

046 

047 

063 

127 

100 177 

053 

257 

053 

050 

071 

130 

071 200 

053 

260 

053 

051 

063 

131 

066 201 

071 

261 

053 

052 

055 

132 

066 202 

071 

262 

053 

053 

053 

133 

071 203 

071 

263 

046 

054 

053 

134 

100 204 

063 

264 

042 

055 

055 

135 

100 205 

055 

265 

042 

056 

071 

136 

100 206 

053 

266 

053 

057 

063 

137 

071 207 

063 

267 

063 

060 

046 

140 

066 210 

063 

270 

063 

061 

046 

141 

060 211 

053 

271 

053 

062 

046 

142 

060 212 

071 

272 

063 

063 

071 

143 

066 213 

071 

273 

071 

064 

063 

144 

071 214 

071 

274 

071 

065 

046 

145 

066 215 

071 

275 

071 

066 

046 

146 

066 216 

071 

276 

071 

067 

053 

147 

060 217 

071 

277 

071 

070 

042 

150 

053 220 

046 

300 

053 

071 

046 

151 

046 221 

046 

301 

053 

072 

046 

152 

046 222 

046 

302 

042 

073 

063 

153 

046 223 

034 

303 

046 

074 

071 

154 

046 224 

034 

304 

046 

075 

063 

155 

044 225 

034 

305 

071 

076 

053 

156 

046 226 

042 

306 

053 

077 

053 

157 

053 227 

042 

307 

053 

100 

063 

160 

053 230 

042 

310 

042 

101 

053 

161 

053 231 

053 

311 

046 

102 

071 

162 

053 232 

053 

312 

042 

103 

063 

163 

053 233 

053 

313 

040 

104 

063 

164 

002 234 

063 

314 

034 

105 

071 

165 

002 235 

055 

315 

042 

106 

063 

166 

002 236 

053 

316 

053 

107 

046 

167 

377 237 

046 

317 

046 

110 

046 


240 

046 

320 

046 

111 

046 


241 

042 

321 

071 

112 

053 


242 

046 

322 

053 

113 

042 


243 

(046 

323 

053 

114 

053 


244 

046 

324 

053 

115 

046 


245 

046 

325 

053 

116 

046 


246 

046 

326 

002 

117 

053 


247 

042 

327 

377 


28 










February 1976 Dr Dobb's Journal of Computer Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 Page 7 


OCTAL CODES FOR NOTES PROGRAM TO MAKE AN ALTAIR 8800 PLAY MUSIC 


c 

252 

000 

c# 

240 

LOW OCTAVE 001 

D 

230 

002 

D# 

220 

003 

E 

211 

004 

F 

200 

005 

F# 

172 

006 

G 

162 

007 

G# 

154 

010 

A 

146 


A# 

140 

011 

B 

132 

012 



013 

C 

125 

014 

C# 

120 

MIDDLE OCTAVE 015 

D 

114 

016 

D# 

110 

017 

E 

105 


F 

100 

020 

F# 

075 

021 

G 

071 

022 

G# 

066 

023 

A 

063 

024 

A# 

060 

025 

B 

055 

026 



027 

C 

053 

030 

C# 

050 

HIGH OCTAVE Q31 

D 

046 

032 

D# 

044 

033 

E 

042 


F 

040 


F# 

036 


G 

034 


G# 

033 


A 

031 


A# 

03C 


B 

026 


C 

025 


Q 

002 

Note; This is the quietest of the data notes. 


It can be used for spaces and rests. 
You may also like to put a number of 
these quiet 'notes' at the end of the 
music data, to give a space between 
playings. 


With a little experimentation, you can make all kinds of 
interesting sounds, ie; sirens, ray-guns, etc. 


LXI H 

041 


b2 

XXX 

- ADDRESS OF FIRST 

b3 

XXX 

DATA ENTRY 

MOV A.M 

176 


CPI 

376 


b2 

377 

- START OVER DATA 

JZ 

312 


b2 

000 


b3 

COO 


MVI D 

026 


b2 

XXX 


DCR 8 

005 

- TEMPO DATA 

JNZ 

302 


b2 

020 


b3 

000 


MOV B,M 

106 

TO RUN THE PROGRAM: 

DCR C 

015 

To run the program, push the 'RESET' switch, 
then push the 'RUN' switch. 

JNZ 

302 

To stop the program, push the 'STOP' switch. 

b2 

013 


b3 

000 


DCR D 

025 

TO MAKE YOUR OWN MUSIC: 

JNZ 

302 


b2 

013 

Begin loading your music data anyplace after 

b3 

INR L 

JMP 

000 

054 

303 

address 034. Be sure to load the starting address 
into H&L at address 002, 003. 

Each data entry will be one beat of music. 

b2 

003 


b3 

000 



NOTES 

f Tempo-- The tempo is controlled by the value placed in 
address 012. Start out by trying 040. 

f To Play Backwards- Put 377 in front of all music data 
(to cause looping). Change address 001 to read the END of the 
music data. Change address 030 to DCR L (055). 

f To Play all of the Memory- Change address 001 data to 
a NOP (000). Change address 004, 005, 006 to NOP (000). This 
will cause program to read all of the memory, including the pro¬ 
gram instructions themselves. 

t Radio Information- A low-frequency radio around 330 
KC works best, but any AM radio will pick up the music at 
quiet places on the dial. 

Set the radio on or very close to the computer, start the 
program, and turn the dial on the radio until you get good 
sound. Some places will be much better than others, and some 
will pick up different sounds from the computer. Also, try mov¬ 
ing the radio to different positions on or around the computer. 
Just rotating the radio 90 degrees can make a lot of difference 
in the sound you will get. 


29 







Page 8 February 1976 Dr Dobb's Journal of Computer Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 


SCELBAL-A HIGHER LEVEL LANGUAGE 
FOR 8008/8080 SYSTEMS 

Mark Arnold & Nat Wadsworth 
Scelbi Computer Consulting, Inc., 

1322 Rear, Boston Post Rd, Milford CT 06460 
Copyright 1976 by Scelbi. Reprinted with permission. 

[The publication described in the following article will 
be sold for around $50, and will contain over 300 
pages of information. -JCW, Jr] 

The goal of about ninety percent of small 
systems owners appears to be to get their 
systems up and running with some kind of 
I/O and then procure enough memory to 
support a higher level language. 

Unfortunately in the past when a system 
owner reached the stage of having enough 
memory a major problem arose. Unless the 
individual had purchased an entire system 
from one or two select suppliers, the cost of 
a copy of a higher level language was likely 
to be out of reach! 

Even if one was financially able to pur¬ 
chase a higher level language from an equip¬ 
ment manufacturer one was likely to find 
that such programs were designed to 
operate with specific I/O devices which 
the prospective language user might not 
have access to or desire to obtain. If one 
did not have those specific devices for 
which the progrnm was designed, one was 
usually in a tough spot. Despite adver¬ 
tisements that such programs came “fully 
documented,” the “full documentation” 
was not likely to include a source listing of 
the program. Hence, attempting to modify 
such a complex program was a risky, 
frustrating, and often downright impossible 
task. And, without doing so, one was hard 
put to make the language work with 
unique types of I/O devices. Furthermore, 
such programs could not practically be modi¬ 
fied to serve the particular wishes of in¬ 
dividual users. If you were not satisfied 
with the program and what the program 
author’s had decided to emphasize or leave 
out, that was simply too bad! 

Few “canned” programs can be tailored 
to have all the features desired by all the 


possible potential users. To attempt to do 
so would result in programs requiring more 
memory than users could afford. The answer 
to this problem is, of course, to supply the 
programs in such a manner that they can be 
readily modified and altered by the users. 
This means, simply, that the detailed source 
listing for the program must be made available 
to the purchaser. Assisting the program owner 
by also providing "detailed comments with 
the listing, a general overview of the pro¬ 
gram’s organization and operation, and 
general flow charts can further enhance the 
value of the program to the owner. With 
this information available, the program 
user can safely proceed to tailor the capa¬ 
bilities of the program to serve the user’s 
particular interests and requirements. 

This is the approach SCELBI COM¬ 
PUTER CONSULTING, INC., has taken 
in presenting its new higher level language 
for 8008/8080 machines. The language 
has been given the name SCELBAL for 
Scientific ELementary BAsic Language. 
As the reader can easily surmise from the 
title it is similar in capabilities to the high¬ 
ly popular language referred to as BASIC. 
This language was specifically developed 
to be able to run on 8008 based micro¬ 
computers. It is believed to be the first 
such higher level language to be made 
generally available that is capable of 
running in a system equipped with the 
ubiquitous 8008 CPU. The program can 
of course also be run on systems using 
the more powerful 8080 CPU though it 
is not as memory efficient as it could have 
been if the program had forsaken 8008 
capability. 

The language was developed to operate 
in an INTERPRETIVE mode. This means 
that the entire program resides in memory 
at one time along with the program written 
in the higher level language that is to be 
executed. When the INTERPRETER is given 
the RUN command it immediately proceeds 
to INTERPRET each line of the higher level 
language program and perform the necessary 
calculations and functions. This differs from a 
COMPILER which would first convert the 
higher level language source listing to machine 
code, then later execute the machine code. 


30 



February 1976 Dr Dobb's Journal of Computer Calisthenics & 


A COMPILER oriented system generally is 
cumbersome to run on a small system that 
lacks reliable, high speed bulk memory 
storage facilities. For instance, if the program 
had been designed as a complier, the follow¬ 
ing steps would have been necessary in order 
to execute a higher level language program. 

First one would have to load an Editor 
program into the computer and create the 
desired higher level language version of a 
program as a source listing. A copy of the 
source listing would then have to be saved on 
an external memory medium. Next, a portion 
of the compiler program - the actual 
compiler, would have to be loaded into 
memory. When it was resident, one would 
produce the desired machine code version of 
the higher level language statements by having 
the compiler process the source listing several 
times. (Much as an Assembler program would 
process the mnemonic listing when program¬ 
ming in machine language.) The machine code 
produced would have to be stored on an ex¬ 
ternal memory device at this stage. Finally, 
the RUN TIME portion of the compiler 
would have to be loaded into the computer 
along with the machine code produced by the 
COMPILE portion of the program. The 
higher level language program would then 
finally be ready to run. Too bad if you made 
an error in the original source coding for the 
program that was not detected until run time. 
You would have to go all the way back to the 
Editor program to correct the higher level lan¬ 
guage source listing and start the process over 
again! 

Developing the program as an INTER¬ 
PRETER eliminates the requirement for the 
constant use of an external bulk memory 
device in order to get a program from the con¬ 
cept to execution stage. An INTERPRETER 
is definitely a much more convenient program 
for the small systems user. The entire INTER¬ 
PRETER program resides in memory at one 
time. An area is set aside in memory to hold 
the higher level program. An executive por¬ 
tion of the program allows the user to enter 
the higher level language listing directly into 
the area where it will be operated on when 


Orthodontia Box 310, Menlo Park CA 94025 Page 


the program is executed. The executive in 
SCELBAL will provide for the user entering a 
program from a manual input device such as a 
keyboard. Or, if the user desires to run a 
program that has been developed previously, a 
LOAD command will direct the program to 
read in a program from an external bulk 
memory device such as a magnetic tape peri¬ 
pheral. 

SCELBAL has been designed so that it can 
operate in a “calculator” mode or operate in a 
stored program mode. In the calculator mode, 
each statement is executed immediately after 
it is entered by the input device. In this mode, 
the program is ideal for solving simple for¬ 
mulas when the user only needs to obtain a 
few values. 

When operating in the stored program 
mode, the INTERPRETER will follow an 
entire series of instructions as directed by 
the higher level program. To enter a pro¬ 
gram that will be operated on as a stored 
program, the operator simply assigns a 
line number at the beginning of each 
statement. 

The executive portion of the package 
allows the user to “edit” a program at any 
time. Lines may be deleted and new lines 
entered anywhere in the program. If the 
operator makes a clerical error while 
entering a line, a special erase code may be 
used to effectively backspace within a line 
and then re-enter the correct characters. 
Furthermore, the executive checks for 
various types of syntax errors as statements 
are entered, and will display a two character 
error code to the programmer when such 
errors are detected. 

The executive portion of SCELBAL has 
five major commands available to the 
operator which are defined and explained 
below. 

SCR for SCRatch effectively clears out any 
previous program stored in the 
program buffer along with any variable 
values. 


31 



Page 10 February 1976 Dr Dobb’s Journal of Computer Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 


LIST causes the present contents of the 
program buffer to be displayed for review 
or to make a copy for record keeping if a 
printing device is in use. 

RUN causes the higher level language 
program stored in the program buffer to 
be executed by the INTERPRETER. 

SAVE. This command directs the program 
to save a copy of the program stored in the 
program buffer on the user’s external bulk 
storage device. A program saved in this man¬ 
ner can later be restored for execution by 
using the following command. 

LOAD. This command causes the program 
to read in a copy of a program from an ex¬ 
ternal device that was previously written 
using the above SAVE command. 

A higher level language program is made up 
of STATEMENTS that direct the machine to 
perform selected types of operations. The 
SCELBAL language can execute 12 different 
types of STATEMENTS which are explained 
below plus the END statement which is used 
to signify the end of a program. 

The REM for RKMarks statement indicates 
a comments line which is ignored as far as 
program execution is concerned. Information 
on a REMarks line is intended only for the 
use of programmers and is used to document 
a program. 

The LET statement is used to set a variable 
equal to a numerical value, another variable, 
or an expression. For instance the statement: 

LET X = (Y*Y + 2*Y - 5)*(Z + 3) 

« 

would mean that the variable X was to be 
given the value of the expression on the right 
hand side of the equal sign. 


IF X <= Y THEN LL 

states that IF X is less than OR equal to Y 
that the program is to go directly to line 
number LL. Otherwise, the program is to 
continue on to the,, next statement in the 
program. 

GOTO directs the program to jump 
immediately to a specified line number. 
The GOTO statement is used to skip 
over a block of instructions in a mul¬ 
tiple segment or subroutined program. 

The FOR, NEXT and STEP statements 
allow the programmer to form program 
loops. For example, the series of statements: 

FOR X = 1 TO 10 
LET Z = X*X + 2*X + 5 
NEXT X 

would result in Z being calculated for all 
the integer values of X from 1 to 10. While 
SCELBAL does not require the insertion 
of a STEP statement in a FOR - NEXT 
loop, a STEP value may be defined. The 
implied STEP value is always 1. However, 
it may he altered to he an integer value 
other than 1 by following the FOR range 
statement by the STEP statement and a 
parenthesis containing the STEP size. Thus: 

FOR X = 1 TO 10 STEP (2) 

would result in X assuming values of 1, 3, 
5, 7 and 9 as the FOR - NEXT loop was 
traversed. 

GOSUB is used to direct the program 
to execute a statement or group of state¬ 
ments as a subroutine. The statement is 
used by designating the line number in 
the program where subroutine execution 
is to begin. 


The IF combined with the THEN state¬ 
ment allows the programmer to have the pro¬ 
gram make decisions. SCELBAL will allow 
more than one condition to be expressed in 
the statement. Thus: 


The RETURN statement is used to in¬ 
dicate the end of a subroutine. When a 
RETURN statement is encountered the 
program will return to the next statement 
immediately following the GOSUB state- 


32 



February 1976 Dr Dobb's Journal of Computer Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 


merit which directed the program to the 
subroutine. 

SCELBAL permits multiple nesting of 
subroutines in a program. 

DIM for DIMension is used to specify 
the formation of a one dimensional array 
in a program. Up to four such arrays having 
a total of up to 64 entries are permitted in 
a program when running SCELBAL. The 
statement: 

DIM K(20) 

sets up space for an array containing 20 
entries. (Array size must be designated by 
a numerical value, not a variable.) 

The DIM is an optional statement that 
may be left out of the program to provide 
additional program storage space in systems 
having limited memory. 

INPUT is used to cause the program to 
wait for an operator to INPUT information 
to the program. After the information has 
been received, operation of the program 
automatically continues. 

PRINT is used to output information 
from the program. Using the PRINT state¬ 
ment the user may direct the program to 
display the value of variables, expressions, 
or any information such as messages. The 
PRINT statement allows for multiple mixed 
output on a single line, and the option of 
providing a carriage-return and line-feed after 
outputting information or suppressing that 
function. For instance, the statement: 

PRINT ‘X IS EQUAL TO: ’;X 

would result in the program first printing 
the message “X IS EQUAL TO:” and then 
the value of the variable X on the same line. 
After the value of tbje variable had been 
displayed, a carriage-return and line-feed 
combination would be issued. To suppress 
the issueing of the CR & LF the program¬ 
mer would merely include another semi¬ 


colon at the end of the statement! A comma 
sign in a PRINT statement will direct the out¬ 
put to start at the next TAB point in a line. 
A special function may also be called upon 
to direct the output to begin at a specified 
position in a line to allow for neat formatting. 

The power of the language is further 
enhanced by the inclusion of seven functions 
that may be used in statements. The seven 
functions available in SCELBAL are discussed 
below. 

INT returns the INTeger value of the ex¬ 
pression, variable, or number, requested as the 
argument. This is the greatest integer number 
less than or equal to the argument. 

SGN returns the SiGN of the variable, num¬ 
ber, or expression. If the value is greater than 
zero, the value +1.0 is returned. If the value is 
less than zero, the value -1.0 is returned. The 
value 0 is returned when the expression or 
variable is zero. 

ABS returns the ABSolute value (magni¬ 
tude without regard to sign) of the variable 
or expression identified as the argument of 
the function. 

SQR returns the SQuare Root of the ex¬ 
pression, variable, or number. 

RND produces a semi-psuedo-RaNDom 
number in the range of 0 to 0.99. This func¬ 
tion is particularly useful to have available 
for games programs. 

CHR is the CHaRacter function. It may be 
used in a PRINT statement and will cause the 
ASCII character corresponding to the decimal 
value of the argument to be displayed. (A 
reverse function is available for the INPUT 
statement which will return the decimal 
value of a character when it is inputted.) 

TAB may also be used in a PRINT state¬ 
ment to direct the display device to space 
over to the column number specified in the 
argument. This function allows the program¬ 
mer to format the output into neat columns. 


Page 11 


33 




Page 12 February 1976 Dr Dobb's Journal of Computer Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 


(JKNKHAL INFORMATION 

User defined variables are limited to one or 
two characters. A variable must begin with a 
letter of the alphabet. Limiting variables to a 
maximum of two characters helps conserve 
memory space. IJp to twenty different vari¬ 
ables may be defned in a single program. 

SCELBAL allows the use of fixed and 
floating point notation. A minimum of 
twenty-three binary bits are used in the man¬ 
tissa portion of all calculations allowing for 
six to seven significant decimal digits to be 
entered or outputted. The exponent range is 
from plus to minus the 38th power. Numbers 
may be inputted in either fixed or floating 
point notation. Output from the program is 
automatically selected to be either fixed or 
floating point, depending on the size of the 
number that is to be displayed. 

The package, without the optional DIM 
statement, is designed to run in an 8K 8008 
or 8080 system leaving approximately 1250 
bytes for program storage. With this amount 
of storage available, surprisingly complex pro¬ 
grams can be executed. The program authors 
have successfully loaded and run such games 
as Lunar Landing in this configuration by re¬ 
ducing the number of messages issued to the 
player. 

The DIM statement requires approximately 
three pages of memory. It is recommended 
that users desiring to include the DIM capa¬ 
bility have more than the minimum 8K of 
memory available in their system. A parti¬ 
cularly attractive feature of SCELBAL is 
that users with more than 8K of memory can 
use the additional space for program storage. 
Thus, for example, a 12K system will enable 
a user to execute SCELBAL programs having 
as many as 150 to 200 statements! 

A major concern of the developers of 
SCELBAL was that the 8008 CPU might 
make the language so slow that it was im¬ 
practical for the user. Our tests indicate 


that the time to perform typical calcula¬ 
tions, while they are slow compared with 
more powerful machines, are certainly 
tolerable. For instance, the typical response 
time between the displaying of a new set of 
parameters when running the Lunar Land¬ 
ing game is in the order of six to seven 
seconds. A program that calculates the 
mortgage payments on a house on a monthly 
basis, and displays such values as the pay¬ 
ment number and balance after each pay¬ 
ment, requires a few seconds between the 
displaying of each new line of information. 
A dice playing game responds with new 
throws of the dice in the order of a second 
or so when using a formula that includes 
the use of the random number generator. 
These times are by no means fast, but 
they are certainly adequate for the intended 
uses of this language on an 8008 system. 
The developers were pleasantly surprised 
with the overall speed performance of the 
package. Of course, these response times 
can be cut almost in half by using an 8008-1 
CPU. Naturally, if the program is installed 
in an 8080 system, the response time is im¬ 
proved an order of magnitude. 

Since the program will be supplied in 
the form of a publication that includes 
a complete highly commented source 
listing (as weli as assembled object code 
for both the 8008 and 8080), the user 
who desires to modify or expand the 
capabilities of the basic package will be 
in a position to do so. It is felt that the 
availibility of such a powerful program 
in this form will greatly enhance the general 
usefulness of small systems and open new 
vistas to users. The program in this form 
should also be of considerable value to 
educationalists who desire a good reference 
framework from which to introduce students 
to the development of similar packages. 

The publication will be made available 
in June, 1976, by the developer, Scelbi 
Computer Consulting, Inc., 1322 Rear - 
Boston Post Road, Milford, CT 06460. 


34 



February 197 6 Dr Dobb's Journal of Computer Calisthenics 

TINY BASIC, EXTENDED (Part Two) 

Dick Whipple, 305 Clemson Dr., Tyler TX 75701 
John Arnold, Route 4, Box 52-A, Tyler TX 75701 

In the preceeding article on TINY BASIC, EXTENDED 
(TBX), notes concerning the loading and use of TBX were pre¬ 
sented, along with an octal listing of the entire interpreter 
[Dr Dobb’s Journal of Tiny BASIC Calisthenics & Orthodontia 
Vol. 1, No. 1]. This article presents source code matching that 
octal code, documentation of the implementation, some modifi¬ 
cations and error corrections, notes on the addition of the DTA 
statement, and an announcement of two relocated versions of 
TBX requested by some of our readers. 

TBX is not meant to be the last word in Tiny BASIC 
interpreters. Almost certainly, its users will find ways to improve 
it. Please keep its creators, and our readers, informed of those 
improvements. 

NOTES ON NOTES 

Before continuing, a few remarks are necessary concern¬ 
ing assumptions and working used in the source listing and the 
text that follows it. 

1. All addresses will be given in split octal with no sep¬ 
aration character, i.e., 012504 (true octal); 025104 (split octal). 

2. Registers will be referred to by letter: A, B, etc. 
Register pairs will be referred to as BC, DE, and HL. If a register 
pair holds an address, the most significant bits will fall in the 
first letter. 

3. 77ie source listing is NOT the result of computer 
assembly. It was hand-typed in a format similar to assembly 
language. One caution-labels are unique only within a given 
routine. Therefore, in the whole of TBX, labels may be dupli¬ 
cated. 

4. The terms “label” and “line number” will be used 
interchangeably when referring to BASIC lines. 

5. On the source listing, double lines are used to 
separate major routines. 

A NEW FEATURE: The DTA Statement 

The DTA statement allows the programmer to initialize 
several variables at one time and is thus more convenient to use 
than LET statements. DTA is more like DATA statements of 
FORTRAN than the READ-DATA statements of BASIC. DTA 
statements may be used anywhere in a program and as many 
times as required. 

EX 1. 12 DTA A( 1 )= 1,2,3,4;B(4)=5,6 ;X= 10 
RESULTING VALUES: A(l)=l 
A(2)=2 
A(3)=3 
A(4)=4 
B(4)=5 
B(5)=6 
X=10 

EX 2. 20 DTA A=10,20,30 

RESULTING VALUES: A=10 
B=20 
C=30 

Changes required in TBX to add DTA statements (octal 
dump form): 

031200 315 147 024 043 315 044 023 247 
031210 311 

031230 000 000 000 232 150 104 124 301 __ 


& Orthodontia Box 310, Menlo Park CA 94025 Page 13 

031240 133 310 232 330 275 132 343 231 
031250 256 254 331 200 031 245 324 147 
031260 231 265 273 031 240 322 304 322 
031270 375 
033326 231 233 

RELOCATED VERSIONS OF TBX 

At the requests of readers, we have made two relocations 
of TBX. As you are no doubt aware, the original TBX began at 

020000 split octal. The two new versions begin at 000000 and 
011000. The octal listing of the 000000 version will appear in 
a later issue of this Journal. The 011000 version seems to es¬ 
pecially interest people with Suding operating systems (Suding 
CRT, etc.). At the present, either version-or both-can be 
obtained from us on Suding cassette. If you have already 
ordered one and received the original version on cassette, we 
will provide the relocated version free of charge if you will 
return the cassette with your order. The charge for new orders 
will be the same as indicated in the preceeding issue: $5, for the 
Suding cassette. Be sure to request the version desired, namely 
020000, or 011000, or 000000. Send orders to: 

TBX Tape 
c/o John Arnold 
Rt 4, Box 52A 
Tyler TX 75701 

HOW IT DOES WHAT IT DOES 

IL Executor, ILXQT and IL Program (021254-022037, & 
031300-033376): 

The fundamental IL instruction consists of two bytes. The 
two most significant bits of the first byte are used to encode the 
type of IL instruction while the remaining bits in the first and 
second byte represent an address. The four IL instruction types 
are specified in octal as follows: 


IL JUMP Oxx Transfers IL Program to IL Instruction at 



yyy 

Oxxyyy. 

IL CALL 

Ixx 

Calls IL Subroutine at Oxxyyy. 


yyy 


TST 

2xx 

Compares Character Strings. Test Failure 


yyy 

Transfers IL Program to Oxxyyy. 

ML CALL 

3xx 

Calls Machine Language Program at 


yyy 

Oxxyyy. 


The IL Executor program, ILXQT, merely sorts out the IL 
instructions according to the above list and carries out the 
appropriate action. DE is used as the cursor in scanning the 
BASIC text. HL serves as the IL program counter. When a pro¬ 
gram other than ILXQT has system control, care must be exer¬ 
cised not to use DE for a purpose other than scanning unless its 
value is saved and returned before returning to ILXQT. BC, HL, 
and A may be used by system routines as required. (Note: HL is 
pushed and popped by ILXQT to maintain the status of the IL 
program counter.) 

SPECIAL REMARKS 

1. IL JUMP: Note that an IL JUMP and a machine language 
jump (JMP) are not the same. After an IL JUMP is executed, 
ILXQT expects to find another IL insstruction not a machine 
language instruction. Therefore, an IL JUMP cannot be used to 


35 



Page 14 February 197 6 Dr Dobb's Journal of Computer Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 

transfer to a machine language program. 

2. IL CALL: The same applies to IL CALLs. They cannot 
be used to call machine language subroutines. That requires the 
ML CALL type IL instruction ( see 4., following). The IL return 
address for the IL CALL is placed on the 8080 stack for later 
use. ML routines must not leave trash on the stack or proper 
return within the IL program will not be made. 

3. TST: The TST IL instruction is actually more than two 
bytes in length. Following the instruction byte pair are the 
ASCII string characters to be compared against BASIC text. 

There is one byte for each character in the string with the 
parity bit (No. 7) set only on the last character. The parity bit 
is used by ILXQT to detect the end of the string. As an example, 
consider the test for “LET” (see DIR, 032022): 


232 
041J 
114 
105 
324 



TST 

“L” 

“E” 

“T” + 200 


If the comparison to BASIC text fails, the IL program 
transfers to the fail address 032041 for the next IL instruction. 
In this case the cursor (DE) is set back to rescan the BASIC 
text. If a match is found, the IL program continues at the IL 
instruction just after the “ ‘T’ + 200.” 

4. ML CALL: The greater number of routines used in TBX 
are machine language calls made by ILXQT. Return to ILXQT 
from such a routine occurs when a machine langauge RET is 
executed. A return option is available to the programmer. If the 
carry is set upon return to ILXQT, the next IL instruction is 
skipped and the second one is executed. If the carry is reset, the 
next IL instruction is executed. This feature allows various tests 
to be handled as ML CALLs. TSTL-Test Label-is an example. 

5. THE IL PROGRAM can be studied to get an idea of the 
manner in which BASIC lines are interpreted. Often used, run 
time commands are tested first to achieve greater speed in execu¬ 
tion. System commands such as RUN, LST, etc. are placed last 
in the test sequence. You will notice that the IL Program is 
somewhat disordered. This “house that Jack built” appearance is 
the result of adding features to the original TB. 


EVOLUTIONARY NOTE 

A modification was made to TBX after the octal listing 
was published in the previous issue, but before this source listing 
was produced. Therefore the source contains the modifications 
but the octal listing does not. The change involves the INNUM 
and NLINE routines. The net effect of these changes will be that 
IN statements will be terminated by a CR-not a SPACE as in the 
original TBX. To make the modifications, follow the steps below: 

1. Re-enter the INNUM routine using the source listing. 

2. Re-enter the NLINE routine using the source listing. 

3. Add a test in your INPUT routine that will inhibit echo 
of a CR. 

4. Make changes in the IL program at locations given 
below. Use the source listing to obtain the corrected 
values. 


031325 

031326 

031334 

031335 

032002 

032003 

032006 

032007 

032202 

032203 

032271 

032272 


ERRORS & CORRECTIONS 

These errors were noted after the listing that follows was 
produced. Thus, the corrections given here should be made in 
the octal code given in the preceeding issue and in the listing 
given in this issue. 


ERROR 

FIX 

CHANGE 


ADDRS 

FROM 

TO 

1. “FOR” statement syntax 

032127 

226 

232 

error not functioning properly* 032130 

363 

121 

2. “IN” statement does not 

032245 

322 

032 

issue a crlf. After fix, a semi¬ 

032246 

304 

143 

colon at the end of an 

032143 


232 

“IN” line inhibits crlf.* 

032144 


202 


032145 


273 


032146 


032 


032147 


216 

3. Array syntax error not 

033211 

226 

233 

functioning properly.* 

033212 

355 

077 


033223 

226 

233 


033224 

355 

077 


033241 

226 

233 


033242 

355 

077 


033254 

226 

233 


033255 

355 

077 


033266 

226 

233 


033267 

355 

077 


033275 

226 

233 


033276 

355 

077 

4. System destroys itself after 

033354 


001 

first line entry following turn¬ 

033355 


034 

on. Issuing a “new” command 

034000 


377 

first will initialize the system 

034001 


377 

properly. The fix given is 




satisfactory as well.* 




5. “SZE” command giving 

031007 

376 

115 

erroneous values. 

031010 

033 

026 

6. “TB” function incorrectly 

031312 

124 

123 

named. It should be called 

031313 

302 

332 


“SP” for space. 

* These problems were reported by Linchen Wang with 
suggested corrections. Dick Whipple modified the 
modifications, and submitted these fixes. __ 


36 






















February 1976 Dr Dobb's Journal of Computer Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 Page 15 


TAG 

ADDRESS 

ii 

12 

13 

MNEMONIC 

BUFIN 

020000 

041 

111 

020 

LX I 

11 BUfSTRT 


020003 

006 

1 10 


MV I 

B 72D 

OVER 

020005 

33 7 



RST 

INPUT 


020006 

376 

015 


CPI 

'OB' 


0200 10 

312 

036 

020 

JZ END 


020013 

3 1 6 

177 


CPI 

•DEL' 


020015 

312 

040 

020 

JZ RUBOUT 


020020 

376 

014 


CPI 

’CN1RL L* 


020022 

312 

067 

020 

JZ NEWLINE 


020025 

167 



MOV 

M i A 


020026 

043 



I NX 

H 


020027 

00 5 



DCR 

B 


020030 

312 

306 

026 

JZ ERR 1 


020033 

303 

005 

020 

JMP 

OVER 

END 

020036 

167 



MOV 

M,A 


020037 

311 



RET 


RUBOUT 

020040 

053 



DCX 

H 


020041 

004 



I NR 

B 


020042 

076 

07 7 


MVI 

A 


020044 

357 



RSI 

OUTPUT 


. 02004 5 

303 

005 

020 

JMP 

OVER 

FIXINSR 

020050 

332 

000 

021 

JPC 

CO NT 


020053 

076 

057 


MVI 

A '/’ 


020055 

276 



CMP 

M 


020056 

322 

000 

021 

JNC 

CONT 


020061 

303 

371 

020 

JMP 

LOOP 142 


020064 

000 

000 

000 

NOP' 

’S 

NEWLINE 

020067 

32 7 



RST 

CRLF 

GETLINE 

030070 

076 

072 


MVI 

A ’1 * 


020072 

357 



RST 

OUTPUT 


020073 

303 

000 

020 

JMP 

BUFIN 


020076 

000 

000 





COMMENTS 

SUBROUTINE TO LOAD BUFFER 
SET LINE LENGTH 


BUFIN: A software buffer is used to hold line data from the 
input device. BUFIN is an ML routine used to load and edit 
the buffer. Character deletion and whole line erasure are pro¬ 
vided for in this routine. B is used to count characters. If B 
exceeds 72, an error is reported. If entry to BUFIN is made at 
GETLINE (020070), a colon is output at the beginning of the 
line. HL is used as cursor in the buffer. 


LINE TOO LONG 


MODIFICATION OF INSERT 
SUBROUTINE REQUIRED FOR 
ASCII VERSION OF TBX 


OUTPUT PROMPT 


t LOC 020100-020110 

# 


IS UNUSED. THE BUFFER RESIDES BETWEEN 020111-020220. 


ascTTT 


020221 

032 

LDAX D 

ASCII INPUT 

SUBROUTINE 




FROM CURSOR 

LOCATION. 




NUMBER DATA 

MASKED. 

020222 

376 060 

CPI ’<f’ 



020224 

330 

nc. 



020225 

376 072 

CPI 



020227 

320 

RNC 



020230 

346 017 

ANI 0000111 IB 



020232 

311 

RET 




ASCIN: This routine moves a byte from the BASIC text to A 
using the cursor DE. If the byte represents an ASCII number 
(060-071), the upper four bits are masked off. 


I LOC 02023.5-020264 IS UNUSED. 
4 -— 


TSTL 


CMND 


L8L 


BIN 


‘ 020265 

021 

111 

020 

LXI D BUFSTRT 

020270 

325 



PUSH D 

020271 

032 



LDAX D 

020272 

376 

o 

o 


CPI ’$£' 

020274 

023 



INX D 

020275 

312 

271 

020 

JZ SKIP 

020300 

033 



DCX D 

020301 

04 1 

000 

000 

LXI H &D 

020304 

376 

100 


CPI 'A'-1 

020306 

332 

320 

020 

JPC LBL 

020311 

042 

350 

033 

SHL CURLBL 

020314 

000 



NOP 

020315 

321 



POP D 

020316 

311 



RET 

020317 

000 



NOP 

020320 

315 

331 

020 

CALL BIN 

020323 

042 

350 

033 

SHL CURLBL 

020326 

067 



STC 

020327 

321 



POP D 

020330 

311 



RET 

020331 

315 

221 

020 

CALL ASCIN 

020334 

376 

012 


CPI 10D 

020336 

320 



RNC 

020337 

023 



IND D 

020340 

104 



MOV B,H 

020341 

115 



MOV C,L 

020342 

051 



DAD H 

020343 

051 



DAD H 

020344 

on 



DAD B 

020345 

051 



DAO H 

020346 

332 

311 

026 

JPC ERR2 

020351 

117 



MOV C,A 

020352 

006 

000 


MVI 0 0D 


TSTL: This ML routine is used to determine whether the line 
in the buffer has a label or not. If so, the label is converted to 
binary by BIN and stored in CURLBL (Current Label). The 
carry is set and return is made to ILXQT. Otherwise, a zero is 
placed in CURLBL and return is made with the carry reset. 


ASCII-BINARY SUBROUTINE 


BIN: As the text cursor DE scans an ASCII number, BIN con¬ 
verts it to binary in HL. The first non-number encountered 
signals the end of conversion and return is made to the calling 
program. 


NUMBER TOO LARGE 


37 



















Page 16 February 1976 Dr Dobb's Journal of Computer Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 


TAG 

INSRT 

L00P1 

L00P2 

CONTI 

L00P4 

LOOPS 

C0NT2 

HERE 


C0NT3 


LOOPS 


LOOP 6 


ADDRESS 

II 

12 

13 

MNEMONIC 

0203 54 

Oil 



DAD b 

: 020355 

303 

331 

020 

JMP BIN 

020360 

32 5 



PUSH D 

020361 

052 

350 

033 

LHL CURLBL 

020364 

104 



MOV B,H 

020365 

115 



MOV C,L 

020366 

04 1 

111 

020 

LXI H BUFSTRT 

020371 

076 

071 


MVI A 

020373 

043 



I NX H 

020374 

216 



CMP M 

020375 

303 

050 

020 

JMP FIXINSR 

021000 

345 



PUSH H 

021001 

026 

001 


MVI D ID 

021003 

076 

015 


MVI A ’CS' 

021005 

276 



CMP M 

021006 

312 

016 

021 

JZ CONTI 

021011 

024 



INR D 

021012 

043 



INX H 

021013 

303 

005 

021 

JMP L00P2 

021016 

172 



MOV A 1 0 

02 10 1 7 

062 

356 

033 

STA COUNT 

021022 

321 



POP D 

021023 

052 

352 

033 

LHL PRGSTRT 

021026 

176 



MOV A,M 

021027 

270 



CMP B 

021030 

312 

052 

021 

JZ C0NT2 

021033 

322 

064 

021 

JNC HERE 

021036 

043 



INX H 

021037 

043 



INX H 

021040 

175 



MOV A,L 

021041 

206 



ADDR M 

021042 

157 



MOV LjA 

021043 

322 

026 

021 

JNC L00P4 

021046 

044 



INR H 

021047 

303 

026 

021 

JMP L00P4 

021052 

043 



INK H 

021053 

176 



MOV A,M 

021054 

271 



CMP C 

021055 

312 

170 

021 

JZ OVRDEL 

021060 

332 

037 

021 

JPC LOOP3 

021063 

053 



DCX H 

021064 

053 



DCX H 

021065 

325 



PUSH D 

021066 

353 



XCHG 

021067 

052 

354 

033 

LHL PRGEND 

021072 

345 



PUSH H 

021073 

072 

356 

033 

LDA COUNT 

021076 

306 

003 


ADI 3D 

021100 

20 5 



ADDR L 

021 101 

322 

105 

021 

JNC C0NT3 

021104 

044 



INR H 

021105 

157 



MOV L,A 

021106 

315 

340 

o 

o* 

o 

CALL MEMTEST 

021111 

104 



MOV B,H 

021112 

115 



MOV C,L 

021113 

341 



POP H 

021114 

176 



MOV A.M 

021115 

002 



STAX B 

021116 

053 



DCX H 

021117 

013 



DCX B 

021120 

174 



MOV A f H 

021121 

272 



CMP D 

021122 

302 

114 

021 

JNZ L00P5 

021125 

175 



MOV A|L 

021126 

273 



CMP E 

021127 

302 

114 

021 

JNZ L00P5 

021132 

023 



INX D 

021133 

052 

350 

033 

LHL CURLBL 

021136 

353 



XCHG 

021137 

162 



MOV M.D 

021140 

043 



INX H 

021141 

163 



MOV M,E 

021142 

043 



INX H 

021143 

072 

356 

033 

LDA COUNT 

021146 

074 



INR A 

021147 

167 



MOV M|A 

021150 

043 



INX H 

021151 

321 



POP D 

021152 

032 



LDAX D 

021153 

167 



MOV M,A 

021154 

376 

015 


CPI 

021156 

312 

166 

021 

JZ END 

021161 

043 



INX H 


COMMENTS 


LINE INSERTION SUBROUTINE INSRT: This ML routine is perhaps the most powerful and 
ALSO DELETES AND OVERWRITES intricate program in TBX. It handles virtually all line editing. 

AS REQUIRED Lines are inserted by label (line number), deleted, and over¬ 

written as required. Ignoring the label, INSRT gets the length of 
the line in the buffer, adds 1, and places the result in COUNT 
for later use. Beginning at PRGSTRT (Starting location for 
BASIC programs), INSRT compares the line numbers of lines 
already stored to the line number in CURLBL. If a direct 
match is found, then either a deletion or overwrite is needed. In 
either case a branch is made to point OVRDEL. If a match is 
not found, comparison continues until the stored line number 
exceeds CURLBL. At this point, the program branches to 
HERE (021064). 


REFER TO PAGE 1 


SAVE LENGTH OF TEXT 


INSERT LINE HERE 


The HERE routine inserts the new line at the point designated 
in B above. Before insertion begins, a check is made to be sure 
that enough memory space is available for the new line. If not, 
an error is called. If all is well, insertion continues. Beginning at 
the first stored line number above CURLBL, all BASIC lines 
are moved up in memory an amount equal to COUNT plus 3 
decimal. Space is thus made available for the new line. The line 
number, the length of text (as stored in COUNT), and the text 
of the new line are then moved into this space. At this point 
CHECK FOR MEMORY DEPLETION normal return is made to ILXQT. 


38 





February 1976 

Dr 

Dobb's 

Journal of Computer Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 Page 17 

TAG 

ADDRESS 

11 

12 

13 

MNEMONIC 

COMMENTS 




021162 

023 



INX D 





021163 

303 

152 

021 

JMP L00P6 




END 

021166 

321 



POP D 





021167 

311 



RET 




OVRDEL 

021170 

053 



OCX H 

OVERWRITES OR DELETES 

A Lite OVRDEL first deletes the line with the same number as 


021171 

345 



PUSH H 



CURLBL. The length of this line is determined by scanning and 


021172 

043 



INX H 



then all lines above it in memroy are moved down by this 


021174 

043 



INX H 



amount. PRGEND (Endling location of BASIC program) is 

LOOP 7 

021175 

176 



MOV A|M 



adjusted to always reflect the end of BASIC line storage. At 


021176 

376 

015 


CPI 'OB’ 



this point COUNT is checked. If it is one, a deletion is all that 


021200 

312 

207 

021 

JZ C0NT6 



is required and return to ILXQT is made. Otherwise, the pro- 


021203 
02 1204 

043 

303 

173 

021 

INX H 

JMP L00P7 



gram branches to near the beginning of INSRT so that the 

C0NT6 

021207 

043 



INX H 



buffered line can be inserted. This time no match will be found 


021210 

353 



XCHG 



(the deletion step took care of that). 


021211 

052 

354 

033 

LHL PRGEND 



When the BASIC program storage area is initialized 


02121A 

043 



INX H 



after typing NEW, the highest line number (377377) is stored at 


021215 

104 



MOV BjH 



the beginning of the area. This is required to establish a base 


021217 

34 1 



POP H 



for INSRT to begin its function. 

LOOPS 

021220 

032 



LDAX D 





021221 

167 



MOV M,A 





021222 

043 



INX H 





021223 

023 



INX D 





021224 

172 



MOV A,D 





021225 

270 



CMP B 





021226 

302 

220 

021 

JNZ L00P8 





021231 

173 



MOV A,E 





021232 

271 



CMP C 





021233 

302 

220 

021 

JNZ LOOPS 





021236 

053 



DCX H 





021237 

042 

354 

033 

SHL PRGEND 





021242 

072 

356 

033 

LDA COUNT 





021245 

376 

001 


CPI ID 





021247 

302 

361 

020 

JNZ INSRT+1 





021252 

321 



POP D 





021253 

311 



RET 




ILXQT 

021254 

041 

002 

032 

LXI H ILSTRT 

INTERPRETIVE LANGUAGE 

EXE- 


NXTIL 

021257 

176 



MOV A,M 

CUTION ROUTINE 




021260 

376 

200 


CPI 200 





021262 

322 

314 

021 

JNC ML 




IL 

021265 

376 

100 


CPI 100 





021267 

322 

300 

021 

JNC ILCALL 




ILJMP 

0212 72 

043 



INX H 





021273 

156 



MOV L,M 





021274 

147 



MOV H,A 





021275 

303 

257 

021 

JMP NXTIL 




ILCALL 

021300 

346 

077 


ANI 00111111B 





021302 

107 



MOV B,A 





021303 

043 



INX H 





021304 

116 



MOV C,M 





021305 

043 



INX H 





021306 

345 



PUSH H 





021307 

140 



MOV H,B 





021310 

151 



MOV L,C 





021311 

303 

257 

021 

JMP NXTIL 




ML 

021314 

376 

300 


CPI 300 





021316 

322 

000 

022 

JNC MLCALL 




TST 

021321 

346 

077 


ANI 00111111B 

STRING COMPARASION ROUTINE 



021323 

10 1 



MOV B,A 





021324 

043 



INX H 





021325 

116 



MOV C,M 





021326 

043 



INX H 




LOOP1 

021327 

032 



LDAX D 





021330 

023 



INX D 





021331 

376 

040 


CPI ’JP' 





021333 

312 

327 

021 

JZ L00P1 





021336 

033 



DCX D 





021337 

325 



PUSH D 





021340 

353 



XCHG 




L00P2 

021341 

032 



LDAX D 





021342 

376 

200 


CPI 200 





021344 

322 

363 

021 

JNC END1 





021347 

276 



CMP M 





021350 

043 



INX H 





021351 

023 



INX D 





021352 

312 

341 

021 

JZ L00P2 




END2 

021355 

321 



POP D 





021356 

140 



MOV H,B 





021357 

151 



MOV L,C 





021360 

303 

257 

021 

JMP NXTIL 




ESDI 

021363 

346 

177 


ANI OllinilB 





021365 

276 



CMP M 





021366 

302 

355 

021 

JNZ END2 





021371 

353 



XCHG 





021372 

301 



POP B 





021373 

023 



INX D 





021374 

043 



INX H 





39 





Page 18 


TAG 


MLCALL 


RETRN 


ASCQUT 


rear 


CNVRT 

LOOP 


BCDOUT 


LST 


NLINE 


1 February 

1976 Dr Dobb's Joui 

ADDRESS 

11 

12 

13 

MNEMONIC 

021375 

303 

257 

021 

JMP NXTIL 

022000 

346 

077 


ANI 00111111B 

022002 

043 



INX H 

022003 

116 



MOV C,M 

022004 

043 



INX H 

022005 

345 



PUSH H 

022006 

04 1 

015 

022 

LXI H RETRN 

022011 

345 



PUSH H 

022012 

147 



MOV H)A 

022013 

151 



MOV L,C 

022014 

351 



PCHL 

022015 

341 



POP H 

022016 

322 

257 

021 

JNC NXTIL 

022021 

043 



INX H 

022022 

043 



INX H 

022023 

303 

257 

021 

JMP NXTIL 

022026 

041 

357 

033 

LXI H ZONE"1 

022031 

357 



RST OUTPUT 

022032 

043 



INX H 

022033 

065 



DCR M 

022034 

300 



RNZ 

022035 

066 

017 


MVI M 15D 

022037 

311 



RET 

>040-022100 IS UNUSED 


022101 

345 



PUSH H 

022102 

325 



PUSH D 

022103 

305 



PUSH B 

022104 

353 



XCHG 

022105 

016 

000 


MV I C 0 

022107 

041 

020 

047 

LXI H 10,0O0D 

022112 

315 

147 

022 

CALL CNVRT 

022115 

041 

350 

003 

LXI H 1,000D 

022120 

315 

147 

022 

CALL CNVRT 

022123 

041 

144 

000 

LXI H 100D 

022126 

315 

147 

022 

CALL CNVRT 

022131 

041 

012 

000 

LXI H 10D 

022134 

315 

147 

022 

CALL CNVRT 

022137 

173 



MOV A jC 

022140 

315 

201 

022 

CALL ASCOUT 

022143 

301 



POP B 

022144 

321 



POP D 

022145 

341 



POP H 

022146 

311 



RET 

022147 

006 

377 


MVI B 377 

022151 

004 



INR B 

022152 

173 



MOV A|E 

022153 

225 



SUB L 

022154 

137 



MOV E,A 

022155 

172 



MOV A,D 

022156 

234 



SBB H 

022157 

127 



MOV D f A 

022160 

322 

151 

022 

JNC LOOP 

022163 

173 



MOV A|E 

022164 

205 



ADDR L 

022165 

137 



MOV E)A 

022166 

172 



MOV A|D 

022167 

214 



ADC 11 

022170 

127 



MOV D jA 

02217 1 

170 



MOV A|B 

022172 

271 



CMP C 

022173 

310 



RZ 

022174 

015 



DCR C 

02217 5 

315 

201 

022 

CALL BCDOUT 

022200 

311 



RET 

022201 

000 

000 

000 

NOP’S 

022204 

000 



NOP 

022205 

306 

060 


ADI 060 

022207 

315 

026 

022 

CALL ASCOUT 

022212 

311 



RET 

022213 

325 



PUSH D 

022214 

052 

306 

033 

LHL LSTEND 

022217 

053 



DCX H 

022220 

104 



MOV B,H 

022221 

115 



MOV C,L 

022222 

052 

304 

033 

LHL LSTSTRT 

022225 

353 



XCHG 

022226 

033 



DCX H 

022227 

023 



INX D 

022230 

327 



RST CRLF 

022231 

170 



MOV A,B 

022232 

272 



CMP D 

022233 

302 

243 

022 

JNZ CONT 

022236 

171 



MOV A,C 

022237 

273 



CMP E 

022240 

312 

275 

022 

JZ END 


Box 310, Menlo Park CA 94025 


COMMENTS 


MACHINE LANGUAGE CALLING 
PROGRAM 


NORMAL RETURN 


ALTERNATE RETURN 
ASCII OUTPUT ROUTINE 
ZONE DECREMENTED AND RESET 
AS -REQUIRED 


BCD TO ASCII CONVERSION 


SUBROUTINE TO LIST BASIC 
PROCRAMS 


ASCOUT: This routine outputs an ASCII character via the 
external OUTPUT routine and decrements the location called 
ZONE. ZONE is used to keep track of print positioning on the 
output device. If ZONE should reach zero on a given call of 
ASCOUT, it is reset to 15 decimal'. 


INTEGER OUTPUT ROUTINE 
HAL IS OUTPUTTED IN DECIMAL 
PROVISION MADE FOR ZERO 
SUPPRESSION. 


IOUT: IOUT is used to convert the binary number in HL to 
ASCII for outputting. The routine works by subtracting binary 
equivalents of decreasing powers of 10 from the binary value in 
HL. The number of times each power of 10 can be subtracted 
without producing a negative result represents the digit for the 
respective decimal place. If C is zero, leading zeroes are not 
outputted. CNVRT is a subroutine of IOUT that actually does 
the conversion and outputting of each digit. BCDOUT is a sub¬ 
routine that adds 060 to the BCD value of the digit to produce 
the ASCII value. ASCOUT is called so that ZONE will be dec¬ 
remented. 


LST: An ML routine used to list BASCI program lines beginning 
at the location stored in LSTSTRT and ending at the location 
stored in LSTEND. LBLOUT is used to output the line number 
for each line. The text length byte is skipped and the text is 
outputted until a CR is detected. The CR produces a new line 
and so long as the address in LSTEND is not exceeded, listing 
continues. 


40 









February 1976 Dr Dobb's Journal of Computer Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 Page 19 


TAG 


LOOP 


END 

RTN 


DONE 


PRS 


SPC 

LOOP 


NLINE 


NXT 


FIN 


CONT 


NXTX 


ADDRESS 

11 

12 

13 

MNEMONIC 

022243 

032 



LDAX D 

022244 

147 



MOV H,A 

02224 5 

023 



INX D 

022246 

032 



LDAX D 

022247 

157 



MOV L,A 

022250 

315 

205 

026 

CALL LBLOUT 

022253 

023 



INX D 

022254 

023 



INX D 

022255 

032 



LDAX D 

0222 *>6 

376 

015 


CPI 'CB* 

022260 

312 

227 

022 

JZ NLINE 

022263 

305 



PUSH B 

022264 

345 



PUSH H 

022265 

315 

026 

022 

CALL ASCOUT 

022270 

341 



POP H 

02227 1 

301 



POP B 

022272 

303 

254 

022 

JMP LOOP 

022275 

321 



POP D 

022276 

311 



RET 

022277 

000 



NOP 

022300 

341 



POP H 

022301 

301 



POP B 

022302 

345 



PUSH H 

022303 

311 



RET 

022304 

032 



LDAX D 

022305 

023 



INX D 

022306 

376 

040 


CPI ’Sf' 

022310 

312 

304 

022 

JZ DONE 

022313 

033 



DCX D 

022314 

376 

015 


CPI 'CR* 

022316 

310 



RZ 

022317 

303 

022 

030 

JMP FIXDONE 

022322 

032 



LDAX D 

022323 

023 



INX D 

022324 

376 

042 


CPI 

022326 

310 



RZ 

022327 

376 

015 


CPI 'CB' 

022331 

312 

317 

026 

JZ ERR4 

022334 

315 

026 

022 

CALL ASCOUT 

1 022337 

303 

322 

022 

JMP PRS 

022342 

041 

360 

033 

LX I H ZONE 

022345 

076 

040 


MVI A *SP* 

022347 

357 



RST OUTPUT 

022350 

065 



DCR M 

022351 

302 

34 5 

022 

JNZ LOOP 

022354 

066 

017 


MVI M 15D 

022356 

247 



ANA A 

• 022357 

311 



RET 

022360 

327 



RST CRLF 

022361 

041 

360 

033 

LX I H ZONE 

022364 

066 

017 


MVI M 15D 

022366 

227 



SUB A 

022367 

311 



RET 

022370 

000 

000 

000 

NOP’S 

■ 022373 

000 

000 


NOP'S 

022375 

052 

350 

033 

LHL CURLBL 

023000 

227 



SUB A 

023001 

274 



CMP H 

023002 

302 

021 

023 

JNZ CONT 

023005 

275 



CMP L 

023006 

302 

021 

023 

JNZ CONT 

023011 

041 

004 

032 

LXI H ILBGN+l 

023014 

301 



POP B 

023015 

343 



XTHL 

023016 

305 



PUSH B 

023017 

247 



ANA A 

023020 

311 



RET 

023021 

023 



INX D 

023022 

032 



LDAX D 

023023 

147 



MOV H,A 

023024 

023 



INX D 

023025 

032 



LDAX D 

023026 

157 



MOV L,A 

023027 

042 

350 

033 

SHL CURLBL 

023032 

023 



INX D 

023033 

023 



INX D 

023034 

301 



POP B 

023035 

041 

022 

032 

LX I H STMT 

023040 

343 



XTHL 

023041 

305 



PUSH B 

023042 

247 



ANA A 


COMMENTS 


RTN: This ML routine terminates an IL CALL. Just prior to 
calling RTN, the 8080 stack looks like this: 

Top — Return address to ILXQT 
— Present IL program address 
— Return IL program address 

RTN simply deletes the “present IL program address” from the 
stack producing: 

Top - Return address to ILXQT 
— Return IL program address 


ML SUBROUTINE USED TO RlT\3iUILXQT will then start execution at the IL instruction following 
AN IL CALL the last IL CALL. 


ML SUBROUTINE USED TO FOR 
TERMINATION OF A BASIC LINE 


MODIFICATION TO PERMIT 
MULTI-STATEMENT LINES 
ML SUBROUTINE USED TO 
PRINT LITERAL 


CR ENCOUNTERED IN LITERAL 


DONE: DONE is an ML routine that checks for proper line 
termination. After scanning over spaces (ASCII 040), DONE 
checks for the presence of a CR or dollar sign. If neither is 
encountered an error is signalled. If a CR is detected, a 
normal return to ILXQT is made. If a dollar sign is found, 
another BASIC command exists on the same line. In this case 
a branch is made to the NXT routine (see below) where 
interpretation is permitted to continue. 

PRS: PRS is an ML routine used to output literals in PRint 
statements. A quotation mark is used by PRS to signal the end 
of a character string. A CR encountered before an ending 
quotation mark signals an error. 


ML SUBROUTINE USED TO SPACE SPC: An ML routine used to space the output device to the 
TO NEXT 20NE next zone. The memroy location ZONE is decremented and a 

space is output until ZONE reaches zero. ZONE is then reset to 
15 decimal and control returned to ILXQT. 


ML SUBROUTINE USED TO ISSUE NLINE: This ML routine issues a CR and LF to produce a new 
CR AND LF. ALSO RESETS ZONE fi ne on t h e ou tp u t device. ZONE is also reset to 15 decimal 

NXT: The NXT routine handles the transition between one 
BASIC line and the next during the execution phase. As mter- 
pretation of a line finishes, the NXT routine checks to see if the 
?ER S f?E?UTI0N TO NEXT BASlf ** number stored in CURLBL is a zero. If so, a direct inter- 
LINE. ALSO CHECKS FOR DIRECT pretation of a line is indicated. In this case, NXT sets up _ 
EXECUTI0N(N0 LABEL). GETLINE as the next IL instruction. If not, interpretation is 

set to begin at the next BASIC line in the program area. 
CURLBL is updated to the new line number. In this way the 
error routine can report at which line an error occurred. 

ML SUBROUTINE USED TO RE- FIN: Actually, this routine is part of NXT. When an END 
TURN TO LINE COLLECT R0UTI1E statement is encountered, FIN is called and IL execution is 

directed to GET LINE. This essentially terminates BASIC 
execution. 


41 



























Page 20 

TAG 

PSHAE 


POPAE 


TWOCMP 


PRN 

CONT 

FNDLBL' 

OVER 

NXT1 

NEW1 

ENDS 

xfer - 

.— 


February 1976 Dr Dobb's Journal of Computer Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 

ADDRESS 11 12 13 MNEMONIC COMMENTS 


023043 

311 


RET 


023044 

305 


PUSH B 

SUBROUTINE USED TO PUSH 





HAL ONTO AE STACK. 

023045 

104 


MOV B,H 


023046 

115 


MOV C,L 


023047 

052 361 

033 

LHL AELVL 


023052 

160 


MOV M,B 


023053 

043 


INX H 


023054 

161 


MOV M,C 


023055 

043 


INX H 


023056 

042 361 

033 

SHL AELVL 


023061 

301 


POP B 


023062 

175 


MOV A,L 


023063 

376 177 


CPI 177 


023065 

330 


RC 


023066 

303 322 

026 

JMP ERR5 

AE TOO COMPLEX 

023071 

305 


PUSH B 

SUBROUTINE USED TO POP TOP 

023072 

052 361 

033 

LHL AELVL 

OF AE STACK INTO HAL 

023075 

053 


DCX H 


023076 

106 


MOV B,M 


023077 

053 


DCX H 


023100 

042 361 

033 

SHL AELVL 


023103 

146 


MOV HiM 


023104 

175 


MOV A,L 


023105 

376 100 


CPI 100 


023107 

150 


MOV L,B 


023110 

301 


POP B 


023111 

320 


RNC 


023112 

303 325 

026 

JMP ERR6 


023115 

174 


MOV A,H 

SUBROUTINE USED TO TAKE 





2*S COMPLEMENT OF HAL 

023116 

057 


CMA 


023117 

147 


MOV H,A 


023120 

175 


MOV A,L 


023121 

057 


CMA 


023122 

157 


MOV L|A 


023123 

043 


INX H 


023124 

311 


RET 


023125 

315 071 

023 

CALL POPAE 

SUBROUTINE USED TO OUTPUT 





THE TOP OF THE AE STACK 

023130 

174 


MOV A 9 H 


023131 

267 


ORA A 


023132 

362 147 

023 

JP CONT 


023135 

315 115 

023 

CALL TWOCMP 


023140 

076 055 


MVI A 


023142 

345 


PUSH H 


023143 

315 026 

022 

CALL ASCOUT 


023146 

341 


POP H 


023147 

315 101 

022 

CALL IOUT 


023152 

247 


ANA A 


023153 

311 


RET 


023154 

345 


PUSH H 

SUBROUTINE USED TO GET 





ADDRESS OF LABEL IN HAL 

023155 

052 352 

033 

LHL PRGSTRT 


023160 

104 


MOV B,H 


023161 

115 


MOV C,L 


023162 

341 


POP H 


023163 

012 


LDAX B 


023164 

274 


CMP H 


023165 

312 174 

023 

JZ NXT1 


023170 

320 


RNC 


0231?1 

303 204 

023 

JMP NEW 1 


023174 

003 


INX B 


023175 

012 


LDAX B 


023176 

275 


CMP L 


023177 

312 220 

023 

JZ END 


023202 

320 


RNC 


023203 

013 


DCX B 


023204 

003 


INX B 


023205 

003 


INX B 


023206 

012 


LDAX B 


023207 

201 


ADDR C 


023210 

117 


MOV C,A 


023211 

322 163 

023 

JNC OVER 


023214 

004 


XNR B 


023215 

303 163 

023 

JMP OVER 


023220 

013 


DCX B 


023221 

140 


MOV H,B 


023222 

151 


MOV L,C 


023223 

311 


RET 


023224 

315 071 

023 

CALL POPAE 

SUBROUTINE USED TO TRANSFER 





EXECUTION TO LABEL ON TOP 





OF AE STACK. 

023227 

315 154 

o 

to 

CALL FNDLBL 


023232 

353 


XCHG 



PSHAE: A subroutine that pushes a binary value in HL onto 
the arithmetic stack (separate from 8080 stack). The AE stack 
pointer is stored at AELVL. Each time PSHAE is called, the 
pointer is incremented twice. The space reserved for the AE 
stack will allow 32 pushes without pops. Exceeding 32 causes 
an error condition. 


POPAE: This subroutine pops a binary value off the AE stack 
into HL. AELVL is decremented twice. If AELVL is decrement¬ 
ed below the space reserved for the AE stack, an error is 
indicated. 


TWOCMP: The value in HL is two’s complemented and placed 
back in HL. 


PRN: An ML routine that outputs the numeric value on the 
top of the AE stack. If a negative number is detected (most 
significant bit of H equal to 1), a minus sign is printed and 
TWOCMP called before IOUT prints HL. If the number is 
positive, IOUT is called directly. 


FNDLBL: The FNDLBL routine is used to search the BASIC 
program area for the label stored in HL. A linear search is begun 
at PRGSTRT. In order to speed the search, the stored line 
length is used to skip over line text. If the label is not found, 
return to the calling program is with the zero status bit reset. If 
the label is found, the location is placed in HL and the zero bit 
is set before return. 


XFER: This ML routine transfers execution to the label stored 
on the top of the AE stack. The line number is popped off the 
AE stack into HL and FNDLBL is called. If upon return the 
zero bit is set, HL contains the location of the next line to be 
executed, A branch to the NXT routine completes the transfer 
process. 


42 
















February 1976 

Dr 

Dobb’s 

Journal of Co 

TAG 

ADDRESS 

11 

12 

13 

MNEMONIC 


023233 

312 

022 

023 

JZ CONT+1 


023236 

303 

330 

026 

JMP ERR? 

INNUM 

023241 

325 



PUSH D 


023242 

076 

077 


MVI A 


023244 

315 

026 

022 

CALL ASCOUT 


023247 

076 

040 


MVI A 'SP' 


023251 

315 

026 

022 

CALL ASCOUT 


023254 

000 



NOP 


023255 

315 

000 

020 

CALL BUFIN 


023260 

021 

111 

020 

LX I D BUFSTRT 


023263 

032 



LDAX D 


023264 

376 

055 


CPI 


023266 

041 

000 

000 

LX I H 0 


023271 

312 

312 

023 

JZ NEG1 


023274 

315 

331 

020 

CALL BIN 

END1 

023277 

315 

044 

023 

CALL PSHAE 


023302 

076 

040 


MVI A ’SP' 


023304 

357 



RST OUTPUT 


023305 

321 



POP D 


023306 

247 



ANA A 


023307 

311 



RET 


023310 

2V7 

311 


NOP'S 

NEG1 

023312 

023 



INX D 


023313 

3)5 

331 

020 

CALL BIN 


023316 

315 

115 

023 

CALL TWOCMP 


_ 023321 

303 

277 

023 

JMP END1 

TSTV 

023324 

032 



LDAX D 


023325 

376 

040 


CPI 'SP* 


023327 

023 



INX D 


023330 

312 

324 

023 

JZ TSTV 


023333 

033 



DCX D 


023334 

306 

300 


ADI 300 


023336 

320 



RNC 


023337 

007 



RLC 


023340 

157 



MOV L,A 


023341 

046 

024 


MVI H 024 


023343 

315 

044 

023 

CALL PSHAE 


023346 

067 



STC 


023347 

023 



INX G 


0233 50 

311 



RET 

TSTN 

023351 

032 



LDAX D 


023352 

376 

o 

o 


CPI ’SP' 


023354 

023 



INX D 


023355 

312 

351 

023 

JZ TSTN 


023360 

033 



DCX D 


02336! 

376 

100 


CPI ’A’- 1 


023363 

322 

310 

023 

JNC END1 


023366 

376 

050 


CPI ’<’ 


023370 

310 



RZ 


023371 

041 

000 

000 

LX I H 0 


023374 

303 

124 

024 

JMP CONT 

# LOC 

023377 IS A NOP. LOC 024000-024077 RES 

DONE* 

024100 

032 



LDAX D 


024101 

023 



INX D 


024102 

376 

040 


CPI ’SP’ 


024104 

312 

100 

024 

JZ DONEX 


024107 

033 



DCX D 


024110 

376 

015 


CPI 'CR* 


024112 

310 



RZ 


024113 

376 

044 


CPI 


024115 

310 



RZ 


024116 

303 

314 

026 

JMP ERR3 


024121 

000 

000 

000 

NOP’ S 


024124 

315 

331 

020 

CALL BIN 


024127 

315 

044 

023 

CALL PSHAE 


“ 024132 

311 



RET 

IND 

024133 

315 

071 

023 

CALL POPAE 


024 136 

106 



MOV B,M 


024137 

043 



INX H 


024140 

IH6 



MOV H,M 


024141 

150 



MOV L,B 


024142 

315 

044 

023 

CALL PSHAE 


024145 

247 



ANA A 


“ 024146 

311 



RET 

STORE 

024147 

315 

071 

023 

CALL POPAE 


COMMENTS 

®CONT® IN NXT SUBROUTINE 
LABEL NOT FOUND 
ML SUBROUTINE USED TO INPUT 
A NUMBER FROM TTY AND PLACE 
ON AE STACK. 


ML SUBROUTINE SIMILAR TO 
DONE BUT NO PROVISION FOR 
TRANSFER. 


DONE FAIL 


ML SUBROUTINE USED TO 
REPLACE TOP OF AE STACK 
BY VARIABLE IT INDEXES. 


Box 310, Menlo Park CA 94025 Page 21 


INNUM: INNUM is an ML routine used to input a number from 
the input device, convert it to binary, and place it on the AE 
stack. The routine first outputs a question mark and a space. 
BUFIN is then called permitting the number to be inputted to 
the buffer. When a CR is detected, INNUM examines the buffer 
to see if a minus sign is present. If so, the program branches to 
NEG1. Otherwise, BIN is called to convert the number to binary 
and HL is pushed onto the AE stack. For a negative number, 
NEG1 makes the binary conversion, calls TWOCMP, and then 
pushes HL onto the AE stack. 


ML SUBROUTINE USED TO TEST 
FOR VARIABLE AND PLACE 
ADDRESS ON AE STACK. 


ML SUBROUTINE USED TO TEST 
FOR A NUMBER AND PLACE IT 
ON TOP OF AE STACK. 


TSTV: TSTV is an ML routine that determines whether the 
cursor points to a variable. First, TSTV scans over spaces. 300 
is then added to the first non-space value. A no-carry condition 
will result if a shifted character or number is present. Return 
will be made to ILXQT and the next IL instruction executed. 

An ASCII letter (A-Z) will produce a carry and at the same 
time zero the two most significant bits. In this case, the 
address of the variable is computed by doubling A to form the 
lower half. The upper half is a constant, 024. With A moved to 
L and 024 in H, PSHAE is called to place the variable address on 
the AE stack. The carry is set before return to ILXQT causing 
the next IL to be skipped. 

TSTN: This routine tests for the presence of a number in the 
BASIC text. Spaces are scanned over and the first non-space is 
checked to find if it is a letter variable. If so, return to ILXQT 
is made with the carry reset. If not, a check is made to see if 
the byte is an open parenthesis. If it is, return is made with no 
carry. If the character is not a letter or open parenthesis, it is 
assumed to be the first digit of a number. In this case, BIN is 
called, HL pushed on the AE stack, and return is made with 
the carry set. 


DONEX: DONEX is identical to DONE except that detection 
of a dollar sign does not lead to transfer in the NXT routine. 
Instead, it produces a simple return to ILXQT exactly as a CR 
would do. 


ML SUBROUTINE USED TO 
PLACE TOP OF STACK INTO 
VARIABLE INDEXED. 


IND: This ML routine pops the AE stack to bring the address 
of a variable into HL. The value of the variable is then obtained 
and pushed onto the AE stack. 


STORE: An ML routine that first pops a variable address off 
the AE stack and places it in BC. A numeric value is then 
popped off the AE stack and placed at the variable address in 
BC. 


43 
















Page 

22 February 

1976 

Dr Dobb's Journal of Computer Calisthenics 

& Orthodontia Box 310, Menlo Park CA 94025 

TAG 

ADDRESS 

II 

12 

13 

MNEMONIC 

COMMENTS 




024152 

114 



MOV C,H 





024153 

105 



MOV B,L 





024154 

315 

071 

023 

CALL POPAE 





024157 

160 



MOV M,B 





024160 

043 



INX H 





024161 

161 



MOV M,C 





024162 

247 



ANA A 





024163 

311 



RET 




f IOC 

024164-024177 RESERVED 

FOR BASIC SUBROUTINE STACK 



fsD 

024200 

315 

071 

023 

CALI POPAE 

ML SUBROUTINE USED TO 

ADD 

ADD: An ML routine used to perform signed addition on the 







TWO TOPMOST ELEMENTS ON 

two top elements of the AE stack, this sion being placed back on 







STACK. 


the AE stack. 


024203 

104 



MOV 8,H 




024204 

115 



MOV C.L 

CALL POPAE 





024205 

315 

071 

023 





024210 

Oil 



DAD B 





024211 

315 

044 

023 

CALL PSHAE 





024214 

24 7 



ANA A 




SUB 

024215 

024216 

311 
315 

071 

023 

RET 

CALL POPAE 

ML SUBROUTINE USED TO 

FIND 

SUBTRACT: An ML routine used to perform signed subtrac- 






THE DIFFERENCE OF THE 

TWO 

tion on the two top elements of the stack. After the first value 







TOPMOST ELEMENTS OF THE AE 

is popped off the stack, the two's complement is taken to 


024221 

024224 

315 

104 

115 

023 

CALL TWOCMP 
MOV B,H 

STAtl\* 


produce the subtrahend. From that point on, the routine is 
similar to the ADD routine. 


024225 

115 



MOV C,L 





024226 

315 

071 

023 

CALL POPAE 





024231 

Oil 



DAD B 





024232 

315 

044 

023 

CALL PSHAE 





024235 

247 



ANA A 





024236 

311 



RET 




KUt 

024237 

024240 

000 

325 



NOP 

PUSH D 

ML SUBROUTINE USED TO 

MULTI- 

MUL: This routine performs signed multiplication of the two 







PLY THE TWO TOPMOST ELEMENTS 

top elements of the AE stack. MUL essentially takes care of 






MV I B 0 

CALL POPAE 

MOV A,H 

ORA A 

OF AE STACK 


sign determination while another routine, MULT, actually per- 


024241 
024243 
024246 
024247 

006 

315 

174 

267 

000 

071 

023 



forms the multiplication. Register B is used to logically deter¬ 
mine if either or both of the factors are negative. B is originally 






set to zero and then incremented in NINOX once for each nega- 


024250 

374 

301 

024 

CM NINOX 



tive factor. In addition, each negative factor is two’s comple- 


024253 

353 



XCHG 



mented to produce the corresponding positive value. At the 


024254 

315 

071 

023 

CALL POPAE 



end of MUL if B = 1, then the product should be negative. In 


024257 

024260 

024251 

174 

267 

374 

301 

024 

MOV A,M 

ORA A 

CM NINOX 



this case two's complement routine is called. All other values of 
B indicate a positive product. 


024264 

315 

306 

024 

CALL MULT 





024267 

005 



DCR B 





024270 

314 

115 

023 

C2 TWOCMP 





024273 

315 

044 

023 

CALL PSHAE 





024276 

321 



POP D 





024277 

247 



ANA A 





024300 

311 



RET 




SINGS 

024301 

004 



XNR B 



NINOX: A routine used with MUL and DIV is sign determina- 


024302 

315 

115 

023 

CALL TWOCMP 



tion (see MUL). 


024305 

311 



RET 



HULT 

024306 

305 



PUSH B 

SUBROUTINE MULTIPLIES 

HAL 

MULT: This routine multiplies the two 16-bit numbers in HL 


024307 

024310 

024311 

104 

115 

041 



MOV B,H 

MOV C|L 

LX I H 0 

BY DAE ANSWER IN HAL 


and DE. The product is shifted into BC as multiplication takes 


000 

000 



place. This routine is a little unconventional and may require 
some close study to understand. 


024314 

076 

021 


MVI A 17D 





024316 

062 

363 

033 

STA INDX 




LOOP 

024321 

170 



MOV A,B 





024322 

037 



RAR 





024323 

107 



MOV B,A 





024324 

171 



MOV A,C 





024325 

037 



RAR 





024326 

117 



MOV C,A 





024327 

322 

333 

024 

JNC NXT1 





024332 

031 



DAD D 




NSCTi 

024333 

174 



MOV A,H 





024334 

037 



RAR 





024335 

147 



MOV H,A 





024336 

175 



MOV A,L 





024337 

037 



RAR 





024340 

157 



MOV L|A 





024341 

072 

363 

033 

LDA INDX 





024344 

075 



DCR A 





024345 

312 

356 

024 

JZ END 1 





024350 

062 

363 

033 

STA INDX 





024353 

303 

321 

024 

JMP LOOP 




END1 

024356 

140 



MOV H,B 





024357 

151 



MOV L,C 





024360 

301 



POP B 





44 



February 1976 

Dr 

Dobb's 

TAG 

ADDRESS 

II 

12 

13 


024361 

311 



DIV 

024362 

325 








024363 

006 

000 



024365 

315 

071 

023 


024370 

174 




024371 

267 




024372 

374 

301 

024 


024375 

353 




024376 

315 

071 

023 


025001 

174 




025002 

267 




025003 

374 

301 

024 


025006 

353 




025007 

227 




025010 

274 




025011 

302 

020 

025 


025014 

275 




025015 

312 

333 

026 

CONT 

025020 

315 

026 

025 


025023 

303 

267 

024 

DIVD 

025026 

305 



1 ' - 

025027 

006 

001 


LOOP 

025031 

174 




025032 

34 6 

100 



025034 

302 

044 

025 


025037 

051 




025040 

004 




025041 

303 

031 

025 

OUT 

025044 

170 




02504 5 

062 

363 

033 


025050 

104 




025051 

115 




025052 

04 1 

000 

000 

OVER 

025055 

173 




025056 

221 




02505 7 

137 




025060 

172 




025061 

230 




025062 

127 




025063 

322 

117 

025 


025066 

173 




025067 

201 




025070 

137 




025071 

172 




025072 

210 




025073 

127 




025074 

051 


033 


025075 

072 

363 


025100 

075 




025101 

312 

115 

025 

CONT 

025104 

062 

363 

033 

025107 

353 




025110 

051 




025111 

353 




025112 

303 

055 

025 

END 

025115 

301 




025116 

31 1 



DIV,# 

025117 

051 



025120 

043 


033 


025121 

072 

363 


025124 

075 


025 


025125 

312 

115 


025130 

303 

104 

025 

NEG 

025133 

315 

071 

023 


025136 

315 

115 

023 


025141 

315 

044 

023 


025144 

247 




025145 

311 


000 


025146 

000 

000 

CMPR 

025151 

325 




025152 

315 

071 

023 


025155 

353 


023 


025156 

315 

071 


025161 

345 


023 


025162 

315 

071 


025165 

174 




025166 

346 

200 



025170 

302 

262 

025 


025173 

172 




025174 

346 

200 



025176 

302 

227 

025 

C0NT2 

025201 

174 




025202 

272 




025203 

312 

214 

025 


Journal of Computer Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 Page 23 


MNEMONIC COMMENTS 


RET 

PUSH D 


MVI B H 
CALL POPAE 
MOV A,H 
ORA A 
CM NINOX 
XCHG 

CALL POPAE 

MOV A,H 

ORA A 

CM NINOX 

XCHG 

SUB A 

CMP H 

JNZ CONT 

CMP L 

JZ ERRS 

CALL DIVD 

JMP NIN0X-1O 

PUSH B 

MVI B 1 

MOV A,H 

ANI 01000000B 

JNZ OUT 

DAD H 

INR B 

JMP LOOP 

MOV A,B 

STA INDX 

MOV B,H 

MOV C|L 

LX I H V 

MOV A,E 

SUB C 

MOV E,A 

MOV A,D 

SBB B 

MOV D|A 

JNC DIV# 

MOV A,E 
ADDR C 
MOV E,A 
MOV A,D 
ADC B 
MOV D,A 
DAD H 
LDA INDX 
DCR A 
JZ END 
STA INDX 
XCHG 
DAD H 
XCHG 

JMP OVER 
POP B 
RET 
DAD H 
INX H 
LDA INDX 
DCR A 
JZ END 
JMP CONT 
CALL POPAE 

CALL TWOCMP 
CALL PSHAE 
ANA A 
RET 
NOP'S 
PUSH D 


CALL POPAE 
XCHG 

CALL POPAE 
PUSH H 
CALL POPAE 
MOV A, H 
ANI 10000000B 
JNZ CONTI 
MOV A,D 
ANI 100000008 
JNZ B;4 
MOV A | H 
CMP D 
JZ OVR 


ML SUBROUTINE USED TO DI- DIV: This ML routine is basically similar to the MUL routine in 
VIDE TWO TOPMOST ELEMENTS that it handles sign determination for division. The quotient of 
OF AE STACK* the two top elements of the stack is taken with the first popped 

off the stack treated as the divisor. Integer division actually 
takes place in a called routine, DIVD. 


DIVIDE BY ZERO 


DIVD: The contents of DE is divided by the contents of HL in 
this routine. The divisor (HL) is left justified before division 
actually begins. The number of left shifts required for this 
determines the number of shifted subtractions used in the 
binary division process. A check is made for division by zero 
and an error is reported if this is the case. The quotient is 
developed in HL. 


ML SUBROUTINE USED TO NE- NEC: An ML routine used to negate the top element of the AE 
GATE TOP OF AE STACK* stack. The two’s complement routine is used and the result is 

placed back on the stack. 


CMPR: At the time CMPR is called, the AE stack has at least 
ML SUBROUTINE USED TO COM- three elements consisting of the first expression value, the 
PARE TWO TOPMOST ELEMENTS logical operator address code (labeled 0:, l: t 2etc . on listing), 
OF AE STACK. and a second expression value. Testing is performed on the two 

expression values and A is made a 0\ 1, or 4 depending on the 
numerical comparison: 

Expression values equal A = 0 

First expression greater than second A = 1 

Second expression greater than first A = 4 

The logical operator address code then sends the program to 
one of 6 testing subroutines (labelled 0:, 1 2:, etc.) where a 
check is made on A to see if the condition is true or false. If 
the zero bit is set upon return then a true' condition exists; oth¬ 
erwise, the condition is false. For a true condition, execution is 
set to continue at the next statement following the IF. A false 
cause execution of the next numbered line. 


45 



Page 

24 Februarv 

1976 

Dr Dobb's Journal of Computer 

Calisthenics 

& Orthodontia Box 310, Menlo Park CA 94025 

TAG 

ADDRESS 

II 

12 

13 

MNEMONIC 

COMMENTS 




025206 

322 

227 

025 

JNC Bl4 





025211 

303 

224 

025 

jmp b: i 




OVR 

025214 

175 



MOV A,L 





025215 

273 



CMP E 





025216 

312 

232 

025 

JZ B:0 





025221 

322 

22 7 

025 

JNC B:4 




BU 

025224 

076 

001 


MVI A ID 





02 5226 

041 



SPECIAL 




BU 

025227 

076 

004 


MVI A 4D 





025231 

041 



SPECIAL 




BsjS 

025232 

076 

000 


MVI A 0D 




025234 

34 l 



POP H 





025235 

021 

242 

025 

LXI D ALPHA 





025240 

325 



PUSH D 





02524 1 

351 



PC HL 




ALPHA 

025242 

312 

260 

025 

JZ TRUE 




FALSE 

025245 

321 



POP D 




WOP 

025246 

032 



LDAX D 





025247 

376 

015 


CPI ’CB' 

•NXT* SUBROUTINE 




0252 51 

312 

375 

022 

JZ NXT 




025254 

023 



INX D 





025255 

303 

246 

025 

JMP LOOP 




TRUE 

025260 

321 



POP D 





025261 

311 



RET 




CONTI 

025262 

025263 

172 

346 

200 


MOV A.D 

AMI iOOQOOOQB 





025265 

302 

201 

025 

JN7 C0NT2 





025210 

303 

224 

025 

JMP Bi 1 




01 

025273 

376 

000 


CPI j5D 




025275 

311 



RET 




SI 

025276 

376 

001 


CPI ID 





025300 

311 



RET 




21 

025301 

376 

000 


CPI 0D 





025303 

310 



RZ 





02 5304 

3 76 

001 


CPI ID 





025306 

311 



RET 




3S 

025307 

376 

001 


CPI ID 





025311 

310 



RZ 





025312 

376 

004 


CPI 4D 





025314 

311 



RET 




41 

025315 

376 

004 


CPI 4D 





025317 

311 



RET 




58 

025320 

376 

000 


CPI 0D 





025322 

310 



RZ 





025323 

37 6 

004 


CPI 4D 




LITJ# 

025325 

311 



RET 




025326 

056 

273 


MVI L 273 



LITO through LIT5: These ML routines are used to put the 

LIT1 

025330 

001 



SPECIAL 



logical operator address on the AE stack during execution of an 

025331 

056 

276 


MVI L 276 



7 F statement. See CMPR. 

' ' 

025333 

001 



SPECIAL 



LIT? 

025334; 

056 

301 


MVI L 301 




- -* 

025336 

001 



SPECIAL 




LIT3 

025337 

056 

307 


MVI L 307 




*— 

025341 

001 



SPECIAL 




LIT A 

025342 

056 

315 


MVI L 315 




"-* 

025344 

001 



SPECIAL 




LIT5 

025345 

056 

320 


MVI L 320 




*-“ 

025347 

046 

025 


MVI H 024 





025351 

315 

044 

023 

CALL PSHAE 





025354 

247 



ANA A 





025355 

311 



RET 




PSHSBR 

025356 

305 



PUSH B 

SUBROUTINE USED 

TO SAVE 

PSHSBR: A routine used to place the return address of GOSUB 







BASIC SUBROUTINE 

RETURN 

on the subroutine stack. The subroutine stack is separate from 


025357 

025360 

104 

115 



MOV B,H 

MOV C,L 

ADDRESS* 


the AE stack. SBRL VL is a pair of locations used to keep track 
of the level of subroutining. 


025361 

052 

364 

033 

LHL SBRLVL 





025364 

160 



MOV M,B 





025365 

043 



INX H 





025366 

161 



MOV M,C 





025367 

043 



INX H 





025370 

042 

364 

033 

SHL SBRLVL 





025373 

301 



POP B 





025374 

175 



MOV A,L 

CPI 177 





025375 

376 

177 






025377 

330 



RC 





026000 

303 

336 

026 

JMP ERR9 

NESTING TOO DEEP 



POPSBR 

026003 

305 



PUSH B 

SUBROUTINE USED 

TOO RETRIEVE 

POPSBR: A routine used to pop the GOSUB return address off 







BASIC SUBROUTINE 

ADDRESS. 

the subroutine stack. 


026004 

052 

364 

033 

LHL SBRLVL 





026007 

053 



DCX H 





026010 

106 



MOV B,M 





026011 

053 



DCX H 





026012 

042 

364 

033 

SHL SBRLVL 





026015 

146 



MOV H,M 





026016 

175 



MOV A,L 





026017 

376 

164 


CPI 164 





026021 

150 



MOV L)B 





026022 

301 



POP B 





46 




RSTR 


SPCONE 


INIT 


LOOP 


February 1976 Dr Dobb's Journal of Computer Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 Page 25 


TAG 


SAVE 


XINIT 



ADDRESS 

11 

12 

13 

MNEMONIC 

026023 

320 



RNC 

026024 

303 

341 

026 

JMP ERR10 

026027 

142 



MOV H,D 

026030 

153 



MOV L.E 

026031 

315 

356 

025 

CALL PSHSBR 

026034 

247 



ANA A 

026035 

311 



RET 

026036 

315 

003 

026 

CALL POPSBR 

026041 

353 



XCHG 

026042 

247 



ANA A 

026043 

311 



RET 

026044 

076 

040 


MVI A ’SP* 

026046 

315 

026 

022 

CALL ASCOUT 

026051 

247 



ANA A 

026052 

311 



RET 

026053 

000 

000 

000 

NOP'S 

026056 

041 

077 

026 

LX I H STRT 

026061 

001 

350 

033 

LXI B CURLBL 

026064 

176 



MOV A,M 

026065 

002 



STAX B 

026066 

175 



MOV A,L 

026067 

376 

130 


CPI 130 

026071 

310 



RZ 

026072 

003 



INX B 

026073 

043 



I NX H 

026074 

303 

064 

026 

JMP LOOP 

026077 

000 



DATA 

026100 

000 

000 

034 

DATA 

026103 

001 

034 

000 

DATA 

026106 

040 

017 

100 

DATA 

026111 

030, 

000 

164 

DATA 

026114 

024 

377 

057 

DATA 

026117 

000 

000 

056 

DATA 

026122 

24 1 

051 

321 

DATA 

026125 

377 

057 

377 

DATA 

026130 

377 



DATA 

026131 

041 

100 

030 

LX I H 

026134 

042 

361 

033 

SHL AELVL 

026137 

04 1 

164 

024 

LX I H 

026142 

042 

364 

033 

SHL SBRLVL 

026145 

315 

020 

027 

CALL INIARY 

026150 

052 

352 

033 

LHL PRGSTRT 

026153 

126 



MOV D,M 

026154 

043 



INX H 

026155 

136 



MOV EjM 

026156 

353 



XCHG 

026157 

000 



NOP 

026160 

042 

350 

033 

SHL CURLBL 

026163 

023 



INX D 

026164 

023 



INX D 

026165 

247 



ANA A 

026166 

311 



RET 

6167-026204 ! 

IS UNUSED 

@ 

026205 

345 



PUSH H 

026206 

325 



PUSH D 

026207 

305 



PUSH B 

026210 

353 



XCHG 

026211 

016 

37 7 


MVI C 377 

026213 

303 

107 

022 

JMP IOUT-t-6 

026216 

000 



NOP 

0262 17 

000 



NOP 

026220 

327 



RST CRLF 

026221 

000 

000 

000 

NOP'S 

026224 

076 

105 


MVI A 'E' 

026226 

357 



RST OUTPUT 

026227 

076 

122 


MVI A V 

026231 

357 



RST OUTPUT 

026232 

357 



RST OUTPUT 

026233 

076 

040 


MVI A *SP' 

026235 

357 



RST OUTPUT 

026236 

046 

000 


MVI H JJ 

026240 

000 

000 

000 

NOP'S 

026243 

315 

101 

022 

CALL IOUT 

026246 

052 

3 50 

033 

LHL CURLBL 

026251 

076 

040 


MVI A 'SP' 

026253 

357 



RST OUTPUT 

026254 

315 

205 

026 

CALL LBLOUT 

026257 

016 

010 


MVI C SD 


COMMENTS 


TOO MANY RETURN STATEMENTS 
ML SUBROUTINE USED TO PLACE 
RETURN ADDRESS ON SBR STACK. 


ML SUBROUTINE USED TO RE¬ 
TRIEVE RETURN ADDRESS FROM 
SBR STACK. 


SAVE: This ML routine places the GOSUB return address on 
the subroutine stack using PSHSBR. 


RSTR: Upon execution of a RET statement, this ML routine 
uses POPSBR to fetch the return address off the subroutine 
stack. 


ML SUBROUTINE USED TO OUT¬ 
PUT ONE SPACE TO TTY. 


ML SUBROUTINE USED TO 
INITIALIZE BASIC SYSTEM. 


SPCONE: ML routine that issues one space on the output 
device. This is the execution routine for a semicolon in the 
PR statement. 

INIT: This ML routine initializes the TBX system when a NEW 
statement is executed. The program area is preset to that a new 
program can be entered. 


ML SUBROUTINE USED TO 
PREPARE SYSTEM FOR EXECUTIOJ 


XINIT: When RUN is typed, certain locations in TBX must be 
initialized. The XINIT routine performs the following tasks: 

1. AE and subroutine stacks are emptied; 

2. The array storage area is preset at zero length; and 

3. The label number of the first statement to be executed 
is placed in CURLBL. 


SUBROUTINE USED TO OUTPUT 
LABEUNO ZERO SUPPRESSION) 


LBLOUT: This routine is called by LIST to output a label 
number of a TBX statement. IOUT is used with C preset to 
377 octal preventing zero suppression. 


ERRMAIN: This routine is used to process an error condition. 
“ERR” is outputted followed by the error number and the 
CURLBL. Entry to ERRMAIN is made through ERR1, ERR2, 
etc., where L is set to the error number desired. 


47 







Page 

26 February 

1976 Dr Dobb's Journal of Computer Calisthenics 

& Orthodontia Box 310, Menlo Park CA 94025 

TAG 

ADDRESS 

II 

12 

13 

MNEMONIC 

COMMENTS 



026251 

041 

357 

033 

LX I H 

PARTIAL REINITIALIZATION 



026264 

021 

106 

026 

LXI D 

SEOUENCE 


LOOP 

026257 

032 



LDAX D 




026270 

167 



MOV M|A 




026271 

015 



DCR C 




026272 

302 

267 

026 

JNZ LOOP 




026275 

041 

002 

032 

LXI H 




026300 

061 

077 

002 

LXI SP 




026303 

303 

257 

021 

JMP ILXQT 



ERRLIST, 026305 

056 

001 


MVI L ID 



ERRS 









026310 

001 



SPECIAL 



ERR2 

026311 

056 

002 


MVI L 2D 




026313 

001 



SPECIAL 



ERR3 

026314 

056 

003 


MVI L 3D 




026316 

001 



SPECIAL 



ERR4 

026317 

056 

004 


MVI L 4D 




026321 

001 



SPECIAL 



ERR5 

026322 

056 

005 


MVI L 5D 




026324 

001 



SPECIAL 



ERR6 

026325 

056 

006 


MVI L 6D 




026327 

001 



SPECIAL 



ERR7 

026330 

056 

007 


MVI L 7D 




026332 

001 



SPECIAL 



ERRS 

026333 

056 

010 


MVI L 8D 




026335 

001 



SPECIAL 



ERR9 

026336 

056 

Oil 


MVI L 9D 




026340 

001 



SPECIAL 



ERR 10 

026341 

056 

012 


MVI L 10D 




026343 

001 



SPECIAL 



ERRS 1 

026344 

056 

013 


MVI L UD 




026346 

001 



SPECIAL 



ERR 12 

026347 

056 

014 


MVI L 12D 




026351 

001 



SPECIAL 



ERR 13 

026352 

056 

015 


MVI L 13D 




026354 

001 



SPECIAL 



ERR 14 

026355 

056 

016 


MVI L 14D 




026357 

001 



SPECIAL 



ERR 15 

026360 

056 

017 


MVI L 15D 




026362 

001 



SPECIAL 



ERR16 

026363 

056 

020 


MVI L 16D 




026365 

303 

216 

026 

JMP ERRMAIN 



# LOC 

026370-027017 

IS UNUSED 

• 



INI ARK 

027020 

076 

012 


MVI A MJ-’ 

ARRAY INITIALIZATION SUB- 

INI ARY: A subroutine called by XINIT to preset the array 







ROUTINE 

area of memory . 


027022 

357 



RST OUTPUT 




027023 

052 

115 

026 

LHL 




027026 

042 

366 

033 

SHL ARYSTRT 




027031 

311 



RET 



DIM2 

027032 

325 



PUSH D 

ML SUBROUTINE USED TO 


' ■' 






SET UP TWO DIMENSIONAL 








ARRAYS. 



027033 

315 

071 

023 

CALL POPAE 




027036 

353 



XCHG 




027037 

315 

071 

023 

CALL POPAE 




027042 

104 



MOV B,H 




027043 

115 



MOV C,L 




027044 

315 

044 

023 

CALL PSHAE 




027047 

353 



XCHG 




027050 

315 

044 

023 

CALL PSHAE 




027053 

321 



POP D 




027054 

305 



PUSH B 




027055 

315 

240 

024 

CALL MULT 




027060 

315 

071 

023 

CALL POPAE 




027063 

303 

072 

027 

JMP CONT 



DIMS 

027066 

315 

071 

023 

CALL POPAE 

ML SUBROUTINE USED TO SET IP 

DIM1 and DIM2: These ML routines are used to set up array 

— 






ONE DIMENSIONAL ARRAYS. 

storage as a result of execution of a DIMension statement. 


027071 




PUSH H 


DIM2 handles two dimensional arrays while DIM1 handles the 


027073 

10*4 



MOV B,H 


one-dimensional arrays . At the time these routines are called , 


027074 

115 



MOV C,L 


the array dimensions are on top of the AE stack . MULT and 


027075 

052 

366 

033 

LHL ARYSTRT 


double register addition are used to calculate memory needed 


027100 

175 



MOV A,L 


for a given array dimension. The variable associated with the 


027101 

027102 

221 

117 



SUB C 

MOV C,A 


array name is used to hold the location of the beginning of 


027103 

174 



MOV A,H 


that array. 


027104 

230 



SBB B 




027105 

107 



MOV 8,A 




027106 

013 



DCX B 




027107 

052 

354 

033 

LHL PRGEND 




027 112 

274 



CMP H 




0271 13 

302 

120 

027 

JNZ CONTI 




027116 

171 



MOV A,C 




027117 

275 



CMP L 



CONTI 

027120 

332 

360 

026 

JC ERR 15 




027123 

140 



MOV H,B 




027124 

151 



MOV L,C 




027125 

301 



POP B 




027126 

160 



MOV M,B 




48 



February 1976 

Dr Dobb's 

Journal of 

Computer Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 Page 27 

TAG 

ADDRESS II 12 13 

MNEMONIC 

COMMENTS 



027J27 

053 

DCX H 




027130 

161 

MOV M,C 




027131 

104 

MOV B,H 




027132 

115 

MOV C.L 




027133 

042 366 033 

SHL ARYSTRT 



027136 

315 071 023 

CALL POPAE 




0271A 1 

161 

MOV M,C 




027142 

043 

INX H 




027143 

160 

MOV M,B 




027144 

247 

ANA A 




027145 

311 

RET 



ARRAY1 

027146 

315 071 023 

CALL POPAE 

ML SUBROUTINE USED TO GET 
THE ADDRESS OY A ONE DIMEN¬ 
SIONAL ARRAY VARIABLE. 

ARRAY1 and ARRAY2: These ML routines are used to calcu- 






027151 

053 

DCX H 

late the address of an array variable. The array position values 
are on the AE stack at the time these routines are called. MULT 


027152 

051 

DAD H 


and double register addition are used in the calculation. 


027153 

104 

MOV B,H 




027154 

115 

MOV C,L 




027155 

315 071 023 

CALL POPAE 




027160 

Oil 

DAD B 




027161 

315 044 023 

CALL PSHAE 




027164 

24 7 

ANA A 




027165 

311 

RET 



ARSAY2 

027166 

315 071 023 

CALL POPAE 

ML SUBROUTINE USED TO GET 


-- 




THE ADDRESS OP A TWO DIMEN¬ 
SIONAL ARRAY VARIABLE. 



027171 

053 

DCX H 




027172 

315 044 023 

CALL PSHAE 




027175 

052 370 033 

LHL ATEMP 




027200 

315 044 023 

CALL PSHAE 




027203 

315 240 024 

CALL MULT 




027206 

315 200 024 

CALL ADD 




027211 

303 146 027 

JMP ARRAY 1 



TSTA 

027214 

032 

LDAX D 

ML SUBROUTINE USED TO TEST 

TSTA: An ML routine used to test TBX text for the presence 





FOR AN ARRAY. 

of an array variable. If a letter is immediately followed by an 


027215 

027216 

027220 

023 

376 040 

312 214 027 

INX D 

CPI ’sp' 

JZ TSTA 


open parenthesis, then an array is indicated. Otherwise, an 
ordinary variable is present. 


027223 

033 

DCX D 




027224 

306 300 

ADI 300 




027226 

320 

RNC 




027227 

007 

RLC 




027230 

117 

MOV C|A 




027231 

023 

INX D 




027232 

032 

LDAX D 




027233 

376 050 

CPI 




027235 

312 243 027 

JZ CONT 




027240 

033 

DCX D 




027241 

247 

ANA A 




027242 

311 

RET 



CONT 

027243 

151 

MOV L,C 




027244 

046 024 

MVI H 024 




027246 

116 

MOV C,M 




027247 

043 

INX H 




027250 

146 

MOV H,M 




027251 

151 

MOV L,C 




027252 

116 

MOV C,M 




027253 

043 

INX H 




027254 

106 

MOV B,M 




027255 

043 

INX H 




027256 

315 044 023 

CALL PSHAE 




027261 

140 

MOV H,B 




027262 

151 

MOV L,C 




027263 

042 370 033 

SHL ATEMP 




027266 

067 

STC 




027267 

311 

RET 




027270 

000 000 000 

NOP'S 



# LOG 027273-027304 IS UNUSED 




FOR 

027305 

325 

PUSH D 

ML SUBROUTINE USED TO SET UP 

FOR: When a FOR statement is executed, this ML routine 


INX D 

FOR LOOP. 

places the address of the next statement following the FOR 

Stop 

027306 

023 


027307 

032 

LDAX D 


on the AE stack. 


027310 

376 015 

CPI 'CB' 




027312 

302 064 030 

JNZ FIAFOR 



CONT 

027315 

353 

XCHG 




027316 

315 044 023 

CALL PSHAE 




027321 

321 

POP D 




027322 

24 7 

ANA A 



NEXT 

027323 

027324 

311 

325 

RET 

PUSH D 

ML SUBROUTINE USED TO CHECK 

NEXT: This ML routine is used to process a NXT instruction. 


027325 

315 071 023 

CALL POPAE 

END OF FOR LOOP. 

During its execution the following tasks are performed: 


027330 

345 

PUSH H 


1. The index variable is incremented; 


027331 

116 

MOV C,M 


2. A check is made to see if the variable limit has been 


027332 

027333 

043 

106 

INX H 

MOV B,M 


exceeded; 


027334 

315 071 023 

CALL POPAE 


3. If so, the next TBX instruction is executed; and 


027337 

353 

XCHG 


4. If not, execution is returned to the statement follow- 


027340 

315 071 023 

CALL POPAE 


mg the appropriate FOR statement. 


49 





Page 28 

February 

1976 Dr Dobb's Journal of Computer Calisthenics 

& Orthodontia Box 310, Menlo Park CA 94025 

TAG 

ADDRESS 

11 

12 

13 

MNEMONIC 

COMMENTS 



027343 

003 



I NX B 




027344 

172 



MOV A,D 




027345 

270 



CMP 8 




027346 

302 

361 

027 

JNZ CONT 




027351 

173 



MOV A,E 




027352 

27 1 



CMP C 




027353 

322 

361 

027 

JNZ CONT 




027356 

303 

006 

030 

JMP CONTI 



CONT 

027361 

345 



PUSH H 




027362 

315 

044 

023 

CALL PSHAE 




027365 

34 1 



POP H 




027366 

353 



XCHG 




027367 

315 

044 

023 

CALL PSHAE 




027372 

34 1 



POP H 




027373 

315 

044 

023 

CALL PSHAE 




027376 

140 



MOV H,B 




027377 

151 



MOV L,C 




030000 

315 

044 

023 

CALL PSHAE 




030003 

341 



POP H 




030004 

247 



ANA A 




030005 

311 



RET 



CONTI 

030006 

341 



POP H 




030007 

315 

044 

023 

CALL PSHAE 




030012 

140 



MOV H,Bi 




030013 

151 



MOV L|C 




030014 

315 

044 

023 

CALL PSHAE 




030017 

321 



POP D 




030020 

247 



ANA A , 




030021 

311 



RET 



FIX DONE 

030022 

376 

044 


CPI 




030024 

302 

314 

026 

JNZ 




030027 

303 

033 

023 

JMP 



TSTF 

030032 

032 



LDAX D 

ML SUBROUTINE USED TO TEST 

TSTF: A test is performed by this ML routine to check for the 

- ~~ 






FOR FUNCTION. 

presence of a function in the TBX text. The function is 


030033 

376 

o 

o 


CPI 'SP* 


recognized by the occurrence of two letters in sequence, i.e.. 


030035 

030036 

023 

312 

032 

030 

INX D 

JZ TSTF 


RN for the random number function. 


030041 

033 



DCX D 




030042 

306 

300 


ADI 300 




030044 

320 



RNC 




030045 

325 



PUSH D 




030046 

023 



INX D 




030047 

032 



LDAX D 




030050 

306 

o 

o 


ADI 300 




030052 

321 



POP D 




030053 

320 



RNC 




030054 

376 

015 


cpi 'CB* 




030056 

310 



RZ 




030057 

376 

o 

O 


CPI 'SP' 




030061 

310 



RZ ” 




030062 

067 



STC 




030063 

311 



RET 



FIXFOR 

030064 

376 

044 


CPI ’$• 




030066 

312 

315 

027 

JZ CONT 

IN 'FOR* ROUTINE 



030071 

303 

306 

027 

JMP LOOP 

IN 'FOR* ROUTINE 



* 

t LOC 030074-030077 IS UNUSED. LOC 030100-030177 RESERVED EOR AE STACK. 


t LOC 

030200-030203 IS UNUSED 

• 



RNDM 

030204 

041 375 

033 

LX I 

H SEED4 

ML SUBROUTINE USED TO GEN- RNDM: A random number generator based on a technique by 







ERATE RANDOM NUMBERS' Jim Parker appearing in “The Computer Hobbyist” (Vol. 1, 


030207 

006 010 


MV I 

B 8D 

No. 5). The routine returns only when a value between 0 and 

LOOP 

030211 

176 


MOV 

A,M 

10,000 decimal is sensed. 


030212 

007 


RLC 




030213 

007 


RLC 




030214 

007 


RLC 




030215 

2 56 


XOR 

M 



030216 

027 


RAL 




030217 

027 


RAL 




030220 

055 


DCR 

L 



030221 

055 


DCR 

L 



030222 

055 


DCR 

L 



030223 

176 


MOV 

A |M 



030224 

027 


RAL 




030225 

167 


MOV 

Mj A 



030226 

054 


INR 

L 



030227 

176 


MOV 

A,M 



030230 

027 


RAL 




030231 

167 


MOV 

A,M 



030232 

054 


INR 

L 



030233 

176 


MOV 

A,M 



030234 

02 7 


RAL 




030235 

167 


MOV 

M.A 



030236 

054 


INR 

L 



030237 

176 


MOV 

A,M 



030240 

027 


RAL 




030241 

167 


MOV 

Mj A 



030242 

005 


DCR 

B 



030243 

302 211 

030 

JNZ 

LOOP 



030246 

052 374 

033 

LHL 

SEED3 



50 



February 1976 

Dr 

Dobb's 

Journal of Computer Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 Page 29 

TAG 

ADDRESS 

11 

12 

13 

MNEMONIC 

COMMENTS 



030251 

174 



MOV A,H 




030252 

346 

077 


ANI 00111111B 




030254 

147 



MOV H|A 




030255 

376 

047 


CPI 047 




030257 

312 

272 

030 

JZ CONTI 



C0NT2 

030262 

322 

204 

030 

JNC RNDM 




030265 

315 

044 

023 

CALL PSHAE 




030270 

077 



CMC 




030271 

311 



RET 



CONTI 

030272 

175 



MOV A,L 




030273 

376 

020 


CPI 020 




030275 

303 

262 

030 

JMP C0NT2 


TAB: This ML routine spaces over an amount equal to the 

TAB 

030300 

315 

071 

023 

CALL POPAE 

ML SUBROUTINE USED TO. PRO- 


030303 

105 



MOV 8,A 

DUCE TAB FUNCTION. 

value stored on the top of the AE stack. 

LOOP 

030304 

076 

040 


MVI A 'SP' 




030306 

315 

026 

022 

CALL ASCOUT 




030311 

005 



DCR B 




030312 

302 

304 

030 

JNZ LOOP 




030315 

063 

063 

063 

3XINX SP 




030320 

063 

063 

063 

3XINX SP 




030323 

301 



POP B 




030324 

341 



POP H 




030325 

043 



I NX K 




030326 

043 



INX H 




030327 

345 



PUSH H 




030330 

305 



PUSH B 




030331 

073 

073 

073 

3XDCX SP 




030334 

073 

073 

073 

3XDCX SP 




030337 

311 



RET 


MEMTEST: A routine used to test for memory depletion . If 

MEMTEST 

030340 

072 

367 

033 

LDA ASTRTtH) 

SUBROUTINE USED TO TEST EOR 







MEMORY DEPLETION. 

array storage area overlaps the program area , an error is 


030343 

274 



CMP H 


reported. 


030344 

312 

360 

030 

JZ CONT 



030347 

332 

360 

026 

JPC ERR 15 



END 

030352 

042 

354 

033 

SHL PRCEND 




030355 

311 



RET 




030356 

000 

000 


NOP'S 



CONT 

030360 

072 

366 

033 

LDA ASTRT(L) 




030363 

32 6 

000 


SUI 0 




030365 

275 



CMP L 




030366 

322 

352 

030 

JNC END 




030371 

303 

360 

026 

JMP ERR15 



# LOC 030374-030377 IS NOT USED. 



S2?£. 

031000 

052 

354 

033 

LHL PRGEND 

ML SUBROUTIME USED TO DETER- 

SIZE: This ML routine computes the amount of memory being 

031003 

053 



DCX H 

MINE SIZE OE PROGRAM AND 

used and the amount left. 


031004 

104 



MOV B,H 

AMOUNT OE MEMORY REMAINING. 


031005 

115 



MOV C,H 




031006 

052 

376 

033 

LHL MEMEND 




031011 

Oil 



DAD B 




031012 

34 5 



PUSH H 




031013 

052 

366 

033 

LHL ASTRT 




031016 

104 



MOV B,H 




031017 

115 



MOV C,L 




031020 

052 

352 

033 

LHL PRGSTRT 




031023 

on 



DAD B 




031024 

301 



POP B 




031025 

315 

060 

031 

CALL DIEE 




031030 

315 

101 

022 

CALL IOUT 




031033 

076 

040 


MVI A 




031035 

357 



RST OUTPUT 




031036 

052 

366 

033 

LHL ASTRT 




031041 

104 



MOV B s H 




031042 

115 



MOV C 9 L 




031043 

052 

354 

033 

LHL PRGEND 




031046 

053 



DCX H 




031047 

315 

060 

031 

CALL DIEE 




031052 

315 

101 

022 

CALL IOUT 




031055 

327 



RST CRLE 




031056 

247 



ANA A 




031057 

311 



RET 



SI EE 

031060 

171 



MOV A,C 




031061 

22 5 



SUB L 




031062 

157 



MOV L,A 




031063 

170 



MOV A,B 




031064 

234 



SBB H 




031065 

147 



MOV H S A 




031066 

311 



F(ET 



«Tg 

031067 

052 

352 

033 

LHL PRGSTRT 

ML SUBROUTINE USED TO LIST 

LSTO, LST1, and LST2: These three routines set up LSTSTRT 

031072 

042 

304 

033 

SHL LSTSTRT 

ENTIRE BASIC PROGRAM. 

and LSTEND so that when LIST is called, only the required 
lines will be listed . LSTO is called if the entire program is to be 



03 1075 
031100 

052 

042 

354 

306 

033 

033 

LHL PRGEND 

SHL LSTEND 


listed. LST1 is called to list only one line . LST2 sets up a listing 


031103 

247 


ANA A 


between two given lines. 


031104 

311 



RET 



LST1 

031105 

315 

165 

031 

CALL EIND 

ML SUBROUTINE USED TO LIST 


__ 

031110 

042 

304 

033 

SHL LSTSTRT 

ONE LINE. 



51 




Page 30 February 1976 Dr Dobb's Journal of Computer Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 


TAG 

ADDRESS 

U 

12 

13 

MNEMONIC 


031113 

043 



INX H 


031114 

043 



INX H 


031115 

076 

015 


MVI A '££' 

LOOP 

031117 

043 



INX H 


031120 

276 



CMP M 


031121 

302 

117 

031 

JNZ LOOP 


031124 

043 



INX H 


031125 

043 



INX H 


031126 

042 

306 

033 

SHL LSTEND 


031131 

247 



ANA A 


031132 

311 



RET 


031133 

000 



NOP 

LST2 

031134 

315 

165 

031 

CALL FIND 


031137 

043 



INX H 


031140 

043 



INX H 


031141 

076 

015 


MVI A 'CR' 

LOOP 

031143 

043 



INX H 


031144 

276 



CMP M 


031145 

302 

143 

031 

JNZ LOOP 


031150 

043 



INX H 


031151 

043 



INX H 


031152 

042 

306 

033 

SHL LSTEND 


031155 

315 

165 

031 

CALL FIND 


031160 

042 

304 

033 

SHL LSTEND 


031163 

247 



ANA A 


031164 

311 



RET 

FIND 

031165 

315 

071 

023 

CALL POPAE 


031170 

315 

154 

023 

CALL FINDLBL 


031173 

310 



RZ 


031174 

303 

330 

026 

JMP ERR7 

# LOC 
0 

031177-031277 IS UNUSED 


FN 

0313Q0 

231 

310 


TST FNO 'RN* 


031302 

122 

316 




031304 

330 

204 


RANDOM 


031306 

322 

300 


RTN 

FNO 

031310 

232 

330 


TST S17 *TB* 


031312 

124 

302 




031314 

132 

343 


CALL EXPR 


031316 

330 

300 


TAB 


031320 

322 

300 


RTN 

SBC 

031322 

231 

331 


TST S8B 'CB' 


031324 

215 




031325 

322 

360 


NLINE 


031327 

322 

375 


NXT 

S8B 

031331 

232 

210 


TST SB *** 


031333 

244 





031334 

322 

360 


NLINE 


031336 

323 

034 


NXTX 

SU 

031340 

231 

351 


TST SUA '£R' 


031342 

215 




031343 

331 

067 


LISTO 


031345 

322 

213 


LST 


031347 

322 

375 


NXT 

SUA 

031351 

132 

343 


CALL EXPR 


031353 

231 

366 


TST SUB V 


031355 

254 





031356 

132 

343 


CALL EXPR 


031360 

331 

134 


LIST2 


031362 

322 

213 


LST 


031364 

032 

216 


JMP S8A 

SUB 

031366 

331 

105 


LIST 1 


031370 

322 

213 


LST 


031372 

032 

216 


JMP S8A 


COMMENTS 


TAG 


ADDRESS II 12 13 MNEMONIC 


ML SUBROUTINE USED TO LIST 
BETWEEN TWO LINE NUMBERS. 


TAG 


IL PROGRAM 

ADDRESS n 12 13 MNEMONIC 


032000 326 053 INIT 

032002 322 360 NUNE 

LNECLT 032004 320 070 GETLINE 

032006 322 360 NLINE 



032010 

320 

265 

TSTL 


032012 

032 

022 

JMP DIR 


032014 

320 

360 

INSRT 


032016 

032 

004 

JMP LNECLT 

XEQ 

032020 

326 

131 

XINIT 

DIR 

032022 

232 

041 

TST SI 'LET* 


032024 

114 

105 324 



032027 

133 

310 

CALL AVTEST 


032031 

132 

340 

CALL EXPR1 


032033 

324 

147 

STORE 


032035 

322 

304 

DONE 


032037 

322 

375 

NXT 

SI 

032041 

232 

074 

TST S3 ’GO* 


032043 

107 

317 



032045 

232 

057 

TST S2 ’TO* 


032047 

124 

317 



032051 

132 

343 

CALL EXPR 


032053 

322 

304 

DONE 


032055 

323 

224 

XFER 

S2 

032057 

232 

275 

TST S14 'SUB 


032061 

123 

125 302 



032064 

132 

3 43 

CALL EXPR 


032066 

324 

100 

DONEX 


032070 

326 

027 

SAVE 


032072 

323 

224 

XFER 

S3 

032074 

232 

112 

TST S3A 'IF* 


032076 

111 

306 



032100 

132 

343 

CALL EXPR 


032102 

133 

114 

CALL RELOP 


032104 

132 

343 

CALL EXPR 


032106 

32 5 

151 

CMPR 


032110 

032 

022 

JMP DIR 

S3A 

032112 

233 

326 

TST S4A 'FOR' 


032114 

106 

117 322 



032117 

323 

324 

TSTV 


032121 

326 

363 

ERR 16 


032123 

132 

340 

CALL EXPR 


032125 

324 

147 

STORE 


032127 

226 

363 

TST ERR 


032131 

124 

317 



032133 

327 

305 

FOR 


032135 

132 

343 

CALL EXPR 


032137 

322 

304 

DONE 


032141 

322 

375 

NXT 

# LOC 

# 

032143-032147 ] 

IS UNUSED 

• 

S4 

032150 

232 

226 

TST S9 'PR* 


032152. 

120 

322 


S5 

032154 

231 

322 

TST SBC "** 


032156 

242 




032157 

322 

322 

PRS 

S6 

032161 

232 

173 

TST S7A *,* 


032163 

254 




032164 

322 

342 

SPCZONE 

STB 

032166 

232 

332 

TST S5A '££' 


032170 

215 




032171 

322 

375 

NXT 

S7A 

032173 

232 

202 

TST S7 


032175 

273 




032176 

326 

044 

SPCONE 


032200 

032 

166 

JMP S7B 

ST 

032202 

322 

360 

NLINE 


032204 

322 

304 

DONE 


032206 

322 

375 

NXT 

SB 

032210 

132 


CALL EXPR 


032212 

323 

125 

PRN 


032214 

032 

161 

JMP S6 

SB A 

032216 

322 

304 

DONE 


032220 

322 

375 

NXT 

# LOC 

032222-032225 IS UNUSED, 

1 

S9 

032226 

232 

251 

TST S12 'IN' 


032230 

1 1 1 

316 


S10 

032232 

133 

310 

CALL AVTEST 


032234 

323 

241 

INNUM 


032236 

324 

147 

STORE 


032240 

232 

24 5 

TST SU *,' 


032242 

254 




032243 

032 

232 

JMP S10 

SU 

032245 

322 

304 

DONE 


032247 

322 

375 

NXT 

S12 

032251 

232 

264 

TST S13 'RET' 


032253 

122 

105 324 



032256 

326 

036 

DONE 


032250 

322 

304 

RSTR 


032262 

322 

375 

NXT 

S13 

032264 

233 

200 

TST S14 'END' 


032266 

105 

116 304 



52 




TAG 


SIS 


S15 


S16 


SI 7 
S5A 


EXPR1 

EXPR 

V 

El 

E2 


TERM 

T0 


T1 

FACT 

F4 


T21E4 

FI 


F2 


F3 

S17A 


RELOP 




US 


Dobb's 

Journal 

of 

Computer Calisthenics 

ADDRESS 11 

12 

13 

MNEMONIC 

032271 

322 

360 


NLINE 

032273 

323 

Oil 


FIN 

032275 

232 

306 


TST SI 5 ’ LST' 

032277 

114 

123 

324 


032302 

031 

340 


LST 

032304 

322 

375 


JMP 58A 

032306 

232 

317 


TST S16 ’RUN' 

032310 

122 

125 

316 


032313 

322 

304 


DONE 

032315 

032 

020 


JMP XEQ 

032317 

233 

101 


TST S17A 'NEW' 

032321 

116 

105 

04 

fO 

~*4 


032324 

322 

304 


DONE 

032326 

032 

000 


JMP STRT 

032330 

326 

347 


ERR 12 

032332 

232 

154 


TST S5A •$' 

032334' 

244 




032335 

323 

034 


NXTX 

032337 

000 



NOP 

032340 

232 

343 


TST EXPR ’+* 

032342 

275 




032343 

232 

354 


TST E t> 

032345 

255 




032346 

133 

003 


CALL TERM 

032350 

325 

133 


NEC 

032352 

032 

361 


JMP El 

032354 

232 

357 


TST E3 * * 

032356 

253 




032357 

133 

003 


CALL TERM 

032361 

232 

372 


TST E2 ’+’ 

032363 

253 




032364 

133 

003 


CALL TERM 

032366 

324 

200 


ADD 

032370 

032 

361 


JMP El 

032372 

233 

055 


TST E4 

032374 

255 




032375 

133 

003 


CALL TERM 

032377 

324 

216 


SUB 

033001 

032 

361 


JMP El 

033003 

133 

027 


CALL FACT 

033005 

233 

016 


TST T1 ’*’ 

033007 

252 




033010 

133 

027 


CALL FACT 

033012 

324 

240 


MULT 

033014 

033 

005 


JMP T0 

033016 

233 

055 


TST T2 

033020 

257 




033021 

133 

027 


CALL FACT 

033023 

324 

362 


DIV 

03302 5 

033 

005 


JMP 70 

033027 

330 

032 


TSTF 

033031 

033 

035 


JMP F4 

033033 

031 

300 


JMP FN 

033035 

327 

214 


TSTA 

033037 

033 

047 


JMP F0 

03304 1 

133 

254 


CALL ARRAY 

033043 

324 

133 


IND 

033045 

322 

300 


RTN 

033047 

323 

324 


TSTV 

033051 

033 

057 


JMP Fl 

033053 

324 

133 


IND 

033055 

322 

300 


RTN 

033057 

323 

351 


TSTN 

033061 

033 

065 


JMP F2 

033063 

322 

300 


RTN 

033065 

233 

07 7 


TST F3 

033067 

2 50 




033070 

132 

343 


CALL EXPR 

033072 

233 

077 


TST F3 

033074 

251 




033075 

322 

300 


RTN 

033077 

326 

352 


ERR 13 

033101 

232 

330 


TST S17 'SZE* 

033103 

123 

132 

305 


033106 

331 

000 


SIZE 

033110 

032 

216 


JMP S8A 

033112 

000 

000 


NOP’S 

033114 

233 

123 


TST R0 

033116 

275 




033117 

325 

326 


LITO 

033121 

322 

300 


RTN 

033123 

233 

150 


TST R4 ’<’ 

033125 

274 




033126 

233 

135 


TST R1 *=* 

033130 

275 




033131 

32 5 

334 


1.112 

033133 

322 

SO 0 


HTN 

033135 

233 

144 


TST R3 *>* 

033137 

276 





Orthodontia Box 310, Menlo Park CA 94025 Page 31 


TAG 


ADDRESS 11 12 13 MNEMONIC 



033140 

325 

337 

LIT3 


033142 

322 

300 

RTN 

R3 

033144 

32 5 

331 

LIT1 


033146 

322 

300 

RTN 

M 

033150 

232 

330 

TST S17 ’>* 


033152 

276 




033153 

233 

162 

TST R5 '=* 


033155 

275 




033156 

325 

34 5 

LIT5 


033160 

322 

300 

RTN 

R5 

033162 

233 

171 

TST R6 


033164 

274 




033165 

325 

337 

LIT3 


033167 

322 

300 

RTN 

R6 

033171 

325 

342 

LIT4 


033173 

322 

300 

RTN 


033175 

000 

000 000 

NOP'S 

SU 

033200 

232 

275 

TST SIS ’DIM* 


033202 

104 

111 315 


as 

033205 

323 

324 

TSTV 


033207 

326 

352 

ERR 13 


033211 

233 

077 

TST F3 *<* 


033213 

250 




033214 

132 

343 

CALL EXPR 


033216 

233 

241 

TS1 Z1 V 


033220 

254 




033221 

132 

343 

CALL EXPR 


033223 

2 33 

077 

TST F3 . *>* 


033225 

251 




033226 

327 

032 

DIM2 

23 

033230 

233 

235 

TST Z2 


033232 

254 




033233 

033 

205 

JMP 10 

22 

033235 

322 

304 

DONE 


033237 

322 

375 

NXT 

21 

033241 

233 

077 

TST T3 


033243 

251 




033244 

327 

066 

DIM1 


033246 

033 

230 

JMP 23 


0332 50 

000 

000 000 

NOP’S 


033253 

000 


NOP 

ARRAY 

033254 

233 

077 

TST F3 ' ( ' 


033256 

250 




033257 

132 

343 

CALL EXPR 


033261 

233 

275 

TST 10 V 


033263 

254 




033264 

132 

343 

CALL EXPR 


033266 

233 

077 

TST F3 4 •>* 


033270 

251 




033271 

327 

166 

ARRAY2 


033273 

322 

3 00 

RTN 

Xft 

033275 

233 

07 7 

TST F3 


033277 

251 




033300 

327 

146 

ARRAY 1 


033302 

122 

300 

RTN 

LBTSTRT 

033304 

000 

034 


LSTEND 

033306 

0J6 

037 


AVTEST 

033310 

521 

214 

TSTA 


033312 

033 

320 

JMP VAf 


033314 

133 

254 

CALL ARRAY 


033316 

522 

300 

RTN 

VjS 

033320 

323 

324 

TSTV 


033322 

326 

344 

ERR 11 


033324 

322 

300 

RTN 

S4A 

033326 

232 

150 

TST S4 'NXT* 


033330 

116 

130 324 



033333 

323 

32^4 

TSTV 


033335 

326 

352 

ERR 14 


033337 

327 

324 

NEXT 


033341 

324 

147 

STORE 


033343 

322 

304 

DONE 


033345 

322 

375 

NXT 


033347 

oco 


NOP 

CURLBL 

033350 

000 

000 


PRGSTRT 

033352 

000 

034 


PRGEND 

033354 

036 

037 


COUNT 

033356 

001 



CASE 

033357 

040 



ZONE 

033360 

004 



AELVL 

033361 

100 030 


INDX 

033363 

001 



SBRLVL 

033364 

16<l 

024 


ASTHT 

033366 

377 

057 


ATEMP 

033370 

000 

000 


SEEJU 

033372 

150 



SEED2 

033373 

205 



SEED3 

033374 

341 



SEED4 

033375 

336 



MEND 

033376 

377 

057 



53 






Page 32 February 1976 Dr Dobb's Journal of Computer Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 

/[/.AST /Aisr/WJT fiosTSzmPT Ta /=ouL<hms[ UoST G-o T TH€ U/oRQ T/V/fT TA/Gf Uj/OC S€CL 

l/o /c G S-fA/r/yes/ZCA * IT S FaA $ /OoQ (F m/cy jc^ec T*&y CP IV/ ft4 AAH€T at (.-AST 56$ 

T>£TA/(.S /Je*T ^ /4AJOU) OUA/QT TP/e/ft P'OTCA' T//!i_ /ty.y9A/^-€T /S /// 

J - C Uj, -7H. 


jim day’s 

DAZE 

[reprinted from PCC Vol. 4, No. 5] 

COMPUTERS THAT TALK 

Wouldn’t it he nice if your computer could speak to you in English, French, Ger¬ 
man, or Esperanto like the computer on the starship Enterprise? Then it could say things 
like, “Wake up, sir” or “Gel with it, turkey” (depending on what kind of mood it was in) 
or mayhe, “The time is six o’clock, the temperature is 46 degrees, and tomorrow is your 
wife’s birthday.” Most people have probably assumed that some day, perhaps by the year 
2000, talking computers will he a reality instead of simply science fiction. Well, hang onto 
your prognostications, people, because that day is today! 

In recent years many people have been working on voice output devices for com¬ 
puters. Some of these devices have been electro-mechanical analogs of the human vocal 
tract, similar in principle to the Voder exhibited at the New York World’s Fair in 1939. 
Others have used electronic waveform generators to synthesize human speech sounds. Of 
these, the Votrax synthesizer can truly be said to represent a significant breakthrough with 
respect to voice quality, ease of programming, and cost. 

Smaller than a breadbox and priced at about S3500 for the basic unit, Votrax is 
produced by the Vocal Interface Division of the Federal Screw. Works (500 Stephenson 
Highway, Troy Ml 48004; (313) 588-2050). Any computer capable of outputting a 
string of ASCII code to a terminal can he used lo control Votrax. As an output device, 
Votrax can he used alone or in conjunction with an ordinary TT\, using embedded 
ASCII control codes and simple logic to switch voice strings to Votrax, and print strings to 
the TTY, TVT, or other conventional terminal. 

Programming Votrax is a snap. Using BASIC, FORTRAN, APL, PL/1, or just about 
any other programming language, it’s easy to convert ordinary English (or other natural 
language) into voice strings for Votrax. The best quality of vocal output is obtained by- 
using a dictionary lookup technique lo substitute a string of phoneme codes for each 
English word. Votrax responds to ASCII codes for 63 different phonemes (basic speech 
sounds) and each phoneme can have one of four levels of inflection. 

If perfect voice quality is not essential and random-access file space is not available 
for a large dictionary, an algorithm can be used to convert English words to phoneme 
codes. Such an algorithm, developed by Bell Telephone Laboratories, is said to work 
almost as well as dictionary lookup. An unpronounceable string such as “PPP-8” can be 
spelled out phonetically as though written “pee dee pee dash ate,” and the number 10.6 
can be rendered as “ten point six” by means of a simple subroutine. Pauses can be 
inserted automatically in response to punctuation and paragraphing. 

Maybe you are wondering whether anyone has actually used Votrax and, if so, how 
did they like it? The answer to both questions is yes. People arc using Votrax and they 
like it a lot. For example, the Coast Community College District in Costa Mesa, Calilornia, 
is using Votrax for computer-aided instruction and also in an on-line student information 
system. Votrax was chosen in preference to other audio response units not only because it 
is much less expensive but also because it is ideal for a wide range of applications, the 
size of its vocabulary is unlimited, and it functions well in a real-time environment. In the 
student information system application, Touch-Tone telephones are used as “terminals.” 
Although this limits the user to numeric input, it would be hard to find a cheaper or more 
readily available I/O device. Several extensions to the district’s present use of Votrax are 
being developed, such as a voice-output interface for their on-line budget system, allowing 
administrators to inquire about specific accounts and receive immediate vocal replies. 

David Clements, senior programmor/analysl for the district’s student information system, 
reports that he is amazed at the results achieved with Votrax and believes that synthesized 
voice output will become a widely used medium in the near future. 

Another application of Votrax is as an aid to blind programmers. In the Homer 
system, written in FORTRAN for a CDC 6500 at Michigan State University, Votrax is 
used to echo each line input from a conventional terminal. It is also used to deliver 
FORTRAN diagnostics and as a tool in the editing of source program files. 

Operating in conjunction with an optical page reader, Votrax can be used to convert 
printed matter, such as books, magazines, and newspapers, into audible form. If desired, 
the output from Votrax can be tape recorded for distribution to the blind. 

These are but a few of the uses lo which voice output can be put, and it appears 
likely that voice output will soon become a familiar feature of many computer systems. 
Maybe yours will be one of them. 

(Also sec “Talking Calculator” in November 1975 PCC [Vol. 4, No. 3, p. 9].) 


COMPUTERS THAT TALK - UPDATE 

Jim Day had an article in the most recent issue of PCC discussing 
the use of a Votrax machine to allow a computer to synthesize 
speech [article is reprinted, herein]. In the article, he indicated 
that the machine, essentially a solid-state phoneme generator, 
was priced at about $3500 for a basic system ... a bit high for 
most hobbyists’ budget. [Phonemes are the basic components 
that make up spoken words.] 

Well, we just finished talking to the west coast rep for 
Votrax for about an hour and a half, and have some exciting 
possibilities to report! 

Votrax is currently selling relatively few of their systems. 

It would be easy for the computer hobbyist community to 
significantly increase their sales (and, presumably, thereby drive 
the price per unit significantly downward). And, the rep didn’t 
even know the hobbyist market existed; he does now. 

First of all, the price that Jim quoted was for a turnkey 
system; one that includes two 25-pin interconnect boards, an 
80-byte buffer for the incoming phoneme codes, an amplifier, 
and a power supply Such a configuration is usually expected 
and demanded by the commerical and industrial users. How¬ 
ever, it’s a different matter with computer hobbyists. Hobbyists 
are accustomed to using breadboarding, can supply their own 
buffering via their system’s memory, invariably have the ability 
to input to a hi fi amp, and usually can find super-cheap power 
supplies. 

Assuming this, all that one really needs to purchase are 
the four phoneme generator boards, and have access to the 
interface engineering specifications and schematics. These are 
available for under $2K in small quantities; $1800 @ in groups 
of ten, and $1600 @ in groups of fifty. 

Would you rather have a $1600 hardcopy device or 
the ability to generate English speech, including inflection? 

Since the Votrax equipment is based on phoneme generation, 
the vocabulary is essentially unlimited. Further, since the 
generators are entirely electronic, the equipment has much 
greater reliability than electro-mechanical equipment. Also, the 
Votrax equipment and circuitry has been in the field for about 
half a decade, now, and is thoroughly debugged. 

If you would like for Votrax equipment to become 
available to the hobbyist community: 

(1) Write to John McDaniel, Votrax, 4340 Campus Dr., 
No. 212 Newport Beach, Ca. 92660; tell him that you would 
like for your computer to be able to talk to you, and indicate 
how much you would be willing to pay for that facility. Give 
him correspondence to support him when he approaches Votrax 
management. Make him and them aware of their untapped 
potential market for stripped-down systems in the hobbyist 
community. 

(2) Tell the owners of your local computer store 
about Votrax and encourage them to contact Mr. McDaniel. 


54 





February 1976 Dr Dobb's Journal of Computer Calisthenics & 



A BIT OF BLUE SKYING 

Bob, February 19, 1976 

By all means keep up the Calisthenics & 
Orthodontia. But I suspect that as Tiny BASIC 
matures it will acquire a full set of canines, bicuspids, 
and molars. As the price of main memory continues 
to drop, the need for a minimal BASIC will assume 
less importance and the emphasis will shift to better 
performance and convenience. Still, IL is a good tool 
for those who may want to experiment with variants 
of BASIC or some other language. As unlikely as it 
may seem, I think that by 1980 most hobbyists will 
be using a subset of PL/1. I also preduct that the 
1980 hobbyist will own a computer system the size 
of a breadbox and comprising a 16-bit CPU, 25 6K 
bytes of main memory, 8M byte floppy disc, dual 
tape cassettes, full ASCII keyboard, CRT display, 
modem, and non-impact printer (all in one box). The 
whole thing will sell (assembled) for $695 at Sears 
and will have the computing power of an IBM 370. 
Last, but not least, the CPU chip will be designed 
expressly for the hobbyist, not for some pedestrian 
application such as traffic signal control. 

Jim Day 17042 Gunther St 

Granada Hills CA 91344 


Orthodontia Box 310, Menlo Park CA 94025 Page 33 


Dear Bob, February 4, 1976 

Thank you for your note and interest. Our 
system is growing by small leaps and bounds. We 
have an Altair 8800 with the Processor Tech, mother 


board. We also have the following items: 


Qty 

Description 


1 

VLCT (octal loader) 

Altair 

1 

PIO 

Altair 

1 

256 byte static RAM board 

Altair 

2 

4K RAM boards 

Godbout 

3 

4K RAM boards 

Proc. Tech. 

1 

3 P + S 

Proc. Tech. 

1 

wire wrap prototype board 

TCH 

1 

cassette interface 

TCH 

1 

VDM 

Proc. Tech. 

1 

Real time clock and VI 

IMS 

1 

ASR-33 (10 cps) 

Teletype 

1 

Silent 700 (30 cps) 

TI 

1 

2K ROM board 

Proc. Tech. 


We are building a version of the TCH graphics 


interactive display with direct Altair plus in boards 
(double-sided). 

We are also ordering the Processor Tech, dual 
cassette drive, controller and PTCOS. 

We have several interactive editors, assemblers, 
monitors, and cross assemblers. We are currently 
experimenting with minimal editors and assemblers 
and have a strong desire to put together a micro- 
BASIC (Tiny BASIC). The editor package looks like 
it will be around 510-512 bytes and the same for a 
“mini-assembler.” We are also looking for 4K, 8K, 
and 12K BASICS which are public. 

We are hoping to eventually acquire a TV 
Dazzler and a floppy disc to extend our system. 
Future desires also include the IMS shared processor/ 
memory and an additional CPU board in addition to 
12K-16K more low power status RAM memory. 

Who knows what else the future has in store? 

We are strongly interested in developing soft¬ 
ware (for the Altair and other micro-processors) 
which can be used for instruction and instructional 
support in the school media center. 

Our research interests vary considerably here 
so we also will be running some basic human learn¬ 
ing experiments under processor control. We have 
been involved in research in CAI and computer- 
managed instruction for about 9 years here. We have 
PLANIT, COURSEWRITER, PICLS, PLATO 
(TUTOR), and BASIC available and a wide range of 
instructional programs for these languages. 

Franz Frederick 112 Education Big 

Associate Professor Purdue University 

W. Lafayette IN 47907 

Franz, We would be very interested in publishing the 
source code and documentation (user and implemen¬ 
tation details) for the “tiny” editors and assemblers 
you are implementing. Any chance of your forward¬ 
ing copies, once they are up and running? -JCW, Jr 


55 













Page 34 February 1976 Dr Dobb's Journal of Computer 


TBX MODS FOR A SWTP TVT-2 

Dear Dennis and all TB people, 

First of all, thanks to Dick Whipple and John 
Arnold for a great job they have done on TB, and 
for making their program available. Many hobbyists, 
including myself, don’t have the skill or time to write 
anything as complex as an interpreter. 

TBX is working and programming is now FUN. 

It took about six hours to put TBX on a cassette. 
Loading TB from TP (tiny print) is a severe strain 
on the eyes. 

A listing of the I/O routines for my Altair/TVT-2 
system is enclosed. An instruction is encluded in the 
Entry Routine to turn on the TVT cursor and initiate 
a Home Up/Erase Frame. In the Input routine the 
code for ESC should be 033; otherwise a rubout 
(backspace in TBX) will give a system restart. The 
basic Altair executes a RST 7 if the keyboard is tied 
directly to the interrupt bus. I had to change the in¬ 
struction at 000070 to 311. No harmful effects so far. 


000 000 076 004 

MVI A 

Turn on cursor on 

002 323 002 

OUT 

TVT & initiate 

004 061 377 000LXI SP 

Home up/Erase fr. 

007 303 254 021JMP 

TBX entry point 

020 076 012 

MVI A 


022 357 

RST 

Output LF 

023 076 015 

MVI A 


025 357 

RST 

Output CR 

026 311 

RET 


030 373 

El 


031 166 

HLT 

Wait for KBD entry 

032 333 001 

IN 

Input KBD charctr 

034 346 177 

ANI 

Mask parity bit 

036 376 033 

CPI 

“ESC” 

040 312 000 000JZ 

System entry 

043 357 

RST 

Echo character 

044 311 

RET 


050 365 

PUSH PSW Save registers & flags 

051 323 001 

OUT 

Output character to TVT 

053 333 002 

IN 

Wait for “data ac¬ 

055 037 

RAR 

cepted” signal 

056 322 053 

000JNC 

from TVT 

061 361 

POP PSW 

Restore register & 

062 311 

RET 

flags 

070 311 

RET 

Keyboard interrupt 


PORT ASSIGNMENTS: 

IN 001 ASCII keyboard input 
OUT 001 Character output to TVT 
IN 002 “Data accepted” from TVT 
OUT 002 Cursor control to TVT 


Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 


TINY BASIC AVAILABLE FOR THE 6800 

A version of Tiny BASIC has been developed for the Motorola 
and AMI 6800. A tape and instruction manual for it are 
available for $5 from: 

Tim Pittman 
Box 23189 
San Jose CA 95153 
(408) 578-4944 

We understand that the source code will not be made available, 
however, we expect that Tom will back his product . . . 
and the price is right. 

We would be interested in hearing of the joys and/or 
woes incurred by those who purchase Tom’s Tiny BASIC. 



BYTE SWAP 

We are experimenting with offering a “Want Ad” section. We 
will continue to do it as long as we can afford it (in terms of 
staff time and printing costs). Note: the charge for running an 
ad will undoubtedly increase as our circulation (and printing 
costs) increases. 

Please follow these instructions in submitting ads. Ads received in 
other than this form cannot be accepted, and will be returned to the 
sender. 

1. Type the ad, with a blank space between each line, in lines no 
more than 50 character positions in length. 

2. Include at least your name and address as part of the ad. 

"Blind" ads will not be accepted. 

3. Compute the charge on the basis of $1 per line or partial line, 
per issue. 

4. Forward the typed copy and a check or money order payable 
to "PCC," to: DDJ Byte Swap, PCC, Box 310, Menlo Park CA 94025. 
Do not send cash. Your cancelled check is your receipt. Payment 
must accompany the ad. 

aBeegoooeaofloeooooaBaeooeaeaaaaaaeaaaaaaaaaa 

SAVE MY MARRIAGE! Buy my new assembled IMSAI 8080, loaded 
22 slot mother board, 8k Ram, regular price, $1835.00. Will sell to 
highest bidder above $1700.00. Also, IMSAI 8080 kit, still in box, 
large mother board, regular price $578.00. Will sell to highest bidder 
above $547.00. Send bids to: Eric Stewart, 664 Via Alamo, San 
Lorenzo CA 94580. 


I am looking forward to an annotated source 
code listing for TBS; like to do some tinkering. 
Floating point and math functions would also be nice 
to have. Dr Suding’s scientific calculator interface 
looks good. However, it’s only available through 
MiniMicroMart and doing business with them has 
been a frustrating experience. 

When deciding on the future of the newsletter 
keep in mind that hardware is available and getting 
cheaper. Software has been a big problem and prob¬ 
ably will be for some time to come (unless you can 
afford to pay for it). The newsletter is a step in the 
right direction to solve this problem. Please don’t 
stop after three issues. 

Adolph Stumpf 5639-A Ute 

Glendale AZ 85307 


56 













dr dobb's journal of 


$ 1.50 


COMPUTER 

(Calisthenics & Orthodontia 

Running Light Without Overbyte 


March, 1976 


Box 310, Menlo Park CA 94025 


Volume 1, Number 3 


A REFERENCE JOURNAL FOR USERS OF SMALL COMPUTERS 


In This Issue. . . 


Denver Tiny BASIC, including 1-D arrays — user & implementation details, and source code 
A Breakpoint Routine for MOS Technology 6502’s 
Keyboard Loader for Octal Code via the TVT-2 
Program Repository & Tape Duplication Facility 
Programming 

Division remainder & Multiplication overflow 
Notes to Tiny BASIC Implemented 
Parser Saves Pain & Another BASIC Bombout 
APL’s Appeal 
Music & Computers 

Mods to Dompier’s Music Program 

Computer Process for Rapid Production of Musical Compositions (big machine stuff) 

Computer Speech & Computer Sensing 

It Can Talk . . . But, Can It Sing? Touchless Sensing for Under $100 

Bugs & Fixes 

Altair Hardware Glitches & Fixes Grammar Glitch in Extendable Tiny BASIC 

SPHERE-ical Complaint 


Proposed Functions for Tiny BASIC 
Tiny BASIC Suggestions & Mark-8 Needs 
6800 Tiny BASIC for $5 
Signetics 2650 Tiny BASIC 


Quik Bits 

Seattle Computer Hobbyists Unite 
New Jersey Computer Festival 
Southern California Computer Society 
16K BASIC for the 8008 (public domain) 


Diablo Printers 
Microcomputer APL 
8080 Systems for the Wealthy 
Monterey Computer Phreaques 


Future Stuff 

Where Do We Go From Here? Our ‘Want’ List 

A Public Interest Communications Satellite 
Miscellaneous & Nitty Gritty Stuff 

Signetics 2650 Kit for Under $200 — includes 1K monitor ROM and 512 bytes of RAM 
Submitting Items for Publication PCC Bookstore and Byte Swap (ads) 


57 





Where do we go from here? 


To date, Tiny BASIC has dominated the issues of this Journal. Perhaps that is as it should be in view of 
the fact that Dr. Dobb’s Journal initially came into being for the single purpose of discussing T.B. There will con¬ 
tinue to be considerable information about T.B. carried in at least the next several issues. We are particularly 
interested in publishing implementations on microprocessors other than the 8080. 

However, we do not mean to be “pushing” Tiny BASIC, or even full-blown BASIC. We do not consider it 
to be a particularly desirable language for many - perhaps most - purposes (see “A Critical Look at BASIC,” 
written by the originator of Tiny BASIC, in the preceeding issue). It’s simply “better than nothing,” and some¬ 
times even better than an assembler. It was fun to do, but it is now time to begin moving on to more worthy 
and useful projects and languages. 

We have already begun to move. In the area of systems software, we expect to publish details of assemblers, 
debuggers, and an already-up-and-running floppy disc operating system within the next several months. In some 
cases, we will present complete implementation and user documentation, including annotated source code. In 
other cases, we will publish partial details of such systems, and directions on how they may be purchased for 
little more than the cost of their reproduction. 

By the Fall, we expect to publish some exciting graphics software, and some more music software. All of 
this will be available at very low cost and/or will be in the public domain. 

We will continue the active pursuit of “realizable fantasies.” By this, we mean projects that we feel are 
1) within the bounds of current technology and knowledge, 2) can be implemented by members of the hobbyist 
community, and 3) can, for the most part, be realized within the next 24 months, or less. 

This specifically includes projects concerned with computer music, real-time video graphics, computer speech, 
and unusual input techniques (e.g. the “Touchless Sensing...” article on page 13). 

We will also explore more esoteric uses of home computers such as residential environmental control, elec¬ 
tronic phone books, biofeedback, computer animation, community memory and shared memory, computer 
networking via radio and telephone, electronic newspapers, and who knows what else. 

If no other means is available, we will pursue these projects in the same manner as was so successful with 
the Tiny BASIC project: 1) We will propose a project in broad outline form. 2) That will be followed with 
a moderately detailed outline of how it might be accomplished. 3) Finally, we will publish information 
concerning the implementations, improvements, and variations that result. 

For simple projects, Steps 1 and 2 may require only two articles. For more exotic ventures, it will take 
a number of articles to get through the outline and design stages. 

You are part of this. The Journal staff and hangers-on will propose and detail some of these projects. 
However, the Journal is primarily a communication medium and intellectual rabble-rouser. As often as not, 
the proposals and designs and certainly the implementations will come from you. 

You. . . the hobbyist / inventor / dreamer. Send us your ideas, your creations, your problems, and your 
solutions, so that we may share them with everyone. The more we all share; the more we all gain. 

Send us your realizable fantasies. 


March, 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 3 


58 






€uik 

SEATTLE COMPUTER HOBBYISTS UNITE 

The Northwest Computer Club held its first meeting on 
January 12th. The Seattle area almost had three clubs start, 
independently of one another, in January. Fortunately, however, 
their organizers discovered each other and joined forces. 

They meet at 7 p.m. on the first and third Tuesday of 
each month, usually at the Pacific Science Center. Their first 
newsletter was published in March. The Editor is Bob Wallace, 

Box 5415, Seattle WA 98105, (206) 524-6359 (11 a.m. - 3 p.m.). 
Phone him for subscription information, or write: Northwest 
Computer Club, Pacific Science Center Foundation, 200 - 2 Ave 
N., Seattle WA 98109. 


NEW JERSEY COMPUTER FESTIVAL 

Over 2K hobbyists are expected to attend the May 2nd 
Amateur Computer Convention in Trenton, NJ. The gathering, 
called the “Trenton Computer Festival,” will include exhibits, 
technical talks, panel discussions, and (perhaps most important) 
ample opportunity for personal interchange. It will be held at 
Trenton State College. 

It is sponsored by the TSC Digital Computer Society, and 
the Amateur Computer Group of New Jersey. For details, con¬ 
tact: Prof. Sol Libes, Union County Technical, Scotch Plains NJ 
07076, (201) 889-2000; or Dr Allen Katz, Trenton State College, 
Trenton NJ 08625, (609) 771-2487. 


MICROCOMPUTER APL 

MAPLE stands for Microcomputer APL Enthusiasts, a 
group interested in promoting the development of APL for 
micros. APL is an exotic computer language designed by Ken 
Iverson in the early 1960’s. It uses a highly compact notation 
and contains a number of quite powerful operations. 

MAPLE is interested in serving as the focus for design and 
implementation of microprocessor APL interpreters, firmware to 
support the APL character set on TVT’s and matrix printers, 
etc. Those interested in working on such projects should contact 
John Sikorski, Box 574, Northwestern University Medical 
School, 303 E. Chicago Ave, Chicago IL 60611. 


TINY BASIC IN SOUTHERN CALIFORNIA 

We hear that a version of Tiny BASIC has been implement¬ 
ed for the MOS Technology 6502, and has been seen scurrying 
about at the Southern California Computer Society. Anyone 
know if there is truth in that rumor? If so, wanna place it in 
the public domain via publication in Dr Dobb’s Journal ? We’d be 
delighted to do so. 


sees GROWS AND GROWS 

The Southern California Computer Society has told us 
that they have about 3000 members, and are currently process¬ 
ing about 1500 new membership applications. 

Page 4 Dr. Dobb's Journal of Computer Calisthenics & 


bits 

DIABLO PRINTERS FOR OEMers 

For those who are into daisy-wheel printers, Diablo is hi- 
balling their printer developments. The HyType II is in production, 
and is rumored to be a considerable improvement over the HyType I. 

OEMers (Original Equipment Manufacturers) can buy ’em for 
about $1,335 in single-unit quantities. With appropriate stationery, 
you or your distributer probably could do so, also. There is cur¬ 
rently a 3-4 month backlog on orders. Diablo has also announced 
45- and 55-CPS printers, and more options: bottom paper feed, 
end-of-ribbon and paper-out signals, 8-bit parallel microprocessor 
and RS-232 interfaces, more type faces and ribbon options, etc. 
Diablo is located at 24500 Industrial Blvd, Hayward CA 94545. 


8080 SYSTEMS FOR THE WELL-TO-DO 

If you are a wealthy software phreaque, and not much into 
hardwaring, Microkit, Inc., is making a complete 8080 development 
system for $3,850. It includes an 8K memory, alphanumeric CRT 
display, ASCII keyboard, two cassette tape units, and software 
including a monitor, editor, assembler, and debugger. The tape 
units use a proprietary recording technique to squeeze 2000 BPS 
out of audio cassettes with “reliability comparable to digital 
cassettes.” 

They are located at 2180 Colorado Ave, Santa Monica CA 
90404; 213-828-8539. 


16K BASIC FOR THE 8008 

The following publication is available for $4.25 from 
NTIS: National Technical Information Service 

5285 Port Royal Rd, Springfield VA 22161 

No. PB-235 874-Weaver, A.C., M.H. Tindall, and R. L. 
Danielson, A Basic Language Interpreter for the Intel 8008 
Microprocessor. 52 pp. 

A BASIC language interpreter has been designed for use in 
a microprocessor environment. This report discussed the develop¬ 
ment of 1) an elaborate text editor and 2) a table-driven inter¬ 
preter. The entire system, including text editor, interpreter, user 
test buffer, and full floating point arithmetic routines fits in 
16K words. 


MONTEREY CPU’S- 
COMPUTER PHREAQUES UNITED 

A new computer “club” is starting up in the Monterey/ 
Carmel/Seaside/Pacific Grove area of California, named “CPU.” 
They have about 15 or 20 members [as of April 8th; things 
change fast]. For more data, contact: 

Mac McCormick 
2090 Cross St. 

Seaside CA 93955 
(408) 393-2422 

hodontia. Box 310, Menlo Park CA 94025 March, 1976 


59 










Letters 

[LETTER WRITERS: Please, please, please include the date and 
your address in your letters. Also, note that we assume we can 
publish anything sent to us, unless there is an explicit indication 
to the contrary. If you do not want something published, e.g., 
your phone number ; be sure to so state.] 

FREEKSHOW DELIGHT 

People’s Compusymbolator Conglomeration: 30Jan76 

Re: Tiny BASIC, of course! 

The whole project is a wonderful idea. I favor interactive 
languages, thus, highly value the IL approach for the multi- 
linguic reason mentioned by William Catteg. Of course, for step 
1, I’ll keep it simple (stupid) by concentrating on TBASIC 
(TASIC? TINIC?). What’s more basic than basic BASIC? Prime? 
Simple? Backbone? (OSTEOBASIC?) Keel? Plain? With that end 
in view, I hope Dennis A., Bernard G., and Happy L. will find 
my check and send me the journal. 

I haven’t had time to contemplate every aspect completely, 
’though the letters in PCC Vol. 4, No. 2 & 3 are elucidating. 

The only suggestion I have that would make a useful feature 
available at low added overhead: a way to get at the remainder 
from division, & overflow from multiplication (comparable to 
access to an MQ register on the hardware level). Use a reserved 
word? (REM, for instance-not a function, rather like a variable 
containing the remainder or overflow from the last or ^operation.) 
No-K.I.S.S. A reserved variable (R)? No-don’t deplete our 
already small collection of variables. Alright, then, a symbol %,- 
perhaps. I’ve included an example of how I think a dialog using 
it might look. 

A direct or “top-level” dialog: 

System in italics. Me in boldface. 

? PRINT 35/3 cr 
... 11 

? PRINT % cr 
... 2 

? PRINT % + 1, 2 + % cr 
. . . 3... 4 
? PRINT 2*3, % cr 
... 6 ... 0 

? PRINT 9/5, %, %/3, %, %*2, %, %*7, % cr 
1 4 1 1 2 0 0 0 

? PRINT 3*10923, %, 4*8192, % cr 
1 10 1 

? REM- F t cr 

1234 

? REM- VALUE OF THESE ARE MATHWISE = 1*32768 cr 
1234 (Syntax error message-TBASIC doesn’t have a REM) 

Intuitively, doesn’t seem to me to need very much extra 
interpreter overhead. Might be able to use it for borrow/carry of 
the -, &, + operations too. It seems like a good compromise 
feature. 

Pax & lux, 

Chris Johansen 176 Grove St 

Freekshow Electronworks Auburndale MA 02166 



Chris, I dig you on the remainder problem. In regular BASIC, 
we do it like this 

LET Q = INT(A/B) 

LET R = A - Q*B 

Or, in Tiny BASIC, using integer arithmetic, 

LET Q = A/B 
LET R = A ~ Q*B 

If you want only the remainder, do it like this: 

LET R = A - (A/B)*B 

hi some BASICs there is a MOD function, which computes 
remainder. 

LET R = MOD(A,B) 

Do, do, do tell me about Freekshow Electronworks!!! One of 
the next moves for PCC will be slowly into electronic music 
and art and biofeedback and . . . computer sound and light 
environments, . . . -Bob Albrecht 


PROPOSED FUNCTIONS FOR TINY BASIC 
Tiny BASIC a la Dragon 

To make things easy for tiny kids and old dragons, I 
would like to see the Tiny BASIC RND function look like this: 

RND(a,b) gives random integer from a to b, inclusive 
RND( 1,100) gives random integer from 1 to 100, inclusive 
RND(100,1) gives random integer from 1 to 100, inclusive 
And, of course, a and b can be expressions. 

Still thinking about things for kids, here are some 
addititional functions I’d like to see . . . (someday). 

SGN(a) 1 if a > 0, 0 if a=0, -1 if a < 0 
TAB (a) Tab to print position a 
MOD(a,b) Remainder on dividing a by b 
GCD(a,b) Greatest Common Divisor of a and b 
XCH(a,b) Exchange a and b 
MAX(a,b) Maximum of a,b 
MIN(a,b) Minimum of a,b 
LPF(a) Least Prime Factor of a 
GPF(a) Greatest Prime Factor of a 

Or should we scrap BASIC and start over? 

The Dragon PCC 

Box 310 

Menlo Park CA 94025 


March, t976 _Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 5 


60 













MODS TO DOMPIER’S MUSIC PROGRAM 
& ALTAIR HARDWARE GLITCHES/FIXES 

Dear Editor, March 30, 1976 

I am sending you my modifications to Steve Dompier’s 
Altair music program [see Dr Dobb’s Journal, Vol. 1, No. 2, 
p. 6]. Using this program you can store several tunes in mem¬ 
ory and select which one will be played by using the sense 
switches. Each tune is stored with its first note at HI adr. 
“XXX,” and LO adr. “000.” (“XXX” is any HI address avail¬ 
able in memory.) Each tune will be played when its HI adr. 
is selected by the sense switches. If a new address is selected, 
the first tune will complete, and then the next one will start. 

Perhaps some of your readers would also be interested in 
some of the problems I had in de-bugging my Altair. The fix 
for the RAM board has been published before, but it is still 
not in the Altair manual. 

On the 4K dynamic RAM board, connect pin 10 of IC 
“T” to ground (pin 11) instead of to plus 5 volts. If IC “T” is 
already installed you must remove it to get at the PC board 
land that must be removed. Also, connect a .01 MFD capacitor 
from pin 5 of IC “T” to ground. These changes stabilize the 
operation of the protect flip-flop. 

On the CPU board, some of the capacitors being supplied 
for C5 in the clock circuit are off tolerance, causing the 02 
clock pulse to be too wide. This prevents the CPU from writing 
into memory correctly. (In my case, the result of any arith¬ 
metic operation was octal 377 written into memory.) The Mits 
engineer I talked to suggested trying other lOOpf capacitors for 
C5. I didn’t have any so I instead changed R42 to 5.6K and 
this worked fine. 

If your kit comes with a little blue capacitor for C5 you 
should be on the lookout for this problem. 

Bob Wilcox 902 N. Washington 

Owosso MI 48867 


GRAMMAR GLITCH IN 
EXTENDABLE TINY BASIC SPECS 

Dear PCC, 

In the Nov., ’75 issue of PCC [reprinted in Dr. Dobb’s 
Journal, Vol. 1, No. 1, p. 10], John Rible’s extendable Tiny 
BASIC seems to have an error in its grammar. The entity 
<iline> does not appear in the righthand side of any rule. 

This would seem to mean that there is no way to utilize this 
rule. To correct this is a manner which will follow the author’s 
intent, I would recommend changing the rule 
<program> : :=<pline> 
to 

<program> : :=<pline> | <iline> 

Thanks for your attention. 

Donald D. Hartley 3415 NE Manchester 

Corvallis OR 97330 


DOMPIER’S ALTAIR MUSIC PROGRAM 
MODIFIED 


ADR 

DATA 

000 

333 

001 

377 

002 

147 

003 

056 

004 

000 

005 

176 

006 

376 

007 

377 

010 

312 

Oil 

000 

012 

000 

013 

026 

014 

XXX (Tempo: higher = slower) 

015 

005 

016 

302 

017 

022 

020 

000 

021 

106 

022 

015 

023 

302 

024 

015 

025 

000 

026 

025 

027 

302 

030 

015 

031 

000 

032 

043 

032 

303 

033 

303 

034 

005 

035 

000 


Dear Sir, March 26, 1976 

I ordered a system 3 assembled from SPHERE in 
September 1975 during their introductory offer period. Until 
now, almost 180 days after I sent the check, I have not yet 
received the system. I already wrote them another nasty letter 
a few days ago. If I don’t hear from them in early April, I will 
write another nasty letter and send copies to all the hobbyist 
computer clubs in the States. Also I will have to write to FTC 
concerning this matter. 

Sincerely yours, 

Eugene Cheng Box 6177 T.S.T. 

Kowloon, Hong Kong 


Jim: April 12, 1976 

DDJ could perform a great service to hobbyists by coming 
down hard on kit manufacturers who have lousy documentation. 
Send out a call for very carefully done criticisms on documentation. 
Bob Albrecht P.O. Box 310 

Menlo Park, CA 94025 


Page 6 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 March, 1976 


61 




«If you only subscribed to the first three issues, m* 

‘ YOUR SUBSCRIPTION HAS RUN OUTl 
If you like what you have seen, and want to see more,^! 
hurry and send in your subscription renewal. 

See page 33 for details & form. 



1 


TINY BASIC EXPANDERS, 

TAKE NOTE 

Dear Bob, 28 Aug 1975 

It would be nice to have CLOAD, CSAVE for cassette 
LOAD/DUMP. Also eventually a floating point package to 
replace the integer arithmetic. 

3723 Jackstadt 

Paul Farr San Pedro CA 90731 

Dear Tiny BASIC, 

I have a suggestion. Identify all subroutines required, then 
split them into 8080 and 8008 Groups. Let those of us with 
8008s in on a good thing. 

By the way, I think a stack should be included in the 
8008 program as it is easy and cheap to add. 

Sincerely, 2914 Snyder Ave 

Lee Hanson Cheyenne WY 82001 

Hey implementers: How ’bout trying to isolate 8080 code that 
will cause 8008 owners headaches? Then they will need only to 
modify those headache routines in order to share your software 
and praise your thoughtfulness. -JCW, Jr 


Dear Sirs, 19 Jan. 1976 

I am currently working on a Tiny BASIC interpreter to 
run on my Altair 8800, and at the same time, am interested in 
the educational aspects of computers. 

613 Willow Oaks Blvd 

M.B. Bloodworth Hampton VA 23669 


TINY BASIC 
& MICRO-8 

Dear Editor 3/31/76 

I noted your request for Tiny BASIC suggestions: 

1. KEY WORD TABLE: with key words (“PRINT”, built- 
in fuctions like ABS, etc.-ignore or eliminate LET in stored 
programs?) versus a special 8-bit code assigned to it (codes from 
octal 200 to 377 could be reserved for such special purposes, 
and 040 through 137 would be regular ASCII characters) versus 
the address of a routine to perform the execution for that 
keyboard. 

Interpretation routines would be set up to use this same 
table to convert both ways between key words and those special 
coded bytes. (I.e., for when a user enters a program, the key 
words get condensed to a single byte and stored in memory; 
and when the program is LISTED, these special bytes get con¬ 
verted back to keywords.) 

If there are several parameters or “control modes” that 
need to be controllable by the user as well as accessible to the 
user (by displaying the “status” of something?), then it may be 
advantageous to modify that table so each “definition” (which 
need only be 1 byte) implies the address of the parameter in 
memory, and the address of a pair of subroutines. One to take 
input from a keyboard, perform a code conversion unique to 
this pair of subroutines, and store the resulting data in the 
proper memory location. The other would perform the reverse 
conversion and output the result. 

This would have the overall effect of making your 


“portable” interpreter efficient at interpreting tables, especially 
if several tables are used. 

2. OUTPUT PAGE WIDTHS: you will, no doubt, find it 
necessary to allow for different page widths (line lengths) on 
different output devices, etc. TVT-I & II have 32 characters per 
line; and have no need of carriage returns if you want to con¬ 
tinue on the next line, after storing the last character on the 
previous line. Note, however, that carriage returns on TVT-I 

(I don’t know about TVT-II-haven’t studied the RE schematics 
in detail) do not blank the characters they skip over (in the 
original version, anyway). 

It will be highly desirable not to split words/numbers 
between lines, therefore it is necessary to more than just have 
Tiny BASIC call a user-defined subroutine to output characters. 
The user may also want to output to more than one device in 
the same session-further complicating the problem of different 
line lengths. I suggest you have 2 routines: 

a) One that is given a string of characters to be outputted 
without splitting between lines. (Say, with beginning address in 
HL and end address in DE, or length? or 1 register?) This 
routine would then take appropriate action depending on 
whether this additional segment will fit on the current line, by 
making use of access to the current line length accessible to it~ 
but not to the program that called it. 

b) Another-user-defined-subroutine that handles the 
actual output characters, which is separate from the user- 
defined line length parameter. (I have implemented a scheme 
very similar to this on the IBM 360 and the-then RCA Spectra 
70-which have the same user = non-privileged instructions, but 
the I/Omacros are quite different-in which the same program 
could be used in either batch or time sharing mode as well as 
accommodate a variety of page widths on printers and termin¬ 
als.) 

3. INFIX (ALGEBRAIC) EXPRESSION INTERPRETA¬ 
TION: If you want, I can supply information on an algorithm 
that uses stacks for result numbers and saving binary operators 
that have to be delayed one operand/expression before execu- 
tion-without having to scan the algebraic expression more than 
once. 

While I find your Tiny BASIC project intriguing, I am not 
interested enough to spend the money to subscribe to yet 
another journal. Pop, (Victor W. Amoth) doesn’t seem to think 
computer hobbyists need high level languages, even though his 
programming experience is almost entirely confined to BASIC on 
GE time sharing-he’s still very “green” at programming in 
machine language on the Mark-8. 

My expertise runs the full range from hardware through 
software to continued fraction series for transcendental func¬ 
tions. I’m interested in further developing the “asynchronous 
I/O ports” I implemented. They make hardware automatically 
take care of “waiting,” etc., and make possible my 180 cps TVT-I 

[please continue on page 31] 


March, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 7 


62 




PROGRAM REPOSITORY & TAPE DUPLICATION FACILITY 

A PUBLIC DOMAIN ALTERNATIVE TO MANUFACTURERS’ USER GROUPS 


The Community Computer Center (CCC) will act as a 
repository for program tapes; both source tapes and binary tapes. 
Everyone wishing to contribute programs to the public domain 
may do so by forwarding appropriate paper tapes to CCC. In 
particular, if you are hesitant about submitting a program for 
publication in Dr. Dobb’s Journal because you don’t want to 
hassle with its distribution, you are encouraged to forward the 
tapes to CCC and the documentation to the Journal for publication. 

The CCC will thus serve as a desirable alternative and 
supplement to the User Groups that are controlled and operated 
by many of the processor manufacturers, some of whom charge 
up to $100 for “membership” and access to the programs that 
their customers developed and offered to the User Group, without 
compensation. 

There is no membership fee for access to the tapes from the 
Community Computer Center. Instead, one pays only for the 
duplication and mailing costs: 

Duplication charge: $1 /ounce or fraction thereof, for tapes 
(weighed after punching on fanfold tape) 

(Add 6% tax for orders mailed to a California address) 
Postage & handling: $0.50 on orders of $5 and less 
$1 on orders exceeding $5 

Payment must accompany all orders. Orders will be mailed 
First Class, within 3 days of receipt. 

Lists of available tapes will be published, periodically, in 
Dr. Dobb’s Journal, as well as being available from CCC: 

Community Computer Center 
1919 Menalto Avenue 
Menlo Park, CA 94025 
(415)326-4444 

The following source tapes are currently available. They 
are programs written for the version of BASIC that is implemented 
for the HP 2000F minicomputers, and are discussed in What To Do 
After You Hit Return (available from the PCC Bookstore, $6.95). 


Number Guessing Games $ 12 

Number 2 

Abase 3 

Trap 2 

Stars 2 

Clocks 3 

Bagels 2 

Quadgt 3 

Button 2 

Word Games $10 

Letter 2 

Abagel 3 

Hangmn 3 

Madlib 6 

Word 2 

“Nimlike” Games $ 11 

23Mtch 2 

Batnum 3 

Nim 4 

Chomp 3 

Zot 5 


Page 8 


Hide-n-Seek in 2D $ 4 

Hurkle 2 

Mugwmp 2 

Snark 2 

Pattern Games $11 

Dangle 2 

Sunsgn 3 

Biosin 3 

Mandal 3 

Life 3 

Amaze 3 

Board Games $11 

Qubic5 5 

Gomoku 4 

Teaser 3 

Rover 5 

Welcome to the Caves $ 9 

Caves 1 5 

Wumpus 4 

Caves2 5 

Business & Social Science $22 
Hamrbi 3 

King 5 

Civil2 7 

Market 5 

Stock 5 

Policy 4 

Polut 4 

Science Fiction Games $12 

Trader 10 

Sttrl 9 

Last Chapter $ 10 

Crash 4 

Lunar 3 

Revers 2 

Zeros 3 

Taxman 3 

The following games are in 
Dartmouth BASIC 

Motie 5 

Rescue 5 


For historical reasons, 

CCC maintains a different price schedule for postage and handling 
on this particular set of tapes: 

duplication charge and tax, as above 
postage and handling: 

$0.50 on orders under $10 
$1.00 on order of $10 or more 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


March, 1976 


63 



SIGNETICS 2650 KIT FOR UNDER $200 

[from Roy Blacksher, MOS Microprocessor Applications 
Manager, Signetics, 811 E. Arques, Sunnyvale CA 94086; 

(408) 739-7700] 

The Signetics Adaptable Board Computer, ABC 1500, is a 
modular microcomputer containing a CPU, memory, I/O ports 
and support circuitry. It is designed to cover a broad range of 
applications from software development to system hardware 
prototyping. Cost performance trade-offs have been carefully 
considered to achieve maximum flexibility and allow the card 
to be tailored to a variety of individual requirements. 

The basic configuration consists of the 2650 microprocessor, 

512 bytes of read/write memory (four 2112 static RAM’s), IK 
bytes of 2608 ROM with PIPBUG*, two 8T31 I/O ports and 
buffering on data, address and control lines. A single +5 volt 
supply will be required to power the card and communicate 
with a serial 20 ma current-loop terminal. 

Modifications to the basic system can be easily made to allow 
for various memory configurations and operating modes. Unused 
plated-through holes are provided for the PROM memory chips 
(82S115’s). Other options are jumper selectable. 

The ABC 1500 is sold either as a completely assembled and 
tested card (2650 PCI 500) or in kit form (2650KT9500). The 
kit is priced below $200. 

FEATURES 

-- Expandable printed circuit card: unused area on card 
filled with plated-through holes on .300-inch centers for 
wirewrap sockets. 


PUBLIC INTEREST SATELLITE ASSOCIATION 

The Public Interest Satellite Association (PISA) was 
formed in October, 1975, as a non-profit national organization 
to explore how satellite communications technology can be 
adapted to meet the long-distance telecommunications needs 
of non-profit users. 

For the past fifteen years, satellites have been providing 
global links via television, radio, telephone, data, telex and 
facsimile for business, industry, and the military. Up to now, 
though, the technology, for a number of reasons, has been 
beyond the reach of public groups, despite the fact that 
satellites have been developed with nearly $80 billion of public 
funds. But recent technical breakthroughs in the field promise 
to greatly reduce satellite costs, and make the technology 
available for low-cost public use. To spearhead the public effort 
that will be required to turn this potential into reality, PISA 
has been formed. 

PISA’s goals are to: 

1) Help non-profit groups understand the many facets of 
satellite technology; 

2) Assist these groups in examining their long-distance 


-- IK bytes of PIPBUG ROM (in socket). 

-- 512 bytes of RAM 
-- Two latched I/O ports 

-- Four non-extended I/) read/write user strobes. 

-- Tri-state buffers on data, address and control lines. 

- Serial input/output port. 

-- Single +5 volt supply requirement (1.7A max.) for card 
and 20 ma current loop interface (+12 volt supply for RS 232 
interface). 

- Simple memory and I/O port decoding with two 
16-pin dips. 

- Interrupt and single step capability. 

- Simple clock configured from dual monostable multi¬ 
vibrator. 

- 24K memory expansion capability. 

-- Directly compatible with 4K RAM card (2650PC2000) 
and power supply demonstration base (2650DS2000). 

-- Card dimensions: 8” x 6.875” with a 100-pin 
connector along the 8” dimension. 

*PIPBUG is a basic monitor having the following commands: 
ALPHA CHARACTER INPUT COMMAND 

A Alter memory 

B Set breakpoint 

C Clear breakpoint 

D Dump memory to papertape 

G Go to address 

L Load memory from papertape 

S See and alter registers 

Note: the program is entered by resetting the card. The termin¬ 
al will then respond with an asterisk (*). 


communications costs, and in determining how satellites-and 
what kinds of satellites-may better serve their needs; and 

3) Explore ways the technology can be used by them 
to form new networks of information exchange, and to im¬ 
prove their outreadh to the public-at-large. 

In March, 1975, PISA received grants from the Stern 
Fund and the Ottinger Foundation to permit the following 
first steps to be taken: 

1) Conduct a survey of the communications needs, uses, 
and costs of non-profit organizations; 

2) Prepare written material informing these groups about 
satellites, the potential benefit they hold for the non-profit 
community, and what must be done to realize this potential; 

3) Design one or more demonstration projects, using 
available NASA experimental satellites, to give non-profit 
groups some experience with the technology; and 

4) Plan PISA’s organization structure. 

For additional information, write or call: 

PISA 

55 W 44 Street 

New York NY 10036 

(212) 661-2540 


March, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 9 


64 





DON’T KEEP IT A SECRET! 

Let us know what exciting new software and systems you are 
working on. We’ll tell everyone else (if you wish). Maybe 
someone is also working on the same thing. You can work 
together and get results twice as fast. Or, may be someone 
else has already done it; no reason for everyone to reinvent 
the wheel. 




Ul BE/ 


Careful, detailed comparison and contrast of the several versions 
of Tiny BASIC we are publishing. Systems software for the 
public domain, including: 

— Tiny BASIC versions for the 

INTEL 8008 SIGNETICS 2650 

Motorola/AMI 6800 MOS Technology 6502 

RCA COSMAC Fairchild F-8 

— Tiny block-structured languages for Microprocessors 

PASCAL-like ALGOL-like 

— Resident structured and unstructured assemblers 

Any old assemblers Macro-assemblers 

PL360-like 

— Interactive Debuggers 

— Graphics Software 

For the TV Dazzler For any TV interface 

(including schematics) 

— Music software 

Like Dompier’s program (DDJ, V. 1, No. 2) 

Like Wright’s Alpha Numeric Music (PCC Bookstore) 

— File systems for cassettes 

This is a partial list. It will change before the ink drys. We 
welcome your suggestions for additions. 


COMPUTER PROCESS FOR RAPID 
PRODUCTION OF MUSICAL COMPOSITIONS 

[reprinted from Stanford University’s 
March 31, 1976, Campus Report\ 

A complete cycle of music produc¬ 
tion from the composer’s mind to the 
page the musicians play -has been devel¬ 
oped at Stanford’s Center for Research in 
Music and Acoustics. 

Here’s how it works: 

Prof. Leland Smith, working at the 
Artificial Intelligence Laboratory on 
Arastradero Road, types a composition 
into the computer. 

The computer then transmits all the 
necessary parts either directly to a Xerox 
copier or to a plotter. The latter makes a 
king-sized reproduction of the score 
which can be reduced in size mechanical¬ 
ly. 

Hither copy produces an engraving- 
quality format from the Xerox in about 
15 seconds. 

The sapie procedure, done the old way 
by a music publisher, might take as long 
as two years, with the necessary en¬ 
graving, printing, binding, and publishing. 

At Stanford it can take less than two 
weeks, including final editing. 

The advantage of Smith’s system is 
that it eliminates the need for copyists. 

The computer supplies all the parts for 
the instruments based on the master copy 
typed into the PDP-10 computer. 

At the moment, the process is strictly 
for academic purposes. It allows com¬ 
posers like Smith to prepare works for 
performance or enables graduate students 
to prepare scores for their degree require¬ 
ments. 

Smith feels it is inevitable that such a 
system will become the standard method 
for the publication of music. 

But Smith’s work on music printing 
has been done without formal sponsor- 
ship—literally, on his own time. 

He sometimes gets to*the Lab at 4 a.m. 
to take advantage of the quiet and the 
availability of the computer- 

Michael McNabb, a Stanford graduate 
student in music now studying in Paris, 
wrote an impressionistic piece called 
“Solstice.’’ which was premiered by .the 
Stanford Symphony under Prof. Mark 
Starr a few weeks ago. 

It was prepared and produced entirely 
by computer, with Smith’s help. 

“It took longer to rehearse than it did 
to edit it,” Smith said. 

One of his own projects shows how a 
computer can help. 

Francesco Bonporti, an obscure 18th 


Page 10 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 March, 1976 


65 


























century Italian composer, once had the 
misfortune to get his work accidentally 
mixed up with that of the great Johann 
Sebastian Bach. 

This came about when Bach, taken 
with Bonporti’s ingenious “inventions” 
for violin and string bass, hand copied the 
latter’s work. When someone else in¬ 
cluded four of them in Bach’s collected 
works, they were credited to Bach’s 
genius until researchers discovered the 
error. 

Using the computer printing method. 
Smith developed and expanded Bon¬ 
porti’s “Inventio Septima” (“Seven In¬ 
ventions,”) adding a double scherzo of his 
own, based on Bonporti’s original. 

Smith published it under his own 
“logo,” the San Andreas Press, with the 
credit line: “Graphic Realization by 
PDP-IO Computer.” 

The computer printed the entire score 
and the title page, including a “snapshot” 
of an oaktree against rolling Peninsula 
hills-the “San Andreas” monogram. 

Smith has produced computer scores 
for Renaissance and Baroque chamber 
groups of ancient instruments in the origi¬ 
nal notation—square instead of round 
notes, or special notation for the 17th 
century lute. 

Students in Prof. George Houle’s 
classes in early music already are finding 
this handy for producing music required 
for their master’s degrees. 

The computer is coupled with a video 
display screen, which presents a five-line 
music staff on the operator’s command. 
The notes appear in response to the 
proper typing on the keyboard. 

These are fed into the computer which 
transmits them direct to the Xerox or to 
the “Calcomp” plotter, whichever is de¬ 
sired. 

The plotter, about 40 inches wide, has 
two parallel metal arms across the width. 
On these, a special ink-laden pen travels 
sedately back and forth, placing the notes 
on the treble or bass staff while the drum 
moves up or down to accommodate the 
notation. 

To the casual observer it looks as 
though a giant musical Ouija board was in 
action, operated by an invisible hand. 

Smith foresses the day when hundreds 
of computer-produced scores, reduced to 
digital form, can be stored in the Library 
of Congress. 

From any place in the country, he 
predicts, a musician could dial up the 
Library’s computer, code the correct 
numerals for Dvorak’s Fifth Symphony, 
for example, and have the full orchestral 
score delivered by telecopier. 


The cost could be billed to his phone 
or be provided for by a coin-in-the-slot 
arrangement. The computer in the Li¬ 
brary of Congress could assess the royal¬ 
ties due the composer, if necessary, and 
credit the amount to his account. 

The Stanford computer’s value as a 
research tool has no limits either, Smith 
feels. 

One doctoral candidate already has 
started a computer-developed thesis, 
working on a method which could pro¬ 
duce thematic catalogues of the works of 
the classical com posers-a job of monu¬ 
mental drudgery if attacked in the tradi¬ 
tional manner. 

His project will be so comprehensive 
that it will be able to compare composers’ 
themes, where and when they were used, 
down to the book, page, and line of the 
original score. It also will cite the places 
where the same themes have been used or 
adapted to other compositions. 

Anything the computer does can be 
stored on magnetic tape for permanent 
instant recall, or erasure and reuse. 

The Smith system could quite readily 
be adopted by music publishers. “It 
would cost them only about $130,000 to 
set up this system,” Smith says, “but 
they seem to be afraid or reluctant to 
make the change.” 

Smith, 50, is a native of Oakland who 
was elected to Phi Beta Kappa as an 
undergraduate at UC-Berkeley. He also 
earned his master’s degree in music at 
Berkeley, where he studied under the 
noted composer Roger Sessions. 

He took additional postgraduate work 
at the Paris Conservatory under Olivier 
Messaien. 

Smith taught at Mills and the Univer¬ 
sity of Chicago before coming to Stan¬ 
ford in 1958. He has received many com¬ 
missions for his original compositions, 
which include “Orpheus” for harps¬ 
ichord, harp, and guitar; a string trio, and 
an opera, “Santa Claus,” as well as 
“Three Pacifist Songs.” 

While he has been extremely busy in 
the last few years developing the Center’s 
comprehensive program for editing and 
printing computer music, he has also 
found time to produce a piano trio, a 
“Rhapsody for Flute and Computer,” 
“Arabesque for Small Orchestra,” “Six 
Bagatelles for Piano,” a suite for mixed 
trio, and two motets for mixed chorus. 

Almost all of these have been perfor¬ 
med at Stanford, the Cabrillo Music Fes¬ 
tival, or at other universities. 

An accomplished pianist, clarinetist, 
and bassoonist as well, he has played with 
the Chicago and San Francisco symphony 
orchestras. His papers on the computeri¬ 
zation of music have appeared in profes¬ 
sional journals. 


March, 1976 Dr. Dobb’s Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


Page 11 


66 



(T CAN TALK...BUT CAN IT SING? 


The VOTRAX Model VS-6 is a new departure in voice response technology. This unique 
system combines low unit cost, unlimited vocabulary, operational simplicity and low data 
requirements to provide the ultimate in flexibility and cost effectiveness. The price of the 
VS-6 with parallel buffered interface is $3605 in single-unit quantity. Purchase prices are 
discounted for quantity buys starting at two units. Maximum discount is over 50%. 

The VS-6 is programmed to speak based on phonetic coding principles. Each eight-bit 
command word selects one of 61 phonemes (sounds) and one of four levels of inflection 
(pitch). Utterances are "spelled" phonetically to produce all combinations of words and 
phrases required by the application. Since words and phrases are stored in the form of 
digital information in some storage medium, such as magnetic disc or solid-state memory, 
there is virtually no limitation as to the amount of vocabulary VOTRAX can produce. 
One well-known computer services company reports a vocabulary in excess of 300,000 
words. The value of unlimited vocabulary is that the same low-cost VOTRAX unit can be 
used for any and all applications. 

The use of phonetic coding in the VOTRAX VS-6 permits the production of speech at 
uniquely low data rates. A rule of thumb indicates that the number of phonemes per word 
is approximately equal to the number of letters per word. At eight data bits per phoneme 
command, VOTRAX can achieve continuous speech from input as low as 150 bps. 

The VOTRAX VS-6 was developed to fit into a wide variety of applications and physical 
environments. A complete range of interface types and options makes VOTRAX compat¬ 
ible with virtually all computers, from the largest business mainframes to the smallest 
microprocessors. The small amount of data and limited controls required to drive VOTRAX 
permit installation at almost any point in a communications network: host computer, 
communications concentrator, communications multiplexor, or computer terminal. Data 
rates of 110 to 9600 bps also allow VOTRAX to fit in with a minimum of change to 
existing systems. Operating temperature and humidity specifications are such that specially 
conditioned environments are not required. Applications include: Computer Timesharing, 

Education, Handicapped Aids, Instrumentation, Manufacturing, Military and Training 
Simulators. 

Electrical 

Input Power Requirements.115 VAC ±10%, 

47-420 Hz, 0.25 Amps 

Input Power Fuse.. . .3AG - 1/2 Amp, 125 Volts 

Audio Output. 100-5009 Hz, 6 Volts Peak, Nominal 

Audio Output Drive Capability.0.5 Watts into an 

8 Ohm load 

Environmental 

Operating Temperature.0° C. to 50° C. 

Storage Temperature.— 20° C. to 70° C. 

Operating Humidity.0 to 95% with no condensation 

Command Word 

6-bits: 64 selections available, Includes phonemes, pauses 
and control functions 

2-bits: 4 levels of inflection available 


Page 12 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 March, 1976 


If you are interested in having this 
available in $1K kits, write to: 

John McDaniel 
Vocal Interface Div. 

4340 Campus Dr. 

Suite 212 

Newport Beach CA 92660 
(714) 557-9181 


Votrax is proposing making the guts 
of this English language synthesizer 
system available in kit form for $1K. 
More details, next issue. 

Note that the system described 
below is a turn-key, off-the-shelf 
item that has been on the market 
for several years. 


67 










TOUCHLESS SENSING 
FOR UNDER $100 

We just spoke with a representative for a manufacturer of 
low-cost proximity sensors (about $95@ in groups of 50; $133@ 
in single units), and turned him on to the hobbyist movement. 
These sensors are capable of determining the presence or 
absence of materials some distance away. They can “see” water 
flowing from a pipe or through a semi-transparent tube, doors 
that are opened or closed, people, hands, fingers, spokes of a 
rotating wheel, etc. Their range is from at least 24 inches for 
sensing highly reflective material, or 40 inches for minimally 
reflective material, up to about 30 feet when a reflector is used 
beyond the material “under surveillance.” They can even “see” 
through materials that we normally think of as being opaque 
(e.g., cardboard, skin, thin wood panels, etc.) much like you can 
see the glow of a flashlight that you have stuck in your mouth- 
for some obscure reason-through your cheeks. 

We will carry much more extensive information on this 
within the next several issues. In the meantime, if you are 
interested in such devices being made available through distribu¬ 
tors, mail-order hobbyist sales, and computer stores, write to 
the manufacturer and tell them so. You might also tell them 
the maximum that you would be willing to pay for such sensors. 
Please do not ask them for literature, schematics, etc., however, 
unless you are planning on purchasing them in quantity. We 
will be furnishing such information in forthcoming issues; the 
company is not set up to deal with very small retail sales . . . 
and we want them to be happy with the hobbyist community 
. . . and eager to enter our marketplace. We do not want them 
to avoid the hobbyist market because they feel they can’t deal 
with the end users. 

Just let ’em know you are very interested in their making 
the products available at the lowest possible price, to the hobby 
community, via the already-existent retail distributors (and, of 
course, group buys can be set up at any time). 

Send your quick statements of interest to: Anthony 
Lazzara, President, Scientific Technology, Inc., 1201 San 
Antonio Rd, Mountain View CA 94043. 

-fl-fi.fi a .a g a a a a a g o a o a 9 a .gg aa a aoooooooooooooooooooooq 


DESCRIPTION 

The STI Model AL3093 is a self-contained, complete, 
sensitive non-contact proximity and retro-reflective 
sensor system component. All circuitry is totally sealed 
in the shockproof 4.4 cm (1%”) by 10.1 cm (4.06”) long 
aluminum housing. 

The AL3093 responds to any surface or object entering 
its field of view, irrespective of material. It also detects 
certain changes of color or texture. 

Range of the AL3093 is up to 102 cm (40 in) as a 
proximity sensor. When used with a retro-reflective 
target, range is up to 9.8 m (30 ft). Long range units are 


available that "see” clear plate glass or 3 mil clear mylar 
or liquid surfaces at more than 102 cm (40 in). 

The AL3093 can be mounted anywhere, indoors or out, 
submerged or in a vacuum. Interference from ambient 
light, environmental contaminants and thin film accumu¬ 
lations of dust, oil, etc., is virtually impossible in normal 
operation. A form of automatic gain control (AGC) 
maintains the modulated beam sensitivity under chang¬ 
ing operating conditions. 

SPECIAL FEATURES 

* Responsive to virtually all objects and materials, 
many color and texture changes. 

■ Simple to set up with adjustable, wide sensitivity 
range—visible alignment indicator—no focusing. 

■ Range to 102 cm (40”) in proximity mode, to 9.8 m 
(30’) as a retro-reflective control. 

■ Long, maintenance-free life—solid state throughout, 
never a bulb to change. Circuit protected output. 

■ Operates anywhere—rugged, sealed unit is com¬ 
pletely self-contained. 

■ Invisible modulated beam unaffected by ambient 
light, even bright sun. 

■ Automatic compensation for fog, dust and other 
atmospheric or ambient conditions. 

■ Versatile system component—available in custom 
O.E.M. configurations. 

OPERATION 

The STI Model AL3093 is simple to set up and operate, 
requiring neither focusing nor critical adjustment. A 
visible LED indicator glows brightly when the sensor is 
aligned on target and permits visual monitoring during 
operation. A potentiometer provides range and target 
sensitivity adjustment. 

Maintenance requirements are practically non-existent. 
There are no lamps or other components that deteri¬ 
orate rapidly or periodically in the all solid state circuitry. 
Service life is conservatively rated at 10 years. 

Any number of sensors may be interconnected for 
simultaneous or sequential operation. Outputs can be 
ANDed, ORed, or arranged in any other logic sequence. 

USES 

The STI AL3093 is useful for every type of non-contact 
sensing application within its wide range capabilities. 
Major uses include sensing, counting, routing, position¬ 
ing, inspecting, measuring, code reading, web moni¬ 
toring and performing a wide variety of other automated 
process control functions. Additional applications in¬ 
clude safety controls, perimeter or intrusion protection 
or alarms and many, many others where visible 
movements or changes must be sensed automatically. 
A series of externally mounted relay and switch outputs, 
including delays, latches, and other control circuits are 
available for use with the AL3093. Externally mounted 
transformers for any input voltage are also optional. 


March, 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


Page 13 


68 




SPECIFICATIONS 


ELECTRICAL & PERFORMANCE 
SPECIFICATIONS 

Sensing Range—screwdriver adjustable 
Maximum Range 
Proximity Mode* 

40 in. (102 cm) (90% reflectance surface) 

24 in. (61 cm) (18% reflectance surface) 
Retro-reflective Mode 
30 ft. (9.8 m) 

'Color and texture affect range in Proximity Mode. 
Measurements made with Kodak standard (visible) 
reflectance test cards. 


Input Power 

Normally 12 VAC or VDC, or 24 VDC at 200 mA. 
Externally mounted transformers available for other 
input voltages. 


Operating Temperature Range 

-50°C to +70°C (-60°F to + 160°F) 

Control Options 

Time delays, one shots, alarm latches and other 
modular control options are available for remote, 
external mounting. 


MECHANICAL SPECIFICATIONS 



Output 

+ 10 VDC active pulldown—will sink 100 ma (current 
shutdown protection approximately 200 m A) or source 1 
mA. Output may be pulled up to higher voltages, e.g. 12 
VDC for MOS-type logic, without damage. 


Response Time 

Turn-On 0.0005 sec.; Turn-Off 0.01 sec.; Counting speed 6,000 CPM; Normal Cycle Life 10 billion. 


Cabling 

Standard 1.5 m (5 feet) 5-conductor for input and output leads. Additional length to 150 m (500 feet) and flexible 
armored conduit available. 

Circuitry 

Totally solid state, encapsulated. Withstands shock of 100 g @ 10 milliseconds. 

Multiple Sensor Options 

Any number of units may be ANDed or ORed through external logic circuitry. Specify requirements. 


Page 14 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


March, 1976 


69 












Parser saves pain 

Harvey E. Hahn February 24, 1976 

630 N. Lincoln Ave., Apt 208 
Addison IL 60101 

In reading PCC [article, below] I was intrigued by your 
parsing subroutine, which avoids the direct input of the user 
(which can prevent game players, etc., from initiating control 
commands to BASIC itself). This would appear to be very useful 
in situations where inadvertent input commands could upset or 
destroy a program, particularly by someone who is not conver¬ 
sant with programming or computer languages. It would appear 
to be a useful “safety” feature to incorporate in BASIC 
interpreters. 


yet another BASIC BOMBOUT! 
or 

How we learned to live with the INPUT statement 
[reprinted from PCC, Vol. 3, No. 3 (Jan., 1975)] 


Sometimes in the old days, often in the middle of a game, and usually 
to somebody new to computers, our terminals would say: 

ERROR xx IN LINE xxx 

READY 

(By which the computer meant: "You typed the wrong thing when I 
asked for INPUT so I've kicked you out of the program. Out of the 
goodness of my heart. I've described what you did wrong (i.e. ERROR 
xx) and where the error happened (i.e. IN LINE xxx). To understand 
it, all you have to do is look at page xx in the reference manual, then 
look at the program listing (wherever that is or type LIST), and with 
your thorough knowledge of BASIC (oh, you say you don't speak the 
language — well, ask somebody then), you can figure out where you 
went wrong. Naturally, the READY means you're in BASIC so if you 
type some "random" number (like the input you tried to type in the 
first place), you might wipe out a line in the program and then ... 

To pick up again where you left off, type GOTO xxx — by the way, I 
zero all variables so you can't really start where you left off so you may 
as well start over. Be more careful next time!!") 

Games encourage non-standard responses — like, I THOUGHT YOU 
WERE ‘IT’ when the terminal is asking, WHERE DO YOU THINK THE 
HURKLE IS HIDING?. People were being heavily discouraged from 
exploring and seeing what would happen if. 

Suppose the terminals would print something like, I’M CONFUSED — 

I NEED 2 COORDINATES FROM 0 TO 9. Then the computer is 
the dummy — it doesn't understand me. "Watch me get the computer 
ail confused."Quite different than feeling upset because the program has 
to be reloaded (on our 10 cps reader — no mass storage, alas) because a 
few random lines were erased. Blahh! 


Our current solution happened in three stages. 

1. A subroutine for all input. Pass the number and types (numeric or 
string) of inputs wanted to the subroutine. Input the entire user 
response into a character string and parse it. One special input was 
always recognized — STOP (the user could type STOP anytime to 
stop the game). We never bothered to tell our game players about 
Control C (remember, we never wanted a game player to give com¬ 
mands directly to BASIC). Return the inputs and a condition code 
to the calling routine; 1 = STOP , 2 = couldn't find all the inputs 
you wanted , 3 = o.k. The '2' wouId cause a "helpful" message to 
be sent to the player and the input would again be requested. 

The parsing of the inputted string was complicated because there 
was no direct way to convert from string to ascii (ascii is the numeric 
representation of a character) and numeric operations (like subtrac¬ 
tion) could not be performed with strings. If we could compute 

T = C$ - "0" , 

we'd almost be done; T would equal the digit in C$ (from 0 to 9) 
(you still need to check if T is from 0 to 9 to see if C$ actually is 
a digit). For numeric input, we used a FOR-NEXT loop variable as 
a pointer into an internal character string. If a match were found 
with the input character, the value of the FOR-loop variable was 
the ascii representation. (?!?). 

The problem (and the reason that step 1 was not our final solution) 
was that it took a lot of time to parse the input. People got really 
impatient, especially with multiple terminals running. 

2. We eliminated the parsing subroutine. We tried all programs having 
line numbers greater than 1000 (hopefully, it would be harder to 
accidently erase a line since most inputs to the games were less than 
1000). The player was supposed to ignore an ERROR when (and 
generally when, rather than if, for first-timers) it occurred and 
blindly type RUN. 

It was faster than before but it didn't solve much — "What does 
ERROR xx IN LINE xxx mean"? And a player couldn't continue 
where the game aborted because of the zero-all-variables insanity 
of our BASIC. So, . . . 

3. One night, after everyone was asleep and all was quiet, it happened. 
Did you know that if you compute 

T = CS 

and X = INT(LOG(ABS(T))) + SGN(T) 

that X will be unique for each possible ascii character (on DEC 
EDU20, at least)? This gives you a unique index into an array where 
the ascii value of each character can be stored. 

So, we redid phase 1 with a streamlined, razzle-frazzle lookup that 
would gladden the heart of the most hardened hacker. And — our 
method of parsing INPUT isn't perceptibly slower to the user, even 
with multiple terminals, than good (or is it bad) ol' INPUT. 

THE END (We hope.) 


March, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, IVlenlo Park CA 94025 Page 15 


70 










KEYBOARD LOADER FOR OCTAL CODE 

021 

052 





VIA THE TVT-2 

022 

315 


CALL 

PUT 



023 

063 





Jack 0. Coats, Jr, 213 Argonaut, No. 27, El Paso TX 79912 

024 

000 





El Paso Computer Group 

025 

257 


XRA 

A 



026 

006 


MVI 

B,(-3) 

Get minus the 

This program is being used in a modified form by the EPCG 

027 

375 




character count 

(El Paso Computer Group) for loading machine language pro- 

030 

007 

LOOP 

RLC 


Rotate it left 3 bits 

grams that have been coded in octal. The program does no char- 

031 

007 


RLC 



acter validation so if you enter an invalid character it will be 

032 

007 


RLC 



processed just like a valid character (the digits 0 to 7, and 0 to 3 

033 

117 


MOV 

C,A 

Store it in Reg. C 

in the most significant digit). This program should work without 

034 

315 


CALL 

GET 

Get a character 

modification for an eight-level ASR-33 or similar device. 

035 

077 





The program will be loaded, beginning in location 000 111. 

036 

000 





Once loaded, a program may be started by typing “$” as input 

037 

315 


CALL 

PUT 

Write out the 

to this keyboard loader. 

040 

063 




character 

The status input port is port no. 1, and the data I/O port. 

041 

000 





no. 0. In the status word, the high order (left-most) bit is the 

042 

376 


CPI 

AT 

Compare to the run 

not-ready flag for the output port. It is high when the output 

043 

044 




signal character 

port is busy and low when the port is ready to accept more out- 

044 

312 


JZ 

RUN 

Run the program 

put. The right-most bit is used for the input port status bit. It is 

045 

111 




entered 

low when the port is ready to present input, and high while 

U46 

000 





there is no new data available. It is assumed that the input status 

047 

346 


ANI 

7 

Mask out unwanted 

bit is reset to the high state after data is input. 

050 

007 




bits 

All input and output are done by subroutines GET and 

051 

201 


ADD 

C 

Add it in to the running 

PUT, respectively. If any other I/O routines are desired, these 

052 

004 


INR 

B 

Is that all? total 

routines must be replaced. For the GET routine, the character is 

053 

302 


JNZ 

LOOP 

No: go to loop 

returned in the accumulator. For the PUT routine, the character 

054 

030 





is passed to it in the accumulator. These routines may be called 

055 

000 





from any user routine as a subroutine as long as the conventions 

056 

167 


MOV 

M,A 

Store it in memory 

are observed. 

057 

043 


INX 

H 

Increment the address 

These routines are not optimized for either memory or 

060 

303 


JMP 

GO 

Go again 

time. However, they are a starting place for those who need or 

061 

000 





desire a crude alternative to the panel switches. 

062 

000 






063 

365 

PUT 

PUSH 

PSW 

Keep the chtr 

ADDR DATA LABEL SYM OPERAND COMMENT 

064 

333 

PI 

IN 

STATUS 

Get the status 


065 

001 



PORT 


000 ORG 0 

066 

346 


ANI 

OUTMASK Is it readv? 

000 STACK EQU ■'your choiceJHigh memory address 


200 





000 RUN EQU END+1 Start of program entered ,-. 70 

302 


JNZ 

PI 

No; go to PI 

000 061 START LXI SP,STACK 

071 

064 





001 377 

072 

000 





002 000 

073 

361 


POP 

PSW 

Retrieve the charctr 

003 041 LXI H,RUN Where do I store it? 

074 

323 


OUT 

DATA 

Write the data 

004 111 

075 

000 



PORT 


005 000 

076 

311 


RET 


Go back 

006 076 MVI A,CR Output a carriage 

077 

333 

GET 

IN 

STATUS 

Get the status 

007 015 return 

100 

001 



PORT 


010 315 CALL PUT 

101 

346 


ANI 

INMASK 

Is it what we want? 

011 063 

102 

001 





012 000 

103 

302 


JNZ 

GET 

No; return to get 

013 076 MVI A,LF Output a line feed 

104 

077 





014 012 

105 

000 





015 315 CALL PUT 

106 

333 


IN 

DATA 

Get the data 

016 063 

107 

000 



PORT 


017 000 

110 

311 

END 

RET 



020 076 MVI A,A‘*’ Output an asterisk 

110 



END 



Page 16 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia. Box 

310, Menlo Park 

CA 94025 

March, 1976-* 


71 



BREAKPOINT ROUTINE 
FOR 6502s 

John Zeigler 

8 Seaview Dr., Pittsburg CA 94565 
(415) 894-3661 

[This routine was distributed at the Homebrew Computer Club 
meeting, March 17, 1976. It is reprinted with the author’s 
permission.] 

This routine is entered via a software breakpoint. It is 
entered when the processor encounters a 00 op-code. Upon 


entering, the program counter is printed, followed by the active 
flags, accumulator, X index register, & index register, and stack 
pointer, terminated by a carriage return and line feed. It then 
waits for the user to type in a new op-code. Upon receiving 
that op-code, the original 00 code is replaced with the op-code 
that was input, the stack is returned to pre-interrupt status, and 
execution of the original program continues from the breakpoint. 

To use this routine, it is necessary to load the interrupt 
vector, FFFE and FFFF, with 64 and 02, respectively, and 
place the 00 breakpoint op-code in the desired location. The 
following storage is required: 0000-0007, 0200-02E3, 
FFFE-FFFF. Note: This routine calls subroutines located in 
the TIM Monitor. 


BUG PROGRAM LISTING VERSION 1 


0200 

85 

07 


NEG 

STA 

07 

JSAVE MODIFIED P STATUS 

0202 

A9 

4E 



LDA 

#£4E 

J L0AD A WITH *N * 

0204 

20 

C6 

72 


JSR 

WRT 

JTYPE *N * 

0207 

A5 

07 



LDA 

07 

JREST0RE MODIFIED P 

0209 

4C 

7F 

02 


JMP 

V 

JRETURN T0 PROG* V 

020C 

85 

07 


0VERFL 

STA 

07 

JSAVE MODIFIED P 

O20E 

A9 

56 



LDA 

#$56 

J LOAD A WITH *V* 

0210 

20 

C 6 

72 


JSR 

WRT 

JTYPE »v 

0213 

A5 

07 



LDA 

07 

JREST0RE MODIFIED P 

0215 

4C 

82 

02 


JMP 

B 

JRETURN TO PROG. B 

0218 

85 

07 


BRK 

STA 

07 

JSAVE MODIFIED P * 

021 A 

A9 

42 



LDA 

#$42 

JLOAD A WITH *8* 

021 C 

20 

C 6 

72 


JSR 

WRT 

JTYPE 'B* 

021 F 

A5 

07 



LDA 

07 

JRESTORE MODIFIED P 

0221 

4C 

86 

02 


JMP 

D 

JRETURN TO PROGRAM D 

0224 

85 

07 


DEC 

STA 

07 

JSAVE MODIFIED P 

0226 

A9 

44 



LDA 

#$44 

JL0AD A WITH ’D* 

0228 

20 

C6 

72 


JSR 

WRT 

jtypeT 'D* 

022B 

A 5 

07 



LDA 

07 

JRESTORE MODIFIED P 

022D 

4C 

89 

02 


JMP 

I 

JRETURN TO PROGRAM I 

0230 

85 

07 


IRQDIS 

STA 

07 

JSAVE MODIFIED P 

0232 

A9 

49 



LDA 

#$49 

J LOAD A WITH * I * 


March, 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 17 


72 



Page 1 8 


0234 

20 

C 6 

72 


JSR 

WRT 

JTYPE * I• 

0237 

A5 

07 



LDA 

07 

JREST0RE MODIFIED P 

0239 

4C 

8C 

02 


JMP 

Z 

JRETURN T0 PROGRAM Z 

023C 

85 

07 


ZERO 

STA 

07 

JSAVE MODIFIED P 

023E 

A9 

5A 



LDA 

# S5A 

1 LOAD A WITH * L* 

0240 

20 

C6 

72 


JSR 

WRT 

JTYPE 'L' 

0243 

A5 

07 



LDA 

07 

J RESTORE MODIFIED P 

0245 

4C 

8F 

02 


JMP 

C 

JRETURN T0 PROGRAM C 

0246 

85 

07 


CARRY 

STA 

07 

JSAVE MODIFIED P 

024A 

A9 

43 



LDA 

#£43 

J LOAD A WITH *C* 

024C 

20 

C 6 

72 


JSR 

WRT 

JTYPE ’C* 

024F 

A5 

07 



LDA 

07 

JRESTORE MODIFIED P 

0251 

4C 

92 

02 


JMP 

CONT 

JRETURN T0 PROGRAM CONT 

0254 

85 

00 



STA 

00 

JSAVE A IN 00 

0256 

86 

01 



STX 

01 

JSAVE X IN 01 

0258 

84 

02 



STY 

02 

JSAVE Y IN 02 

025A 

68 




PLA 


JPULL p ot a 

025B 

85 

03 



STA 

03 

JSAVE P IN 03 

025D 

68 




PLA 


JPULL PCL TO A 

025E 

85 

04 



STA 

04 

JSAVE PCL IN 04 

0260 

68 




PLA 


JPULL PCH TO A 

0261 

85 

05 



STA 

05 

JSAVE PCH IN 05 

0263 

BA 




TSX 


J MOVE S TO X 

0264 

86 

06 



STA 

06 

JSAVE S IN 06 

0266 

D8 




CLD 


JNOT DECIMAL MODE 

0267 

20 

8A 

72 


JSR 

CRLF 

J DO A CRLF 

026A 

20 

CF 

02 


JSR 

M0DPC 

JC0RRECT PCL 4 PCH 

026D 

A5 

05 



LDA 

05 

J LOAD A WITH PCH 

026F 

20 

B1 

72 


JSR 

WR0B 

JTYPE PCH IN HEX 

0272 

A5 

04 



LDA 

04 

J LOAD A WITH PCL 

0274 

20 

B1 

72 


JSR 

WR0B 

JTYPE PCL IN HEX 

0277 

20 

77 

73 


JSR 

SPACE 

JSPACE 1 CHARACTER 

027A 

A5 

03 



LDA 

03 

J LOAD A WITH P 

027C 

2A 




R0L 

A 

JROTATE N FLAG TO CARRY 

027D 

BO 

81 



BCS 

NEC 

JBRANCH IF N FLAG SET 

027F 

2A 



V 

R0L 

A 

JROTATE V FLAG TO CARRY 

0280 

BO 

8A 



BCS 

OVERFL 

JBRANCH IF V FLAG SET 

0282 

2A 



B 

R0L 

A 

JROTATE PAST UNUSED BIT 

0283 

2A 




R0L 

A 

JROTATE B FLAG TO CARRY 

0284 

BO 

92 



BCS 

BRK 

JBRANCH IF B FLAG SET 

0286 

2A 



D 

R0L 

A 

JROTATE D FLAG VQ CARRY 

0287 

BO 

9B 



BCS 

DEC 

JBRANCH IF D FLAG SET 

0289 

2A 



I 

R0L 

A 

JROTATE I FLAG TO CARRY 

Dr. Dobb's Journal 

of Computer Calisthenics & 

Orthodontia, 

Box 310, Menlo Park CA 94025 March, 1976 


73 



028A 

B0 

A4 



BCS 

IRQDIS 

IBRANCH IF I FLAG SET 

028C 

2A 



Z 

R0L 

A 

JR0TATE Z FLAG T0 CARRY 

028D 

B0 

AD 



BCS 

ZER0 

IBRANCH IF Z FLAG SET 

028F 

2A 



C 

R0L 

A 

JR0TATE C FLAG T0 CARRY 

0290 

BO 

B6 



BCS 

CARRY 

IBRANCH IF C FLAG SET 

0292 

20 

77 

73 

C0NT 

JSR 

SPACE 

1 SPACE I CHARACTER 

0295 

A5 

00 



LDA 

00 

1 GET A 

0297 

20 

B1 

72 


JSR 

WR0B 

JTYPE A 

029A 

20 

77 

73 


JSR 

SPACE 

ISPACE 1 CHARACTER 

029D 

A5 

01 



LDA 

01 

1 GET X 

029F 

20 

B1 

72 


JSR 

UR0B 

ITYPE X 

02A2 

20 

7? 

73 


JSR 

SPACE 

ISPACE 1 CHARACTER 

02A5 

A5 

02 



i-DA 

02 

1 GET Y 

02A7 

20 

B1 

72 


JSR 

WR0B 

HYPE Y 

02AA 

20 

77 

73 


JSR 

SPACE 

1TYPE SPACE 

02AD 

A5 

06 



LDA 

06 

1 GET S 

02AF 

20 

B1 

72 


JSR 

WR0B 

JTYPE S 

02B2 

20 

8A 

72 


JSR 

CRLF 

ID0 A CRLF 

0285 

20 

B3 

73 


JSR 

RDHEX 

JREAD VALID 0PC0DE 

02B8 

A2 

00 



LDX 

#$00 

JPREPARE T0 L0AD 0PC0DE 

02BA 

81 

04 



STA 

C04#X) 

JST0RE CORRECT 0PC0DE 

02BC 

A 6 

06 



LDX 

06 

I GET S 

02BE 

9A 




TXS 


JREST0RE STACK P0INTER 

02BF 

A5 

05 



LDA 

05 

IGET PCH 

02C1 

48 




PHA 


1RESTORE PCH T0 STACK 

02C2 

A5 

04 



LDA 

04 

IGET PCL 

02C4 

48 




PHA 


JREST0RE PCL T0 STACK 

02C5 

A5 

03 



LDA 

03 

IGET P 

02C7 

48 




PHA 


JREST0RE P T0 STACK 

02C8 

A4 

02 



LDY 

02 

JREST0RE Y 

02CA 

A6 

01 



LDX 

01 

JREST0RE X 

02CC 

A5 

00 



LDA 

00 

1RESTORE A 

02CE 

40 




RTI 


JRETURN T0 PROGRAM 

02CF 

A5 

04 


M0DPC 

LDA 

04 

ILOAD PCL IN A 

0201 

FO 

07 



BEQ 

ALTER1 

IBRANCH IF PCL = 0 

0203 

C6 

04 


ALT! 

DEC 

04 

JSET PCL = PCL-1 

0205 

FO 

08 



SEQ 

ALTER2 

IBRANCH IF PCL * 0 

0207 

C6 

04 


ALT2 

DEC 

04 

ISET PCL * PCL-2 

0209 

60 




RTS 


1 RETURN FROM SUBROUTINE 

02DA 

C6 

05 


ALTER! 

DEC 

05 

JSET PCH * PCH*I 

020C 

4C 

D3 

02 


JMP 

ALT! 

I JUMP T0 ALT1 

02DF 

C6 

05 


ALTER2 

DEC 

05 

ISET PCH = PCH-1 

02E1 

4C 

07 

02 


JMP 

ALT2 

1JUMP TO ALT2 


END 


March, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 19 


74 



D€flV€R TinV BASIC FOR SOSOs 
A 2nd version that includes l-D arrays 


F.J. Greeb, 1915 S. Cape Way, Denver CO 80227, (303) 986-6651 

[An earlier release of Fred’s Tiny BASIC was submitted to the 
Denver Amateur Computer Society. This release is a considerably 
improved version.] 

This is a version of Tiny BASIC based on the design notes 
which have been published in People’s Computer Company 
newspaper, and in the Journal. The program is written in 8080 
assembly language for a system utilizing a TV-Typewriter and a 
Suding-type cassette tape interface. The program requires 
approximately 2.75K bytes of memory, including storage space 
for variables. 


COMMAND SET 


LET 

IF 

DIM 

PR (print) 

CLEAR 

REM 

GOTO 

LIST 

CLRS 

GOSUB 

RUN 

SIZE 

RET (return) 

END 

TAPE 

IN (input) 


LOAD 


DIM - allows single-dimensioned variables (only single 
letter variables may be dimensioned) 

REM - remarks follow 
CLRS - clears screen on TVT 

SIZE -- prints number of bytes used, and number remain¬ 
ing (does not include dimensioned-variable stor¬ 
age areas, which are above the program) 

Control - X input in response to an INPUT statement 
returns control to the Tiny BASIC monitor. 

FEATURES AND RESTRICTIONS 

Integer Arithmetic only, +/- 32767 maximum range 
Single letter variables optionally followed by the numbers 
1 to 6 

1 -dimensional variables 

Only one function available RND(X); random number 
generator, returns a value between 0 and +32767. If 
X i 0, initialize the routine and return a random 
number. If X = 0, return a random number. 

Multiple statements per line allowed using a colon (:) 
separator. 

Strings ok in print statements; string variables not 
allowed. 

Direct mode operation (except that GOSUB and INPUT 
will not operate in the direct mode) 

Built-in editor for creation/modification of programs 
Full line erase using a ?. No single character erase. 

Dump and load programs to/from cassette tape 
Implied TFIEN in IF statements. The THEN clause may 
have any recognizable Tiny BASIC statements. Multiple 
statements following an IF THEN clause will be execut¬ 
ed only if the relational clause is satisfied. 

Single byte line numbers, 2 to 255 


Zone spacing suppression on PRINT statements using a 
semi-colon (;) 

Expressions may be input (e.g., 3 * 5/2 is a valid input) 

ARITHMETIC OPERATIONS 

+, -, *, / allowed. Expressions are evaluated from left to 
right with multi ply/divide precedence unless otherwise 
parenthesized. 

Too deeply nested parentheses is the most common 
cause of error number 45. The expression complexity 
which can be handled is a function of the program 
being processed. Variables and expression operands are 
stored in a common memory block, with variable 
values entered from the bottom up, and expression 
operands from the top down. If overlap occurs, the 
error message is output. If only a few variables have 
been referenced, a very complex expression can be 
handled. If the maximum allowable number of vari¬ 
ables (120) have been referenced, arithmetic expressions 
must be kept very simple. 

COMMAND MODE 

A “greater-than” symbol ( > ) is output indicating that 
the interpreter is awaiting a command from the keyboard. 
Commands entered with a line number will be entered in 
proper numerical sequence in the program area. Com¬ 
mands entered without a line number will be executed 
immediately if possible. Errors encountered in the direct 
mode will be output as mmm AT O since there is no line 
number associated with them. 

The LIST command is optionally followed by two 
numbers (LIST mmm nnn). If no numbers are entered, 
the. entire file will be displayed on the TVT. If LIST mmm 
is entered, line mmm will be listed. If both mmm and nnn 
are entered, the listing will be from line number mmm to 
nnn, inclusive. If mmm or nnn do not exist, the first line 
number greater than the input numbers will be used as 
limits. 

LIST, RUN, CLEAR, TAPE (Output a program to cassette), 
and LOAD (Input a program from cassette), are designed 
to be used primarily in the command mode. If these 
commands are included in a program, they will execute 
properly, but upon completion (with the exception of 
RUN, which will simply restart the program), they will 
return control to the monitor portion of the program 
(i.e., a “> ” will be output as a prompt, and no further 
statements will be executed until a command is input). 

OTHER FEATURES & 

A SAMPLE PROGRAM 

Some other features of the system are best illustrated by 
the following sample program: 


Page 20 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 3-+07 Menlo Park CA 94025 March, 1976 


75 



5 GOSUB 200 
10 PR “INPUT X,Y”; 

20 IN X,Y 

22 IF X=0 GO TO 230 

23 IF Y=0 GO TO 230 
25 IF X <0 LET X=-X 
30 IF Y<0 Y=-Y 

40 IF X> =100 X=X/7 :GOTO 40 
50 IF Y> 120 Y=Y/lll:GOTO 50 
60 IF X< > 0 IF Y< > 0 Z=RND(X*Y) 

65 IF Z> 100 Z=Z/8: GOTO 65 
67 C2 = 0 
70 PR 

75 PR “I MADE A NEW NUMBER” 

80 IF C> 5 GOSUB 200 
85 PR “GUESS MY NUMBER”; 

90 IN Cl 

95 C2 = C2 + 1 : C = C + 1 
100 IF Cl = Z GOTO 160 
110 IF Cl <Z GOTO 130 
120 PR Cl,; “IS TOO HIGH” 

125 GOTO 80 

130 PR Cl,; “IS TOO LOW” 

140 GOTO 80 

160 PR “***** THAT’S IT s{: 4: > 5 
163 PR “YOU TOOK”,;C2,;“GUESSES” 

165 PR “INPUT 1 TO TRY AGAIN” 

170 IN Cl 

175 IF Cl = 1 GO TO 5 
180 END 
200 CLRS 
210 LET C=0 
220 RET 

230 PR “YOU CAN’T USE ZERO” 

235 GOSUB 200 
240 GOTO 10 

line 20 illustrates multiple inputs. The input values must 
be separated by a single character (normally a comma, but 
this is not required), and the entire input string of num¬ 
bers terminated by a carriage return. The input routine out¬ 
puts question mark as a prompt to indicate it is awaiting 
input data. A question mark input will erase the entire line 
of input. 

Line 30, and several others, illustrate the implied LET 
statement. LET X=8 and X=8 both produce the same 
result. Using the LET statement speeds up execution. 
Omitting the LET saves space in the program memory area. 

Lines 40, 50, and 65 illustrate a special use of multiple 
statements per line. The statements following the colon will 
execute only if the relational operator is satisfied. Thus, 
each of these statements will loop on themselves until the 
variable value is reduced below the relational limit. 

Line 60 illustrates chaining of relational statements. The 
final statement will be executed only if both relational 
operators are satisfied, which, for this program, will always 
be true. 

Line 70 will print a carriage return. This statement will 
only work with a C/R terminator, and will produce a 
syntax error if followed by a colon for multi-statement 


March, 1976 Dr. Dobb’s Journal of Computer Calisthenics 


lines. 

Lines 85 and 130 illustrate zone spacing suppression. 
Only the semicolon is required to suppress zone spacing. 
Zones are eight columns wide, which is convenient for a 
TVT. Zone 5 then starts a new fine. Leading zeros are 
suppressed on numerical output. 

Line 200 illustrates a special feature included for the 
TVT. CLRS calls a clear-screen routine, to avoid overwriting 
old data. Scrolling would be nicer, but my TVT won’t do 
that. 

Throughout the program, blanks may be included or 
omitted freely. In general, blanks may be used or omitted 
between variables, constants, commands, etc., to make the 
program more readable, or save memory space. 10X=3 
works just as well as 10 X = 3 but it doesn’t look as nice. 
GOTO and GOSUB may also be separated by blanks if 
desired. Blanks do act as separators. 

CONVERSION TO OTHER SYSTEMS 

Conversion to other 8080 systems should be fairly straight¬ 
forward. The program was assembled with a starting 
location of 000 003 (split octal), but could be relocated 
elsewhere. The only routine not contained within the pro¬ 
gram is CRLF (output a carriage return). This routine is 
contained in a small monitor PROM in my system, which is 
also the reason for the starting location not being 000 000. 
This location is normally loaded with a jump instruction so 
that the monitor PROM is entered when the system is 
reset. All variable storage locations are provided within the 
2.75K memory allocation. The 8080 stack for subroutine 
calls and push/pop operations is external to the program. I 
use a 128 byte ram dedicated to this purpose. 

The main conversion problem will occur in the I/O 
portions. My TVT uses hardware control of the 8080 
ready line, and will operate directly with an IN or OUT 
instruction. If it is necessary to modify this approach, the 
best technique would probably be to change the IN and 
OUT instructions to CALL instructions, and write sub¬ 
routine suitable for the particular I/O device. The IN 
instruction is used only in the one input subroutine 
(DTIN), but the OUT instruction is used in several 
routines (DTIN, DECA, CNW, PRS, LIST, and ERRS). 

The tape routines for the TAPE and LOAD commands 
are based on software timing control of a Suding-type 
cassette interface. They would have to be replaced if a 
different type of interface was used. (Note: the output to 
tape routine does not include the usual 5 second delay at 
the start; data transmission begins immediately.) The 
timing constants used produce a data rate of approxi¬ 
mately 660 baud in my 8080 system operating with a 1.25 
MHz clock and no memory wait states. 

No change is required to utilize Teletype lingth I/O 
lines. The input buffer accepts a 72-character input fine, 
and will store it in memory properly. This also allows 
program lines which are longer than the 32-character TVT 
capability to be processed properly. Program lines are 
terminated by a carriage return and not by any fixed length. 


& Orthodontia, Box 310, Menlo Park CA 94025 Page 21 


76 



Another variable which may require changing is MMAX, 
(used in the editor portion, subroutine RPIN), which sets 
the maximum memory size (high portion of address only). 
The Tiny BASIC program to be processed is stored above 
the interpreter, and is limited to a maximum address of 
MMAX. This value is currently set to octal 040, correspond¬ 
ing to my 8K system. 

For conversion to non-8080 systems, good luck. 
Conversion of the code from the listing should be faster 
than writing a new program, if you are familiar with 8080 
assembly language. 

Some is bound to ask how I get my listings since I 
have no hard-copy device. My assembler produces a 
listing on a cassette. This is then processed by another 
system which has a printer. 

All TVT I/O is handled through subroutine calls for ease 
of conversion to other systems. The two 3-byte subroutines 
TVTI at 002 156 and TVT0 at 002 161) may be replaced by 
JUMPs to more complex I/O routines. If the new routines 
are placed at the end of the program, the value of TOPL 
which specifies the first available memory location must be 
changed. I think the only reference to this symbol is at 
location 000 014, where the EOF pointer is initialized. No 
other changes should be required to change the I/O 
procedures. 


ERROR DETECTION 

Errors detected during execution of a Tiny BASIC program 
will cause an output of the form mmm AT nnn, where mmm 
is the error number, and nnn is the line number where the 
error was detected. The following errors are detected by the 
interpreter program: 

10 - Syntax error 

15 - Invalid line number (<2 or > 255) detected by 
editor also 

20 - Memory overflow (program too large) 

25 - End of file detected 

30 - Attempt to transfer to a non-existing line number 
(GOTO or GOSUB) 

35 - GOSUBs nested too deep (8 maximum) 

40 - Too many variables (120 maximum) 

45 - A-stack/V-stack overflow. Combination of number 
of variables and expression complexity too great. 

50 - RET with no GOSUB 

55 - No closing quote on string print 

60 - Relational operator error 

(=, <, >,<=,>=,> <, <> ) 

65 - Missing right parenthesis 
70 - Undefined variable in expression evaluation 
75 - Add/Subtract overflow 
80 - Multiply overflow 
85 - Attempt to divide by zero 
90 - End statement detected 
95 - Empty A-stack on pop operation 
100 - Input line too long (72 characters + C/R maximum) 
105 - Dimensioned-variable error 


PLANNED MODIFICATIONS 
(Things I would like to add) 

More Commands 
FOR NEXT loops 
Multiple-dimensioned variables 
String variables 

Floating point arithmetic and I/O routines 
More functions 
Etc., etc. 

I haven’t really devoted any time to them yet. Any help, 
suggestions, routines, or whatever anyone cares to contrib¬ 
ute (especially a printer) will be greatly appreciated. 

[A collage to two letters from Fred; February 21st, and April 2nd] 
Dear Dennis and Jim, 

Excuse the lack of detailed comments in the assembly listing. 
I have an 8K system, and an assembler which requires 4K. Even 
with only the few comments, and Tab capability in the source 
code generation, the source code requires around 14K, which is 
assembled in four blocks. 

There are a few misprints in the listing (they are obvious, 
the entire line is moved to the left), but I don’t think that will 
cause any problems if someone wants to implement the Tiny 
BASIC interpreter. 

I would like to implement a different-format language, 
structured more specifically for the small system. I haven’t 
formalized all of the details yet, but I anticipate using the follow¬ 
ing approach: 1) Separate editor and interpreter program. This is 
not as convenient, but it allows a much more sophisticated text 
edit capability without sacrificing memory space during execution. 
2) Only referenced lines (GOTO, GOSUB) numbered. Without the 
resident editor, line numbers are not nearly as useful. 3) Partial 
symbol table formation prior to execution. Numbered line 
addresses stored in the symbol table to reduce execution time for 
GOTO/GOSUB statements. 4) Scan off all blanks at load time, 
except in string prints, to reduce program memory requirements. 

I will probably also go to an IL type of program rather than 
direct coding in assembly language, since I am beginning to 
understand it and appreciate its features after numerous readings 
of the PCC articles, and the first Journal. 

I have been programming in assembly language and high 
level languages for some time, but this was my first attempt at 
implementing a new language for a machine. The Tiny BASIC 
design articles have been a tremendous help. I don’t think that I 
would have been as far as I am now without their help. 

I have a couple game programs running in my Tiny BASIC. 

If I figure out how to get a listing of them, I will send them 
along. The program that I use to generate the assembler listings 
will not handle programs written in (Tiny) BASIC, since the line 
numbers are stored in Binary rather than ASCII. 

If you’re interested in it, I also have a fairly sophisticated 
text editor program. It is a string/line-oriented editor modeled 
after the PDP-9 text editor. It has 28 different commands. 

-Fred 

YES! We would be delighted to publish your Text Editor. Send it 
along ASAP, and keep up the good work. The more everyone 
shares, the more everyone gains. -JCW, Jr. 


Page 22 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 March, 1976 


77 



TINY 

BASIC 

INTERPRE 

TER 

MOD 1 

F. J. GREEB 

000 

003 





* TINY 

BRSIC INTERPRETER 

000 

803 





* INTEGER RRITHMETIC 

000 

083 





* WITH 

RND FUNCTION 

000 

G83 





* 


000 

003 

061 

280 

347 


STRT LXI 

SP,STRK 

000 

006 

315 

220 

340 


CRLL 

CLRS 

000 

011 

315 

061 

000 


CALL 

INIT INITIALIZE 

000 

014 

841 

261 

013 


LXI 

H, TOPL 

000 

017 

06 6 

001 



MV I 

M, i 

000 

021 

642 

315 

011 


SHLD 

EFPN 

000 

024 

257 




ERNT XRfi 

R 

000 

025 

062 

325 

011 


STR 

LNUM 

000 

030 

036 

877 



MV I 

E, '?' 

000 

032 

076 

076 



MV I 

a, o ' 

000 

034 

315 

151 

000 


CRLL 

DTIN+8 

000 

037 

841 

147 

013 


LXI 

H, IBUF 

000 

042 

042 

323 

Oil 


SHLD 

RPNT 

000 

045 

315 

231 

080 


CRLL 

NTST TEST FOR # 

000 

05G 

332 

164 

002 


JC 

STM NO ft. XCT 

000 

G53 

315 

352 

000 


CRLL 

RPLN EDIT 

000 

056 

303 

024 

000 


JMP 

ERNT 

0G0 

061 





* INITIALIZATION ROUTINE 

000 

061 

041 

357 

011 


INIT LXI 

H, SVMT 

000 

064 

006 

170 



MV I 

B, nsym 

000 

866 

315 

131 

000 


CRLL 

CLER 

000 

071 

062 

341 

011 


STR 

CHCT 

000 

074 

052 

315 

811 


LHLD 

EFPN 

800 

077 

043 




I NX 

H 

000 

100 

042 

321 

011 


SHLD 

NMLC 

000 

103 

041 

147 

813 


LXI 

H, RSTR 

000 

106 

042 

327 

011 


SHLD 

RSTK 

000 

111 

041 

147 

012 


LXI 

H, VSTR 

000 

114 

042 

331 

011 


SHLD 

VSTK 

000 

117 

041 

346 

Gil 


LXI 

H, RSTR-1 

000 

122 

167 




MOV 

M, A 

000 

123 

043 




I NX 

H 

000 

124 

167 




MOV 

M, A 

000 

125 

042 

333 

011 


SHLD 

RSTK 

080 

130 

311 




RET 


800 

131 





* CLER - 

ZERO'S MEMORV 

000 

131 

257 




CLF.R XRfl 

R 

000 

132 

167 




MOV 

M/ R 

000 

133 

043 




I NX 

H 

008 

134 

005 




OCR 

B 

000 

135 

302 

132 

000 


JNZ 

CLER-*-! 

800 

140 

311 




RET 


800 

141 





* DTIN - 

INPUT ROUTINE 

000 

141 

036 

077 



DTIN MVI 

E, 

000 

143 

173 




MOV 

A, E 

000 

144 

315 

161 

002 


CALL 

TVTO 

©00 

147 

076 

040 



MV I 

A, y ' 

800 

151 

315 

161 

002 


CRLL 

TVTO 

008 

154 

041 

147 

013 


DTNl LXI 

H, IBUF 

000 

157 

345 




PUSH 

H 

@00 

160 

006 

112 



MV I 

B, IBLN 

©00 

162 

315 

131 

000 


CALL 

CLER 

000 

165 

341 




POP 

H 

080 

166 

086 

110 



MV I 

B, IBLN-2 

000 

170 

315 

156 

002 


DTN2 CRLL 

TVTI 

808 

173 

273 




CMP 

E 

©00 

174 

312 

154 

©00 


JZ 

DTNl 

000 

177 

376 

030 



CPI 

18H 

800 

201 

302 

215 

000 


JNZ 

£+9 

©80 

204 

061 

200 

347 


LXI 

SP. STRK 

0©0 

207 

315 

076 

340 


CRLL 

CRLF 

888 

212 

303 

024 

000 


JMP 

ERNT 

000 

215 

167 




MOV 

M, fi 

®00 

216 

376 

015 



CPI 

13 

000 

220 

310 




RZ 


000 

221 

005 




DCR 

B 

000 

222 

372 

303 

011 


JM 

ILTL 

808 

225 

043 




I NX 

H 

000 

226 

303 

170 

000 


JMP 

DTN2 

000 

231 





* NTST - 

TEST INPUT FOR LINE ft 

000 

231 

315 

271 

000 


NTST CRLL 

SBLK 

000 

234 

315 

307 

000 


CRLL 

TSTN 

000 

237 

330 




RC 


©00 

248 

104 




MOV 

B, H 

800 

241 

115 




MOV 

C, L 

000 

242 

315 

322 

000 


CRLL 

RDEC 

000 

245 

174 




MOV 

fi, H 

000 

246 

267 




ORA 

R 

000 

247 

382 

147 

011 


JNZ 

ERRM 

000 

252 

173 




MOV 

fl, L 

000 

253 

376 

002 



CPI 

2 

000 

255 

332 

147 

011 


JC 

ERRM 

000 

260 

062 

326 

011 


STR 

FNUM 

800 

263 

140 




MOV 

H, B 

000 

264 

131 




MOV 

L, C 

000 

265 

042 

323 

011 


SHLD 

RPNT SET RPNT 

©00 

270 

311 




RET 


March 

, 1S76 



Dr 

Dobb's 

Journal of 

Computer Calisthenics 


080 

271 






000 

271 

052 

323 

011 

SBLK LHLD 

RPNT 

000 

274 

176 



MOV 

fi, M 

000 

275 

376 

040 


CPI 

' * 

000 

277 

300 



RNZ 


000 

300 

043 



INX 

H 

000 

301 

042 

323 

011 

SBLi SHLD 

RPNT 

000 

304 

383 

274 

000 

JMP 

SBLK+3 

000 

307 




* TSTN - 

TEST FOR NUMERIC 

000 

307 

052 

323 

011 

TSTN LHLD 

RPNT 

000 

312 

176 



MOV 

R, M 

0G0 

313 

376 

060 


TSN1 CPI 

'0' 

000 

315 

330 



RC 


000 

316 

376 

072 


CPI 

'9'+l 

000 

320 

077 



CMC 


000 

321 

311 



RET 


000 

322 




* RDEC - 

CONVERT RSCII NUMBER 

000 

322 




* 

TO BINARY 

000 

322 

041 

000 

000 

RDEC LXI 

H, 0 

080 

325 

012 



LDRX 

B 

080 

326 

315 

313 

600 

CRLL 

TSN1 

800 

331 

330 



RC 


000 

332 

124 



MOV 

D, H 

000 

333 

135 



MOV 

E, L 

000 

334 

051 



DflD 

H 

000 

335 

051 



DRD 

H 

000 

336 

031 



DAD 

D 

000 

337 

051 



DRD 

H 

000 

340 

326 

060 


SUI 

48 

000 

342 

137 



MOV 

E, R 

000 

343 

026 

000 


MVI 

D, 0 

000 

345 

031 



DRD 

D 

800 

346 

003 



INX 

B 

000 

347 

303 

325 

800 

JMP 

RDEC + 3 

000 

352 




* RPLN - REPLACE LINE 

000 

352 

315 

115 

001 

RPLN CRLL 

LNFD 

000 

355 

382 

016 

001 

JNZ 

INSL 

800 

360 

345 



PUSH 

H 

000 

361 

345 



PUSH 

H 

000 

362 

043 



INX 

H 

600 

363 

315 

141 

001 

CRLL 

NXTL 

000 

366 

321 



POP 

D 

000 

367 




* DELETE 

OLD LINE 

000 

367 

176 



RPL1 MOV 

R, M 

©00 

370 

022 



STRX 

D 

©00 

371 

023 



INX 

D 

000 

372 

043 



INX 

H 

008 

373 

376 

002 


CPI 

2 

000 

375 

322 

367 

000 

JNC 

RPL1 

081 

000 

033 



DCX 

D 

©01 

001 

353 



XCHG 


001 

082 

042 

315 

011 

SHLD 

EFPN 

©01 

005 

321 



POP 

D 

001 

006 

052 

323 

011 

LHLD 

RPNT 

001 

011 

176 



MOV 

R, M 

801 

012 

376 

015 


CPM 

13 

001 

014 

310 



RZ 


001 

015 

353 



XCHG 


001 

016 




* INSERT NEW LINE - COUNT 

001 

016 




* CHARACTERS IN NEW LINE 

081 

016 

353 



INSL XCHG 


001 

ei7 

052 

323 

011 

LHLD 

RPNT 

001 

022 

001 

001 

000 

LXI 

B, 1 

001 

025 

176 



INS1 MOV 

R, M 

001 

026 

014 



INR 

C 

001 

027 

043 



INX 

H 

801 

030 

376 

015 


CPI 

13 

001 

032 

382 

025 

001 

JNZ 

INS1 

001 

035 

052 

315 

011 

LHLD 

EFPN 

001 

040 

345 



PUSH 

H 

001 

041 

011 



DRD 

B 

001 

042 

174 



MOV 

R, H 

001 

043 

376 

040 


CPI 

MMRX 

001 

045 

322 

154 

011 

JNC 

ERMO 

001 

050 

042 

315 

011 

SHLD 

EFPN NEW EOF 

001 

053 

301 



POP 

& 

001 

054 




* MOVE ALL LINES UP 

001 

054 

012 



INS2 LDRX 

8 

001 

055 

167 



MOV 

M, A 

001 

056 

178 



MOV 

A, B 

222 




SUB D 


001 

068 

053 



DCX 

H 

001 

061 

813 



DCX 

B 

001 

062 

302 

054 

001 

JNZ 

INS2 

001 

065 

171 



MOV 

fi, C 

001 

066 

074 



INR 

fi 

001 

067 

223 



sue 

E 

001 

070 

302 

054 

001 

JNZ 

INS2 


& Orthodontia, Box 310, Menlo Park CA 94025 Page 23 


78 



001 

073 




♦ INSERT NEW LINE 

001 

073 

072 

326 

011 

LDfi 

FNUM 

001 

©76 

022 



STAX 

D 

001 

077 

023 



I NX 

D 

001 

100 

052 

323 

811 

LHLD 

APNT 

081 

103 

176 



INS3 MOV 

A, M 

001 

104 

022 



sTax 

D 

001 

105 

043 



I NX 

H 

001 

106 

023 



I NX 

D 

001 

107 

376 

815 


CPI 

13 

001 

111 

302 

183 

001 

JNZ 

INS3 

001 

114 

311 



RET 


001 

115 




* LNFD - 

LINE FINDER 

001 

115 

041 

261 

013 

LNFD LXI 

H, TOPL 

001 

120 

072 

326 

011 

LDfi 

FNUM 

001 

123 

107 



MOV 

B, A 

001 

124 

176 



LNF1 MOV 

A, M 

001 

125 

376 

002 


CPI 

2 

001 

127 

330 



RC 


001 

130 

278 



CMP 

B 

001 

131 

320 



RNC 


001 

132 

043 



I NX 

H 

001 

133 

315 

141 

001 

CALL 

NXTL 

001 

136 

303 

124 

001 

JMP 

LNF1 

001 

141 




* NXTL - GET NEXT LINE START 

001 

141 

176 



NXTL MOV 

A, M 

001 

142 

043 



2 NX 

H 

001 

143 

376 

015 


CPI 

13 

001 

145 

310 



R2 


001 

146 

322 

141 

001 

JNC 

NXTL 

001 

151 

053 



DCX 

H 

001 

152 

311 



RET 


001 

153 




* RND - RANDOM NUMBER GEN 

001 

153 

315 

154 

005 

RND CALL 

ASPP 

001 

156 

175 



MOV 

A/ L 

001 

157 

264 



ORA 

H 

001 

168 

312 

171 

001 

JZ 

GEN 

081 

163 

862 

345 

011 

STA 

LORD 

001 

166 

842 

343 

011 

SHLD 

HORD 

001 

171 

072 

345 

011 

GEN LDA 

LORD 

001 

174 

016 

017 


MV I 

C, 15 

001 

176 

107 



MOV 

B, ft 

001 

177 

346 

041 


AN I 

33 BITS 19 & 24 

001 

201 

352 

285 

0G1 

JPE 

GEN1 

001 

204 

067 



STC 


001 

205 

052 

343 

011 

GEN1 LHLD 

HORD 

001 

210 

315 

256 

001 

CALL 

HLRS 

001 

213 

042 

343 

011 

SHLD 

HORD 

001 

216 

170 



MOV 

fi, B 

001 

217 

037 



RAR 


001 

220 

015 



DCR 

C 

001 

221 

302 

176 

001 

JNZ 

GEN+5 

801 

224 

062 

345 

811 

STA 

LORD 

001 

227 

076 

177 


MV I 

A, 7FH 

001 

231 

244 



ANA 

H 

001 

232 

147 



MOV 

H, A 

001 

233 

315 

134 

005 

CALL 

ASPH 

001 

236 

311 



RET 


001 

237 




* HLCM - HL COMPLEMENT 

001 

237 

175 



HLCM MOV 

A, L 

001 

240 

057 



CMA 


001 

241 

157 



MOV 

L, A 

081 

242 

174 



MOV 

A, H 

001 

243 

057 



CMA 


001 

244 

147 



MOV 

H, A 

001 

245 

043 



I NX 

H 

001 

246 

311 



RET 


001 

247 




* HLLS - HL LEFT SHIFT 

001 

247 

175 



HLLS MOV 

A, L 

001 

250 

027 



RAL 


001 

251 

157 



MOV 

L, A 

001 

252 

174 



MOV 

A, H 

001 

253 

027 



RAL 


001 

254 

147 



MOV 

H, A 

001 

255 

311 



RET 


001 

256 




* HLRS - 

HHL RIGHT SHIFT 

001 

256 

174 



HLRS MOV 

A, H 

001 

257 

037 



RAR 


©01 

260 

147 



MOV 

H, A 

001 

261 

175 



MOV 

fi, L 

001 

262 

037 



RAR 


801 

263 

157 



MOV 

L, A 

001 

264 

311 



RET 


001 

265 




* BUML - 

BINARV MULTIPLV 

001 

265 

345 



buml push 

H 

001 

266 

041 

000 

000 

LX I 

H, 0 

001 

271 

042 

337 

011 

SHLD 

PRD2 

001 

274 

006 

820 


MVX 

B, 16 

001 

276 

052 

335 

011 

BUM1 LHLD 

F’RDl 

001 

301 

315 

256 

001 

CALL 

HLRS 

801 

304 

042 

335 

Oil 

SHLD 

PRD1 

001 

307 

052 

337 

011 

LHLD 

PRD2 


001 

312 

322 

320 

001 

JNC 

BUM2 

001 

315 

321 



POP 

D 

001 

316 

031 



DAD 

D 

001 

317 

325 



FUSH 

D 

001 

320 

315 

256 

001 

BUM2 CALL 

HLRS 

001 

323 

©42 

33? 

011 

SHLD 

PRD2 

001 

326 

005 



DCR 

B 

001 

327 

302 

276 

001 

JNZ 

BUM1 

001 

332 

321 



POP 

D 

001 

333 

052 

335 

011 

LHLD 

PRDi 

001 

336 

315 

256 

001 

CALL 

HLRS 

801 

341 

311 



RET 


001 

342 




* BUDV - 

BINARV 1 

001 

342 

315 

23? 

001 

BUDV CALL 

HLCM 

001 

345 

345 



PUSH 

H 

001 

346 

006 

021 


MV I 

B, 17 

267 




ORA fi 


001 

351 

052 

33? 

011 

BUD1 LHLD 

DVD2 

001 

354 

315 

24? 

801 

CALL 

HLLS 

001 

357 

042 

33? 

011 

SHLD 

DVD 2 

801 

362 

005 



DCR 

B 

001 

363 

312 

014 

002 

JZ 

BUD2 

001 

366 

852 

335 

011 

LHLD 

DVD1 

001 

371 

315 

24? 

001 

CALL 

HLLS 

801 

374 

042 

335 

011 

SHLD 

DVD1 

001 

37? 

321 



POP 

D 

002 

000 

073 



DCX 

SP 

002 

001 

073 



DCX 

SP 

002 

002 

031 



DAD 

D 

002 

003 

322 

351 

001 

JNC 

BUD1 

002 

006 

042 

335 

011 

SHLD 

DVD1 

002 

011 

303 

351 

001 

JMP 

BUD1 

002 

014 

321 



BUD2 POP 

D 

002 

015 

311 



RET 


802 

016 




# SPNZ - 

SPACE T( 

002 

016 

072 

341 

011 

SPNZ LDA 

CHCT 

002 

021 

10? 



MOV 

B, A 

002 

022 

326 

010 


SUI 

8 

002 

024 

312 

032 

082 

JZ 

$+3 

002 

02? 

322 

022 

002 

JNC 

SPNZ+4 

002 

032 

117 



MOV 

C, A 

002 

033 

015 



DCR 

C 

002 

034 

076 

040 


MVX 

A, ' ' 

002 

036 

014 



SPN3 INR 

C 

802 

037 

362 

051 

002 

JP 

SPN4 

082 

042 

315 

161 

002 

CALL 

TVTO 

002 

045 

004 



I NR 

B 

002 

046 

303 

036 

002 

JMP 

SPN3 

002 

051 

170 



SPN4 MOV 

A, B 

002 

052 

062 

341 

011 

STA 

CHCT 

002 

055 

311 



RET 


002 

056 




♦ VSIN - 

INCREMEf 

002 

056 

315 

063 

002 

VSIN CALL 

STOV 

002 

061 

042 

331 

011 

SHLD 

VSTK 

002 

064 

311 



RET 


002 

065 




* STOV - 

CHECK FC 

802 

065 

052 

32? 

011 

STOV LHLD 

ASTK 

002 

070 

353 



XCHG 


002 

071 

052 

331 

011 

LHLD 

VSTK 

082 

074 

043 



I NX 

H 

002 

075 

043 



I NX 

H 

002 

076 

175 



MOV 

A, L 

002 

077 

223 



SUB 

E 

002 

100 

174 



MOV 

R, H 

232 




SBB D 


002 

102 

322 

214 

011 

JNC 

STOF 

002 

105 

311 



RET 


002 

106 




* TAPE INPUT ROUT] 

002 

106 

©16 

001 


TPIN MVI 

C, 1 

002 

110 

021 

010 

000 

LX I 

D, 8 

002 

113 

333 

001 


IN 

TAPU 

002 

115 

241 



ANA 

C 

002 

116 

302 

113 

002 

JNZ 

TPIN+5 

002 

121 

006 

300 


MV I 

B, 192 

002 

123 

005 



DCR 

B 

002 

124 

302 

123 

002 

JNZ 

*-4 

002 

127 

333 

001 


TPI2 IN 

TAPU 

002 

131 

241 



ANA 

C 

082 

132 

202 



ADD 

D 

0©2 

133 

017 



RRC 


002 

134 

12? 



MOV 

D, A 

002 

135 

006 

200 


MV I 

B, 128 

©02 

13? 

905 



DCR 

B 

©02 

140 

302 

137 

082 

JNZ 

$-4 

©02 

143 

035 



DCR 

E 

©02 

144 

302 

127 

082 

JNZ 

TP 12 


Page 24 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


March, 1976 


79 




602 

147 

167 




MOV 

M/ R 

002 

150 

271 




CMP 

C 

002 

151 

310 




R2 


002 

152 

043 




I NX 

H 

002 

153 

303 

110 

002 


JMP 

TPIN+2 

002 

156 

333 

000 


TVTI 

IN 

TVT 

002 

160 

311 




RET 


002 

161 

323 

000 


TVTO 

OUT 

TVT 

002 

163 

311 




RET 


002 

164 




* END BLOCK 1 

082 

164 




* STMT - 

STATEMENT PROCESSOR 

002 

164 

021 

226 

002 

STMT 

LX I 

D, LTMS 

002 

16? 

315 

076 

004 


COLL 

TST 

002 

172 

315 

303 

004 

STM1 

CALL 

TSTV 

002 

175 

332 

067 

011 


JC 

ERRS 

002 

200 

021 

222 

002 


LX I 

D, EQMS 

002 

203 

315 

076 

004 


CALL 

TST 

002 

206 

315 

226 

006 


CALL 

EXPR 

002 

211 

315 

150 

004 


CALL 

DONE 

002 

214 

3l5 

052 

005 


CALL 

STOR 

002 

217 

303 

164 

004 


JMP 

NXT 

002 

222 

275 



EQMS 

DB 

'='♦128 

002 

223 

303 

067 

011 


JMP 

ERRS 

002 

226 

114 

105 


LTMS 

DW 

'LE' 

002 

230 

324 




DB 

'T'♦128 

002 

231 

021 

310 

082 


LXI 

D, GOMS 

002 

234 

315 

076 

004 


CRLL 

TST 

002 

23? 

021 

256 

002 


LXI 

D, TOMS 

002 

242 

315 

076 

004 


CALL 

TST 

002 

245 

315 

226 

006 


CRLL 

EXPR 

002 

250 

315 

150 

004 


CALL. 

DONE 

802 

253 

303 

216 

004 


JMP 

XFER 

002 

256 

124 



TOMS 

DB 

'T ' 

002 

25? 

31? 




D8 

'0'^128 

002 

260 

021 

302 

002 


LXI 

D, SBMS 

002 

263 

315 

076 

004 


CALL 

TST 

002 

266 

315 

226 

006 


CALL 

EXPR 

0O2 

271 

315 

150 

004 


CALL 

DONE 

002 

274 

315 

250 

004 


CALL 

SAV 

002 

277 

303 

216 

004 


JMP 

XFER 

002 

382 

123 

125 


SBMS 

DW 

'SU' 

002 

304 

302 




DB 

'B'+128 

002 

305 

303 

06? 

011 


JMP 

ERRS 

002 

310 

107 



GOMS 

DB 

'G' 

002 

311 

317 




DB 

'0'+128 

002 

312 

021 

043 

003 


LXI 

D> PRMS 

002 

315 

315 

076 

004 


CALL 

TST 

002 

320 

021 

013 

003 

PRTi 

LXI 

D, QUMS 

002 

323 

315 

076 

004 


CALL 

TST 

002 

326 

315 

204 

005 


CALL 

PRS 

802 

331 

021 

345 

002 

PRT2 

LXX 

D, CMMS 

002 

334 

315 

076 

004 


CALL 

TST 

002 

337 

315 

016 

002 


CALL 

SPNZ 

©02 

342 

203 

320 

002 


JMP 

PRTI 

©02 

345 

254 



CMMS 

DB 

'+128 

002 

346 

021 

375 

002 


LXI 

D, SMMS 

002 

351 

315 

076 

004 


CRLL 

TST 

002 

354 

052 

323 

011 


LHLD 

APNT 

002 

35? 

176 




MOV 

A, M 

002 

360 

376 

015 



CPI 

13 

002 

362 

312 

005 

003 


JZ 

SMM2 

002 

365 

376 

072 



CPI 

' : ' 

002 

367 

302 

320 

002 


JNZ 

PRTI 

002 

372 

303 

005 

003 


JMP 

SMM2 

©02 

375 

273 



SMMS 

DB 

'} '+128 

002 

376 

315 

076 

340 


CALL 

CRLF 

003 

801 

257 




XRA 

A 

003 

002 

062 

341 

011 


STA 

CHCT 

003 

005 

315 

150 

004 

SMM2 

CALL 

DONE 

003 

010 

303 

164 

004 


JMP 

NXT 

003 

013 

242 



QUMS 

DB 

'"'♦123 

003 

014 

052 

323 

011 


LHLD 

APNT 

003 

01? 

176 




MOV 

A, M 

003 

020 

376 

015 



CPI 

13 

003 

022 

312 

376 

002 


JZ 

SMMS+1 

003 

025 

376 

072 



CPI 

' : ' 

003 

027 

312 

376 

002 


JZ 

SMMS^l 

©83 

032 

315 

226 

006 


CALL 

EXPR 

003 

035 

315 

105 

005 


CALL 

PRNV 

003 

040 

203 

331 

002 


JMP 

PRT2 

803 

043 

120 



PRMS 

DB 

'P' 

003 

044 

322 




DB 

'R'+±28 

©83 

045 

021 

107 

003 


LXI 

D, IFMS 

eo3 

050 

315 

076 

004 


CALL 

TST 

©03 

033 

315 

226 

006 


CALL 

EXPR 

003 

056 

315 

074 

006 


CALL 

RELP 

003 

061 

315 

226 

006 


CALL 

EXPR 

083 

064 

315 

324 

O07 


CALL 

CMPR 

083 

067 

322 

164 

002 


JNC 

STMT 

March 

, 1976 



Dr. 

Dobb's Journal of 

Computer Calisthenics 


003 

072 

052 

323 

011 

IFNX LHLD 

APNT 

003 

075 

315 

141 

001 

CALL 

NXTL 

003 

100 

053 



DCX 

H 

003 

101 

042 

323 

011 

SHLD 

APNT 

003 

104 

303 

164 

094 

JMP 

NXT 

003 

10? 

111 



IFMS DB 

'I' 

003 

110 

306 



DB 

'F'+128 

003 

111 

021 

166 

003 

LXI 

D, INMS 

003 

114 

315 

076 

004 

CALL 

TST 

063 

117 

257 



XRA 

A 

003 

120 

862 

341 

011 

STA 

CHCT 

003 

123 

315 

141 

00 3 

CALL 

DTIN 

003 

126 

315 

303 

804 

INM1 CALL 

TSTV 

003 

131 

332 

067 

011 

JC 

ERRS 

003 

134 

315 

025 

006 

CALL 

NCGV 

003 

137 

315 

052 

085 

CRLL 

STOR 

003 

142 

021 

153 

003 

LXI 

D, CMM1 

003 

145 

315 

076 

004 

CALL 

TST 

003 

150 

383 

126 

003 

JMP 

INM1 

003 

153 

254 



CMM1 DB 

'+128 

003 

154 

25? 



XRA 

A 

093 

155 

062 

341 

011 

STfi 

CHCT 

003 

160 

315 

150 

004 

CALL 

DONE 

003 

163 

303 

164 

004 

JMP 

NXT 

003 

166 

111 



INMS DB 

'I' 

003 

16? 

316 



DB 

'N'+128 

003 

170 

621 

204 

003 

LXI 

D, RTMS 

003 

173 

315 

076 

004 

CALL 

TST 

003 

176 

315 

150 

904 

CALL 

DONE 

003 

201 

303 

066 

005 

JMP 

RSTO 

003 

204 

122 

105 


RTMS DW 

'RE' 

003 

206 

324 



DB 

'T'+12S 

003 

20? 

021 

220 

083 

LXI 

D, ENMS 

003 

212 

315 

076 

004 

CRLL 

TST 

003 

215 

303 

271 

011 

JMP 

ENDM 

003 

220 

105 

116 


ENM5 DW 

'EN' 

003 

222 

384 



DB 

'D'+128 

003 

223 

021 

234 

003 

LXI 

D, LSMS 

003 

226 

315 

076 

004 

CALL 

TST 

003 

231 

303 

310 

010 

JMP 

LIST 

003 

234 

114 

111 

123 

LSMS DW 

'LIS' 

003 

237 

324 



DB 

'T'+128 

003 

240 

021 

265 

003 

LXI 

D, RNMS 

003 

243 

315 

076 

GG4 

CALL 

TST 

003 

246 

315 

061 

G00 

CALL 

INIT 

003 

251 

041 

261 

013 

LXI 

H* TOPL 

003 

254 

176 



MOV 

R, M 

003 

255 

376 

002 


CPI 

2 

003 

257 

332 

14? 

011 

JC 

ERRM 

003 

262 

303 

204 

004 

JMP 

NXT1-4 

003 

265 

122 

125 


RNMS DW 

'RU ' 

003 

26? 

316 



DB 

'N'+128 

003 

270 

021 

301 

003 

LXI 

D/ CLMS 

003 

273 

315 

076 

004 

CRLL 

TST 

002 

276 

303 

003 

000 

JMP 

STRT 

003 

301 

103 

114 

105 101 

CLMS DW 

'CLEA' 

003 

305 

322 



DB 

'R'+128 

003 

306 

021 

317 

O03 

LXI 

D, TPMS 

003 

311 

315 

076 

004 

CALL 

TST 

003 

314 

383 

114 

005 

JMP 

TAPE 

003 

317 

124 

101 

120 

TPMS DW 

'TAP' 

003 

322 

305 



DB 

'E'+128 

003 

323 

021 

345 

003 

LXI 

D, LDMS 

003 

326 

315 

076 

004 

CALL 

TST 

003 

331 

841 

261 

013 

LXI 

H, TOPL 

003 

334 

315 

106 

002 

CRLL 

TPIN 

003 

337 

042 

315 

011 

SHLD 

EFPN 

003 

342 

303 

024 

000 

JMP 

ERNT 

003 

345 

114 

11? 

101 

LDMS DW 

'LGA' 

003 

350 

304 



DB 

'D'+128 

003 

351 

021 

005 

004 

LXI 

D; DMSG 

003 

354 

315 

076 

004 

CALL 

TST 

003 

357 

315 

303 

004 

CALL 

TSTV 

003 

362 

322 

310 

011 

JNC 

DMER . 

003 

365 

021 

376 

003 

LXI 

D, DMC2 

003 

370 

315 

076 

004 

CALL 

TST 

003 

373 

383 

357 

003 

JMP 

#-15 

003 

376 

254 



DMC2 DB 

'+128 

003 

377 

315 

150 

004 

CALL 

DONE 

004 

002 

383 

164 

004 

JMP 

NXT 

084 

005 

104 

111 


DMSG DW 

'DX ' 

804 

007 

315 



DB 

'M'+128 

004 

010 

021 

024 

004 

LXI 

D*SZEM 

004 

013 

315 

076 

004 

CALL 

TST 

004 

816 

315 

254 

007 

CRLL 

SZER 

004 

021 

303 

024 

000 

JMP 

ERNT 

004 

024 

123 

111 

132 

SZEM DW 

'SIZ' 

004 

02? 

305 



DB 

'E'^128 

084 

030 

021 

041 

004 

LXI 

D, RMKS 

004 

033 

315 

076 

004 

CALL 

TST 

804 

836 

303 

072 

003 

JMP 

IFNX 


& Orthodontia, Box 310, Menlo Park CA 94025 Page 25 


80 




004 

041 

122 

105 


RMKS DM 

RE' 



004 

275 

160 



MOV 

M, B 

004 

045 

315 



DB 

'M'+128 



004 

276 

843 



I NX 

H 

004 

044 

G21 

067 

0O4 

LXI 

D, CLRM 



004 

277 

042 

333 

011 

SHLD 

RSTK 

0O4 

04? 

315 

076 

004 

CALL 

TST 



004 

302 

311 



RET 


004 

032 

315 

220 

340 

CALL 

CLRS 



004 

383 




* TSTV - 

TEST FOR VfiRIRBLE 

004 

053 

257 



XRA 

A 



084 

303 

016 

000 


TSTV MVI 

C, 0 

004 

056 

062 

341 

011 

STA 

CHCT 



004 

305 

052 

323 

011 

LHLD 

APNT 

004 

0S1 

315 

150 

004 

CALL 

DONE 



004 

310 

176 



MOV 

A, M 

004 

064 

303 

164 

004 

JMP 

NXT 



004 

311 

376 

101 


CPI 

'R' 

004 

06? 

103 

114 

122 

CLRM DW 

' CLR' 



084 

313 

330 



RC 


004 

0?2 

323 



DB 

'S' +128 



004 

314 

376 

133 


CPI 

'Z'+l 

004 

073 




+ END OF 

STATEMENT PROCESSOR 

004 

316 

077 



CMC 


004 

073 




* IF MORE 

OPERATIONS ARE 

ADDED 

004 

317 

330 



RC 


©04 

073 




* INPUT TESTS HERE 



004 

328 

187 



MOV 

B, A 

004 

073 




* 




804 

321 

043 



XNX 

H 

004 

073 




* DEFAULT 

IS LET 



004 

322 

176 



MOV 

A/ M 

004 

073 




* 




084 

323 

376 

050 


CPI 


004 

©73 

303 

172 

002 

JMP 

STM1 



004 

325 

302 

336 

004 

JNZ 

*+6 

004 

076 




* TST ROUTINE - STRING 

COMP 

004 

330 

043 



I NX 

H 

004 

076 




* ALTERNATE RETURN IF 

NO 

MATCH 

004 

331 

016 

340 


MVI 

C, OE0H 

004 

076 

006 

001 


TST MVI 

B/ 1 



004 

333 

303 

357 

004 

JMP 

TSV1 

004 

100 

052 

323 

011 

LHLD 

APNT 



004 

336 

376 

861 


CPI 


004 

103 

032 



TST1 LDAX 

D 



004 

340 

332 

357 

004 

JC 

T5V1 

004 

104 

027 



RAL 




604 

343 

376 

067 


CPI 

'7' 

004 

105 

322 

112 

004 

JNC 

TST2 



004 

345 

322 

357 

004 

JNC 

TSV1 

004 

110 

005 



OCR 

B 



004 

350 

043 



I NX 

H 

004 

111 

077 



CMC 




004 

351 

346 

607 


AN I 

7 

004 

112 

037 



TST2 RAR 




004 

353 

017 



RRC 


004 

113 

276 



CMP 

M 



004 

354 

017 



RRC 


004 

114 

843 



I NX 

H 



004 

355 

017 



RRC 


004 

115 

023 



I NX 

D 



004 

356 

117 



MOV 

C, A 

004 

116 

302 

132 

004 

JN2 

TST3 



004 

357 

315 

301 

000 

TSV1 CALL 

SBL1 

004 

121 

170 



MOV 

A, B 



004 

362 

076 

037 


MVI 

A, 1FH 

00 4 

122 

267 



ORA 

A 



004 

364 

240 



ANA 

B 

004 

123 

302 

103 

004 

JN2 

TST1 



004 

365 

261 



ORA 

C 

604 

126 

315 

381 

000 

CALL 

SBL1 



004 

366 

107 



MOV 

B, A 

004 

131 

311 



RET 




004 

367 

016 

377 


MVI 

C> -1 

004 

132 




* SET ALT. 

RETURN 



004 

371 

041 

356 

011 

LXI 

H, SVMT-1 

©04 

132 

170 



TST3 MOV 

A, B 



004 

374 

043 



TSV2 INX 

H 

004 

133 

267 



ORA 

A 



004 

375 

014 



I NR 

C 

004 

134 

312 

145 

004 

JZ 

TST5 



004 

376 

±76 



MOV 

r* n 

004 

137 

032 



TST4 LDAX 

D 



804 

377 

267 



ORA 

A 

©04 

140 

023 



I NX 

D 



005 

000 

312 

017 

005 

JZ 

TSV3 

804 

141 

027 



RAL 




005 

003 

171 



MOV 

A/ C 

004 

142 

322 

137 

004 

JNC 

TST4 



005 

004 

376 

170 


CPI 

NSVM 

004 

145 

353 



TST5 XCHQ 




005 

006 

322 

207 

011 

JNC 

SMOE 

084 

146 

321 



POP 

D 



005 

011 

176 



MOV 

A, M 

004 

147 

351 



PCHL 

ALT. RET 


005 

012 

270 



CMP 

B 

004 

150 




* DONE - 

TEST FOR C/R 

OR 


005 

013 

302 

374 

004 

JNZ 

TSV2 

004 

150 

315 

271 

000 

DONE CALL 

SBLK 



005 

016 

074 



I NR 

A 

804 

153 

376 

815 


CPI 

13 



005 

017 

160 



TSV3 MOV 

M/ B 

804 

155 

310 



RZ 




005 

020 

365 



PUSH 

PSW 

004 

156 

376 

072 


CPI 

*: * 



005 

021 

365 



PUSH 

PSW 

004 

160 

310 



RZ 




005 

822 

026 

000 


MVI 

D, O 

084 

161 

303 

067 

011 

JMP 

ERRS 



005 

024 

171 



MOV 

Ft C 

004 

164 




+ NXT - SETUP FOR NEXT 

LINE # 

005 

025 

827 



RAL 


004 

164 

052 

323 

011 

NXT LHLD 

APNT 



605 

026 

137 



MOV 

E, A 

@04 

167 

176 



MOV 

A, M 



005 

027 

041 

147 

012 

LXI 

H, VSTR 

004 

170 

043 



I NX 

H 



005 

032 

031 



DAD 

D 

004 

171 

376 

072 


CPI 

' : * 



005 

033 

170 



MOV 

A, B 

004 

173 

312 

210 

004 

JZ 

NXT 1 



005 

034 

326 

340 


SUI 

0E0H 






MOV 

A, M 



005 

036 

322 

141 

007 

JNC 

TSV4 

004 

177 

376 

082 


CPI 

2 



005 

041 

315 

134 

005 

CALL 

ASPH 

004 

201 

332 

161 

011 

JC 

EOFR 



805 

044 

361 



POP 

PSW 

004 

204 

062 

325 

011 

STA 

LNUM 



005 

045 

314 

056 

002 

CZ 

VS IN 

004 

207 

043 



I NX 

H 



005 

050 

361 



POP 

PSW 

004 

210 

315 

301 

000 

NXT1 CALL 

SBL1 



805 

051 

311 



RET 


004 

213 

303 

164 

082 

JMP 

STMT 



005 

052 




* STOR - 

STOR VRR. VALUE 

004 

216 




* XFER - 

NEW LINE FOR 

GO 


005 

052 

315 

154 

005 

STOR CALL 

ASPP 

004 

216 

315 

154 

005 

XFER CALL 

ASPP 



803 

055 

345 



PUSH 

H 

004 

221 

174 



MOV 

A/ H 



005 

056 

315 

154 

005 

CALL 

ASPP 

004 

222 

267 



ORA 

R 



005 

061 

321 



POP 

D 

004 

223 

302 

147 

011 

JNZ 

ERRM 



005 

062 

163 



MOV 

M/ E 

004 

226 

175 



MOV 

R, L 



005 

063 

043 



I NX 

H 

004 

227 

376 

002 


CPI 

2 



005 

064 

162 



MOV 

M, D 

004 

231 

332 

147 

011 

JC 

ERRM 



005 

065 

311 



RET 


004 

234 

062 

326 

011 

XFE1 STA 

FNUM 



005 

066 




★ RSTO - 

NEW # FOR RETURN 

084 

237 

315 

115 

001 

CALL 

LNFD 



005 

066 

652 

333 

011 

RSTO LHLD 

RSTK 

004 

242 

302 

175 

011 

JNZ 

ERML 



005 

071 

053 



DCX 

H 

004 

245 

303 

284 

004 

JMP 

NXT1—4 



085 

672 

176 



MOV 

R, M 

804 

250 




* SAV - SAVE RETURN LINE 

# 

005 

073 

267 



ORfi 

A 

004 

250 

315 

141 

001 

SAV CALL 

NXTL 



005 

074 

312 

221 

011 

JZ 

RNER 

004 

253 

332 

161 

011 

JC 

EOFR 



805 

077 

042 

333 

011 

SHLD 

RSTK 

004 

256 

106 



MOV 

B, M 



005 

102 

303 

234 

004 

JMP 

XFE1 

084 

257 

041 

357 

011 

LXI 

Hj RSTR+8 



005 

105 




* PRNV - 

PRINT VARIABLE 

004 

262 

353 



XCHQ 




005 

105 

315 

154 

005 

PRNV CALL 

ASPP 

804 

263 

052 

333 

Oil 

LHLD 

RSTK 



005 

110 

315 

256 

005 

CALL 

DECA 

©04 

266 

175 



MOV 

Rj L 



005 

113 

311 



RET 


004 

267 

223 



SUB 

E 



005 

114 




* TAPE - 

OUTPUT TO TAPE 

004 

270 

174 



MOV 

A. H 



005 

114 

041 

261 

013 

TAPE LXI 

H>TOPL 

©04 

271 

232 



SBB 

D 



005 

117 

176 



MOV 

A, M 

004 

272 

322 

202 

011 

JNC 

QSER 



005 

120 

315 

252 

010 

CRLL 

TAPO 

Page 26 


Dr. 

Dobb's 

Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo 

Park CA 94025 

March, 1976 


81 



eos 

123 

376 

002 


CPI 

2 

005 

372 

013 



CNV1 

DCR 

c 


005 

125 

332 

024 

000 

JC 

ERNT 

005 

373 

315 

161 

002 


CRLL 

TVTO 


005 

120 

043 



I NX 

H 

005 

376 

072 

341 

011 


LDR 

CHCT 


003 

131 

303 

117 

005 

JMP 

TRPE+3 

006 

001 

074 




I NR 

R 


005 

134 




* END BLOCK 2 

006 

002 

062 

341 

011 


STR 

CHCT 


003 

134 




* RSPH - 

PUSH HL TO RSTK 

006 

©05 

006 

200 



MV 1 

B, 128 


003 

134 

345 



RSPH PUSH 

H 

006 

007 

311 




RET 



005 

135 

315 

065 

002 

CALL 

STOV 

006 

010 

200 



CNV2 

ADD 

B 


005 

140 

833 



DCX 

D 

006 

011 

362 

020 

006 


JP 

CNV3 


005 

141 

341 



POP 

H 

006 

014 

220 




SUB 

B 


003 

142 

173 



MOV 

R, L 

006 

815 

303 

372 

005 


JMP 

CNV1 


005 

143 

022 



STRX 

D 

006 

028 

015 



CNV3 

DCR 

C 


005 

144 

033 



DCX 

D 

006 

021 

312 

014 

006 


JZ 

CNV3-4 


005 

145 

174 



MOV 

f\. H 

006 

024 

311 




RET 



005 

146 

022 



STRX 

D 

006 

025 




+ NCOV - 

INPUT # TO 

BINRRV 

005 

147 

353 



XCHG 


006 

825 

032 

323 

011 

NCOV 

LHLD 

RPNT 


005 

150 

042 

327 

011 

SHLD 

RSTK 

006 

030 

345 




PUSH 

H 


005 

153 

311 



RET 


006 

031 

052 

317 

011 


LHLD 

TMP1 


005 

154 




* RSPP - 

POP HL FROM RSTK 

006 

034 

072 

341 

011 


LDR 

CHCT 


005 

154 

052 

327 

011 

RSPP LHLD 

RSTK 

006 

03? 

267 




ORR 

R 


005 

157 

353 



XCHG 


006 

040 

392 

046 

006 


JNZ 

NC02 


005 

160 

041 

147 

013 

LX I 

Hj RSTR 

006 

043 

041 

147 

813 


LXI 

H, IBUF 


005 

163 

315 

237 

001 

CRLL 

HLCM 

006 

046 

315 

301 

000 

NC02 

CRLL 

SBL1 


005 

166 

031 



DRD 

D 

006 

051 

315 

226 

006 


CALL 

EXPR 


005 

167 

332 

276 

Oil 

JC 

SUFE 

006 

054 

315 

271 

000 


CALL 

SBLK 


005 

172 

353 



XCHG 


006 

05? 

043 




I NX 

H 


005 

173 

126 



MOV 

D, M 

006 

060 

042 

317 

011 


SHLD 

TMP1 


005 

174 

043 



I NX 

H 

006 

063 

174 




MOV 

R, H 


005 

175 

136 



MOV 

E, M 

006 

064 

062 

341 

011 


STR 

CHCT 


005 

176 

043 



XNX 

H 

006 

06? 

341 




POP 

H 


005 

177 

042 

32? 

011 

SHLD 

RSTK 

006 

070 

042 

323 

011 


SHLD 

RPNT 


005 

282 

353 



XCHG 


006 

073 

311 




RET 



005 

283 

311 



RET 


006 

074 




* RELP - 

RELATIONAL 

OP TEST 

005 

204 




* PRS - PRINT STRING 

006 

074 

021 

112 

006 

RELP 

LXI 

D, M0 


005 

204 

052 

323 

011 

PRS LHLD 

RPNT 

006 

077 

315 

076 

004 


CRLL 

TST 


005 

287 

053 



DCX 

H 

006 

102 

056 

000 



MV I 

L, 0 


005 

210 

176 



MOV 

A, M 

006 

104 

046 

000 


REL1 

MV I 

H, 0 


005 

211 

376 

042 


CPI 

' H ' 

086 

106 

315 

134 

003 


CRLL 

RSPH 


005 

213 

302 

207 

005 

JNZ 

PRS+3 

006 

111 

311 




RET 



065 

23 6 

043 



I NX 

H 

006 

112 

273 



H0 

DB 

'“'+128 


005 

217 

072 

341 

011 

LDR 

CHCT 

806 

113 

021 

136 

006 


LXI 

D, M4 


005 

222 

107 



MOV 

B, R 

006 

116 

313 

076 

004 


CRLL 

TST 


005 

223 

176 



PRS1 MOV 

R, M 

006 

121 

021 

134 

006 


LXI 

D, Ml 


005 

224 

043 



I NX 

H 

006 

124 

315 

076 

004 


CRLL 

TST 


005 

223 

376 

015 


CPI 

13 

006 

127 

056 

002 



MV I 

L, 2 


005 

227 

312 

226 

011 

JZ 

CRER 

006 

131 

303 

104 

006 


JMP 

RF.L1 


005 

232 

376 

042 


CPI 

' “ ' 

006 

134 

275 



Ml 

DB 

'“"+128 


005 

234 

312 

246 

005 

JZ 

PRS3 

006 

133 

021 

130 

006 


LXI 

D, M3 


005 

237 

004 



I NR 

B 

006 

140 

315 

076 

004 


CRLL 

TST 


©05 

240 

315 

161 

002 

CRLL 

TVTO 

006 

143 

056 

003 



MV I 

L, 3 


003 

243 

303 

223 

005 

JMP 

PRS1 

006 

143 

303 

104 

006 


JMP 

REL1 


003 

246 

170 



PRS3 MOV 

A, B 

006 

130 

276 



M3 

DB 

'>'+128 


005 

247 

062 

341 

011 

STB 

CHCT 

006 

131 

056 

001 



MV I 

L, 1 


003 

232 

315 

301 

000 

CRLL 

SBL1 

006 

153 

303 

104 

006 


JMP 

REL1 


003 

253 

311 



RET 


006 

156 

274 



M4 

DB 

'<'+128 


005 

256 




* DECR A 

CNVV - OUTPUT # 

006 

157 

021 

222 

006 


LXI 

D, M41 


005 

236 

174 



DECR MOV 

A, H 

006 

162 

315 

076 

004 


CRLL 

TST 


005 

257 

267 



ORR 

R 

006 

163 

021 

200 

006 


LXI 

D, M5 


005 

260 

362 

302 

003 

JP 

DEC1 

006 

170 

313 

076 

004 


CRLL 

TST 


005 

263 

076 

033 


MV I 

R, '-' 

006 

173 

056 

005 



MV I 

L, 5 


005 

265 

315 

161 

002 

CRLL 

TVTO 

006 

175 

303 

104 

006 


JMP 

REL1 


005 

270 

072 

341 

011 

LDR 

CHCT 

006 

200 

275 



MS 

DB 

'“'+128 


005 

273 

074 



I NR 

a 

006 

201 

021 

214 

006 


LXI 

D, M6 


005 

274 

062 

341 

011 

STR 

CHCT 

006 

204 

315 

076 

004 


CRLL 

TST 


003 

277 

315 

237 

001 

CRLL 

HLCM 

006 

207 

056 

003 



MV I 

L, 3 


005 

302 

001 

005 

000 

DEC1 LXI 

B> 5 

006 

211 

303 

104 

006 


JMP 

REL1 


005 

305 

021 

360 

330 

LX I 

D, -10000 

006 

214 

274 



M6 

DB 

'<'+128 


003 

310 

315 

344 

005 

CALL 

CNVV 

006 

215 

056 

004 



MV I 

L, 4 


003 

313 

021 

030 

374 

LX I 

D, -1000 

006 

217 

383 

104 

866 


JMP 

REL1 


005 

316 

313 

344 

005 

CRLL 

CNVV 

006 

222 

276 



M41 

DB 

'>'+128 


005 

321 

021 

234 

377 

LXI 

D, -100 

006 

223 

303 

233 

011 


JMP 

REER 


005 

324 

313 

344 

005 

CRLL 

CNVV 

006 

226 




* EXPR - 

EXP. EVRLUfiTOR 

005 

327 

021 

366 

377 

LXI 

D, -10 

806 

226 




* CRN BE 

CfiLLED RECURSIVELV 

005 

332 

313 

344 

003 

CRLL 

CNVV 

006 

226 

021 

253 

006 

EXPR 

LXI 

D, E0 


005 

335 

021 

377 

377 

LXI 

D, -1 

006 

231 

315 

076 

004 


CRLL 

TST 


005 

340 

313 

344 

005 

CRLL 

CNVV 

006 

234 

315 

332 

006 


CRLL 

TERM 


005 

343 

311 



RET 


006 

237 

315 

154 

003 


CRLL 

RSPP 


005 

344 

305 



CNVV PUSH 

B 

006 

242 

315 

237 

001 


CRLL 

HLCM 


005 

343 

006 

057 


MV I 

B/ '0'-l 

006 

245 

315 

134 

003 


CRLL 

RSPH 


005 

347 

004 



I NR 

B 










805 

350 

031 



DRD 

D 

303 2 

71 006 


JMP El 



005 

331 

174 



MOV 

ft, H 

006 

253 

253 



E0 

DB 

'-'+128 


085 

352 

027 



RAL 


006 

254 

021 

263 

006 


LXI 

D, E01 


005 

353 

322 

347 

003 

JNC 

CNVV+3 

006 

25? 

315 

076 

004 


CRLL 

TST 


005 

356 

353 



XCHG 


006 

262 

303 

266 

006 


JMP 

E01+1 


005 

357 

313 

237 

001 

CRLL 

HLCM 

006 

265 

253 



E01 

DB 

'+'+128 


005 

362 

031 



DRD 

D 

006 

266 

315 

332 

006 


CRLL 

TERM 


005 

363 

170 



MOV 

R, B 

006 

271 

021 

310 

606 

El 

LXI 

D, E2 


005 

364 

301 



POP 

B 

006 

274 

315 

076 

084 


CRLL 

TST 


005 

365 

376 

060 


CPI 

'0' 

006 

277 

313 

332 

006 


CRLL 

TERM 


005 

367 

312 

010 

006 

JZ 

CNV2 

006 

302 

313 

022 

010 


CRLL 

IRDD 









006 

383 

303 

271 

006 


JMP 

El 


March 

, 1976 



Dr. 

Dobb's Journal of 

Computer Calisthenics 

& Orthodontia, 

Box 

310, 

Menlo Park 

CA 94025 

Page 27 


82 



e©6 

310 

253 



E2 DB 

'+'+128 

007 

176 

353 



XCHG 


ees 

311 

021 

330 

006 

LX I 

D, E3 

007 

177 

341 



POP 

H 

006 

314 

315 

076 

004 

CALL 

TST 

087 

280 

361 



POP 

PSW 

606 

317 

315 

332 

006 

CALL 

TERM 

007 

201 

302 

237 

007 

JN2 

TSV6 

006 

322 

315 

011 

010 

CALL 

I SUB 

007 

204 




* NEW VAR. 


006 

323 

303 

271 

006 

JMP 

El 

007 

204 

325 



PUSH 

D 

006 

330 

255 



E3 DB 

'-'+128 

007 

285 

353 



XCHG 


006 

331 

311 



RET 


007 

206 

052 

321 

011 

LHLD 

NMLC 

086 

332 




* TERM - 

TERM EVALUATOR 

087 

211 

353 



XCHG 


006 

332 




* CAN BE 

CALLED RECURSIVELY 

007 

212 

163 



MOV 

M, E 

006 

332 

315 

376 

006 

TERM CALL 

FACT 

007 

213 

043 



I NX 

H 

006 

333 

021 

.354 

096 

LXJ. 

Dj. 11 

007 

214 

162 



MOV 

M, D 

006 

340 

315 

076 

004 

CALL 

TST 

007 

215 

341 



POP 

H 

006 

343 

315 

376 

006 

CALL 

FACT 

007 

216 

051 



DAD 

H TIMES 2 

006 

346 

315 

157 

010 

CALL 

MULT 

007 

217 

031 



DAD 

D 

006 

351 

303 

335 

006 

JMP 

TERM+3 

007 

220 

042 

321 

011 

SHLD 

NMLC 

006 

354 

252 



11 DB 

'+'+128 

007 

223 

174 



MOV 

R, H 

006 

355 

021 

374 

006 

LX I 

D, 12 

007 

224 

376 

040 


CPI 

MMRX 

006 

360 

315 

076 

004 

CALL 

TST 

007 

226 

322 

154 

011 

JNC 

ERMO 

006 

363 

315 

376 

006 

CALL 

FACT 

007 

231 

361 



POP 

PSW 

006 

366 

315 

070 

010 

CALL 

DIVD 

007 

232 

315 

056 

002 

CALL 

VS IN 

006 

371 

303 

335 

006 

JMP 

TERM+3 

007 

235 

067 



STC 


006 

374 

257 



12 DB 

'/'+128 

007 

236 

311 



RET 


006 

375 

311 



RET 


007 

237 




* EXISTING 

DIM VAR. 

006 

376 




♦ FACT - 

GET FACTORS 

007 

237 

033 



TSV6 DCX 

D 

006 

376 

315 

103 

007 

FACT CALL 

FNTS 

007 

240 

353 



XCHG 


007 

001 

320 



RNC 


007 

241 

051 



DAD 

H 

007 

002 

315 

303 

004 

CALL 

TSTV 

007 

242 

031 



DAD 

D 

007 

005 

332 

026 

007 

JC 

F0 

007 

243 

136 



MOV 

E, M 

007 

010 

312 

245 

011 

JZ 

UDVE 

007 

244 

043 



I NX 

H 

007 

013 

315 

154 

005 

CALL 

ASPP 

007 

245 

126 



MOV 

D. M 

007 

016 

136 



MOV 

E, M 

007 

246 

353 



XCHG 


007 

017 

043 



I NX 

H 

007 

247 

315 

134 

005 

CALL 

ASPH 

007 

020 

126 



MOV 

D, M 

007 

252 

361 



POP 

PSW 

007 

021 

353 



XCHO 


007 

253 

311 



RET 


007 

022 

315 

134 

005 

FAC1 CALL 

ASPH 

607 

254 




* SIZE CMMD 

007 

025 

311 



RET 


007 

254 

052 

315 

011 

SZER LHLD 

EFPN 

007 

026 

315 

307 

000 

F0 CALL 

TSTN 

007 

257 

353 



XCHG 


097 

031 

332 

053 

007 

JC 

FI 

007 

260 

041 

261 

013 

LXI 

H, TOPL 

007 

034 

104 



MOV 

B. H 

007 

263 

315 

237 

001 

CALL 

HLCM 

007 

035 

115 



MOV 

C, L 

007 

266 

031 



DAD 

D 

007 

036 

315 

322 

000 

CALL 

ADEC 

00? 

267 

315 

256 

005 

CALL 

DECA 

007 

041 

120 



MOV 

D. B 

007 

272 

076 

005 


MV I 

A, 5 

007 

042 

131 



MOV 

E, C 

007 

274 

062 

341 

011 

STA 

CHCT 

©07 

043 

353 



XCHG 


007 

27? 

315 

016 

002 

CALL 

SPNZ 

007 

844 

315 

301 

000 

CALL 

SBL1 

007 

302 

026 

040 


MV I 

D, MMRX 

007 

047 

353 



XCHG 


007 

304 

036 

000 


MV I 

E, 0 

007 

050 

303 

022 

007 

JMP 

FAC1 

007 

306 

052 

315 

011 

LHLD 

EFPN 

007 

053 

021 

077 

007 

FI LX I 

D, Fll 

007 

311 

315 

237 

001 

CALL 

HLCM 

807 

056 

315 

076 

004 

CALL 

TST TEST FOR < 

007 

314 

031 



DAD 

D 

007 

061 

315 

226 

006 

CALL 

EXPR RECURSIVE CRLL 

007 

315 

315 

256 

005 

CALL 

DECA 

007 

064 

021 

073 

007 

LX I 

D, FE1 

007 

320 

315 

076 

340 

CALL 

CRLF 

007 

067 

315 

076 

004 

CALL 

TST 

007 

323 

311 



RET 


007 

072 

311 



RET 


007 

324 




+ END BLOCK 3 

007 

073 

251 



FE1 DB 

'>'+128 

007 

324 




• CNPR - 

COMPARE.2 VALUES 

007 

074 

303 

240 

011 

JMP 

RPER 

007 

324 

315 

154 

©05 

CMPR CALL 

ASPP 

007 

077 

250 



Fll DB 

'< '+128 

007 

327 

345 



PUSH 

H 

007 

100 

303 

067 

Oil 

JMP 

ERRS 

007 

330 

315 

154 

005 

CALL 

ASPP 

007 

103 




* FNTS - 

FUNCTION TEST 

00? 

333 

353 



XCHG 


.007 

103 




+ RND ONLV FUNCTION INITIALLY 

007 

334 

341 



POP 

H 

007 

103 

021 

133 

807 

FNTS LXI 

D, RNDM 

007 

335 

325 



PUSH 

D 

007 

106 

315 

0T6 

0O4 

CALL 

TST 

007 

336 

315 

134 

005 

CRLL 

ASPH 

007 

111 

315 

226 

086 

CALL 

EXPR RECURSIVE 

007 

341 

315 

011 

010 

CALL 

I SUB 

007 

114 

315 

153 

001 

CALL 

RND 

007 

344 

315 

154 

005 

CALL 

ASPP 

007 

117 

021 

127 

807 

LXI 

D, RFMS 

007 

347 

301 



POP 

B 

007 122 

315 076 004 

CALL TST 

00? 

350 




* HERE WITH X-V IN HL 





ORfl 

A 


007 

350 

174 



MOV 

A, H 

007 

126 

311 



RET 


60? 

351 

267 



ORA 

A 

897 

127 

251 



RPMS DB 

'>'+128 

00? 

352 

302 

365 

007 

JNZ 

CMP0 

007 

130 

303 

240 

011 

JMP 

RPER 

007 

355 

265 



ORA 

L 

©07 

133 

122 

116 

104 

RNDM FW 

'RND' 

007 

356 

171 



MOV 

A, C 

087 

136 

238 



DB 

'<'+128 

00? 

357 

312 

000 

010 

JZ 

CMP2 

007 

137 

067 



STC 


00? 

362 

376 

003 


CPI 

3 

©07 

140 

311 



RET 


007 

364 

311 



RET 


007 

141 




* DIM SETUP A HANDLING 

007 

365 

171 



CMP0 MOV 

A, C 








007 

366 

362 

362 

007 

JP 

%-7 

343 



TSV4 

PUSH H 


007 

371 

376 

001 


CPI 

1 

007 

142 

313 

226 

086 

CALL 

EXPR 

007 

373 

330 



RC 


007 

145 

021 

136 

997 

LXI 

D, RPTV 

00? 

374 

376 

004 


CPI 

4 

807 

150 

315 

076 

004 

CALL 

TST 

00? 

376 

077 



CMC 


007 

153 

303 

162 

007 

JMP 

$+4 

007 

377 

311 



RET 


097 

156 

251 



RPTV DB 

'>'+128 

010 

000 

376 

000 


CMP2 CPI 

0 

097 

157 

383 

240 

011 

JMP 

RPER 

010 

002 

310 



RZ 


007 

162 

315 

154 

005 

CALL 

ASPP 

010 

003 

376 

002 


CPI 

2 

©07 

165 

257 



XRA 

A 

010 

005 

310 



RZ 


007 

166 

264 



ORA 

H 

010 

006 

376 

005 


CPI 

5 

©07 

167 

372 

310 

011 

JM 

DMER 

010 

010 

311 



RET 


007 

172 

263 



CRA 

L 

©10 

011 




* ISUB/IADD - ADD - SUBTRACT 

007 

173 

312 

310 

en 

JZ 

DMER 

eio 

011 

315 

154 

005 

ISUB CALL 

ASPP 








010 

014 

315 

23? 

001 

CALL 

HLCM 








010 

817 

303 

025 

010 

JMP 

IADD+3 

age 28 


Dr. 

Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo 

Park CA 94025 

March, 197 6 


83 



010 

022 

315 

154 

005 

IADO CALL 

ASPP 


010 

262 

005 



TAP2 DCR 

B 


010 

025 

174 



MOV 

A/ H 


010 

263 

302 

262 

010 

JNZ 

TAP2 


010 

026 

346 

290 


RNI 

128 


010 

266 

037 



RRR 



010 

020 

037 



RRR 



010 

267 

015 



DCR 

C 


010 

031 

107 



MOV 

B, A 


010 

270 

302 

236 

010 

JNZ 

TAPI 


010 

032 

345 



PUSH 

H 


010 

273 

03? 



RBR 



010 

033 

315 

154 

805 

CALL 

ASPP 


010 

274 

067 



STC 



010 

036 

174 



MOV 

A, H 


810 

275 

027 



RAL 



018 

03? 

346 

200 


AN I 

128 


010 

276 

323 

001 


OUT 

TRPU 


010 

041 

200 



ADD 

8 


©10 

300 

0Q6 

377 


MV I 

B, 255 


010 

042 

321 



POP 

D 


010 

302 

005 



TAP3 DCR 

B 


©10 

043 

031 



DAD 

0 


010 

303 

302 

302 

010 

JNZ 

TAP3 


010 

044 

037 



RRR 



©10 

306 

03? 



RRR 



010 

045 

107 



MOV 

B, R 


010 

307 

311 



RET 



010 

046 

174 



MOV 

A, H 


010 

310 




* LIST - 

LIST FILE ON 

TVT 

010 

04? 

C27 



RAL 



010 

310 

076 

001 


LIST MVI 

A, 1 


010 

050 

170 



MOV 

A, B 


010 

312 

062 

326 

011 

STfl 

FNUM 


010 

051 

037 



RRR 



010 

315 

076 

377 


MV I 

A, 255 


010 

052 

376 

200 


CPI 

128 


010 

317 

062 

325 

011 

STfl 

LNUM 


010 

G54 

312 

252 

011 

J 2 

ROFE 


010 

322 

315 

307 

000 

CALL 

TSTN 


010 

05? 

376 

160 


CPX 

112 


01© 

325 

332 

370 

010 

JC 

LI 51 


010 

061 

312 

252 

811 

J 2 

ROFE 


010 

330 

104 



MOV 

B, H 


010 

064 

315 

134 

005 

CALL 

ASPH 


010 

331 

115 



MOV 

C, L 


010 

06? 

311 



RET 



010 

332 

315 

322 

000 

CALL 

ADEC 


010 

070 




♦ DIVD - 

INTEGER 

DIVIDE 

810 

335 

175 



MOV 

A, L 


010 

070 

315 

154 

005 

DIVD CALL 

ASPP 


010 

336 

062 

326 

011 

STfl 

FNUM 


010 

073 

175 



MOV 

A, L 


810 

341 

062 

325 

011 

STA 

LNUM 


010 

074 

264 



ORA 

H 


010 

344 

140 



MOV 

H, B 


010 

075 

312 

264 

011 

JZ 

DZER 


018 

345 

151 



MOV 

L, C 


010 

100 

076 

200 


MV I 

A. 128 


010 

346 

315 

301 

000 

CALL 

SBL1 


010 

102 

244 



ANA 

H 


010 

351 

315 

307 

000 

CALL 

TSTN 


010 

103 

107 



MOV 

B, A 


010 

354 

332 

370 

010 

JC 

LI SI 


010 

104 

374 

237 

001 

CM 

HLCM 


010 

357 

104 



MOV 

B, H 


010 

107 

345 



PUSH 

H 


010 

360 

115 



MW 

C, L 


010 

110 

315 

154 

003 

CALL 

ASPP 


810 

361 

315 

322 

000 

CALL 

ADEC 


010 

113 

076 

200 


HVI 

fl, 128 


010 

364 

175 



MOV 

A, L 


010 

115 

244 



ANA 

H 


010 

365 

062 

325 

011 

STA 

LNUM 


010 

116 

200 



ADD 

B 


018 

378 

315 

220 

340 

LISI CALL 

CLRS 


010 

11? 

062 

342 

011 

STfl 

TEMP 


810 

373 

315 

115 

001 

CRLL 

LNFD 


010 

122 

174 



MOV 

A/ H 


018 

376 

176 



MOV 

A* M 


010 

123 

267 



ORA 

A 


010 

377 

376 

002 


CPI 

2 


810 

124 

374 

237 

001 

CM 

HLCM 


011 

001 

332 

024 

000 

JC 

ERNT 


010 

127 

042 

337 

011 

SHLD 

DVD2 


011 

004 

345 



PUSH 

H 


010 

132 

041 

000 

000 

LX I 

H, 0 


011 

005 

046 

000 


MV I 

H, 0 


010 

135 

042 

335 

011 

SHLD 

DVDl 


811 

007 

157 



MOV 

L, A 


010 

140 

341 



POP 

H 


011 

010 

376 

144 


CPI 

100 


810 

141 

315 

342 

001 

CALL 

BUDV 


811 

012 

322 

035 

011 

JNC 

LIS2 


010 

144 

072 

342 

011 

LDA 

TEMP 


011 

015 

076 

040 


MV I 

R, ' ' 


@10 

147 

267 



ORA 

A 


811 

017 

315 

161 

002 

CRLL 

TVTO 


010 

150 

304 

237 

001 

CNZ 

HLCM 


011 

022 

175 



MOV 

A, L 


010 

153 

315 

134 

005 

CALL 

ASPH 


011 

023 

376 

012 


CPI 

10 


010 

156 

311 



RET 



011 

025 

322 

035 

011 

JNC 

LIS2 


010 

157 




* MULT - 

INTEGER 

MULTIPLY 

011 

030 

076 

040 


MV I 

R> ' ' 


010 

15? 

315 

154 

005 

MULT CALL 

ASPP 


011 

032 

313 

161 

002 

CRLL 

TVTO 


010 

162 

076 

200 


MV I 

R, 128 


011 

035 

315 

256 

005 

LIS2 CALL 

DECA 


010 

164 

244 



ANA 

H 


011 

040 

341 



POP 

H 


010 

165 

107 



MOV 

B, ft 


011 

041 

043 



I NX 

H 


010 

166 

374 

237 

001 

CM 

HLCM 


011 

042 

176 



LIS3 MOV 

A, M 


010 

171 

345 



PUSH 

H 


011 

043 

315 

161 

002 

CALL 

TVTO 


010 

172 

315 

154 

003 

CALL 

ASPP 


011 

046 

043 



I NX 

H 


010 

175 

076 

200 


MV I 

ft/ 128 


011 

047 

376 

013 


CPI 

13 


010 

177 

244 



ANA 

H 


011 

051 

302 

042 

011 

JNZ 

LI S3 


010 

200 

208 



ADO 

B 


011 

054 

106 



MOV 

B, M 


010 

2C1 

062 

342 

011 

STA 

TEMP 


011 

053 

072 

323 

011 

LDA 

LNUM 


010 

204 

174 



MOV 

R, H 


011 

060 

220 



SUB 

B 


010 

205 

027 



RAL 



011 

061 

322 

376 

010 

JNC 

LIS1+6 


010 

206 

334 

237 

001 

CC 

HLCM 


011 

064 

303 

024 

000 

JMP 

ERNT 


010 

211 

042 

335 

011 

SHLD 

PRD1 


011 

067 




* ERRS - 

ERROR HANDLING 

010 

214 

341 



POP 

H 


011 

067 

056 

012 


ERRS MVI 

L/ 10 


010 

215 

315 

265 

001 

CALL 

BUML 


011 

071 

046 

000 


ERR1 MVI 

H, 8 


010 

220 

174 



MOV 

R, H 


011 

073 

061 

200 

34? 

LX I 

SP, STAK 


010 

221 

027 



RAL 



011 

876 

315 

076 

340 

CALL 

CRLF 


010 

222 

332 

257 

011 

JC 

MOTE 


011 

101 

315 

256 

005 

CALL 

DECA 


010 

225 

353 



XCHG 



011 

104 

076 

040 


MV I 

A, ' ' 


010 

226 

052 

337 

011 

LHLD 

PRD2 


011 

106 

315 

161 

002 

CRLL 

TVTO 


018 

231 

175 



MOV 

A/ L 


011 

111 

076 

101 


MV I 

Rj 'R' 


©10 

232 

264 


* 

ORA 

H 


011 

113 

315 

161 

002 

CALL 

TVTO 


010 

233 

302 

257 

011 

JNZ 

MOFE 


011 

116 

076 

124 


MV I 

R, 'T' 


810 

236 

353 



XCHG 



011 

120 

315 

161 

002 

CALL 

TVTO 


010 

23? 

072 

342 

011 

LDA 

TEMP 


011 

123 

076 

040 


MV I 

A, ' ' 


010 

242 

267 



ORA 

A 


011 

125 

315 

161 

002 

CALL 

TVTO 


818 

243 

304 

237 

001 

CNZ 

HLCM 


011 

130 

072 

325 

011 

LDA 

LNUM 


010 

246 

315 

134 

005 

CALL 

ASPH 


811 

133 

157 



MOV 

L, A 


010 

251 

311 



RET 



011 

134 

046 

000 


MV I 

H, 0 


816 

252 




* TAPO - 

TAPE OUT ROUTINE 

811 

136 

315 

256 

0O5 

CALL 

DECA 


010 

252 

016 

©11 


TRPQ MVI 

C, 9 


011 

141 

313 

G76 

340 

CALL 

CRLF 


010 

254 

267 



ORA 

A 


011 

144 

303 

024 

003 

JMP 

ERNT 


010 

255 

027 



RAL 











010 

256 

323 

001 


TAPI OUT 

TRPU 










010 

260 

006 

2O0 


MV I 

B. 128 










larch 

, 1976 


Dr. 

Dobb's Journal ol 

Computer Calisthenics 

& Orthodontia, Box 

310, Menlo 

Park CA 94025 

Page 29 


84 










011 

14? 

056 

017 


ERRM 

MV I 

L> 15 

011 

151 

303 

071 

011 


JMP 

ERR1 

011 

154 

056 

024 


ERMO 

MV I 

La 20 

011 

156 

303 

071 

011 


JMP 

ERR1 

011 

161 

072 

325 

011 

EOFR 

LDA 

LNUM 

011 

164 

267 




ORA 

A 

811 

165 

312 

024 

000 


JZ 

ERNT 

Oil 

170 

056 

031 



MV! 

La 25 

©11 

172 

303 

071 

011 


JMP 

ERR1 

011 

175 

056 

036 


ERML 

MV I 

La 30 

011 

177 

303 

071 

011 


JMP 

ERR1 

011 

202 

056 

043 


GSER 

MV I 

La 35 

011 

204 

303 

071 

011 


JMP 

ERR1 

Oil 

207 

056 

050 


SHOE 

MV I 

La 40 

011 

211 

303 

071 

011 


JMP 

ERR1 

Oil 

214 

056 

055 


STOF 

MV I 

La 45 

011 

216 

383 

071 

011 


JMP 

ERR1 

011 

221 

056 

062 


RNER 

MV I 

La 50 

011 

223 

303 

071 

011 


JMP 

ERR1 

011 

226 

056 

©67 


CRER 

MV I 

La 55 

011 

230 

363 

071 

011 


JMP 

ERR1 

011 

233 

056 

074 


REER 

MV I 

La 60 

011 

235 

303 

071 

011 


JMP 

ERR1 

011 

240 

056 

101 


RPER 

MV I 

La 65 

011 

242 

303 

071 

011 


JMP 

ERR1 

011 

245 

056 

106 


UDVE 

MV I 

La 70 

011 

247 

303 

071 

011 


JMP 

ERR1 

011 

252 

056 

113 


ROFE 

MV I 

La 75 

011 

254 

303 

071 

011 


JMP 

ERR1 

011 

257 

056 

120 


MGFE 

MV I 

L, 80 

011 

261 

303 

071 

011 


JMP 

ERR1 

011 

264 

056 

125 


DZER 

MV I 

La 85 

011 

266 

303 

071 

011 


JMP 

ERR1 

811 

271 

056 

132 


ENDM 

MV I 

La 90 

©11 

273 

303 

071 

011 


JMP 

ERR1 

011 

276 

056 

137 


SUFE 

MV I 

La 95 

011 

300 

383 

071 

011 


JMP 

ERR1 

011 

303 

056 

144 


ILTL 

MV I 

La 100 

011 

305 

303 

©71 

011 


JMP 

ERR1 

011 

310 

056 

151 


DMER 

MV I 

La 105 

011 

312 

303 

071 

011 


JMP 

ERR1 

011 

315 




♦VARIABLE 

DEFINITIONS 

011 

315 




SP 

EQU 

6 

011 

315 




PSW 

EQU 

6 

011 

315 




TVT 

EQU 

0 

011 

315 




TRPU 

EQU 

1 

011 

315 




CRLF 

EQU 

0E03EH 

011 

315 




CLRS 

EQU 

0E090H 

011 

315 




STAR 

EQU 

0E780H 

011 

315 




NSVM 

EQU 

120 

011 

315 




MMRX 

EQU. 

J20H 

011 

315 




XBLN 

EQU 

74 

Oil 

315 




♦ 



011 

315 




♦ STORAGE 

AREAS 

811 

315 




♦ 



011 

315 




EFPN 

DS 

2 

011 

31? 




TMP1 

DS 

2 

011 

321 




NMLC 

DS 

2 

011 

323 




APNT 

DS 

2 

011 

325 




LNUM 

DS 

1 

011 

326 




FNUM 

DS 

1 

011 

327 




ASTK 

DS 

2 

011 

331 




VSTK 

DS 

2 

011 

333 




RSTK 

DS 

2 

011 

335 




PRD1 

DS 

2 

011 

337 




PRD2 

DS 

2 

011 

341 




CHCT 

DS 

1 

011 

342 




TEMP 

DS 

1 

011 

343 




DVD1 

EQU 

PRD1 

011 

343 




DVD2 

EQU 

PRD2 

011 

343 




WORD 

DS 

2 

011 

345 




LORO 

DS 

1 

011 

346 





DS 

1 

811 

347 




RSTR 

DS 

8 

011 

357 




SVMT 

DS 

120 

012 

147 




VSTR 

DS 

256 

013 

147 




ASTR 

EQU 

$ 

013 

147 




IBUF 

DS 

74 

013 

261 




TOPL 

EQU 

* 

813 

261 




4> 



013 

261 




♦ END OF 

PROGRAM 

013 

261 




♦ 




SOFTWARE CONTEST 


Sponsored by People’s Computer Company 
P.O. Box 310, Menlo Park, Ca. 94025 


FIRST PRIZE: 

$500 

certificate for hardware 
from CROMEMCO 

SECOND PRIZE: 

$250 

certificate for hardware 
from CROMEMCO 


OBJ ECT: Develop a program resulting in a new and 
interesting display using the Cromemco 
TV Dazzler. (The Dazzler is an interface 
that permits a home color TV set to be a 
graphic terminal for certain microcomputers.) 


RULES: 


All entries must use the Cromemco Dazzler 
display and must not require more than 20K 
of computer memory. 

All entries will be judged by People’s 
Computer Company on 

1 — originality 

2 — general user appeal 

3 — clarity of documentation 

Entries should include source code and object 
code on punched paper tape. A listing of an 
appropriate bootstrap loader should also be 
provided. 

Software should be compatible with MITS REV 1 
serial I/O port convention for I/O require¬ 
ments (i.e., data transfer is on port 1, bit 7 
[active low] of input port 0 is used to indicate 
receiver ready, and bit 0 [active low] of input port 0 
is used to indicate transmitter empty). 


Microcomputers can be incredibly versatile. The Dazzler 
adds the dimension of full-color graphic display to the 
microcomputer. 


What can you develop? — games? — business? — education? 
— art? — others? 


SEND ALL ENTRIES TO: PEOPLE’S COMPUTER CO 

P.O. Box 310 


Menlo Park, Ca. 94025 


Page 30 


ENTRIES MUST BE RECEIVED BY SEPT. 30, 1976 

Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 March, 1976 


85 














interface, as well as resolving some bugs in my Micro-8 Vol. 2, 
Issue 1, page 11 article. I made the mistake of not indicating 
that just because you haven’t encountered these bugs in your 
Mark-8 in no way means they aren’t in your system. In soft¬ 
ware, I’m interested in writing a “suffix” notation program¬ 
mable calculator, some sort of relocatable loader, and, perhaps, 
some sort of pseudo-assembler. 

I’m disappointed that there doesn’t seem to be any place 
or journal that effectively supports the Mark-8.1 think there is 
a tremendous need for national journals specializing in individual 
microcomputers or at least individual microprocessors-and 
teaching programming, solving problems, creating hardware and 
software for that particular machine. This would be very 
valuable for the individual user with that machine. 

Sincerely yours, 

Thomas R. Amoth 228 Fox Rd 

Media PA 19063 
(215) 566-1068 

Dear Tom, We will try to publish everything of value that we 
receive concerning the Mark-8. There is a need for machine- 
specific journals, however the market isn’t yet there to support 
them. (It costs much bucks to publish a quality periodical.) Of 
course, there are the manufacturer’s newsletters, and user 
groups, but it seems to me they don’t meet hobbyist needs; 
particularly not inexpensively. We’re gonna try. 

Send us your software as you get it running so we 
can share it with all Micro-8 owners. -JCW, Jr 


APL’S APPEAL 
Dear Dragons: 

I have an Altair 8K system (the 8K currently on vacation 
in Albuquerque due to MITS’ recall order). 

Incidentally, my favorite language is APL, although I know 
more BASIC than APL. It seems to me that a limited knowledge 
of APL (i.e., just a few of its features) allows greater creative 
freedom than knowing BASIC intimately, and is somewhat 
easier to attain. My initial bias against APL (and what I see as 
your continuing bias) comes from my background-I started off 
on FORTRAN, so BASIC (an “extended subset of FORTRAN” 
as Jean Sammet might call it) seems as natural as English. And 
old FORTRAN hand would likely see BASIC as the ideal language 
for beginners. You really should look into APL, and how it can 
be implemented on small machines. 

At least as a beginning, BASIC looks like fun, and is 
easily suited to small machines. Tiny BASIC looks like even 
more fun, since very little has been written on languages for 
small machines. (A friend of mine recently said, “Why bother? 
You can always get a few ‘K’ cheap.” This is the worst argu¬ 
ment I’ve heard in favor of inefficient programming.) Thus my 
interest in your journal. After all, my pie-in-the-sky 8080 APL 
system has to start out with a few “basic” steps. 

Sincerely, 419 Simons Ave 

Ed Luwish Hackensack NJ 07601 


6800 Tiny BASIC FOR $5 

Dear folks at PCC & Readers of DDJ 2 April 1976 

I have gotten a version of Tiny BASIC up and running on 
the 6800. It largely follows the logic and philosophy outlined in 
the PCC articles (saved a lot of time!), but I have enhanced it in 
the following ways: two-byte line numbers, LIST can specify a 
range, semicolon formatting on PRINT, REM added, INPUT 
accepts expressions, and RND and USR functions ( = machine 
language function call) are available. 

The interpreter fits into a little less than 2K bytes (may be 
ROM) and uses a single JMP to each of three user-supplied I/O 
routines (character input, character output, and break test). I 
did this as a commercial venture (software is my living), but 
I am asking only $5 for a hex tape (Motorola format) and 20 
page User’s Manual. Please specify RAM-based (ORG at 0100) 
or ROM-base (ORG at E000, I/O preset for AMI “PROTO” 
board). When I have more time, and if there is sufficient interest, 

I will publish the IL code (I made a few changes), and show how 
to add extra functions. How about an assembler written in Tiny? 

For a copy of this TINY BASIC for the Motorola and AMI 
6800, send your name, address, and $5 to: 

Tom Pittman 
P.O.Box 23189 
San Jose, CA 95153 

PS As was noted in the TB articles, there is no such thing as a 
free lunch. Software comes in the lunch category, but perhaps 
I can offer you a cheap sandwich. 

Editor’s notes: Tom has a good reputation around the local 
Homebrew crowd. We believe that he will back his product. We 
would be quite interested in hearing from those who purchase 
his Tiny BASIC; we’d like to hear their praise and their complaints 
(if any). 

If you wish for him to publish his Intermediate Language 
code (IL) in the Journal, write him and encourage him to do so 

soon. 

Tom - What do you mean by, “an assembler in Tiny?” 

I hope that you don ’l mean an assembler that is written in Tiny 
BASIC. 

ERRATA 

The author of the 6800 version of Tiny BASIC was 
incorrectly given, in one place in the February issue, as being 
Tim Pitmann. His correct name and address is: 

Tom Pittman 
Box 23189 
San Jose CA 95153 
(408) 578-4944 


Anyone out there know anything about Arrow Micro¬ 
computer Systems in Farmingdale, NY? We’d like their address 
(none was given in their ad we saw), and any other tidbits you 
might know about them. -JCW, Jr 


March, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 _ Page 31 


86 





Dear Bob Albrecht, 3/29/76 

Would give away time on machine in return for help on 
desired goals--Computer Graphic Animation!--software or hard¬ 
ware implementations. However, to be honest, don’t want 
total beginners for this project. Otherwise all time will be 
spent teaching instead of building. 

Sincerely, 

Charles R. Patton Alpha Electronics Svcs. 

8431 Monroe Ave. 

Stanton CA 90680 
(714) 821-4400 


Dear People, Dragons, or whatever, 4-1-76 

I have some suggestions for articles you could include: 

1) An article on how to get something (especially a 
computer program) copyrighted, and just what rights the copy¬ 
right gives you. 

2) An explanation of the 8080 instruction set (the MITS 
manual is extremely vague about the details of certain opera¬ 
tions like CMP and DAA, and even ADD). 

3) Construction projects for ‘make-believe’ computer 
peripherals. 

One of my old PCCs says that PCC was trying to build a 
model for a ‘recreational language,’ more suited to games and 
simulations than other languages now available. I have tried to 
design one myself. I came up with lots of ideas and individual 
features it should include, but was not able to organize them 
all into a consistent whole. Were you able to do any better? I 
will write the compiler or interpreter if someone helps me 
invent the grammar and syntax. 

Sincerely, 

Bruce Smith 57 Glenside Way 

San Rafael CA 94903 

Bruce, Send me your ‘make-believe’ fantasies! And ... I 
would very much like to hear your ideas about a ‘recreational 
language.’ We would be very happy to publish random ideas 
about this. Cheers, Bob Albrecht 


SIGNETICS 2650 TINY BASIC 
Gentlemen, 

I have a small system with a Signetics 2650. Using only 
about 3K of the present 4K, “T.B.” works quite well (one or 
two bugs present, but they’ll soon die out). Our preference for 
expansion is to tailor software for use on wide-platen 
terminals (e.g., Teletype Mod 38) for much nicer plotting 
(where time is not a factor). 

2635 Littlaton Rd 

Melvin B. Smith El Cajon CA 92020 

Is your system a homebrew, or a commercially available kit? 
Also, I hope you will choose to distribute your 2650 Tiny 
BASIC via Dr Dobb’s Journal, as soon as you’ve finished 
fumigating it. We are eager to provide software support for 
non-Intel systems. It improves market competition, promotes 
the general welfare, and slows Intel’s rush towards being an 
IBM look-alike. -JCW, Jr 


Page 32 Dr. Dobb's Journal of Computer Calisthenics & 


AND NOW, TINIER BASIC 
Dear Bob, 

I’ve almost finished my version of BASIC which will 
inevitably be called Tinier BASIC as it fits in 2K. 

Any of your readers in the Cleveland area can join our 
club, Cleveland Digital Group, by writing me or our president, 
John Rabat, 1200 Seneca Rd, Apt 407, Broadview Heights OH 
44147. We are in contact with groups in Buffalo, Pittsburgh, 
Toledo, Detroit, Lansing, Dayton, and Columbus, as well as a 
few others, and would like to get in touch with other nearby 
groups. 

Gary Coleman 14058 Superior Rd, Apt 8 

Cleveland OH 44118 
(216) 371-9304 

Gary, Hope you will forward Tinier BASIC to us as soon as you 
get it finished, so everyone can share it. --JCW, Jr 


FORMAT DIALOGUE 

Gentlemen: December 9, 1975 

I’m not interested in the games or letters in PCC so I feel 
impelled to subscribe to Dr Dobb’s Journal. I wish you and the 
MITS people would change from the tabloid size. Newsprint 
paper should not be used for anything worth keeping. I’ve 
copied everything I’ve wanted to keep out of PCC before it 
crumbles and turns to dust. Please change! 

Yours truly, 

Richard R. Kenyon 18609A Del Rio PI. 

Cerritos CA 90701 

Dear Richard, 12/31/75 

Sorry you don’t like our tabloid format. We can’t afford 
to change. We operate on very little money with part-time 
people who are grossly underpaid ($2/hour?) and occasional 
volunteers. A newspaper of standard size is the least expensive 
way to publish the most info. To go to 8!4xll would double 
(wow!!) our printing cost, and . . .sigh!. . . we just don’t have 
the $$$. You say you don’t like PCCs games & letters, but you 
don’t say what you would like. Most of our readers are 
teachers & students in secondary schools or college people--they 
love the games & letters! Cheers, 

Bob Albrecht 

Bob, 1/2/76 

Sorry-I didn’t intend to sound like a chronic complainer! 

I do like your publication and was interested in a more 
“filable” format and more permanent paper. I know I’m in the 
minority not being excited by games. Tiny BASIC stuff has been 
great and I marvel at the way it has been presented for begin¬ 
ners. (I did subscribe to the Journal- which is a positive indica¬ 
tion!) I would enjoy more material in this area-including other 
languages such as the SP/k family of PL/I subsets, math sub¬ 
routines, etc. 

I hope that you and the rest of the staff will not have to 
maintain a shoe string existence with the growing, explosive, 
computer hobby. Last, but not least, the artwork is outstanding. 
Dick 

Dick- Ho, ho . . . is this better? -JCW, Jr 

lodontia. Box 310, Menlo Park CA 94025 March, 1976 


87 











dr dobbs journal of 


$ 1.50 


COMPUTER 


C 


alisthenics 


60 


rthodontia 


Running Light Without Overbyte 


April, 1976 


Box 310, Menlo Park CA 94025 


Volume 1, Number 4 


A REFERENCE JOURNAL FOR USERS OF HOME COMPUTERS 


In This Issue. . 


Editorial: History Repeats Itself ... I Hope Jim C. Warren, Jr. 3 

Scanning the Industry Periodicals 4 

Information derived from the May 24th issue of Electronic News 


FEATURE ARTICLES 

First Word on a Floppy-Disc Operating System 5 

Command Language & Facilities Similar to DECSYSTEM-10 

Hardware & Software for Speech Synthesis Lloyd Rice 6 

Detailed discussion of techniques & hardware/software trade-offs 

SYSTEMS SOFTWARE 

MINOL—Tiny BASIC with Strings in 1.75K Bytes Erik T. Mueller 9 

An outstanding implementation by a high school junior 

System Monitor for 8080-Based Microcomputers Charlie Pack 18 


Keyboard control over program loading, examination, modification & execution 


DATA 

Submitting items for publication 2 

Reprint privileges 2 

Subscription & information form 33 

PCC Bookstore titles 35 

TV Dazzler Contest 36 


88 





History repeats itself ... I hope 

Last December, I had the very good fortune to attend a lecture on the history of the electronic 
digital computer given by Professor Henry S. Tropp. Not too long ago, Dr. Tropp spent several years direct¬ 
ing a research project for the Smithsonian Institute concerning the history of computers in the period, 1935 
to 1955. Much of his work consisted of traveling around interviewing many of the “old Timers” in the fast- 
moving world of digital computers. Because the field is as new as it is—the first “real” computer was invent¬ 
ed in the 1940’s-many of the original researchers in computer science and technology are still alive. Dr. 

Tropp often spent several days talking with them. 

His December lecture was a rambling collage of fascinating anecdotes and facts about the people and the 
technology, and insights into the intellectual character of the times. Some of his observations come to my 
mind, repeatedly, as I interact with computer hobbyists: 

Dr. Tropp noted that, in those first years, there was a tremendous amount of intellectual and technical 
ferment in the area of computers. A number of prodigious steps were taken in a relatively short time, out¬ 
lining and developing the majority of the concepts, theories, and principles that remain the cornerstones of 
computer science and computer engineering. A number of intellectual giants were involved: John Von Neu¬ 
mann, Alan Turing, George Stibitz, Howard Aiken, John Mauchly, and many others. As often as not, how¬ 
ever, it appears that they had little idea of where they were going, and almost stumbled upon their great 
discoveries. The research community involved in these efforts was relatively small; most of the researchers 
knew one another, and there was often close communication among them. It seems like each new discovery 
by any one person quickly triggered renewed excitement and activity on the part of many others, even 
though they were scattered all over the northeastern United States, and some were in England. Each new 
discovery or development was quickly shared, and often served as a foundation element for someone else’s 
discovery. This continued until the early 1950’s. Then, this great rush of creation and advancement seemed 
to slow to a crawl. Some of the researchers went off to work for industry. A number of them moved to 
the West Coast to apply their research to the aircraft industry. Computers came out of the experimental 
labs, and became a profitable area of activity for business and industry. Particularly important: It appears 
that the easy communication and exchange of ideas that was so evident in the ’40’s was greatly curtailed 
in the ’50’s. 

I see several parallels between what happened in those early days, and what is now occuring in the hobby¬ 
ist community: 

I see a great deal of excitement and obvious pleasure in the hobbyists, as they learn about these funny 
machines and discover their phenomenal capabilities. It seems to me that those early researchers must have 
felt much of the same excitement and intellectual stimulation, for computers were as new and novel to 
them, then, as they now are to many of the hobbyists. 

I hear of hobbyists who are spending most of their time in a great flurry of activity and experimentation. 
In the same way, those first computer scientists often worked night and day on their research, sometimes 
moving bunks into their labs to facilitate their continuous efforts. 

I note the extensive development of very inexpensive hardware within the hobbyist community, often 
developed in a basement shop. Similarly, the computer researchers of the ’40’s often worked on a shoe¬ 
string budget in antiquated facilities. 

Perhaps most significantly, I note the great willingness to share ideas, developments, facilities, and solu¬ 
tions to problems among the hobbyists. This obviously compares with the easy and open communication 
that was perhaps invaluable to those early researchers. 

It is this open sharing that particularly delights me, and with which I am particularly concerned. I hope 
that it continues. We must all do whatever we can to encourage it. 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 some¬ 
thing else being shared that is of at least equal value: the enthusiasm and intellectual excitement. There is no 
doubt in my mind that the sharing of such enthusiasm, as well as information, was a significant factor in the 
prodigious creativity of those original researchers. When one of them was frustrated and “down,” probably 
someone came flying through the door, “wired” over some new discovery, and ricocheting off the walls . . . 
and the depressed co-worker wasn’t “down” for very long. I believe the same holds true for the computer 
hobbyists. So . . . continue to share your ideas, and continue to share your excitement. 

-Jim C. Warren, Jr., Editor 


April, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 3 


89 



SCANNING THE INDUSTRY PERIODICALS 


FROM THE MAY 24TH ISSUE OF ELECTRONIC 
NEWS (Fairchild Publications, Inc., 7 E 12 St., 

NYC 10003; (212) 741-4230) 

DROP IN DEC ORDERS CAUSES LSI/11 - 
CHIPMAKER MAJOR FINANCIAL PROBLEMS 

Western Digital Corp., based in Newport Beach, Cal., 
manufactures the 16-bit microprocessor that is the basis for 
Digital Equipment Corporation's LSI/11. Western's attorney 
recently told its creditors that the company had a "cash flow 
position where it could not operate," due to drops in DEC 
orders (e.g., from $400K in March to less than $100K in 
April. A vice-president from DEC indicated that, although 
their LSI/11 sales had been going as expected, they could not 
afford to continue to buy in the same quantities they had in 
the past. Evidently, DEC had been purchasing more than they 
were using; they indicated that their inventory was filled to 
capacity. The creditors’ committee recommended giving West¬ 
ern 30 days to rectify its financial position. 

Editor's Note: If I remember correctly. Western agreed 
to sell their chip only to DEC. If DEC really wants to keep 
Western afloat, as appears to be the case, then DEC could try 
releasing Western from that exclusive sales agreement. My sus¬ 
picion is that, if Western were free to peddle their PDP-11 
look-alike microprocessor to everyone who wished to buy it, 
they could cure their financial problems rather quickly. 

NATIONAL'S SC/MP KIT FOR $99 

National Semiconductor has a microprocessor kit avail¬ 
able for $99. This includes their SC/MP m-p (46 instruction 
types, single- and double-byte instructions, built-in serial I/O 
ports, bi-directional 8-bit bus, parallel data port, and latched, 
12-bit address port), a preprogrammed 512-byte KITBUG ROM 
(monitor and debugger), 256 bytes of RAM, TTY interface 
(including buffer and driver for 20mA current-loop), voltage 
regulator, data buffer crystal (1.0 MHz), complete literature 
and schematics, and all the passive components and a PC 
board required to build a wee microcomputer. Contact 
Semiconductor Concepts: 145 Oser Ave., Hauppauge NY 
11787, or 21201 Oxnard St., Woodland Hills CA 91364. 

Any computer stores carrying SC/MP kit? 


SEMICONDUCTOR SHIPMENTS EXPECTED TO 
NEAR $5 BILLION MARK, THIS YEAR 

Western Electronics Manufacturers' Association (WEMA), 
has projected that worldwide semiconductor shipments will 
hit $4.98 billion in 1976. This is 24% above the $4.02 
billion shipped in 1975. This report was a joint effort of all 
the major semiconductor manufacturers except Texas 
Instruments. 

Other preductions contained in this report included: MOS 
circuits will byte into the bipolar circuit market, ECL fami¬ 


lies will see a slowing growth, and l-squared-L will see, at best, 
a questionable growth. P- and N-channel MOS is expected to 
increase from $728 million (in 1975) to $959 million. C/MOS 
is projected to jump from $96 million (1975) to $153 
million. 


MOTOROLA & AMD AGREE 
ON 2901 SECOND-SOURCE 

Motorola Semiconductor and Advanced Micro Devices 
recently signed a licensing agreement for Motorola to second- 
source the bipolar, bit-sliced, 2901 microprocessor family 
developed by AMD. This makes Motorola the third second- 
source for 2901's. Others include Ratheon Semiconductor, 
and the Sescosem Division of the Paris-based Thomason-CSF. 

FLOATING POINT SOFTWARE 
IN P/ROM's FOR 8080's 

Recognition Systems in Van Nuys, Cal., is offering a 
floating point package in P/ROM's for $495. A number of 
routines are included: floating point multiply, divide, add, 
subtract, fixed-point to floating-point conversion, square root, 
and floating-point to binary-coded decimal conversion. 

MONOLITHIC MEMORIES OFFERS 
MICROPROCESSOR-BASED NOVA COMPETITOR 

Monolithic Memories, Inc. of Sunnyvale, Cal., recently 
announced a 16-bit microcomputer that is said to be both 
software and I/O compatible with Data General's NOVA 2 
and 3. MMI expects to be producing about 50/month by mid- 
July. The systems will be priced at $2500 in quantities of 50 
or more, including 32K words of memory. The systems use 
four of MMI's 6701 four-bit bipolar microprocessors. The 32K 
word memories use of 128 of MMI's 2180 4K RAM's. 

There is also a rumor of a NOVA-on-a-chip in the fore¬ 
seeable future. 

8K PDP-8/E MEMORY FOR $650 

WE Computer Extension Systems of Houston has an¬ 
nounced a plug-in memory board for the PDP-8 Omnibus. 

The memory uses NMOS RAM's. A 4K version costs $400; 
the 8K version is $650. The company states that they come 
with an unconditional one-year warranty. 

PASCAL COMPILER FOR PDPF11 
EXTENDED FOR REAL-TIME FUNCTIONS 

A compiler for PASCAL on the PDP-11 is being offered 
by Electro Scientific Industries of Portland, Ore., for $1500. 
PASCAL is an excellent, cleanly-designed, block-structured, 
high-level language, created about five years ago by Niklaus 
Wirth. ESI has extended the language to include the necessary 
constructs for real-time data acquisition and process control. 
The system runs under DEC'S RT-11 operating system and 
requires 16K words. 


Page 4 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 April, 1976 


90 



First word on a floppy-disc operating system 

Command language & facilities 
similar to DECSYSTEM-10 


by Jim C. Warren, Jr., Editor, Dr. Dobb's Journal 

We have the first tidbits of information on the floppy-disc 
operating system to which we have alluded in past issues: 

The system, called "CP/M," runs on an 8080. It is available 
from Digital Research, Box 579, Pacific Grove CA 93950; 

(408) 373-3403. Its user interface is patterned after that of the 
DECSYSTEM-10. The file commands include RENAME, TYPE, 
ERASE, Dl RECTORY, LOAD, and auto-load/execute facility 
(type the name of an object file; it will be loaded and begin 
execution). File-names follow the DEC standard of a 1-8 character 
name with a 1-3 character suffix. An Editor is included that has 
somewhat the flavor of TECO. There is a PIP facility that allows 
easy transfer of files to and from any available device, e.g., 
terminal, paper-tape I/O, cassettes, floppy discs on any drive, etc.. 
Note: PIP is DECeze for Peripheral /nterchange Program. Other 
systems software is likely to be included. 

Internally, the system allows for dynamic file allocation of 
files ranging from 0 to 250K bytes in length. It is initially set up 
to allow up to 63 different user-defined file-names (CP/M system 
files do not impinge on this file-name space), and can be simply 
modified to allow up to 255 such file-names. The system is 
written in PL/M. At an absolute and rather undesirable minimum, 
it will run on 8080's with only 8K bytes of memory. To be 
really usable, it requires 12K or, preferably, 16K bytes. The 
system includes an automatic bootstrap facility via a RESET of 
the controller, or allows a software bootstrap, if the controller 
doesn't have the RESET facility. The system is sufficiently 
modular that its designer feels he can easily modify it to operate 
on most floppy-disc drives and with most floppy-disc controllers. 

This system already exists and has been in use for over a 
year. It was originally designed and implemented by Dr. Gary 
Kildall, a Computer Science Professor at the Naval Postgraduate 
School in Monterey, and a well-known, independent consultant in 
the area of mocroprocessor systems software. Gary is also the 
designer and implementor of PL/M, the "industry standard" high- 
level language for microprocessors. PL/M was produced for Intel 
for their 8000-family micros. Gary recently completed PLuS, a 
language for the Signetics 2650 microprocessor that is upwards- 
compatible with PL/M. Incidentally, since CP/M is written in 
PL/M, and PLuS is--for the most part--a superset of PL/M, Gary 
feels that it will be relatively simple for him to make this operat¬ 
ing system also available for 2650-based systems. 

It is expected that Digital Research will offer all of the parts 
for an inexpensive floppy-disc system, ready to build (kit), and/or 
plug-in (assembled) to an IMSAI or Altair microcomputer. These 
"parts" consist of: CP/M, the operating system; a floppy-disc 
controller; and floppy-disc drive(s). Pricing is still tentative, 
however these are the conservative estimates: 

CP/M User's Manual + Editor User's Manual + CP/M 


Interface Manual.$15 

Extensive systems documentation package.$35 

Formatted, verified, "loaded" disc. i.. .. $20 

Note: a "raw" disc costs about $8 
Floppy-disc controller.$100-$350 


Floppy-disc drives.$550-$65Q 

We expect to carry more information, including firm prices, 
and one or several articles by Dr. Kildall in near-future issues. 

From our experience, this is the hottest deal going! It's 
cheap, as far as floppy-disc systems for micros go. The software is 
well-designed, based on a well-known and easy-to-use operating 
system that has been around for a DECade. Additionally—major 
points worth considering—it has been in use for some time, it has 
been used by a number of people, and it is fairly completely 
debugged. We know Gary personally, know 'where his head's at," 
and know that he backs his products and is responsive to his 
customers. Incidentally, he has an excellent and ongoing working 
relationship with Digital Research. 

You should very seriously consider obtaining a floppy disc 
subsystem—hardware and software— for your home computer 
(either Gary's or someone else's). A short-access mass-storage fa¬ 
cility increases your capabilities by several orders of magnitude, 
particularly when it is backed by comprehensive, well-designed, 
debugged systems software. Note that the IBM 650 (the Model T 
of computers, and the one that moved computers out of the 
laboratory and into mass production and widespread usage) had a 
main memory that was a 2000-word rotating drum with access 
measured in milliseconds. 

[The Dragon sez we should tell you that the 650 had 2000 
ten-digit words. Think of it as about 10,000 bytes.] 

| A PLEA FOR EXPLICIT DIRECTIONS 

t Dear Jim Warren Jr., 4-27-76 

My problem is interfacing (hooking all the components 
I together so they work as a system). For instance, I can find no 
| where instructions on exactly how to hook my SWTC keyboard 
and TVT-li up to my Altair through my 3P + S and 22" video 
I monitor. I don't mean a few general instructions. I mean a wiring 
I diagram showing exactly which lines go where so all the strobes, 

I waits, readys, etc. work together. The same is true of my suding 
I cassette interface. Then, if I order a tape from John Arnold what 
I do I have to do to get it to work. I have no trouble building the 
parts and getting them to work, but nobody will furnish me with 
, comprehensive instructions on putting them together into a 
I system. 

I Sincerely, 

I John Greiner, Jr. 20002 S 57th 

I Temple TX 76501 


SAN FRANCISCO BAY AREA STORE: 
COMPUTERS & STUFF of San Lorenzo 

Computers & Stuff, a new retail computer outlet, has opened 
at 664 Via Alamo, San Lorenzo CA 94580; (415) 278-4720. 
Its hours are: Wed. - Fri., 4 - 8 p.m. 

Sat. - Sun., 1 - 7 p.m. 


April, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 5 


91 













Hardware & software 

by Lloyd Rice Computalker Consultants 
821 Pacific St., No. 4 Santa Monica CA 90405 

The process of generating voice output with a computer can 
be broken down into several steps. We will examine the opera¬ 
tions at each step to determine the flow of information into 
and out of the step. This examination will give us the back¬ 
ground needed to decide which parts of the overall process 
should be wired into a hardware device, and which parts 
should be kept as software to retain flexibility and control 
over the process. Perhaps the easiest way to carry out such an 
examination is by following an example phrase thru the sys¬ 
tem as it is transformed into a speech signal and sent to the 
loudspeaker, resolution of grakmatical 



Figure 1 shows a flowchart of the speech output system 
to be described. We will see that the kinds of external infor¬ 
mation needed for the first 2 steps is quite difficult to obtain 
and can require large amounts of processing, whereas the in¬ 
formation needed in the third step is easily determined, and 
in most applications can be set as constants in the system. 
Finally, the acoustic parameters contain all the information 
necessary to control the last step, the actual synthesizer, to 
produce audio output. As a result of these observations, we 
will see that is most cases, one should specify the material to 
be synthesized in the form of marked phonetic text rather 
than raw English text. In order to present a more complete 
description, however, we will begin with the first step shown 
in Figure 1, input of English text. 

Beginning with the sample text, "This is computer 
speech.", we first consult a phonetic dictionary, which per¬ 
forms a direct translation to phonetic text. A phonetic coding 
scheme suitable for this purpose which is compatible with the 
ASCII character set and Teletype output was developed by 
the Advanced Research Projects Agency (ARPA) as a part of 
a recent speech recognition study. That phonetic code, known 
as ARPABET, is listed in Table 1. The output of the phonetic 
dictionary in our example would be, "DHIHS/IHZ/KAHM- 
PYUWTER/SPIYCH.#". 

The main problem which arises at this stage is due to 
homographs, words that are spelled the same but pronounced 
differently. Two different types of homographs, however, pre¬ 
sent quite different problems. The first type consists mainly 
of short words such as "bow," pronounced either as in "tied 
a bow" and "bow and arrow," or as in "off the starboard 
bow." In these cases, the pronounciation can usually be re¬ 
solved by examining the surrounding context. The other type 
of ambiguity is a lesser noticed but very widespread phe¬ 
nomenon in English: the situation where a word has a differ¬ 
ent stress pattern depending on whether it is used as a noun 
or a verb. As an example of this, notice the difference in 


for speech synthesis 

"It was a dull subject," and "They were going to subject him 
to cruel punishment." It is not evident from the spelling 
which usage is intended, and requires that a fairly complete 
grammatical analysis be carried out to make that decision. One 
advantage at this point is that good use can be made of the 
recovered grammatical structure in the next step, where a more 
elaborate assignment of stress is performed. 

The second step in the synthesis process deals with the 
assignment of sentence stress levels to the phonetic text string. 
To clarify that operation we will first have a closer look at 
the nature of the linguistic feature known as stress. The 
strass will be coded as a numerical value attached to a vowel 
in the phonetic string. That value will be realized later by the 
synthesizer in three different ways: as an increase in the pitch 
frequency, as a lengthening of the vowel duration, and to some 
extent as an increase in amplitude. The primary or highest 
level oF stress is marked as a "1" following the vowel symbol. 
Secondary stress, marked with a "2," has less extreme acous¬ 
tic effects than primary stress. As many as 3 or 4 distinct 
levels of stress may be marked in a sentence. 

With regard to its communicative value, stress serves two 
quite distinct functions. The sentence stress pattern, together 
with timing and intonation, serves to communicate the gram¬ 
matical structure to the listener. One can think of the gram¬ 
matical structure as being transformed into a stress and into¬ 
nation pattern by the speaker which is then decoded back 
into the phrase structure by the listener. Using the term 
"grammar," I am here including several kinds of information 
about words, such as the noun-verb distinction discussed 
above as well as syntactic information about the phrase and 
clause structure. The second function of the stress pattern is 
to indicate which item or items in a sentence are to be given 
special emphasis. The meaning of a sentence can be shifted 
around by emphasizing different items. The sources of infor¬ 
mation needed for marking these two components of the 
stress pattern are quite different and must be considered sep¬ 
arately. Our example, with the stress pattern marked, would 
be something like, "DHIH3S/IHZ/KAHMPYUW1TER/ 
SPIY2CH.#". Notice also that the word and utterance bound¬ 
ary markers have been kept explicitly in the text string. 

The purpose of the portion of the system described thus 
far is imply to generate strings of phonetic text with marked 
stress patterns which are to be synthesized by the 2 steps in 
the bottom row of Figure 1. Marked phonetic text strings can 
be obtained in other ways, of course. In the case of pre¬ 
determined phrases, marked phonetic strings can be stored 
instead of raw English text, making the synthesis task much 
simpler. On the other hand, consider synthesis of speech from 
an information network of some kind. The grammatical infor¬ 
mation could come from a phrase struo jre grammar which is 
being driven by relationships in the network. Items in the net¬ 
work would be coded as phonetic strings, or in essence, refer¬ 
ences to the phonetic dictionary described above. There are 
many significant problems remaining with this approach, but it 
is perhaps one of the more exciting applications of synthetic 
speech. The third box in the flowchart in Figure 1 is the acous¬ 
tic rules section. In order to describe what the acoustic rules 
are and what they do, we must first look at the acoustic 
structure of speech. The speech code must be broken down 
into components so it can be synthesized by controlling, in 
real time, a limited number of parameter values. To a good 


Page 6 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


April, 1976 


92 





























approximation, speech can be represented by the model 

pitch. The boxes labeled "resonator" are tunable, single-pole. 

shown in Figure 2 




bandpass resonators which determine the frequency or spec- 

This model requires 9 parameter control values consist- 

tral shape of the speech signal 

in different ways. The data 

ing of 5 frequency controls and 4 amplitude controls. The 

bus symbol used to represent the control inputs indicates that 

box labeled "pulse source" is 

a controllable frequency oscil- 

each parameter can be controlled by at most 8 bits from the 

lator which is adjusted dynamically to determine the voice 

computer's output bus. The data rates needed to control the 



Computer Representation 

__J! _ _ L 

Computer Representation 

Example 

Table 1 

phoneme 

L-Character 

2-Characters 



-Character 

2-Characters 

- ■■ ■ --t 

COMPUTER 

i 

i 

IY 

beat 

P 

P 

P 

get 



I 

I 

IH 

bit 

t 

t 

T 

ten 


PHONETIC 

e 

s 

EY 

bait 

k 

k 

K 

kit 


REPRESENTATIONS 

c 

E 

EH 

bet 

b 

b 

B 

bet 



& 

@ 

AE 

bat 

d 

d 

D 

debt 



« 

a 

AA 

Bob 

g 

g 

G 

get 


NOTE: Spaces 

A 

A 

AH 

but 

h 

h 

HH 

hat 


are ignored 










except 


o 

AO 

bought 

f 

f 

F 

fat 


within escapes. 

o 

o 

ow 

boat 

0 

T 

TH 

thing 



0 

u 

UH 

book 

S 

s 

S 

sat 



U 

u 

UW 

boot 

w r 
s or f 

s 

SH 

shut 



a 

X 

AX 

about 

V 

V 

V 

vat 



i 

X 

IX 

roses 

* 

D 

DR 

that 



jT 

R 

ER 

bird 

z 

z 

Z 

zOO 



aU or aw 

W 

AW 

down 

V 

z or 3 

z 

ZH 

azure 



al or ay 

Y 

AY 


V 

c 

C 

CH 

church 



ol or oy 

0 

OY 

boy 

V 

J 

j 

JH 

judge 



y 

y 

Y 

%OU 


H 

WH 

which 



W 

W 

W 

wit 

syl 1,1 

L 

EL 

battle 



r 

r 

R 

rent 

syl m,m 

M 

EM 

bottom 



i 

i 

L 

let 

syl n,n 

N 

EN 

button 



m 

m 

M 

met 

flapped t,X 

F 

DX 

batter 



n 

n 

N 

net 

glottal Stop" 

Q 

Q 




n 

G 

NX 

sing 

silence 

- 

- 








non-speech 










segment 

J 1 

I 

laugh , etc. 



AUXILIARY SYMBOLS (1- AND 2-CHARACTER CODES ARE IDENTICAL) 



Symbol 

Meaning 

Symbol 

Meaning 



+ 

Morpheme boundary 


:3 or . 

Fall- 

-rise or non-term juncture 



/ 

Word boundary 


* ** 

Comment (anything 

except * or **) 



* 

Utterance boundary 


1 1 

Apos- 

-surround special symbol 








in comment 




3 

Tone group boundary 








:1 or . 

Falling or decl. juncture 

( ) 

Phoneme class information 



:2 or ? 

Rising 

or inter, juncture 

< > 

Phonetic or allohonic escape 



STRESS REPRES 

ENTATIONS (IF 

PRESENT 

MUST IMMEDIATELY FOLLC 

>W THE VOWEL) 




Value 

Stress 

Assignment 


Value 

Stress A g qnnp.r. 1: 



o 

No stress 


3 

Tertiary stress 




1 

Primary stress 


• 

(Etc. 

) 




2 

Secondary stress 


• 





April. 1976 

Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 

310, Menlo 

Park CA 94025 

Page 7 


93 










































parameters are quite low, the highest rate needed for any 
parameter being less than 100 new settings per second. 

I will not go into detail here describing the actual 
parameter values needed to represent particular speech sounds. 
An article to appear in the August, 1976 issue of Byte Maga¬ 
zine goes into some detail on the nature of the different kinds 
of speech sounds and how they can be generated by con¬ 
trolling the parameter values in such a model. Sucn information 
would, of course, be necessary to write a software implemen¬ 
tation of the acoustic rules. For our present purposes, we con¬ 
sider the 9 control values as outlined above to represent an 
acoustic parameter model of speech. We can now turn to a 
discussion of the acoustic rules and the tasks they must per¬ 
form to generate controls for this model. 

Each phoneme, as encoded in the phonetic text string, 
is a symbol representing one or more acoustic speech segments, 
each such segment being produced by a particular pattern of 
values on the control parameters. Each pattern, or configura¬ 
tion of control values, must be held for a specific length of 
time before changing to the next pattern. As a first approxi¬ 
mation then, the rules would consist of a series of table look¬ 
ups to convert each phoneme into a sequence of parameter 
patterns, along with the duration each pattern is to be held. 

Now comes the catch! This first approximation makes 
rather poor speech. The problem is that the transitions be¬ 
tween parameter values are often more important than the 
actual values at any given time. The flow of parameter values 
must be more carefully orchestrated. Actually, the only tough 
problem here is that correct transitions between phonemes are 
just as important as having the correct temporal structure 
within a phoneme. This means that phonemes cannot be 
coded as independent sets of parameter time functions which 
are merely joined together sequentially, but that some interac¬ 
tion must take place between phoneme patterns before they 
are sent out to the synthesizer module. Briefly, the different 
phonemes of a language can be classified according to the 
effects of boundary interactions. The transition of each param¬ 
eter value across a given phoneme boundary can then be de¬ 
termined from the boundary characteristics of each of the 
neighborhing phonemes. Such boundary behavior information 
can be stored in phoneme look-up tables. 

In addition to assigning initial parameter values and 
mapping the transitions across boundaries, the acoustic rules 
must also assign and modify durations. For example, a 
stressed vowel is given a longer duration than the same 
vowel in an unstressed position. 

A third function the acoustic rules must perform—proba¬ 
bly the most important for natural sounding speech—is to as¬ 
sign the time pattern of values to the pitch frequency 
parameter. First, an archetypal intonation pattern is chosen on 
the basis of punctuation (retained in the phonetic text just 
for this purpose). A period selects a falling pitch, a comma 
signals a level pause, and a question mark indicates a rising 
pattern. Other diacritical marks could be defined in the pho¬ 
netic string to generate more complex pitch patterns such as 
singing. The selected archetypal pitch pattern is then modi¬ 
fied locally by specific phonemes. Such local modification of 
the pitch pattern is one of the effects of a stress level marked 
on a vowel. Also, some consonants affect the pitch value 
slightly. 

To complete the synthesis process, the acoustic param- 
eters generated by the acoustic rules are output, in real time, 
to a synthesizer module such as sketched in Figure 2 and 



described in the forthcoming Byte article. The synthesizer 
constructs an audio frequency signal as specified by the con¬ 
trol parameters. The audio signal is then sent to a loud¬ 
speaker as the speech output. 

It would be impractical to consider simulating the syn¬ 
thesizer module in software because of the speed needed to 
generate speech in real time. That task is much more appro¬ 
priately handled by analog hardware. Such a hardware syn¬ 
thesizer module is currently being developed by Computalker, 
821 Pacific St., No. 4, Santa Monica CA 90405. The Compu¬ 
talker synthesizer module would be driven by the microcom¬ 
puter output data bus as described above. The software inter¬ 
face consists either of a direct, manually-controlled parameter 
pattern generator or an implementation of the acoustic rules. 
Software for the acoustic rules will also be developed by 
Computalker as the hardware becomes available. 

I believe it is important to consider at this point some 
of the trade-offs involved in implementing the acoustic rules 
in software rather than hardware. A synthesizer system such 
as the Votrax VS-6 contains a hardware implementation of the 
basic acoustic rules. As a result, the language available for 
coding the phonetic text is fixed and cannot be extended. In 
addition, the phoneme table values are fixed so that each pho¬ 
neme has a set phonetic quality. By implementing these rules 
in software you could retain the flexibility over pitch pat¬ 
terns and speech rate and also have control over the phonetic 
qualities which determine the language and dialect. The acous¬ 
tic rules determine a number of qualities in the resulting 
speech which are characteristic of a particular speaker, such as 
the sex and age, and other qualities which vary from occasion 
to occasion, such as voice quality, speaking rate, distinctness 
of articulation, etc. Because of time constraints, a software 
version of the acoustic rules may not have time to handle all 
these possibilities as on-line variables. Of course, it is cheaper 
to produce a synthesizer module if a hardware acoustic rules 
system is not included. 

How could speech output from a microcomputer be 
used? Several applications come to mind for the hobbyist 
environment, such as responses in games, voice readout of 
measurement data, system status warnings, etc., etc. Other 
applications might include telephone answering and intrusion 
warnings. What about generating audio tape labels automatical¬ 
ly? Each of these applications makes its own demands for 
quality, naturalness and range of vocabulary needed. I would 
very much like to hear of your interest in computer speech 
output. What applications do you have in mind? What prob¬ 
lems do you foresee? A note to the above address will 
assure that you receive further information as it becomes 
available. 


Page 8 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 April, 1976 


94 































MINOL—Tiny BASI C with Strings in 1.75K Bytes 


AN OUTSTANDING JOB 

DONE BY A HIGH SCHOOL JUNIOR 

Dear Mr. Warren: May 1, 1976 

I have a Tiny BASIC program running on my Altair 
that I think you might be interested in. I call it MINOL 
(mine-all). It fits in 1.75K memory. Unlike the other Tiny 
BASIC's, MINOL has a string-handling capability, but only 
single-byte, integer arithmetic and left-to-right expression 
evaluation. 

Additions to TB include CALL machine-language sub¬ 
routines, multiple statements on a line (like TBX), and 
optional "LET" in variable assignments. Memory locations of 
the form (H,L) can be used interchangably with variables, per¬ 
mitting DIM-like operations. 

Sincerely, 

Erik T. Mueller 36 Homestead Lane 

Roosevelt NJ 08555 

MINOL is an abbreviated form of BASIC with additional 
features. It has twelve statements: LET, PR, IN, GOTO, IF, 
CALL, END, NEW, RUN, CLEAR, LIST, and OS. 

Variables: A letter from A to Z, or a memory location 
of the form (H,L), where H is the high address (decimal), and 
L is the low address. H and L may be expressions. 

Number: An integer from 0 to 255. 

Expression: A series of terms separated by arithmetic 
operators. 

Terms: Numbers, variables, schars, random. 

Schar: A single character enclosed in single quotes. Gives 
the ASCII value of the character. 

Random: "!" (exclamation point) gives a random num¬ 
ber between 0 and 255. (Subroutine by Jim Parker.) 

Arithmetic Operators: + - * / 

Relational Operators (not permitted in expressions): 

= # < ("less than") 

Arithmetic Evaluation: All expressions are evaluated from 
left to right (no precedence of operations). 

Statements: A statement consists of one or more sub¬ 
statements separated by (colon), and terminated by CR. 
Lines up to 72 characters. Line numbers from 1 to 254. All 
statements may be used with or without a line number. 
Statements without a line number are executed immediately. 
Statements with line numbers are edited into the existing 
program. 

Substatements: [LET|tJ> ] < var> = <expr> Assigns the 
value of a variable. The "LET" can be left out if desired. 

Ex: LET S = 0 

LET (24,0) = P-59 

A=B+C*J-198 

(25,5)=A*7/B 
PR <var-list> [; | cf>] 

<var-list> : Literals, strings, or expressions separated by 
commas. 

Literal: Characters to be printed enclosed in double 
quotes. 

Strings: $(H,L): A series of memory locations starting 
at H,L which contain characters previously entered. 

Expressions: Simple variable or expression. 

Ex: PR"YOU SAY YOUR NAME IS",$(10,0) 

PRA,B,(6,0), 

April, 1976 Dr. Dobb’s Journal of Computer Calistheni 


PR 56+!/A,B 
PR 

A semicolon at the end of a PR suppresses CRLF. A blank 
PR produces a CRLF. 

PR Format: Numerical values are printed with one lead¬ 
ing and trailing space and with all leading zeros suppressed. 

All strings and literals are printed without leading and trailing 
spaces. No zone spacing. 

GOTO<expr> 

Transfers control to the specified statement. GOTO 0 
transfers control to beginning of unnumbered statement. 

Ex: GOTO A*10 
GOTO 78 

IF<expr> <relop> <expr>;<statement> 

Executes the statement following the (semi-colon) if 
the specified relation is true. If it is untrue, control is trans¬ 
ferred to the next statement on the line (if present). 

Ex: IF X=5 ; GOTO 20 

IF A='Y' ;PR"SURE, WHY NOT?" 

IF A+B*C # !;GOTO 20 : PRA+B*C 
IF Y # 6; S=! 

IN [< var> |<str>] [,[< var> |<str>] ] * 

This statement permits two types of data to be entered 
from the terminal: a) Numeric data; and 

b) Alphanumeric data; either a single 
letter, or a string of n characters. 

Using a <var>: The input data is tested. If it is numeric, 
the number is deposited into the variable. If the data is not a 
number, the ASCII value of the first character typed is 
deposited. 

Using a <str>: (of the form $(H,L) The inputted char¬ 
acters are deposited into memory sequentially starting at loca¬ 
tion H,L. 255 is placed in memory after the last character 
before CR. All spaces inputted are ignored unless enclosed by 
quotes. Note that (H,L) refers to a single location, but 
$(H,L) refers to a series of locations beginning at H,L. (H,L) 
can be used in expressions as a variable, but $(H,L) can only 
be used in I/O statements (IN, PR). 

CALL (H,L) 

Calls users subroutine starting at location H,L decimal. 
END: Terminates program. 

NEW: Deletes all lines of a program. 

CLEAR: Sets all variables (A-Z) equal to zero. 

RUN: Starts execution of program at lowest numbered state¬ 
ment. 

LIST: Lists program in memory. 

OS: Transfers control to user's operating system. 

Line editing and correction: 

Typing X s deletes the last character typed. 

X L deletes an entire line. 

X c stops executing program. 

Prints: BREAK AT LL (LL is the line that was to 
be executed before the 
interrupt occurred.) 

To delete a line, type the line number followed by CR. 
To change a line, type in the line with changes. The new 
line will replace the old one. 

ERROR MESSAGES !ERR L AT XX 
1. Label does not exist 

& Orthodontia, Box 310, Menlo Park CA 94025 Page 9 


95 



2. Input is over 72 characters. 

3. Unrecognizable statement type. 

4. Illegal variable. 

5. Syntax error. 

6. Out of memory. 

EM MINOL 2.1 SYNTAX Apr. 1976 

< line> 

<statement> 

< substatement > 


<humber> 

<digit> 

< var> 
<relop> 
<expr-list> 

<var-str-list> 

<expr> 

<term> 

< literal > 
<schar> 
<str> 
<memloc> 
<highadr> 
<lowadr> 
<char> 


:=< number> <statement> cr | < statement cr 
:=<substatement>* : <substatement> 

[LET |(J>] <var> = <expr> 

PR <expr-list> [;|<j>] 

IN <var-str-list> 

IF <expr><relop><expr> ; <statement> 
GOTO <expr> 

CALL <memloc> 

END 
RUN 
LIST 
NEW 
CLEAR 
OS 

=<digit>* 2 <digit> 

=0 h |. - Is |9 


altered. 

Must CALL, INT 315 
363 
002 

This checks for keyboard 
interrupt (X c ). 

MINOL Interpreter 

Highest memory location available 
for MINOL programs. 

Address of user's operating system, 
or monitor. 

All input text is stored at 006 210 - 006 320 
Free speace is left for short strings at 006 333 - 006 377 
Variables (A-Z) are stored at 005 007 - 005 042 
007 000 + 

Executing MINOL: 

To start MINOL and initialize program area, EXAMINE 002 350, RUN. 
To start without initialization, EXAMINE 000000, RUN. 


000 116 - 006 377 

000 253 L 
261 H 

001 142 L 
143 H 


Program storage 


:< 


Y Z < memloc> 


= [literal > | <expr> ] < str>] [,[<jitergl> j 
<expr> | < str>] ] * 

:: = [< var> | < str>] [;[< var> | < str>] ] * 
::=[<termXaroper>] * <term> 

::=< var> |<number> I '<schar>' 11 
::="<char>*'' 

::=< char> 

::=$ <memloc> 

::=(< highadr>,< lowadr>) 

::=<number> 

::=<number> 

::=any character except " and cr 


Notes: < >encloses an element of MINOL 
(J) is the empty set 
repeat limited by length of line 
*2 

repeat from 0 to 2 times 

MINOL 

Memory Allocation: 

(All locations are split octal) 


000 - 000 115 

I/O Routines, 

etc. 

System Reset: 

000 000 

061 LXI SP 


001 

377 


002 

017 


003 

317 RST CRLF 


004 

303 JMP, MINOL 


005 

116 


006 

000 

CRLF: 

010 

A subroutine to output a 
CR followed by a LF. 

INPUT: 

020 

Moves a character from 
input device to the A reg¬ 
ister. Parity equals 1. 

Must output an echo 
check of the inputted 
character. 

OUTPUT: 

040 

Outputs character in the 


A register. Parity equals 1. 
No registers may be 


Dear Jim: May 24, 1976 

I am enclosing the listing of MINOL—manually typed! 

There are several features of my program, both positive 
and negative, that I might point out. 

On the plus side, MINOL uses only 1.75K of memory, 
including the input-output subroutines (although since writing 
it I see how I can make it even smaller.) Memory locations of 
the form (H,L) can be used similarly to one- or two-dimen¬ 
sional DIMs in higher BASIC's. Simple input or output strings 
are possible by specifying a series of memory locations—of the 
form $(H,L) where H,L is the first location where characters 
are to be deposited. I am enclosing three programs to illustrate 
these features. On the negative side, the 

program is not designed for arithmetic functions, having no 
grouping of operations, and being limited to a value of 255. 
The relational operators are restricted to =, #, and <, although 
> ("greater than") can be done by reversing the logical expres¬ 
sions. Fewer error messages are provided than usual. MINOL is 
written completely in machine language without using IL. 

When I can supply MINOL on a cassette I'll let you 
know. You might like to know that I am in my third year of 
high school. 

Yours truly, 

Erik T. Mueller Britton House 

Roosevelt NJ 08555 


Additions/changes since the May 1st letter: 

Spaces are ignored: a. During line/statement entry 

unless enclosed by quotes. 

b. When inputting variables. 

c. When inputting strings if the L 
address is zero. 

Spaces are accepted: a. When inputting strings if the L 
address is non-zero. 

b. When enclosed by quotes. 

Instead of GOSUB/RET statements, use the following 
substitute statements to perform the same function: 

First initialize the GOSUB stack pointer Y,Z: 

2 Y=14:Z=255 (Y and Z are the H,L address of 
some free space in memory.) 

Instead of a GOSUB statement, substitute the 


Page 10 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


April. 1976 


96 






following: LET(Y,Z)=< Return label> :Z=Z-1:GOTO 
< subroutine label> 

Instead of a RET, substitute: Z=Z+1 :GOTO(Y,Z) 

Free space is left for very short user's strings from 
006366 to 006377. 


On a directly-executed IN statement, although the data 
will be correctly stored, an error message may appear after 
its execution. 

The monitor gives a "]" as a prompt. The IN statement 
gives a "?" unless a sense switch is up. 

Three programs in MINOL: 


3 LIST 

10 PR"GIVE ME A SENTENCE":IN$(14,1) 

20 PR"STRING TO SEARCH FOR?":IN$(14,101) 

21 A=0 

22 A=A+1:IF(14,A)#255;G0T022 

23 B=0 

24 B=B+1:IF(14,100+B)#255;GOT024 
30 C=1:D=1:S=0 

40 IF(14,D+100)#(14,C);GOT070 
50 D=D+1:C=C+1:IFD<B;GOTO40 
60 LETS=S+1 
65 C=C-1 
70 LETD=1 

80 C=C+1:IFC<AtGOTO40 

90 PR"'";$(14,101);"' OCCURS";S; 

96 IFS=1t GOTO100 

97 PR"TIMES IN '";$(14,1); :END 

100 PR"TIME IN $(14,1);"SEND 
] RUN 

GIVE ME A SENTENCE 
? THE BLUE BIRD IN THE BLUE SKY 
STRING TO SEARCH FOR? 

? BLUE 

■BLUE' OCCURS 2 TIMES IN 'THE BLUE BIRD IN THE BLUE SKY' 


3 LIST 

10 "* * *NUMBER-A NUMBER GUESSING GAME (NUM05) 

20 PR:PR"WHAT IS YOUR NAME"IN$(14,1) 

30 X=l:S=0:PR"HI,";$(14,1); M . WELCOME TO THE GAME OF NUMBER" 
40 PR"I'M THINKING OF A NUMBER FROM 0 TO 255" 

50 PR"GUESS MY NUMBERII" 

60 PR:PR"YOUR GUESS";:ING:S=S+1 
65 IFG=X;GOT09 0 

70 IFG<X;PR"TOO SMALL. TRY A BIGGER NUMBER." 

80 IFX<G;PR"TOO BIG. TRY A SMALLER NUMBER." 

85 GOTO60 

90 PR"THAT'S RIGHT,$(14,1)II YOU GOT IT IN";S;"GUESSES" 
100 PR"PLAY AGAIN";:INA:IFA='Y';GOTO30 
110 PR"OK.HOPE YOU HAD FUN.":END 


10 PR"NAME";:IN$(14,1) 

20 IF(14,1)='J';IF(14,2)='I';IF(14,3)='M';PR"IT'S JIM!" 

30 IF(14,1)#'J';PR"IT'S NOT JIM.":GOTO10 

3 RUN 

NAME?ERIK 
IT'S NOT JIM. 

NAME?JIM 
IT'S JIM1 
NAME?X C 
BREAK AT 10 

April, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 11 


97 









98 




99 







100 




101 



u 

cji 3 

10 

«3 P^- 

JG 

ii d •• 

u 

0 P 


P ra p 

<0 

S3 O 

<M U 

4? 0 OS 

*H O 

H *H O 

P 

A ^ 

^ P 

(3 ^ 

O 4) 

-H U 

4> H 

>. 3 

X 

« ,n 

O 

> 0 


<D 

c 

P 

§ 

u 

A 

3 


0 

P 

Q 

a 



o < 
vO Eh 
fN O 

M 'W .UU^UBUUH •UHhUEHOiHQXl'! 

ftNftNt<j;uHUf£ftu^P.wswo>qoy! 

UbU^wOStOKWUUbOJUKUtfZSSsQ 1 


eg 

Z 

H 



8 8 

os a 

H 

^ 2 



a z 

O 

< Q 

W W r" 

H 

< h .. w r- CQ < h 

• O 
< p CQ CQ CQ 

- * r" 

O < n 

< 

• EWOr^D • cq 
WCQOEhQ nOfDQOf 


w e< «' 

HQDU^Wc!| 
Oi §qu! 


ID 4 >>W w q > dS a h 

iOOO&N"- 

I Z £ 2 O 2 


_ . ...... - - 

Qoy2!xqo,NO<>MSQwft 
<£Q^d3ubSuzo!Hao:u 


o o 
O O CQ 

W O M O O KT O 

i w Q D m Q ^ w 

iQ^O^^QOCrHCO 
I > M - 

■ O D U 

1 £ W *3 


- X * S K 

LX<0,WC0HH 

SSqggggfc 


O 

o 


m r-* 
o o 
o o 


in 

H 

tM eg 

e* h o c vo 
r" h o m r- 
onooi'i 
o 

I 

in vo o- ro 
ooocw 
o o o c o 
m in in in m 
o o o o o 
o o o o o 


O eg O 
vo r" vo 
O <M O 


O m rg O eg rgo f" H h r" co *cf o in r- in O O <t 

£ £ £; 2 ^ 2 2 ^ ^ fMOr^HP-Nf »-i vo ro m o o m- 

ego eg O O HO ro h ho no h eg eg ,h ,h H OO h 

rg<Degr-r^Hr^Hr^r-'D<Nr^iDHr^HOiDor^mrNomHiooi0Or^mmHegiD<Nrv.mor^m<Nr^ioegnr^rom<Nroinmi£>iDOiD 

^^^2^^!2^!2^ r ' r0 ^ >r '' Hr '' HOr ^ oo, ^ oo ' Hr ^ r ^ , ^ r ' C) O'^O CJr1 f s -'HOHr>-’ci'egn\} i r>-OfgHOegrtOOegegHr'eg 

rororooocoorooororoororoQroooegHOrooHHrorooegHOrooororoHroOfOooroforoororooOfororooOHro 

inoeginiDr^OHegmr} , voHegT}'invDr s *egrriniDr^eginvor^Heg^ i inior'<MinvDOnT} , r>.Hegrortinp'egro'd'r^OH'?l’invDOegn 

x2^0i£!H}\£? l£,vDv0v0vC, ^ )ts ' r ' r ' r ^ tN ' r ^ oco OOHHHHegegfNjegegegnron^^’^} < Kj*ininininininvoiDiDior'r^r^r>.r^ooo 

?S,9^,9,9 999999 OOOOOOHHHr|HHHHr|rHHHHHHHHHH,Hn|r,r,Hr<r< HHHnHHHHHHH(NNN 

222222222222 000000000000000000 °ooooooooooooooooooooooooooo 
ooooooooooooooooooooooooooooooooooooooo o oooooooooo ooooo o o o 


5 


Z 


u 

< 

s 


1 

0 

NOT 

NOT 

§ 

SEC 


8 


A S3 


Q 

y 


a 

Pk 


OS 

H 

ft* 


M 

a 

Gl 


n 

A 

u 


> p 

o u 


D> 

n 

<a 

to 

CD 

E 


c cS 
H W 
p — 

cu * 


s 


JQ 

<0 

•H 

p 

<TJ 

> 

4-1 

o 


« 

o 

u 

*0 

•o 

< 

P 

8 


w 

Q 


0 

p 


X 

0) 

p 

p 

c 

*H 

p 

A 


n 0 0=1 

5 t3 ^ < 

d s s: m m i 

« 

*X>O.H( 

N Z O £ P> : 


OS = K : OS = OS = 
ts c; 2 cs 
iWCQWCQKQWfQ 

ia.HftHfcHD.H 

;£>£>£>£ 

: ^ s o s ^ s o 


■<* 

o 

o 

o 

o 

eg 


■tf 

o 

o 


•«* 

o 

o 


<fr 

o 

c 


r"HvorgvorOiO , 'tiOiniOiO 

iniocgvoejioojvorgiorgio 

0''gegrgegrgegegegrv.egeg 



Q 
o 

8 § 

< < H O W 

E-* *ffl O Q J 

to ra o« o H 

•• * 5J 

< > O Eh C0 X 

QO<c 0 OO^^w V w-w 
JSUOJfcQSWSlQSUb 


£o< £ w y o o 

• ID ' J 'SO 
< eg o K < 


JO< £W[COXS:o< „ 

— ^ Z vo -J -too Z >10 -0000 
UC h UWhnu2<U£ h Wh<(NMsS2o 


o 

a m z 

** • H w 
< O Q 


i > H > X > A ’«* 
!ODOj^o3p; 


>sdouo2u> 


CS 

o 
Eh 
«/) 

§ o 

“ H O < 

WO • w o 

Q n K o Q H 

O 


• » •• H U 

°'>H>XXXd><0<HWHHH>QSfc 

r. odozzz-<oehowdxd>o3uo 
bSwSHHHostoaSftdBisjQxoi 


W O' 
O e~ 
ro 


O ft N 1 
JUKI 


in 


in "d* 
o o 
o o 


nYWUUUUUUOO! 

rooHroomorooroof 


HHHHHHegegrgegcgr 

2299299 0000 < 


in 

O 

H 



O 



eg 

ro 

O 

O 

O 

O 

O 

O 

eg f" 



VO 



vo 

O 

O 

O 

ro 

vO 

H 

m 

n H 



eg 



0 

ro 

O 

O 

ro 

eg 

H 

in 

eg in 

["• in ro 

vo 

vO 

r" 

n vo 

in 

eg 

VO 

VO 

ro 

vO 

eg 

H 

r" 0 h 

0 <n in 

[■" 

eg 

0 

in 

H 

ro 

H 

ro 

O 

eg 

O 

ro 

0 H n 

n n 0 

H 

n 

H 

O H 

ro 

ro 

O 

O 

n 

ro 

C 

n 

vo h eg 

in id f" 

O 

H 

rn 

h* in 

vo 

H 

<fr 

VO 

O 

ro 



in in 

m in ui 

VO 

VO 

vo 

VO vo 

10 

I - " 

f" 

r" 

O 

O 

eg 

eg 

eg eg eg 

eg eg eg 

eg 

eg 

eg 

eg eg 

eg 

eg 

eg 

eg 

ro 

ro 

’tf 

't 

^ vvf 

V'f 




H* V 






Hi* 

O 

O 

OOO 

OOO 

O 

O 

O 

O O 

O 

O 

O 

O 

O 

O 

O 

O 

OOO 

OOO 

O 

O 

O 

O O 

O 

O 

O 

O 

O 

O 


in kj- 
00 o 
00 o 

eg n o r* 
iD eg o eg 
onoo 


o o 00 ooooooooooooooooooooooooi 
ooooooooooooooooooooooooooooi 


[■"HO 

000 
O n 0 


r" 

f" 

n 

HfOHHMlOOl 
in m h n r- h ■ 
gonnnonn< 


OS 

O 

H eg 

OS Pi 

ro 

ps 

I 

wi 

K 2 

m w 

2 

w 


% 


o 

p. 


M 

I 

m 


gl 


1 

o 


Page 16 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


A pril. 


1976 


102 








103 






u 











CD 











z o 











*-« o 








CO 

UJ 


O 3 









X 


3 

UJ 








0— 


3 UJ 

a 







X 



O X 








o 

•>. 


ZHI- 







3 

UJ 


0-4 








CO 

or 


u. 

or 







w 

o 


* o 

UJ 








X 


>- 

a 







or 

or 


or uj 







IsJ 

UJ 


o co 

a 







1— 

X 


X 3 








3 

8— 


UJ 

X 







CL 

oc 


x o y- 







X 

3 


UJ 

1-4 







o 

a 


U. CD 

3: 







o 



o 








o 



•h. 








or 

■ 


« < 







o 

to 


CO uj 







M 

X 


lu or 

i 







X 



x «x 

a: 








or 


>- 

m 







Q 

cd 


CD X 

<C 







UJ » 

o 


or 








co 3 or 


aO O 

z 







c UJ CL 


-£> X 



e 





0c > 



r- uj 








9 uj or 


X 

CO 


UJ 





O 3 

UJ 


x 



X 





CO 

X 


to cr 



X 





O UJ 

x 


nr lu 

X 


tc 





co CD 

o 


0-4 X 

o 







<£ 



U X 

3 


X 





Z 3 

x 


o 

CO 


u 





<r CD 

CO 


Ul z 



<t 





z 



X -3 

«s. 


UJ 





O -3 

o 


1— 

UJ 







Z —8 UJ 


W o 

z 


K 





<1 

CO 


X 

f—« 


O 





UJ 

3 


CO 

X 


U 





or z 



UJ = 

o 







UJ i—i UJ 


LD CO 

<s 


CO 




LD 

CO X 

CD 


3 0-« 

X 


1— 




CM 

3 O 



a 



0-4 




O 

•3 

Z 


to 

UJ 


CD 





UJ X 

<c 


lu «s 

a 


0-4 




C73 

X 

o 


UJ = 

x 


o 





1— UJ 



nr 

x 



0 



< 

X 

1— 


X o 

UJ 


3 

UJ 



O 

Z X 

«f 


X UJ 

3 


<r 

X 




UJ 

X 


X 

Ul 


x 

>- 




UJ X 

5— 


or 

X 


O CD 



ra 

3T <C 



UJ c_j 



o 




a 

*— 

>- 


s o 

-3 



a 




UJ 3 

or 


O 3 


•• 

UJ 

UJ 




CL < 



3 UJ 

X 

co 

UJ 

a 




Z 

a 


Dr 

or 

z 

or 





CO *-« 

to 


UJ 

o 

o 

X 

to 




Z X 

n 


X O 

a 

M 

i— 

9- 




o or 

3 


x z 

a 

1— 


*—» 



o 

0 -» u_ 



-a 

3 

LJ 

u 

CD 



T— 

X X 

UJ 


z 

CO 

z 

c 

0-< 



CO 

<1 

z 


»-* G 


3 


O 




«_> X 

0—» 


LU 

o 

U 

a 





a 

X 


U 3 

1— 


3 

3 



03 

z o 

”3 

0 

O CD 


UJ 

O 

3 




3 . 

C 

CO 

t~* X 

o 

CO 

a 

X 




X 3 

or 

X 

CO UJ 

UJ 

UJ 

LD 

O 




X -a. 

CG 

<t 

LU CO 

z 

X 


O 


0 


Q *-h 

3 

OC 

or co 

LD 

4— 

■3 



LU 

© 

o or 

to 

o 

<3 

M 



PO 


a 

T3 

UJ 


o 

O 8 

CO 

X 

e CO 



<i 

0 

LU tO 

<1 

a 

1 — LU UJ 

or 

^ -3 

=>. 



£ 

o 


a 

or 

O 

o 

3 ^ 

o 




0-1 -3 

O 


o 


u 

<r 

a 


a 

O 

> 

Z 

or 

UJ UJ 

CO 

or 

i— x 

<r 

• 

LU 


o or 


UJ 

Z CD 

»—i 

UJ 

t_> or 

a 

LU 

a 

63 

or o 


X 

ld 


a 

o O 

CD 

a 

<t 


a 

CO 

X 

►-4 X 

or 


X 

>- 

< 

a 


UJ 

UJ 

o 

CO 

o 

o 

Z UJ 

UJ »- 




System monitor for 8080 ■ 
based microcomputers 

by Charlie Pack, 25470 Elana Rd., Los Altos Hills CA 94022 

After developing an 82-byte octal loader using nothing 
but the switch panel on my Altair 8800, I concluded that a 
system monitor was needed to provide better communications 
between myself and my machine. The required functions were: 
(1) display the contents of one byte or any segment of 
memory in octal, (2) display the contents of all registers, 

(3) enter programs in octal from a keyboard, (4) load and 
store programs or data, and (5) jump to a program. The I/O 
device to be supported was an ASR-33 Teletype with paper- 
tape reader and punch. The Monitor described in this article 
meets these requirements. 

Since the Monitor has several hundred statements, and 
the memory in my computer is limited, I needed a cross- 
assembler that would run on the computers and with the soft¬ 
ware to which I had access. So, I wrote one—would you be¬ 
lieve—in COBOL?!! The program listing for the Monitor was 
printed musing my COBOL cross-assembler. Since COBOL is 
rather inefficient at non-structured string handling and sub¬ 
scripting, I made the source format fixed and eliminated 
punctuation. Register operands were made a part of the in¬ 
struction code, for example MOV AM moves a byte from 
memory to accumulator. Otherwise, the microprocessor in¬ 
structions are normal. The only pseudo-instructions used are 
ORG, DB, and DW. ORG sets the location counter; DB de¬ 
fines a single byte, and DW defines a doubleword (two bytes). 
Since it is difficult to do octal arithmetic in COBOL, the bells 
and whistles were left out of the cross-assembler. 

A paper tape of this system is being delivered to the 
Program Repository at the Community Computer Center, 

1919 Menalto, Menlo Park CA 94025. 



* 

« 

« 

« 

* 

■K 

* 

* 

* 

* 

* 

« 

* 

* 

* 

* 

* 

* 

* 

* 

to 

£T 


3 

CL 

y 

o 

o 

o 

a 

o 


o 

LU 

to 

CO 

8 

o 

CO 

O 

to 

or 

o 


or 

o 


o 

y 


z 

UJ 


to 

x 


ru 

ru 


co 

o 


co 

o 


o 

a 


c 

f*- 

53- 

in 
rv i 


o 

<s 

a 

UJ 


x 

o 


O CL 
0- X 


• or 

« o 


o 
or uj 
< nil 


CO 




CO 

U' 

3 


to X 

o 



G CO O 

a 

o 

</> 


> 




3 

' CO 


»-t 0- 

X 



0 - a 

X -c. 

z 


* 

CO 




LU 

o a 






0-4 a 0 - 

o a 

3 

O 





a 

f— 

•< UJ 


a o 

a 



Z l— z 

a 

a 

* 

z 



o 


IJL S- 


o a* 

X 



c co a 

a X 


4- 


UJ 



1— 


UJ 


1- c 

0- 



X • 0-1 X 

O 

z 


-fc 

J~ 





cd a 

0 

z 




CO LD CD 

<o a 

o 

3 


f— 



z 

C 

z a 

to 

Z UJ 




a co a a 

x a 


a 

* 

4-f 



o 


*-< a 


O X 

0 



x a a co 

-3 

CD 

E 


a 



X 

> 

LD UJ 

*—« 

X X 

CO 


0 

►— a 

a to 

X 

o 

* 






LD S- 

»— 

o 

a 


CO 

O 3 >- 

CD X 

< 

o 





X 

*-> 

3 Z 

CO 

X <_> CO 


a 

X C 3 Z 

O -3 

a 


•« 




UJ 

o 

CD 0-4 

n 

UJ UJ 

co 


*—* 

0-3 < <t 

a a 

CD 






♦— 

co 

LU 

a 

i- a 

a 


0- 

3 

a LD 

O 






CO 

o 

o o 

UJ 

to 

a 


l—« 

3 x a a 

o 

a 

"a 





>- 

cc 


»— 

X 0- 

o 


3 

-3 Z O C 

a a 

a 


■s 




CO 


co o 

u 

CO o 

o 


0-1 

<3 

ld a 


k. 



e 




UJ 3 

<1 

z 

< 


CD 

CO CO CO 

<3 

a 




3C 


UJ 

-3 

o 

a 

o 



<X 

C: I— 0— 

3 a 

o 

~ 5 



UJ 


X 

CO 

*-» o 

-3 

to to 

o 


a 

Z < a z z 

CD O 



•te 


»—« 


I— 

X 

> 1— 

X 

O 

M 


<? 

<j a ui 

Z 

<i 

v> 



> 



M 

c 

t_> 

to 

3 


CJ 

X UJ X 0— 

«3 <r 

■— 

JQ 



a 


Ll 


a o 


0- 

-3 



X z z 

3 X 

<x 

J2 



LU 


o 

a 

a uj 

3 

a* 0-4 

> 


a 

OXOO 

1 -3 

CJ. 

O 

•fc 


r> 

0 


o 

to 

<1 

X 


0 

o 

UffiUU 

a o 


a 



o 

CO 

UJ 


O 3 

Z 

s— 

a 

X 



z 

X 





LU 

CO 

o 

CO 

o 

e 

O i_) 

X 

x a a a »-• x 

a 

k. 



X 

CO 

o 

o 

3 UJ 

0-1 

u <s 

a 

z. 

a 

z z X X 

x a 

<3 

Q 

-St 


UJ 

O 

a 

co 

<C CD 

0 — 

O a 


3 

c 

a o x 0 - 

G -3 

z 




s— 

a 

a 

30 


LJ 

a 

CO 

a 

X 

a 

<3 Z 

0-t 


* 


co 

a 

3 


or z 

Z 

O <3 



X 

a a x x 

X 0-t 

UD 




>- 

3 

a 

a 

O <3 

3 

0 

LJ 

o 

3 

a z <t <x 

3D 



* 


CO 

a 


»—» 

1 - (_> 

a 

— 3T 

a 

z 

CO 

a 0-4 3 3 a 

a 






z 

<T 

»—« 


LJ 

X 

*3. 


x* x cl a 

a o 

a 






t-4 

f— 

z a 


-c <3 

t_> 



O < CO CO 

X -3 

o 




0 

9 

-3 

3 

o o 

« 

O 0- 


a 

0 

X 0-4 0-4 

z o 

X 




o 

»-• 

y 

•< 

x ►- 

aj 

0-4 CO 

X 

a 

m 

z a o o 

a 3 

CO 




o 

o 



8 —I 

o 

CO 

LJ 

c. 

o 

a 




■St 


0 

0 

UJ 

UJ Ul z 

0 

a iu 

0-4 

<x 

0 

> 






o 

o 

X 

X 

x o 

o 

a x 

X 

a 

o 

a 


✓-» 


* 


o 

o 

s- 

H- 

0- X 

o 

> f— 

X 

a 

o 

CO -3 CD O 

o a a 

Q. 


104 









105 




106 




107 




108 




109 




















UJ 

























Cb 

























o 

























X 

























o 

























z 

























-c 

























X 

























X 

























o 

























o 

























o 

























ft- 







teS 







@ 


















<L$ 







CM 











z 







8-9 







s o 











CE 







> 







S3 UJ 





O 






3 







3 







so 





QC 






ft— 







O 







X 3 





4 






Uf 














£3 



ffi 


o 






ffi 







ft— 







13 US 



IsJ 


Gffi 






Ul 







3 

<»-8 

frs 





O ffi 



8 — 


>- 


P» 




o o 







ffi 


» 




CO 

ffi 4 



z 


US 


Q 




<* z a 







ft- 


o 




o 

X 



»-« 


E 






CO < €© 







3 3 


we 




z 

e- «v 



o 




«> o 




CD 







3 O 

3 

V 




0-9 




CL 


X 


UJ S 4 ® _J 




3 • Q 






3 

Z 

o 




CM 

z 

© ffi 





o 


ft- X 




roz 






S 

9-8 Z 

■4 

© 



(V UJ 

© ev 



iC 

UJ 

QC 

ae 

< -J 




*o <a 






X 

ft- O 

Ol 




© 

>» 

© © 



U 

z 

u_ z 

UJ 

SS ffi -a 


ffi £U« 


ffi X 







z 





O 

US 

© 



<s 

9-5 

a: 

»— 

L 2 B— 

C** P- 

X > 


O 






z 

O 3 





04 


to © 



6 - 

_s 

ffi: 3 us 

UJ o 

UJ U J O UJ O UJ 

> UJ ffi 

UJ 3 UJ ffi 

UJ 

ffi o 






8-4 

U U 


© 




so 

UJ 



SO 


UJ ft- 3 

3 <2 

Z 3 ffi 3 O 3 

ffi 3 X 

3 Q 3 <5 

3 

lOOM 







41 


w 




04 

O X 




3C 

e*> 6 - us ffi 

ffi ffi 

O ffi ffi ffi ffi 

-a ffi 3 ffi ffi. z 

ffi 

D ffi X 






CD 

O ffi 


wg 



& 

'tr 

4 o 



US 

UJ 

O ffi »- 

ft- < 

ft- ft- G ft- 

Z ft— O ft— ffi t — 9—8 

ft- 

3 ffi 






CO 

ft— CD 





•«a 

© 

CL 3 



ISS 

z 

*4 <t 

X 

UJ O ffi 

9—8 

uj no 


ffi 3 ffi 






3 



Z 



u 

i 

o 



9-9 


ffi UJ u. 

u_ o 

Z U. S— U_ -4 ffi 

H u >- 

ffi ft- a. 

ffi 

Q O 






ffi 

ffi 3 







>- £E 



3 

4 

>- <£ o Hft 

£*• 9-8 

M H 8 9-8 O *-» 

8 ~* ffi 

9—a CO 8—9 It 9 

9-» O >- X 






o 

U Z 

z 

8-9 


o 

** 

8 J 

CC X 



<3 


*4 x -4 

s 

X ffi CD 

o o 

H-9 ffi 


<S <C X 




3 


o 

O 





to 

Ov 

a *- 



9-9 

ft- 

JUHfi. 

ui ffi O 

< ffi X ffi >- ffi 

< ffi X 

ffi O ffi O ffi 

3 ft- Q 

o 



ft- 


* 8 S 

CD 

3 

CE 


o 

—9 





ft- 

IE. 

ffi ffi X 

O X X 

X X 3 X W9J X 

O X jJ 

X 3 X 6 - 

X 

Q ffi C3 Z 

z 



>- 



W ffi 


UJ 


oc 

_J 


uj ro 

■fe 


M 

<3 

to s— ffi ‘Ol 

4 ->o 

UJ —> 3 -> M: 

3 -> X 

3 ffi 3 CO 

3 

< w z < 




00 


»- 

3 8-8 

X 

> 

iC 


9—« 

ID 

X is 

5E 


Z 

ft- 

9-9 UJ <3 

ffi Ui 

M » K 

63 m 

fts es 


O *-» 3 






3 

a 5 E 



o 

•<3 

X 

—• 

© 

o 


C -8 

m 

Q C3 O 

to = 

Ul ®“3 5C 

3 X 

ICE CO 


i r« ^ 7 

-a 

pe. 


3 


CS 

ffi CD 

3 


4 

2 


O 

to *9. 

<t 














Z 






a 

UJ 

to 

w 

UJ & 

ft— 














a 




S— 

ffi 


3 o 


*-• SJ 

CO 


© 

X 


X X 

z o 

CE 

>- ffi 


x a © cs 






z 



O 

us 

UJ 

9- 


CL © 


z 

© Z 

UJ 

X Z 

O X o z 

9-9 9- 3 

UJ 

ffi X 

X 

Oft-M^ 

CM 



3 


0-8 

ffi 


*— 

1—9 


3 

o® 

z> 

X 

5-9 

3 9-9 

z 

OX —* 

o O ft— ►-* 

X ffi <3 

3 

a a 

o 

O to s —9 

w 8 



z 


ffi 

S— CO 


8-9 

3 ® 

<5 

UJ 

O CO 

<s 

o 

© O 

ft- 

k ft- u in o 

rs »— ft- id o 

ID «S CM X ro ft- 

< ID 

x wu p) 

z 

O ft- vO N 

we 

PV 




o 

f-« ft- 


z 

ffi 

IV 


z 

o z 

at 

UJ 

D UJ 

3 

fs 3 Z w* UJ 

uj 3 uj us 

S X w< 13 o 

w4 O w 4 

JJ CM 3 (M 

3 

<S 3 © CM 

Q 

PS, 


X 


o 

-4 3 


o 

4 


to 

o 

o o 

(3 

CD 

© CD 

o 

SOM 8 CE 

£9 O O 3— CD 


— 3 we 

X w ffi we 

ffi 

CD O Q -h 


© 




*83 

3C O 

CO 

X 

X 

m 

o 

X 

s*~s 

O 




















o 

cv 

_J 

ffi 

X 9- 

CC 



















X 





<5 *83 

a. 


CL 

















UJ 

>• 




CE O 



«o 


<3 






X 




o 




UJ 

c~~ 

CO 




CO o 

UJ 



_J 

_9 _J 

_J —5 









ft- 


3 

3 3 


CO 





o s 

X 

Ol 

43 ft-* 

_J 

M J JH 

*-« _J -J ffi 

9-8 8-9 9-8 

6-8 9-9 

6-8 0-0 


D~« ffi 






3 

3 3 

u 


z 




ffi 

ft— 

X 

ffi X 

<1 

> <C c ffi M 

d U < < X 

a r-a ffi ss! ffi 

ffi isi a. 

is* ffi q. 

NJ 

X X X X 

X 

35 


3 


4 

-4 <? 


CO 

UJ 




ffi >■ 


3 

O 3 

LJ 

X o o o s 

O *3 O O rs 

o 9 -> O 9-3 O *D 

O r ~> 4_» —5 O ~3 O 

3 

3 3 0 0 

o 

Q 


z 


U 

O U 

ffi 


ft- 




ffi 

cr 



















S3 

8 — 




CO o 

o 




X 


X 




X 




s— 


z 


3 

CO 

9-0 




9-8 X 

ffi 


z 


o 


u 




o 




3 


M 



© 

oc 




X US 



Hi 


u 


ft- 




u 




O 


X 


o 

CO 

X 




s~ x 



o 


ft- 


CO 




o 




ffi 


4 











UJ 


UJ 


UJ 










>« 










* 

CD ft 


is 


ft- 




ID 



■& 

■«> 

* 

3 


UJ 








© 

© 

CM 

CM CM © 

®WSQ 

© 32 © 

as 

w3 *9 

CM 

© CM 







w. ptf 

o 








© 

© 

© 

© © © 

© © © © 

© © © 

© 

© © 

© 

© © 






© 

© © 

o 








© 

© 

© 

© s © 

© © © © 

s © s 

© 

© © 

S 

® © 







® © 









© 

© 

tO 

Mvimn s 

Si^Ww .8 

ur> hw>oo© 

^ >o in 

<D CM CM PO 

lOCM -hiS® 






D 

D © 

ft— 








ID 

CD 

■ 8 ® 

^ sC *»- we ID 

"tj «D *D w* ID 

© P** —* E- — FO 

we fV w« 

n w tj tv 

fN. 

D ro w* 

CM 






ss VO 









© 

© 

90 

ts D IO Si ® 

© © ?D —• ® 

w. w# w. CM -8 CM 

W« ® W* 

ro we C3 we 

w« 

we ro S we 

w# 





w4 

SO 50 









SO 

w© 

ID 

<n in in «o (\i 

mnjminD 

« nno fyn fy 

D CM *D 

CM d CM O 

CM 

p) >n k 

w» 

IV 




D 

D D 

CD 








© 

o 

we 

fv» ^.K 

^ sd w* © 

fV —» P*^ w€ fV W. 

IX, W< 

w ftv we rs 

we 

^ © © CM 





w9 

w« WE 









SO 

© 

80 

© d ion f-o 

DDfonro 

m ro n oo fo 

n d m 

jo m ro ro 

ro 

® fD © we 

we 

© 




SO 

fo ro 

ffi 








© 

© © 

FO 

€ s s 

D lO O D ifi 

w» t*s *o © m id 

© CM D 

N Oi ^ N 


cm •«* 

D 

© 




w4 

sj fts 









ss 

ID D 

ID 

m <o <o <c n 

© ® © 

w« we W« CM CM CM 

ro fO ro ro 'M M •M 

ID 

D D D D 

D IV 




Is 

PS 8S 









© 

© © 

© 

© © 3 © © 

© <S ^8 wt —« 

—we WO W» W» 

we we wO 

we we we w? 

wO 

_ _• 

w« 

w® 




_» 

w« w« 

-4 

























i 








© 

© © 

© 

S IS ® S Q 

© © © © © 

© © © © © © 

© S © 

© © © s 

© 

® © ® © 

© 

© 




© 

© © 









GJ 

© © 

© 

© © © © © 

S © ® © Q 

©©©©©© 

© © © 

© © s © 

s 

© © © © 

© 

© 




© 

© © 









© 

© © 

© 

© © © s © 

© © © © © 

© © © G> © © 

© © © 

© © © © 

© 

CS & © © 

© 

© 




© 

© © 

ft— 

'■"* CM 

FO S3 

ID 

6 

7 

3 

9 

© w* CM PO 

ID <© ?s 

GO Oi © w« CM 

0-9 m ® n co 

04 © w» CM fO' ^ 

If) O Pv 

©0> ® -H 

IMP)’«in'OK 

GO 

04 

© 

wj 

CM 

ro 








w* »• 

W4 

w*9 w» •© 


w* we CM CM CM 

CVJCMCMCMCMfMCMrOPOftDPOftD 

n D ID P) I'D M ^ 


■<5 ^ ■g ^ 



5T 

D 

D 

ID 

(D D 

m 

























Page 24 




Dr 

. Dobb's 

Journal 

of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 





April, 1976 


110 




ui 

u 


2 

Ui 

2 : 


< 


(O 


Lli 

o 

a: 

3 

O 

(O 





Ui 





< 

-8 

a 





£T 


Ui 




o 

19 

O 

3 S— 




z • 

O 

z 

Z 3 




AC < UJ 

cc 

< ft- 

*-« a. 



ft- 

o o 

fL 

O 

e~ >- 



o 

5— CO O 


X Z — 

Z 3 



z — 

<>- X 

Q 


o o 


to 

«« 

_J ft-* 

Ui 

-•« Ui 

o 


CO 

CO Ui 

DUO 

M 

w m a 

z 


UJ 

W CL 

r mz 

_s 

CD <S 

O O X 


CL 

<£ 

3 O <S 

£L 

UJ «o 

9- «? 


Q 

to 

O X 

0L 

cr co cl 

UJ CL 


O 

CO £L 

u_ir 

3 

Ui o 

OC z o 


ota 

Ui O 

< < o 

» 

ZQCH 

O *-4 O 



QC ft- 

6~ U 

9 

M Q M 

-J CL 


19 

O *-o 

o o 

OC 

o z 

co a. 


Z 

Q Z 

ft- o o 

UJ 

w < o 

UJ X 


M 

<5 O 

ft— 

CO 

CO X 

CO UJ CL 


z 

X 

Ui tO 

3 

UJ UJ 

CO Z UJ 


z 

UJ 

S- 2 


CL £L 2 

uJ CO 

UJ 

fr-* 

cr z 

>- >- or 

«s 

O D w 

OC < 3 

z 

19 

3 *-• 

35 < D 


Cl CO I 

X 

M 

Ui 

CO X 

_S ft- 

o 

<1 J- 

ft- o 

ft— 

CD 

ft— 


Jj CL UJ 
> to a 

o *-« 


H ^ 5 
UJ <L 


X 

o 


CM 8 
8 8 
8 es 


Ui 

ZD 

or 




—1 CL CO 


Z ►-* 



•4 UI ft- 


UJ 3 O 



:» b— s~8 


ft- O 



ZUtD 


5-0 6— 



8-8 <1 


CD CO 



CL tf> 


ft- -3 



-v <S 


-« »-* _l 

UJ 


UJ X ft- 

UJ P* Ui 

ft- O 

3 

P* t- 

3 t_> tO 

3 ft- 3 

< M 6- 

CL 

ft- O 

£L O 

ft- OC <L 

O O O 


oc o: t- 

UJ -«i 

to f- o 


3 

o 

Gt 


8 8 QL CL 

8 8 p- x p* x 

8 T9 Q3K3 


w Z K UJ I M K IS »- CO CO 

19 X ►— 19 *-<> 6- *- 

M U. U. I— U- H 1 l O U. M w 

Qm m UI On W CO CD 

= _J O UJ S— Ui *~ 

ft- fL CL o oo.za»-uo>- li-O 

COXP-XXO [£ I O 1 < UI «s UJ 

aorooua j «— 3 

•-9 Ui Ui X ui o o 


UJ *—• 
X 

UJ CL 

ac x 

o 3 


X 

o 

O 

53 X 




3 50 53 


C3 

X 




O UJ 

V 


& 

u_ 


A 


r 

tv* 


8— 


50 


CL 


£K 




s 

Q 




CL 






CL 

































ft- 






uj 

































Z 

Z 




X 

Q 

z 





CM 

S3 


65 

65 


SB 







s 


65 












o 

*~e X 




UJ 

< 

w 

X 




Si 

S3 


65 

65 





X 




*o 


to 









ro 


rO 

o 

X ft- 



z 

ft- z 

O 

X 

ft— 



z 

S3 

S3 X 


®-e 

-4 


S3 


Q 

o 




S3 


63 









“9 


ft— 


o o 



o 8-8 ft— 

—1 

Q 

o 



o 

63 

S3 O 

S3 

ft- 

8 ft~ 


ft- 

-a 

ft— 

ft- 

sv 



ft- 


ft- 









ft— 


3 

UJ 

Q CD 



X 

<3 3 


O 

03 



X 

S) 

S3 2 

© 

o 

FV U 


O 

© 

O 

3 

s 



u 


13 









O 


O 

> 

< X 



> 

X o 

—B 

<C 

X 



> 

S3 

63 m 

S3 

o 

8 o 


o 

8 

o 

O 

S3 



o 


O 









o 



B—• 







































53 






s— 































X 








O 










DO 







CO 














**a 


O 


<t 

X 



o 



*< 

X 


CD 

O 



o o o 






o o 


O 







a o 

CD 




ft— 

_J 




_J _J _l 


_J 






3 








3 
















> CL 


3 *<5 

QC 

CL 

u 

_» _J X 

o 


<t 

X 

CL 

o 

M 

w 3 

M 


»-*o> 

oc or 

PJ 

*-« 

o 

3 

»-4 

> 

ac 


CL 


O 

o o o 

o 

O 


:> 

QC 


O 

X 

UJ 

<* O 

u 

X 

z 

< <o 

X 

<5 

Q 

o 

X 

2 

X 

X <? 

Q_ 

o 

a. 2 o o o 

2 

Ol 

2 

<5 

2 

o 

o 

X 

O X 

3 

3 3 

3 

3 

3 

CL 

o o 

CL 

X 

*5 

z 

U _IQU*DOUa. 

< 

U 

3 0 0 

3 

3 

3 0 0 

—J 

o -> X 

C Q 3 

o 

—> 

O 

<1 

X 

o ^ 

O -9 

DC 

CL OC 

OC 

CL 

CL 

O 

X 

O 

—> 


=5 

O 

CL 


Q. 

X 


o 

DO 

>- 


s 

8 


* * ■* * 


* * * O -*! O 


ts 

CM 

8 

ft— 

o 

* a 


53 

rO 

8 

ft— 

O 

o 


8 

G? 

I— 

O 

o 


8 

CO 

«s 

►— 

o 

o 


63 

© 

S3 


Ui 

o 

o 

o 


o 

UJ 


CD 

o 


ac 

o 

a 

■** 

s 

CD 

CL 


50 




^ CM 



CM — CM 


CM 



CM 

CM 

S3 (\J 


S3 


s> 


S3 


S3 

CM 



S3 


S5 









s 


S3 

Si o 



(9 03 ® 

S3 

S5 



S3 

S> 

S3 

S3 


65 


S3 


<S 


S3 

IS 



6B 


S3 









s 


SJ 

65 ® 



© S3 S3 

«S 

63 



S3 

S3 

65 

S3 


S3 


S3 


S 


65 

s 



S 


S3 









s 


C3 

lO vQ 



ro in © 

un 

v© 



90 

S3 

63 

•o 

S3 

rv 

ts rv 


_ 


,r* 

CM 

rv 


to 


CM 









—Q 


63 

V ftv 



fs, ^ 

•sy 

K 



tv 

63 

59 


\© 





s 

v£> 

IO 

»o 

65 


CM 











50 



—» fO 



<von 

-• 

r> 



CM 

Si 

S3 

fO 

S3 

ro 

S3 

»o 


ro 

S3 

CM 

rO 

63 


to 


CO 









cm 

<o 

90 

50 CM tO 


CM tO tO 

to 

CM 

iO 


CM 

«-» 

__ 

Li 

>© 

CM 

© 

CM 

63 tO 

to CM 

O 

CM 

50 


63 40 

CM 

©.CM 

rs. 

NNN 

fv 

rv 

CM *V 

to 

CM 

N 

ts 

—• rs. 

rv 

S 

CM —» — tO 

—« 

K 

rv 

rv 

CM 

S3 

CM 

—• 

rv 

ro 

ftv 

CM 


— 63 

rv 

CM 


Mr 

„-5 •-* 

rv 

«-8 

rv 

CS> 

S3 O 

(9 

S3 

Si 

vC- 

CM 

s 

MD 

—• 

PO 

fO S3 

63 

ru 

IO ro *o ro 

ro 

Si 

s; 

CM IO 

s> 

S3 

ro to 

ro 

ro 

to 

^ S3 

S3 ro 

to 

TO 

ro 

to 

s 

ro 

S3 

to 

S3 

6B S3 

8 

S3 

S 

CM 

— 

s 

ro 


CM 

to 

i© 

o-« 


m 

vO 


-5? 

rv 

es 

fO 

vQ 

N 

S3 

*o 

to 



© 

—• 

to 

© 

rv 

8 



© 


vy 

© 

ftv 

8 

IO 


rv 

8 


CM 

to 

vy 

© 

© 

rv 

8 

S3 

65 

FB 

—« 

w 


—• 

CM 

CM 

CM 

ro 

ro 

ro 

ro 

VT 


vS 

© 

© 

© 

*£3 

© 

© 

© 

rv 

rv 

rv 

rv 

8 

8 

8 

8 




—• 

CM 

CM 

CM 

CM 

CV 

CM 

CM 

CM 

"O 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

rO 

■o 

ro 

*o 

ro 

ro 

to 

rO 

ro 

IO 

SO 

ro 

ro 

ro 

to 

ro 

rO 

S3 

S 

S 

S 

s 

S 

S 

® 

63 

® 

s 

S 

S3 

s 

S 

S 

S3 

S 

8 

8 

S3 

8 

8 

8 

8 

8 

8 

8 

8 

8 

S 

8 

8 

8 

8 

8 

8 

8 

8 

8 

8 

8 

8 

8 

8 

S 

63 

63 

S 

s 

S 

S3 

S 

Si 

s 

s 

S3 

S 

s 

S 

s 

S3 

S3 

S3 

S3 

S> 

8 

8 

8 

8 

8 

8 

8 

8 

8 

8 

8 

8 

8 

8 

8 

S 

8 

8 

8 

8 

8 

8 

8 

8 

65 

59 

S3 

s 

s 

S 

S3 

S3 

S3 

s 

s 


S 

s 

S3 

s 

<S 

59 

cs 

52 

65 

8 

8 

8 

8 

8 

8 

8 

8 

8 

8 

8 

8 

8 

8 

8 

8 

8 

8 

8 

8 

8 

8 

8 

8 


© © 

rv 

© 

cn 

8 

CM ro n 

© 

© rv © 

o* 

8 

-• CM 

rO 


© 

© 

rv 

CO 

o» 

8 

— CM 

tO 

■^ © © tv 

CO ©» 

8 

CM 

"O M 

to © 

rv © 

Or 

8 w CM -O 

© 

© 

rv 

co 

© © 

© 

© 

© 

© 

© © © © 

© 

© © © 

© 

rv 

rv rv 

rv 

rv 

rv 

rv 

rv 

rv 

rv 

as 

CO SB 

CO 

CO CD CD © 

co so 

o» 

O <D> 

o» O 

o o» 

O Or 

Or 

8 8 8 8 8 

8 

8 

8 

8 


April, 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


Page 25 


111 




112 







•» 

a 

















«3 

















UJ 

















x 



























Q 

X 

X 





z 








it 


Z 

UJ 

UJ 







u o 






u 


«s 

p- 

t- 





>■ 


<s 






«s 



o 

o 





x ©5 

X 

p- p- 






p— 


X 

<s 

< 





o »-« 

<C 

co m> 






CO 



X 

X 





X 

X 






CO 



. a ®> 

c 

<«s 





UJ o 

i3 

UJ UJ Q P- 



to 

9— 

CO 

3 


0 3 UJ 

X 

X 





X UJ 

o 

I X UJ o 

P- 


fr- UJ 

UJ 

X 


UJ O 

o 

o 





1- 

X 

p-l- K Z 

CO 


X M 

>- 

X 

P— 


X » o 







u. »- 

CL 

c- 

o 


OT m UJ 43 


o 



O X 

o 

o 





O D 


Z Z 3 OX 


P- »-* H M Q U| O 

o 

z 


Z UJ 

e-4 

*-« 





Ql 

x 

O O CL O 

s— 


MU Z O UJ 

-«€ 

o 


*-* X o 

3 

3 





UJ p- 

UJ 

at p~ 

Ul 


no to 3 

P- oo 




z 

<L 

-a 





h- 3 

CO 

UUJ1U3Z &» P- p- 

UJ 


-4 OrthZ z 

3 

o 


P- O -4 


> 





>■ c 

3 

P- O 3 »— *-» <t 

3 


o u 

3< < 

« 



CO »- x 

Z 

z 





CD 


Q O Z O *-« 13 x 



Ul O 1— 3 X X 

»— 

o 


X X 

M 

*—» 





UJ 

< 

ZZ3UJO 13 *-« P- 



OP-MP-3P— O CD UJ 

o 

z 


»-» X o 

C*« 






—• CD 


< <J O ID < »-t o 

J— 


UJ O •-• <f 

3 3 

o 

<3 


X 3 O 

•4 K 






•*—* 


O O UJ UJ CO 

«o 


IUJ-mO 

O * -»3 




u 

UJ 

UJ 





o 

O 

CDO OZ 3 3 3 1— 

X • 


2 MQMI- 

CO w < 

p— 

CD 


X CO O t*« 

3 Z 

3 





to P- 

x 

p- i— »-* ja •« ii: m 

n »— 


Z O Q O 

200U 

»-e 

CM 


O Z p- s> 

X -« 

X 





f— 

U- 

• <S P— P— P— 30 

U P-* to 


CO 3 H UJ Z 

UJ 3 UJ 

3 

• SI 


o < 

P- X 

P- 





*-5 UJ 


CO CO C3 UJ UJ f- O 

13 P- 


P- 0X9— 

Ul X X O 

X 

CO CQ 


<4 X CO Z 

p— 






O P- 

O 

U O M K t— O U. O U. 3 O ►-« ►-* 


*-< P- P- z u. 

CD P- 

to 

13 l» 


»- z < 

X 

Ul 





p-« >- 

UJ 

UJ ill Q > > O M w _| 

P- o P- fD 

P- 

CD 3 P- UJ m 

UJ UJ 


3 ID 


X XX 

►-* x 

M 

Z 




O CQ 

3 

X X 20 CD O <* 

X 

X 

O X ♦— X 

UJ X X Z 

P— 

X *. 


O Z 3 p- 

UJ 







3 

3 O Q. Z Q. 

>- 3 ♦— <3 ro P— O 

m a.1 3 UJ X 

> O Off 

►4 

4-4 


3 3 P- 

X 9- 

X 

UI 




_J 

<J 

XX<UJO xxoxo 

3 <8 U_ U 

•—4 

O > X X X 

< H *- Q 

O 

I S> 


X US CO 

X < 

X 





<c -» 

3 

«!/>«->< m *5 u n ac 

OL P— *-• X •-* X 

X Z 1— O ■“» T CO CO S— 

9-« O 

GO CQ 


p- p- X CO 

3 UJ -> 

X 




P- UJ 


3 3 CJ» <*. Q X UJ UJ 

X OX X 


UJ O 3 UJ 

Ul UJ UJ 

Q X 

3 M 


UJ UJ 

X 






O o 

UJ 

CL CL O to _1 p— CO W 

<8 O CO CO 


ru o o cs 

XXX 

R < 

X o 


O ©■ 3 

«3 


UJ 




O M 

CD 






tO O 










> 







£D 










fO U? 

>- 






< >- 

CM 


P— 

CM 

CM 





Q 

^3T 

O CD 



X <r 


UJ 

S3 


►HI 

X 

X 





P- 

X 

ro ro 



o ro 


z ye 

SS 


X 3 

3 

3 





D »- 


CM $- *- S3 



NOH »- 



4-4 


-s O S3 O S3 

3 Si 

3 

t- 




X 3 

UJ 

63 3 3 Q 



S >03 3 


<t £ 

S3 


S Z Si Ci vO 

O 

G 





»- CX 

z 

® o o m 



©SO o 


p- UJ 

S) 


® M 94 < © 

•«* S3 

-< 

«o 




3 

!-* 






m 9 - 










O 3 

V— 






O CO 










O 

3 

CO o <a o £D 





>- 

CD 

CD 





CD O 

X 


o 

O 

fflO<UU o 



CD 

O CD 

O CO 

CD 


X 



UJ 




H X 

X 

X X 



3 


P- 

X 

X 

3 




X QL 

CL 

p- 

UJ 

GO 

y) w m > > > a: at ►-# 

o o o o o 

U M M Jd 

Q. X P- 

UJ 

CO •-* 

CO 

M _J M »-4 

P-4 O 

u 

O O 

o 

aJ 

Ul *- 

3 

33>OOOOXOX Z 

X X X X 

X 

X Z X •«* O X 

0 0 3 

3 X 

3 X 

3 

3- < CL N (I 

U X 

Z 


x a. 

Q_ 

X 

z to 

CO 

OL XXX X X O *0 O -> ^ 

X X X X 

X 

X ■< O O O -i 

XXX 

z t- 

a _»x 

X 0 0 3 0 

ooo 

X 




*-* >- 







M 










P- CO 

CO 






p- X 

z 

9-4 

CM 



13 




3 

►-« 

< 



o 


3 O 

*-a 

X 

X 







o o 

X 

po n 

fO 


ro 


O X 

X 

3 

3 



o 




x »- 

9— 

P- B— 

p- 


p- 


X X 

O 

3 

3 









3 3 

3 


3 



o 

O 

£3 



co 






O O 

* 9 o 


o 

* 

* * * * 

<£ 

■«# 

■e -=a 



UJ 









CM -• 



CM 


CM +* 

9< 


o 






S3 cs) 



S 55 



€S 


6) S> 

SI 

CQ 

o 






s cq 



CQ Q 



IS 


S3 IQ 

S3 

S3 

u 























CM *v Xt 63 



K Q W tf> 



—• 


ISS m CQ ro SJ 

*vy cq 

O’ 

p~ 






K CM CM CSS 



CO vO VO «a 



S3 


S) — Q © © 

in tv m 

o 






S> — —• fO 



SI CQ FO —• 



SI 


CQ m 4-4 IO (Q 

94 S3 

94 

UJ 

















~> 

—4 «—e 


m 4 



DDOKCMGinCUlON'O 

N N K N 

K 

rs. vo ~o in in c\i 

9-4 94 94 


m —• 

m 

M3 in VO CM VO 

CM »o 

CM 

CD 

S CM 


*3—8 






—• m vo *4 s 

CM «5 —• 


s» s> 

S3 

M 44 N 94 K 

ro rv 

CM 

o 

fO SO P5 PO 




ssss 

S) 

tsronn 6in 

K) ro ro 


ro ® o 

S3 in ro ro ro 

ro ro 

ro 

or. 

"« D 

•O Pv 



® ^(\l V D ISPO'trPv 

—• CM ro ^ 

in 

vO *-rPO D N 

CM ro ^ 


in o 

„ 

CM M N. 

>0 94 

ro 

o 

N K 

K 

K 




CMCMCMCMCMCMCMfOrOrOlO 

m ^ 



VO 

m m m vo 

vO rv 

N 


tSs S3 

(9 




94 t—» 94 <-• 9-» 94 9-4 94 9-4 







9-4 




<r 

















» 

9-4 9* 

94 

«-» 



94 »■« 94 94 9-4 94 94 

o-e «-* «—» v4 


<H v* 9-4 9-4 

9-4 9-e 9-4 


9-4 9-4 

94 

9-4 94 4-4 9-4 94 

94 94 

94 

o 

CS ' 6 ) ® 

SSI 



SQSSCSGQ5)QQS 

6 ) (9 IS ® 

© 

s e ©ra ® ra 

8 © G 


CQ «S 

s» 

S3 © © s © 

<S S3 

S3 

CL 

s cs 

G> 

Q 



CS)OSISOSG>S(98S 

SSSS 


© © © 8 © © 

SGG 


S) 61 

Cd 

CS © G G G 

<S S3 

CQ 

»- 

ro rr 

in 

vO K 

©ora 

-«(MK)'JD'ON© 0 »Q^WfO 


CQ 

-• w © u m *o k ® » s 

M(VO V 

m <o 

K 

©Oi ©44(VO 

n in 

t© 


VO vO 

o 

<0 vO 

© ©K 

tv rv 

NKKNKKNCOfflDOCOfflOOaO©aC(© 

o» 

00»»>OiCM>00»0 S 

G 8 GG 

SI 6 ) 

SI 

SI IQ 4-4 9-4 9-4 94 

9-4 94 

9-4 

<o 


94 

94 

94 94 <P« 




«4 

» 4 »-• 9-4 9-4 9-4 9 4 

94^94C\j(M(M(M(V 

CM CM CM 

CM CM CM CM CM CM 

CM CM CM 

April, 

1976 



Dr 

Dobb's Journal of Computer 

Calisthenics 

& 

Orthodontia, 

Box 310 

Menlo 

Park 

CA 94025 


Page 27 


113 





114 























US 


























o 


















S 








M 


















Ui 








> 


















>■ 








UJ 


















M 








o 









3 








<o 

CO 

















o 








UJ P- 

3 








ft- 









M 








X 2 

3 








3 









Of 8- 








'■HU 

O 








X 









UJ ® -< 








X P- 

2 





UJ 



ft- 









w wuia 








<3 0 2 

H© 

3 




13 



3 









3oi y 








X 2 O 


U 




< 



O 

Ui 








OHO. 








0 <0 

•» 

)C >CM 




Ol 




8— 








w x o 








O 

CO 

o o >• 







2 

>- 

»- 





3 


X >- 






3 


aw>- 

3 

<a <8 3 




2 



O 

CD 3 X 





19 


1-OU.Q 






Ul S 


XIX 

CO 

ft- ft- o 




»-s 



a e 

B 

o 







2 M 3 


Q 




§ X 

3 

o o 

CO 

CO CO 




X 



3 2 X 

3 OX 





CO 


CO < £t M 


X 




o 

UJ 

X X 

3 

ft- 




ft— 



2 0 3 

2 

3 





CO 


3 r . y li. 


C UJ 




2 

3 

y zy 

X 

3 3 3 




M 


to 

»-*»-• o 

O X 

X 





UJ UJ 


O X > *-« 


O O O 




2 »-» 

2 

WH£ 

o 

XXX 




jC 



3 ft- 1_» 

w 1—* 






X <3 


-JO o 


OQ 2 0 




*-8 

e-a 

3 

o 

ft- 9- ft- 

« 






ft-e ■«£ 







< 


juoy 


>• <s X 




Ui 

ft— 

CO S*» 

<S 

3 

o 



CO 


>- 

x «o 

SO 

3 





tr to 0 l 


<S ft— CL 


UJ 




UJ 13 

2 

< WO 


2 2 0 

2 



40 


<2 

3 0 0 

ft- 

8 





O CO Ui CO 


O 40 


^ a: a 




13 2 

O 

UJ 

o 

o o 




UJ 


3 

X X ft- 

3 X 





Of Lii O 


tu »- cr 


Ui 2 




Z < _JU 

£ a> 

2 

2 

3 



X 


-r-* X 

2 

15 S 


ym 




X X O O 


2 LaJ 3 


X ft- «4 




<4 x a 


O Q ■C 

H 

0 3 0 

13 



o 


-» CO 

^ X *-4 

»-* X 

2 

3 




uj r z 


M 2 CO I 


S3 OX 




X X 

o 

X O 3 

o 


<f 

w 


o 


w *-« 

3 3 

o 

<4 

ft- 




cr ■< 


s- CC 3 s- 


ffi < X 




40 

8— 

U. <t CL 

2 

0 0 3 

X 



<4 


o 

<4 ft- 3 

X 

X 

3 




5l OQ 


3 3 


Ul 2 3 X O 




CO CO A 


CO 

3 

2 2 2 


<3 




z 

ft U ft 

3 ft- 

8— 

3 




oaz -® 


O *— 3 3 


XX <c o 




CO 3 

X 

o ^ 


<& -*£ *-» 

>- 

X 


>- 


o o 

3 <4 >- 

<S h-« 


X 




a: < 0 


qcuxq: 


a 3 h &- x 




uj a i— 

o 

UJ X Q 

3 

3 

X 

X 


X 


3 ft- 

o ac cd ft- x 

CO 

X 




CO UJ X CO 


at »- o 


UJ ft- O O O 




X Q O 


3 3 

X 

CQ O 

o 

o 


o 


o 

< 

O 

CO 

o 




to XX 


40 X 


B~ 3 U_ 2 8— 




Q O 2 

CO 

3 5 

ft- 

X 

X 

1) 


X 


o cr 

2 X >- O 3 

3 O 




3 2 0 


M O 1 UJ 


O X *-« UJ 




D -a 

X 

<4 0® 


• ® 3 

3 



3 


3 

mo a 

B 

3 





a u si. 


X 8- O S3 


<4 Ul X V 




<* UJ 

UJ 

0 3 3 

o 

CO CO 2 

X 

<4 


X 


-=* ft- 

w O © G 


to 




O OQ. CL 


ft- 3 


a tit z mh u 




X 8 

6— 

8 

&— 

13 13 






2 

3 X 


9— 

t-t 




o > a «o co 


«a 3 ^ 


<* 43 X «S 




2 0 0 

2 

UJ X 


3 3 «fi 

»- 

>- 


>■ 


»- 3 

CO 2 3 >- 3 

O 





< «s h X 


<12 


X < 3 X = 00 




O *-* 

3 

to 13 

13 

X X 

<1 

<4 


<* 


<t O 

3 O X 

<S X 

2 

X 




3 &- o o 


to tr m 


O « 8- O O 




3 X 5Z 


2 2 

2 

•— 

3 

3 


3 


3 O 

9— 

3 <J 


X 




Q CL 3C 15 Z 2 


CO o o 


X UJ OXO 




O X 

>- »-« e-8 

*-• 

XXX 

X 

X 


X 


X 

>- X G 

X X 

CO 

3 




< W U Z < < 


3 ft- O 


i- a k _i u 0 




)- 9- UJ Ul 

«S V- 

2 

to CO -c 

CO 

CO 


CO 


CO ft- 

3 M4 «S 

CO X 

M 

G 




Ow< »D 


X 3 3 


UJ <1 UJ 




3 3 X 

CO 

X X CO 

2 

3 3ft- 

&-B 

8-* 


M 


•-fl Ixi 

Ml O 

M O 






JOCD JJ A 

X 

o 3 co a 


13 0 ©. = 




O 13 O 

3 

<« m 

S—8 

X X CO 

o 

o 


o 


O CO 

CO 3 O O 








O Z M > 








UI i— Ul 

13 

















<S fr-j P- 








2- u> cc 

3 















CM X S> £3 IS 


ft- to 





2 

2 X 


« o 

m 

X 














C3 &— 2 -^y mt ^ 


y z wco 


X 2 



M 

»-« X 


ft- 3 O 


3 


X 




X 

X 


ft- 

© 



ft- 

CO CO M Q s Q 


X O X <8. 


X 8— O k 



X 

a oh 

3 X <S 

3 

2 

PO 

u 


© 


o 

CO 

© 

»—4 

© 



Ir-t 

X t- O « (O 

5? 

ft- O ft- X 


O if) (3 *-« ft- 19 



Q 

0 0 8-^ 

O ft- 

X 

ft- 

ft— t? 

ft— 


B— 

CM ft- © 

ft- 

ft— 

X 

© 



X 

O D UJ S N 

—• 



2 —» G < 3 dJ 



O 

o o 

<s 

X 

ft— 

3 

3 in 

3 


3 Pv. 

3 CM 

3 

3 

3 

© 



3 


••* 

iSDlLii.! 


X O QD 



<a 

<i 


O X 


O 

o © o 


O 

© 

O © 

O 

O 

X 

X 



X 



2 ft- O X 








O <4 3 

X 

















e—a 








2 O X 

o 

















actu j 



X 





»-«_l0 

X 

GQ O O 



UJ 




Q 

X 



3 



X 


w o w co 



X 





X HI 

u_ 

-a 

<4 


*«s 


*<4 

CD 


<t o 



<4 

3 


3 


ft- O UJ 


3 3 

3 


3 13 3 3 

3 

O ®- X 


X X 3 

3 

3 


3 


3 

3 X 

3 








2 a a w 


3 ►-» WN Jd 

o 


3X33 

3 

3 CO ^ 

CO 

CO CO 3 > 

3 ►-» 

3 

> 

3 

&—* 

3 H 

3 <X 

3 > X 


ftj 

;» 

X 


X -8 X S J 2 

cc 

UJ Ui X to » 


<f X Psl X 2 <t X 



<4 

u < < 

<5 

3 3 

o 

3 3 <4 O 

<« :> 

<X 

o <* 

> 

<C > 

<3 O 

<4 O X 

o 

2 

O 

X 

o 

3 O •"> O O O 

o 

ft- 3 CO to 


0 0X0303 

> 


O 

X o o 

O 

O X 13 

3 

X X O X 

O X 

o 

X 

O 

X 

O X 

0 3 0X0 

-» 3 

X 

o 

© 



azayz 



X 





U_ 2 

3 















cm 


3 3 or *-« 



o 


> 



X «-a 

O 















X (3 


ft- UJ o o 



X 


X 



3 3 0 

o 

X © 







© 







A CO 


U- O X O UJ 


1— 

UJ 


o 



2 CO 2 

X 

X 







CM 







3 x 


< HI- < ffl 


M 

x 


X 



»- 3 3 

X 

3 © 







© 







o o 




<. 



UJ 





Q © 







© 







<s <s 

-* 

* * * + * 

* 

X * 

■fir 

■» 

X 





X X 







* X 







—• CM O 




CM ^CWS 



*0"9 





CM 


CM 




CM 

CM 


CM 

CM 



CM 

© © © 




S> CSS IS © 



© 

s © 

© 



© 

© 

© 


© 


© 

© 

© 

© 

© 



© 

® S Q 




IS © © (53 



51 

© © 

© 



© 

© 

© 


© 


© 

© 

© 

© 

© 



© 

tO «-• s s ® ® 




Stf) 50 K. if) CM © 



if) 

if) ro in 



wD 

© 'tj 

CM 


K 

CM 

CM © 

© 

© 

© 

© 



© 

© © to < 3 - ^ 




—. —• G "9 »C if) 



mt 

M —> 

>1 




© SO VO 


© P*» 

tO CM 

fO 

© 

fv 

tO 




ro O rfl Q s Q 




© © ^ PO fO G 



-• 

jo m 



PO 

— © 

© 



© 

© © 

© 


© 

© 



© 

—• «n © *o «o 

© 



If) O ® iO W If) 



if) 

ro m m 

in 



in m in cm 

in «f) 

© 

m 

tO 

in »o 

in cm 

If) M CM 

cv 

CM 

in 

© 

CM 

^ —• <3 £9 ~+ ft* 

<H> 



« r ~» IV -s-o P** © o-« £53 



v4 

in -9 —* 

v4 



© CM —» ftv 

■— K 


rv 

<r« 

N. 

—=> © 

—> © 

— ftv 

© 

© 

ft* 

ft 

© 

S fO lO Q Q 

■w® 



monr)coGro 



© 

no no 



ro ftO £*3 

© © 

m 


© 

© 

© © 

© © 

© CM 

© 

© 

*■"* 

CM 

© 

if) ® Oil) ® ftf 




UD © CM © IT) © © 



t© 

cm in 

© 



ro in © 

m-4 -*3 

v£> 

—» CM 

in 

JK CM 


© © X? 

in 

© 

© 

M 

m 

C\i O tO ro ^ -a 

*=® 



’t? if) if) ID if) to to 



to 

N K K 

© 



© © © —* 

—* •-» 


CM CM 

CM 

CM © 

© © 

<3 ^ 

Xt 

in 

© 

in 

to 

o o o ro o to o 



no © © © © © © 



© 

K) 53 P) 

© 



© © © © 

K © 

© 

© 

© 

© 

S © 

© © 

S © © 

© 

© 

© 

© 

© 

w-0 v-4 v-« 3 «-» «-8 




^ 




^ ^ 

CM 



CM CM CM CM 

CM CM CM 

CM CM CM 

CM CM 

CM CM CM CM CM 

CM 

CM 

CM 

CM 

CM 

S Gt O Q IS <S> 

£55 



CS> Ki © © © © © 



© 

© © © 

© 



© © © © 

© © 

© 

© 

© 

© 

S © 

© © 

© © © 

© 

© 

© 

© 

© 

(9 G) G G) S (9 

CSS 



® G © © G ® ® 



K? 

© © © 

© 



© © © © 

© © 

© 

© 

© 

© 

© © 

© © 

© © © 

© 

© 

© 

© 

© 

in vQ K CO o 

© —• 

c\m in »o 

ftv 

ooss^ww^m'O 

ft-* 

QD 

O* © —• 

CM fO M if) >0 

K CZ> 

O © —• CM 

© xt 

m 

t© © 

GO 

o © 

-• CM © 

x? m md 

ft* 

co 

a* 

© 

„ 

K K K K N Ps 

(O to 

CO OD to 00 CO 

to 

tOfJOOtOKJiOtOi 

cn 

t> O* 

C?| © © 

©©©©©©© 


—« — • 


«-e 



•-* CM CM CM CM 

CM CM CM 

CM 

CM CM © 

© 

CMCMCMCMCMCMCVCMCMCMCMCMCM 

CMCMCMCMCMCMCMCMCMCM 

CM CM 

(M ro ro ro n 

ro fO o 

ro in 

non p) 

© m 

© 

© © 

© 

©©©©©©©© 

© 

© 

© © 

© 

April, 1976 


Dr. Dobb 

's Journal of Computer Calisthenics 

& Orthodontia, Box 

310 

Menlo 

Park CA 94025 




Page 29 


115 




tu 

Z 


ui 


o 

CL 

so 

eo 

UJ 

re 

o 

o 


so 

o 

re 

re 

dc 

u 

•*« 

CO 

CO » 

Xtf) JO 
ocu ■ ? 


<L Z 

> M 


0L 
CO i 
UJ 

L3 US 

z re re 
< uio 
re p- x 
z 

re 3 s 

o o 

JU^ 

o 

I— I— <t 
Z 2 ffl 
UI LsJ 

x x a. 
uHUO 
re re o 
sj SJ _J 
z uj 
+-* o 


re 

*«« 

h 

co 

uj u 
o 

HOQ 

z z 

5£ < < 
O 

< Q £C 

CO 

Ui UJ 

re re re 

o o o 

OhH 

j co oo 

UJ UJ 

re re 




ui 

X 


8 O 
CM 

© © 
© S3 


UJ 


O CO 


O 0Q 


x aNaia h 
° ISJZOZXOOUI 
^ m o ^cl a. re 
re 


-> © 

ro 

O gj 

© 

CO x 


X 

UJ 

X 


UJ 

1 



re 

a i m 
















4 



1 

X 



re 

£3 JC 
















X 



o 





o *re 
















o 




® 



o 

<wo 

*c 















T* 



* 

CO 



UJ 

(9 X 

o 















• SO 



CO 

o 



-J 

•TH UJ 

•«« 















CO CD 



o 

UI 



-* re re o 

fr¬ 






O 









CD UJ 



UJ 

re 


UJ 

Ht 

UJ 2 

eer 






UJ 









ui re 


UJ 

re 


-H 

3 

u 

5 Z < 







X 









re 


3 


2 

■*S 

z 


O M 

UI 






50 









z 


Z 

z 

M 

CO UJ 

M 

UJ 

3 z 

X 






ft-« 



CO 






Z M 


M 

•HI 


►-« CSL 

6- 

@3 

W 40 o 

ft- 






z 



m 






M 


ft- 


UJ 

<s 

z 


CO 8-8 







M 



UJ 






UJ 


z 

UJ 

CD 

CO 

o 

>- CD UJ ft— 

z 






u. 



re 




3 


UJ CD 


o 

o 

Z 

to re 

o re 

-* 

z re 

O -J 









O 3 






CD Z 


u 

z 

« 

JUi o 

UJ 

X 

MOO 

UJ 






>- UJ 



Q UJ 




O 


Z 4 

3 


<< 

re 

s re »- 

O 8- 


ft- o o 

—ft Z 



3 



a re 



<J Z 



3 

z 


4 re 

8 

o 

re 


IOM 

t— u 

uj re «* _i 

z 



UJ 



o < 



z 


»- 

UJ 

4 


o: 

X 

9- 


co 

o z 


z 


o < 



z 



X 



>- ■< 


o 

z 


UJ 

co 



co 

CO 

A <3 O 

re re 

►4 

ft-«i- 

Z X 



z 



UJ UJ 



re x 

<** 

z 

z 

I 

re 

co co 

A 

re 

so 

UJ 

X 

o <s 

ft— 

co re co 

< OUJ 


<8 



X X 



o o 

UJ 


■4 


4 

CO UJ 


CJ 

UJ 

re 

ft- X 

X 

3 

UJ Ui 




I 


US 




X 

3 

re 

X 

• 

ft- 

u; re 

ft- 


re 

o 

o o z 

CO u 

O 

UJ X X 

x co 

co 

ft— U 


3 

o re 



UJ CO 

CD 

M 

u 

CO 


re o 

O 

CO 

o 

O Z_l *H 

UJ 

re 

xoo 

3 

<3 

o 



re 

ft- w 



X 3 

-4 



o 

re 

Q O 

z 

UJ 

o 

< 

X 

CO UJ 


ft-MM 

• ft- 


z 

«s 

(*• 

i— 




ft- 

3 

m: 

4 

UJ 

UJ 

O 4 


co 

4 


UJ UJ ft- 

CO X 

»- 

X X 

co < 

»-» 


ft- 

re 


UJ UJ 



ft- -4 

ft-4 

o 

ft- 

re 

re 

4 

UJ 

CO 


X 

8 re *-• 

UJ ft- 

3 

Q '-ft 

CD ft- 

< 

re 

4*. 

UJ 

re 

ft- z 



Z ft- 

•4 

4 

4 


4 

X 

8 

UJ 

X 

cd 

OD 1 

re 

re 

<3 Ui 

UJ CO 

> 

ft-* o 

o 

p—t 

>- ft-* 

X 

3 

ul co 

> 

OD 

a 

UJ 

CL 

X CD 

o 

a 

o 

*-* 

SO 

re e 

z 

O CD X 

re 




< 


OQ X 



X 

*<1 



re 


O m* 


re 

3 

X 

iC ft- 

o 

•HI 

—S Z ft— 

ft— 


re 

ft— 

Ul 

re 

a 

®o 

90 

UJ ft- 


re 

*- 

o 

Z 

3 I 





O UI o 

re x 


»-« 

X 3 

<* 

X 

3 3 

X 

UJ UJ 



re 3 


X 

3 

6- 

o 


U 

re 

ft— 

ft— 

UJ m: z 

UJ o 

UJ 

ft- Oft- 

co re 

ft- 

—> re 



> ft- 

o 

UJ 

u re 

ft~ 

*o 

re 

co 


ft— ft— US 

UJ 

UJ 

UJ 

X <c 

CO UJ 

re 

«)Z < 

3 Z 



Z 

z 


O UI 



UJ z 

-4 


z 

Ui 

>- 

UJ iaJ 

X 

CO 

<d 

id 

U X 

3 = 

-i 

3 UJ 

re »-• o 


*-* o 


X o 



O ft-* 

O 


»-0 

re 

re 

ID CD 

u 

3 


re 

UJ 

o 


o 

-J 


z z re 

*-* X I 

re i oi- 

o o o o 

O O O ffl 

< < < r 


Z ft- «_> 
O MK 
X *4 3 

> re o 


»- x o 
UJ z 
re re x *-• 

UJ UJ 8— t- 

re co 
-4 13 i 

re z &- 

<L co 

(3 - » 

Z X I 


re 

l D <f 


© © 

© 

*-s 


© © 

CD 

ft-* 

M X 

cm cy 


X 


5f* O 


re 

re o ft- 

© © C 

© 

UI 

© 

© —• © 

UJ 

Q 

o o 

O ® 51 Q 

O 

o 

© 

o © o 

re 

Q 

0 0 4 

3 © © 3 

3 

3 

© 

3 © 3 

o 

4 

4 4 3C 


CO 

•e -* 


< o 

3 ID 3 3 _» 3 

jxjj<ao.ojj 
<ao<c<aot_>xz<i<* 
UXUOJQU^UU 

re 

UJ 

o 

<c 

o 


re re 
o o 
_J o 
_j re 
o re 


UJ Q 

9 

O UJ 

re 

-• 

co co 

id t-» 

UJ 

re -<t 


x « G UJ 

r <i i < j i x 

x 

«o *-*?ss *-« >>re >a ox o re re *- 
3 z z z z inooi oox z o z re id z x OUJ 
re*-«<i-o*-«o*-sx iu^r o^owa -> •-* re re 


x co 

ft- 3 


ft 4 « 


re © 
z CM 
H S 
I- o 
re _j 


© 

to 

© 

o 


© © 
^ lO 
© © 
o o 


X 

UJ 

o 


CO 

o 


UJ 

z 


o 

re 


3 C3 _J 3 _J 
JI J J J 
< u < < < 
oxooo 


X 

o 

z 


Q 

O 

u 


o 


CM 

CM CM 



— CM 

CM 

© 

© © 

© 

© 

© © 

© 

© 

© © 

s 

© 

© © 

© 

O 



tn 

rO vO 

rO 

IS. 

PO © 

rt 

4 

— ftv 

8s. 

© 

© © 

«-• 


ro ro 

CM 


^ouotorun-*^^ 

33 -*WSQSWQ-> 

° fossiorortoio 


ioroiniocMif)(M(Minio. 
^ in ^ Ps K N CM •• 
POOOOKSStMOniO 


CM 

CM 

CM 

CM 

CM 

CM 

9-4 


9-4 

© 

© 

© 

© 

© 

© 

© 

© © 

© 

© 

© 

© 

© 

© 

© 

© 

© © 

© 

IV 

—o © Fv 

© 

4 

cs -• 

-h m 

in 

m ro 

»n 

CM 

© © CM 

*£? 


© VJO 

© 4 

4 

4 «H 

4 


© © —• 

-0 

«r-e 

Q 

© 


W PO 

fO 

CM 

fO VO CM rv 

CV 4 CM PO SO 

CM 

po po rs. cm 

o n hh 

tn 

po in m 

m 




*-* m 9-4 «-* —• 

p) 80 10 ro to 


a Gn'misriTtm 
OiOfitnOM\KK 
gSKSSSBISlS 

• Cd{V(VWMNfM(V 
“(SGiSSSCSlSGI 
H-OGDSSSSS 


<o 

—• CM 

in 

© rO 4 

m 

© so 

«o 

rv —4 

PO 

v£> 

© 

CM 

tn 

« is. 

© *o 

4 in 

© H 

ro 

4 


9-4 

4 tn 

*o 

9-4 cm in 

© 

rv 

© 

© 

© 

-H 

H 9-e 

■9-4 

CM cm 

CM 

CM PO 

ro ro 

4 

4 

4 

4 4 

to m 

tn m 

vO vO 

o 

vO 

4© 

K 

fs Pv 

K 

© © © 

9-4 

© 


—* 


9-4 


9-4 

9-4 9>c 


9H —0 

—• 

9-4 

—* 

—4 

— 

9-4 —» 

— ♦ 9-4 

9H —. 

— ^ 

—• 

9-4 

9-4 

9-4 

9-e 


CM CM CM 

CM 

CM CM CM 

CM CM CM CM CM 

CM CM 

CM 

CM CM 

CM CM 

SM 

CM 

CM 

CM CM 

CM CM 

CM CM 

CM CM 

CM 

CM 

CM CM 

SM CM 

CM 

CM CM CM 

CM 

© 

© 

© 

© 


© © 

© 

© © 

© 

© © 

© 

© 

© 

© 

© 

® © 

© © 

s © 

© © 

© 

© 

© 

© 

® © 

© 

© © © 

© 

© 

© 

© 

© 

© 

© © 

© 

© © 

© 

© © 

© 

© 

© 

© 

© 

© © 

© © 

© © 

© © 

© 


© 

© 

© © 

© 

© © © 

© 


CM 

PO 

4 in 

<OK SO Ok 

© 

—•4 SM ro 4 tn 

«© N 

ao 

» © 

•*(VO M IDIOK ® o* 

© 

H 

cm ro 

4 

in 

«© 

K eo 

o» © 

9-4 CM PO 4 

tn 


r*s 

ao 

Ot © 

—• CM PO 

4 

tn vo 

rs 

co 

PO 

PO 

ro ro 

ro ro ro ro 

4 

4 4 4 4 4 

4 4 

4 

4 in 

in m w to (O io «»n 10 

WD 

«o 

<o 

vO 

O 

vO 

nO 

vO 

v£> K 

N Is 

K PS 

Is 

rs 

IS. 

rs 

is. ao 

co ao oo 

OD 

CD CO 

cc 

CO 

to 

PO 

PO PO 

ro ro to ro 

PO 

ro fO to to ro 

ro ro ro po ro 

POlOPOlOfOftOlOPOrO 

ro ro 

ro 

PO 

ro 

ro 

ro 

r> IO 

ro ro 

ro ro 

po ro 

ro 

ro 

ro ro 

ro ro 

PO to ro 

IO 

ro to 

ro 

IO 


Page 30 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


April, 1976 


116 




Q O 



«9 


2 2 





C frH9 



UJ 


m 



QC 


tOIK 



*«S 


X UJ o 





O CL » X 



a 


(X O CO 

CO 


UJ 


lv Q 13 Q 

3 


&-e 

UJ 

<C l&J 2 

3 


U. 

u 

Q cr <a 

3 


fr-9 

M 

uj *-> 

L 5£ z 


o 

> 

—? CL 2 CO 

o O 


UJ 

UJ 

3 UJ m w 

-ta 


CL 

o 

<S X Ui 

fr- fr- X 


CO 


o o to cr 

to CO UJ 


B 

fr- 

J co o 

0 


QC 

3 

UJ ^ UJ o 

UJ Ui <3 


Ui 

Cl 

oc a 

X X UI 


GO 

fr- 

o o 

9- fr- 3 


3 

3 

>- 2 O fr- 




O 

< m <« aj 

2 2 U_ 


2 


X 6— Ui 

O O O 


6—8 

2 

cr ^ x 




O 

Ui < CL O 

O 3 to 


< 


2 fr— UJ fr—« 

UJ 


fr- 

uj 

•—«to X X 

Q O X 


•«£ 

2 

fr- ts 

2 2 0 


Q 

M 

D UJ m uj 

**S <S 2 



3 

O X X X 

M 


3 


a »- ^fr- 

S3 X 


3 

< 


to 


< 

UJ 

fr- O O I 

S3 ® 



2 

3 <S 2 fr- 

CO CO fr- 


fr- 


CL O »-« fr-« 

0 0 3 


3 

<2 

fr- 3 O X 

UI Ui O 


O 


3 2 

QC QC 



fr- 

O fr- UJ S3 

I 


X 

QC 

tO 2 

Ui UJ o 


o 

<S 

U D UJm 

> > z 


2 

fr- 

Q.IIH 

*4 ■< 3 


3 

tO 

-* 8- 12 

CO to CL 


CL 


fr- cr •< 





Ui o fr- 




X 

X CO 2 CO 


© 


UI 

UJD< 

X 

CM 

X 

2 

CL Q 

o 

S 

u 

fr- 

<3 UJ UJ 

CM © fr— 

X 

fr- 

3 

X • fr- 

<0 © 3 

o 

3 

O 

X Q fr— 

E 5J O 

CL 

O 


Q< ZO 





z o: < a 





»-« C3 fr- 

to X 


X Q 


X O Q 3 • 

CD <£ CD 


*«2 «C 

3 

OX O CO 

XX 3 


3 

3 

_1 £L ® O 

w whh ja 

Is) 

> 3> 

<1 

3 CO tO X 

3 3 :> o- <y o 

2 

o «s o 

O 

O x O »-• <r 

a cl x x o o 

*3 

X O X 


U_ UJ UJ X 





to X *4 X 

ts 


© 


UI 3 3—0 

fr- CM 


PO 


X 2 <3 «f 

3 © 


© 


»- <t »-< o cn 

O X 


X 



fr- o 


o 



S CL Ol 


* CL 


X 

o 

2 


o 
i ac 

la. 


J > 
3 Q 
Z X 

w tai 

X 

K 

U2 x 
3 o 
M u. 
< 

a: «** 

*- h 

U- £5 
O 

CO fr¬ 
ill o 
X UJ 
U •“> 
2 UJ 


3 so 
O UJ 
> 
X DC 
O UJ 
Z eo 

3 

CL 


r> 

UJ 

o 


QC 

o 

o 

QC 

Q. 

x 

UJ 

« 


at 

LD 


o o 
2 2 
< < 


CO CO 

o o 

UJ Ui 
QC CL 

UJ UJ 
QC X 
O O 


S 

© 

© 


© 

•M 

lO 

ro 

X 

to 

(S 

© 

© 

u 

s 

X 

X 

X 

vO © f— 

X 

u 

o 

u 

ro © 3 


CL 

Q. 

Ql 

s © o 

CL 


> CL O X CL 


S3 

X 

o 

a. 


ui 

QC 

< 

2 

<3 QC 
O 


2 
Ui O 
to X 

CO UJ 

to X 


or fr- 

o <c 

QC 3 

X o 


2 

<r O 


2 to 
uj 
QC *-« 
CL QC 
fr— 
O 

fr- 2 


t~ 


o 



<*a 




o 

3 









cr 

CL 


to 



X 




£L 

fr- 


CO 



o 





3 


ui ui 

> 


X 

3 



QC 

O 


X o 



u. 

UJ 


fr 

UJ 


UJ 

o 

o 



2 P. 

3 

*-* 

to 

2 

u> 

QC X 

2 


o 

2 UJ 

UI 

m 

3 

O 

<1 

o 

< 


UJ 

<t 3 

2 




to 

CL O 



3 

X CD 

2 

>- 

<4 

Ui 

to 

CC 2 

0 


3 

u <r 

< 

fr- 


2 

UI 

UJ <c 

o 


<2 

3 

X 

M 

X. 

M 

X 

X 

CO 


L3 

CO M 

fr u s 

o 

3 


UJ X 

X 



3 < 

o 

-4 

X 


u. 

X o 



Ui 

fr- > 

2 *4 

CL 

la- 

X 

o 

fr- o 

u_ 


ID 

*«* <4 

fr- 



UI 



O X 



fr- 

U- < 

fr* 

CS 

2 

CO 

>- o 


2 

>- 

co < 

M O 

3 

Ui 


to 

<1 fr- 

X o 


< 

fr— 


O 

3 

*— 

UJ 

3 

»- 2 

a 

X 

fr— <x 

a »- 


3 

X 

X 

cl >r 

<3 < 

2 


3 O 

X 3 

o 

<4 

■<* 

o 

to Li 

2 


• 

CL 

-3 X 

QC 

U 

fr— 

o 

*-• •<* 

UJ CL 



2 CO 

2 

UJ 


to 

< 

o cr 

3 tO 

O 

Ui 

»-« 8-4 

M 

CSI 

UJ 






2 




CD 






8-4 





X 


QC 

md m 

43 

fr~ 




>- 

UJ 

•o 

»- 2 

CM »4 


3 




-4 

2 

tj 

CO »-* 


. ~e 

O 


X 


X 

fr- 

to 

»- LD 

in © fv 

a 

© — 

O —8 

K 


3 

X 

3 ui 

S "M 

—s 


© © 2 © 

K 

to 

O 

> 

O CD 

© © 

•4 

»— 

© CM © 

—-9 

Ui 






3 




2 


CL 

2 


Kl 

tn 

S3 

X 

o 

CL 


CM 

© 

S3 

ro 


so 

cu 

CM 

S3 

Q 


CM 

© 

S 


Q 

© 


CM © CVJ -*3 

VO CSS VO CM 

© © fO CM 

;n tn »o vo in in cm 

© "M © Pv —• © © 

nos sos ro 


« K ® (V M N CSS 
• CM CM CM CM ro 
CM CM CM CM CM CM CM 

CM CM CM CM CM CM CM 
(S s s ® s S ® 
S ® S S E® K 


CM 

S 

s 

CM 

43 

ro 


CM 

© 

Si 


in 

CM 


CM 

S3 

S3 

in 

ur> 

CM 


CM 

S3 

S3 


S3 

ua 

cs 

X 

u 

a. 


CM 

© 

S3 


CM 

S3 

S3 


<o S(V •—» 

ro (SJ to vo 

© © ro cm 


•OlOCM-M W r-o ao (VfO ro 
ro n s (vin s 
—• ro —• oi ro -*wnsn 


rOPOrO^v'sj’S'giDifi 
CM CM CM CM CM CM CM CM CM CM 

CM C\J CM CM OJ CV CM CM CM CM 

sasscscass® 

SSSSQSSSOS) 


Ol 

£— 


o 

3 »-♦ 3 X 



Q 

*-t M 

M fr— 

O 

Ui 

UI 

M 

4 

X 

<2 X 

X 

X X 

X 

2 2 2 

2 2 UJ 

CL 

QC 

2 

fr— 

o 

3 0 3 0 

o o 

** 

M< O 

•— « X 



»—« 

< 






o 





fr- X 






OD 





3 UI 




ro 


>- 





o 

X 

2 



«Z> 


UI 

X 




X 

o 

O 



CO 



u 






X 



X 



2 




■» ♦ 

❖ 

•0 > 



> 


* * 

* M 






CM 

CV 

CM © 




CM 






© 

© 

© © 




© 






© 

© 

© © 




S 






«o 

rv 

© 

»© 

in no 


© --4 in 

—• Pv 






© 

ro in 

CM 

—• w-a 


© © ^ 

© N 





ro 

ro 

ro © 

— 

«r-e 


© CM ro 

© 

— e 

f-9 



in 


in ro 

Si 

© fSw 


ro 43 CM 

rO ® -hi 

© 

«-« 



<F-» 

■=3’ 

-« s 

© 



ro "tr © 

ro —« 

ro ro 



ro 

© 

ro ro 

© 

© 0 


to ro ro 

ro ro ro 

a 

CM 



ro 

43 

— -V* 

Pv 

ro 


43 fN. ^ 

■V 4) S 

K 

rv 



Pv 

rs. 

© © 

© 



^ ^ CM 

CM CM ro 

CM CM 



ru 

CM 

ro ro ro ro ro 


ro ro ro 

ro ro to 

CM CM 



CM 

CM 

CM CM 

CM 

CM CM 


CM CM CM 

CM CM CM 

S 

© 



© 

© 

© © 

© 

© © 


© © © 

© © © 

© 

© 



© 

© 

© © 

© 

© © 


© © © 

© © © 


z> 

o 

ct 


3 

a. 


3 

o 


^ Si Si Si SX — • — —• — LN»CXJC\JC«CXJCMC\JXV<>MCMr-3r-->l^>PO»-->rO^>rOfrOfrO^ ^ ^ ^ -vr 

'* ' * *** ** "3 *3 r/ rO PO rO K) ’si M ^3" *K£ ^3 ^3 ^3 ^ ^y ^y ^y ^y ^y ^ 


April, 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


Page 31 


117 




o 

3 

1 o 

w 

u. 

3 : 

I 13 

►“ Z 

(3 UJ 
Z 3 


2 >- 
M EO 
ft 


UJ 

u 


UJ 

Q 


UJ 

o 

>• 

UJ 

o 


D 

CL 


13 

O 


2 

O 


-*oe 

QC UJ 
UJ CO 
CO 13 
3 

O 

o ►- 

»- 

ui 


2 

UJ 


uj a ui 


co uj 



2 





UJ 3 



sr 








0 





UJ 2 

0 

ft— 

O 





3 CD 



0 








Ui 





1 - 0 

UJ 

3 

M 





CD •« 

IS 


j- 








0 





>- 

5C X 

CL 

k— 





< 3 

• 


M 








-<* 





CC Ml 

0 • CO 

k— 

M 





3 m 

«-• 


2 








0 






<tra r m 

3 

CO 





•~t < 



O 








3 





in >- 

*— Ul UJ D 2 

O 

O 





< > 

2 * 


X 













m oo 

CO fr- »— 0 X ►-« 


a. 





> < 

O « 










2 





CM 

2 O O CC UJ U_ 

2 


3 




< 

m 3 


U- 

3 





«o 


UJ 

3 




0 

UJ D < ^ UJ K 

O 

oc 

UJ 



3 

UJ 

CO UJ 


O UJ 





CO 

>- 

UJ 

UJ 




O UJ 

X O CC »— 2 ►— 


UJ 

2 



UJ 

UJ 13 

CC 2 



2 

e* 


3 


UJ 

X 

m 

2 

<*• 

3 


k~ 0 

►- O O U 3 O 

UJ 

1 — 

2 



2 

13 Ml 

UI «t 



2 

ui 


UJ 


CC 

0 


2 

UJ 

UJ 


UJ 

X k- <t O 2 

2 

0 

c 



2 

Ml OL 

> CL 



< 

3 


2 


0 

X 

■» 

<* 

3 

2 


o. uj 

200 a u 0 

M 

MS 

X 



<? 

CL 



X 

X 

CD 


2 


0 

UJ 

or 

or x 

CD 

2 


3 O 

oi~ nr u_ 

3 

DC 

0 



X 

>- 

CC 3 



O 

< 


<1 


UJ ■<* 

X 

0 

0 0 

< 

«t 


UJ 

*- UJ I UJ M Q 


■< 




O 

>- CC 

O O 


0 


3 

k— 

X 


3 


0 *- 

*- 

3 H 

X 


O CC 

0 O X »- 0 X 2 

X 

X 

CO 


fr- 


CC 0 

k- CC 


CC 

to 

H O U 


cc >- 

0 

<3 O 

»-* CO 

►-« O 

O 


2 Ol 

—1 uj u s— m: <t 

UJ 

O 

3 


0 

-«s 

0 X 

M k— 


0 

3 

< 

2 



»— cr 

k— 

2 

2 3 

< 2 



M 

0 jj Z < IU 0 

2 


k- 


2 

H- 

X UJ 

2 2 


0 

k— 

Z> 


< 

C** 

0 


k— 

O *- 

> 



CC UJ 

2 *-« arij- < co 


UJ 

< 



<* 

UI X 

O O 


«* 

<* 

< 

u. 

k— 

CC 

u_ X 

UJ 

CO U- 

X <t 

< U. 

s— 


►- 00 

< U. 0 < >- z CD 

< 

2 

k- 


u. 

O 

X 

X 0 



r— 


M 

<* 

UJ 

n-s UJ 

1— 

uj *-« 

k~ 

M 

< 


CO 

k— X Ui uj 


O 

CO 


M 


f- 


» 

6— 

to 

<1 


O 

0 

X 

>- 

X 

O to 

< 

Q 


t— 

cn x 0 x a. a: 

CO 



r* 


»- 

H CO 

X X 

>- 

co 


1— 

CL 


«s 

CL 

CO 

O CL 

k~ 

1— CL 


8 

or to 

b- b- 3 UJ 0 0 

*— 

CO 

*- 

>- CL 

3 

CO UJ 

UJ UI DC 

UJ *- 

<1 

X 

»- 

Ui 

X • 


3 X 

t— 

< X 

k~ 

8 

UJ 0 

ic3z»-Q.aoh 

DC 

CL 

3 

O 

X 

CL 

UJ X 

*- #— 

0 

X 

3 

O 

3 

3 

3 

3 CC 

UJ 

3 

CL 3 

O 3 

3 

8 

»- X 

®0 2 H X fr— 0 3 CO 

< 

»-» 

Ol 

< 

3 

»— 

X 13 

CO to 

X 

CD 

CL 


3 

CL 


3 O 

:> 

CO 0 

X CL 

3 

CL 

8 

u 

3 UJ O UJ 3 UJ UJ 

►- 


2 

UJ 


3 

0 •-> 

>- X 

UJ 

M 2 

CO 


2 

2 

UJ 

0 

«* 

3 Z 

CO 

2 


<* 0 

CL 3 OL 2 O O CC 

CO 

<0 

M CC 


O 

3 I 

to to 

X 

X 

M 

M 


M 

O 

O 

X 

X 

-> M 

w 

M 

» 


k- 

X 

k— 


CO 









CL 




O 

O 

O 

ro 

ro 











8 


8 


O 

3 

X 

r— 


X 


X 





3 




U. 

cr 


8 

8 



CL 



CL 





Ql 


a 



OL 

0 

CO 


O 


0 





3 





u. 

to 

8 

8 



2 



2 





2 


2 


*a 

»— 

1— 

0— 

in 

»— CM 

►— 

IS 


cs 

IS 

»— 


WM 

ro r*v 

cr 


UJ 

8 

8 

8 

—• 

*—« 

*4 

8 

M 



8 


M 


M 

k- 


3 

3 

3 

«r« 

3 


3 

M 


<s 

s 

3 


ts 

is ro 

UJ 0 

»- 

CM 

8 

8 

8 

3 8 

8 

3 



8 


3 


3 


CO 

O 

O 

0 

cs 

O 

IS 

O 

IS 


K 

CM 

O 


CS 

IS IS 

O UJ 

>- 

ro 

8 

8 

CM CD 

8 

8 

CD 



8 


CO 


CC 

to 

»- 
















<t 

Q 

ID 

















3 

UJ 















O -4 


















Ql 

an 

301 X 







< 







3 O 

CM 










< 







►— 


3) I < CD 

CD 

<s 


< 


***■ 





< 




_J 

% 


X 







X 

X 

«X 

3 


I 


UJ 

3 

0 

X 3 



3 




X 







CL 



















O 

k- 

<0 > X > 3 CC 

n a k 

►H 

3 

M 

a 

M to 


M 

N 

CL 

b~ b- 


C 

UJ 

CO 

13 

M 


M 

N 


M 


X 

> 

m CL 


CL 


0 



3 O 2 O <3 l_> 

2 0 UJ 

> 

<1 

> 

X 

> 

3 

2 

2 

2 

O 

3 UJ 

CD CD 

cr 

CD 

3 

ac 

X 

2 

2 

2 

2 

OL 

M 

«_> 

O 

>■ 

X 

O 

X 

O 


ac 

CD 

CL X m X UQ 

3 CL CC 

X 

O 

X 

-> 

X 

X 

*-* 

<3 

•O CL 

0 a 

0 0 

b~ 


OC 

0 

3 

»—# 

<S 

-> 

n 

l_> 

-> O 

X 

X 

0 3 0 

3 

cc 

k— 

2 















CO 

O 

M 

















to 

*-« 

cr to 


X 






IL 






r— 

►— 

3 









UJ 







3 

K 

CC 

*— k~ 


UJ 




Q_ 

X 

3 





X X 

O 


O 



CL 






>• 








3 

»— 

10 to 


2 




to 

l_> 3 





*- CL 

O 


UJ 



2 






0 







O 

O 

to 

*- k- 


r- 




k- 

H 






O O 

03 


ac 



M 






X 










3 3 


3 




3 

3 3 





CD b- 






3 






3 







so 

* 

* 

* O O 


O 




O 

O 

O 





* X X 

X * 

♦ 

-* 

* 


CD 






CD 







UJ 



CM 

CM 


CM 


CM 





CM 








ro 



to 



ro 





ro 


fO 

0 



8 

S 


IS 


S 





IS 








8 



8 



8 





8 


8 

0 



8 

GS 


5J 


3 





IS 








8 



8 



8 





8 


8 




CM 

ro 

to 

CM 

CM CM 

O 


O 

IS 

ro 








8 

8 


rO 


S 

ro 



8 


tO 


to 

k— 



<0 

ro 


«o 


OD 

*3 


IS 

IS 

to 


IS 






8 

8 

8 CM 8 

8 

8 



8 


in 


in 

0 

UJ 



r> 

rO 

IS 

ro 

cs» 

ro 

IS 


CS 

CM 

ro 


IS 






8 

8 

CM fO 

8 

8 

ro 



8 


ro 


ro 

—> 



to >0 ro ms in in 

CM — 


in 

0 

ro 

>0 

in 

ro tO 

CM 

—♦ ro 

ro K 





* 

ro 

tO 

8 

ro 

*> 

8 

ro 

rv 

tO 

in 

8 


8 

CD 



K 65 K 

« IS 

rv 

«-e 

rv 

cs 

rv 

vO 

ro 


IS 

to 

CM —• 

is ro 





V 

ro 

M 

8 

ro 

rs 


in 

•0 

N 

N 

ro 

N 

ro 

O 



ro 8 —» ro 8 

ro ro ro 

IS 

ro 

® 

ro 

IS 

1*0 

ro 

eo 

ro ro 

ro ro 

IS cs 





8 ro 

ro 

ro 

ro 

fO 

fO 8 


8 

8 ro 

8 

10 

CC 



cm ro m in ts 

—• M tO 

to 

CS 

ro 

in 

(S 

CM 

ro 

in 

rv 

CM 

ro in 

to rs 




8 

8 

8 

in 

K 

8 

M 

VO 

_, 

8 

ro in to 

, 

8 

0 



ro ro 3 ro ro m 

M M M 


in 

in 

in 

vO 

•O 

lO 

to 

to K 

K fv 

K l*v 




CM 

CM CM 

8 

8 ro 

ro 

ro M 

V 




in 

in 

0 



ro ro ro ro po ro 

ro ro ro 

ro 

ro 

ro 

ro 

ro 

ro 

ro 

fO 

ro 

ro 

ro ro 

ro ro 




ro 

ro 

ro 

rO 

fO 

ro 

ro 

ro ro 

ro 

ro 

ro 

ro 

ro 

ro 

• 



CM CM CM CM CM CM 

CM CM CM 

CM 

CM 

CM CM 

CM 

CM 

CM 

CM CM 

CM 

CM CM 

CM CM 




ro 

ro 

ro 

ro 

ro ro 

TO 

ro ro 

ro 

rO 

tO 

10 

ro 

ro 




C 2 cs) is) cs rs ts 

ts ts IS 

S* 

cs 

cs 

0 

IS 

cs 

IS 

IS 

IS 

IS 

CS IS 

IS 8 




8 

8 

8 

8 8 

8 

8 

8 

8 

8 

8 

8 

8 

8 

8 

CL 



c IS S Q 6»S 

so® 

G5 

CS 

IS 

(S 

IS 

0 

IS 

es 

IS 

IS 

cs eu 

8 © 




8 

8 8 

8 

8 

8 

8 

8 

8 

8 

8 

8 

8 

8 

8 


ui 


8 —* 
s> css 
8 8 


X M 
0 2 2 
Q. w < 

CM 

a. 

2 


CM 
0L > 
2 O 
•-* -« X 
—» <S> 3 
m S 33 


fM OL 
Z Z £ 


a 

o 


at 

UJ 


8 

8 

03 

8 


fO 

ro 

1 

8 

8 


8 

8 

CO 



fr- 

—• to 


2 

8 in 

8 M 

UJ 

8 ro 

8 ro 

X 



UJ 

•O 8 

ro 10 

k— 

M 8 

ro 8 

<1 

lO ro 

ro ro 

k- 



to 



IL 

8 8 

m Pm 

O 

tO tO 

vQ -O 


ro ro 

ro ro 

ac 



UJ 

*0 ro 

ro ro 

CD 

8 8 

8 8 

X 

8 8 

8 8 

3 



Z 


►“ NCOOQ^CMPOTjiniOKCOOlS^IMfO^lCWJN©® {'3-~*OJfO’'XX>‘©KCOO 

X 'M M‘7^Jl^tOinifiiOU)|jOin^«0‘£)iO'OC'C©'ONNKKNNNKKN 
40 


w.K^OiKJ'Uin'ONflOO Q^AJfO'Jin-ONCOOvG! 
MDCO©IlCO®COCOa)a3<M>OvO»0»000>(M>Q 


V -!? U3 


Page 32 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


April, 


1976 


118 



dr dobb’s journal of * 1*50 

COMPUTER 
C 

Running Light Without Overbyte 

May, 1976 Box 310, Menlo Park CA 94025 Volume 1. Number 5 

A REFERENCE JOURNAL FOR USERS OF HOME COMPUTERS 


In This Issue... 

Copyright Mania 3 

1976 Trenton Computer Festival, a photo essay 4 

TIDBITS 6 

40 Chars/Line Printer for $250 
Day Recommends Science Articles 

Votrax Makes the Offer 7 

Bad Bit Getters, memory test program Ray Boaz 9 

UNIZAP: a modification of the Shooting Stars game J. Shepard 10 

Palo Alto Tiny BASIC Li-Chen Wang 12 

user documentation & complete, annotated source code 

A Note to Members of SCCS Concerning Lou Fields the Editor 25 

Index to The Computer Hobbyist 26 

Texas Tiny BASIC (TBX) Marries TV-Cassette Operating 28 


System (TVCOS) 

NOTES 

What’s a BAMUG? 

JIPDEC Visits PCC 
Chicago Stores 

The Alpha-Numeric Music Sytem Malcolm Wright 

Program Repository & Tape Duplication Facility 

Byte Swap want ads 

BASIC Just Won’t Cut It letter 

How ’Bout Small PASCAL, editor’s reply 

Subscription & Information Form 

PCC Bookstore Offerings 

10% off IMSAI Products for Journal Readers 


27 

27 

27 

31 

32 
32 
32 

32 

33 

35 

36 


alisthenics 


60 


rthodontia 


119 





COPYRIGHT MANIA: It’s mine; it’s mine, 
and you can’t play with it! 

During the past year or so. People's Computer Company 
has received several letters-with-enclosures from one Calvin N, 
Mooers of Rockford Research, Inc. in Cambridge, Mass. We 
initiated the rather unfortunate contact by asking him for in¬ 
formation about an interesting but relatively obscure computer 
language that he had developed called TRAC. (Note: TRAC is, 
at the least, a registered trademark, and probably patented, 
copyrighted, and marked with infra-red dye to boot.) What we 
have since received from this person, however, appears to 
primarily be concerned with copyrights, patents, trade-marks, 
and the like. We don't really know because we didn't take the 
time to wade through all of it. He has sent us a copyrighted 
price list for his software and documentation that included an 
entire paragraph about its copyright protection and registered 
service mark, a mimeographed policy on copyrights and 
trade-marks, an article concerning a $3 million suit against 
some companies that purportedly have used Mooers' language, 
and two copies of a major article that Mooers wrote concern¬ 
ing software copyrighting (we hesitate to give the actual name 
and source of the article—we might be sued for reprinting the 
title without the author's permission). Oh yes, he also included 
some information about his computer language. Incidentally, 
he explicitly prohibited us from publishing most of his letters 
. . . which saved us at least several microseconds in our reach¬ 
ing the decision not to reprint them. Needless to say, Mooers 
has shown great interest in (preoccupation with?) the manner 
in which many hobbyists obtain their software, and has writ¬ 
ten us concerning this topic . . . but we can't let you know 
what he said because he prohibited us from printing or para¬ 
phrasing it. 

If you are interested in the topic of proprietary soft¬ 
ware, you might look up Mooers' name in some readers' 
guide to computer science literature. 

There is an interesting clincher to this little story: 
Enclosed with Mooers' most recent paper deluge concerning 
copyright protection were reproduced copies of two articles 
from Computerworld newspaper. Yes, Computerworld is copy¬ 
righted and includes an explicit prohibition against reproduc¬ 
tion of material appearing in it unless written permission is 
obtained. No, the copies that Mooers included with his letter 
did not include any indication that he had obtained such 
permission. 

[Editor's Note: We have no quarrel with copyrighting, 
whether it is applied to publications or to software. You may 
note that most of the PCC publications are copyrighted, 
including Dr. Dobb's Journal. We do object, however, to the 
incredible teapot tempest that has recently been raised con¬ 
cerning proprietary software and the hobbyist community. We 
also object to the blanket indictment that has been laid on 
all hobbyists: ". . . most of you steal your software'' (the 
essence of Bill Gate's widely publicized February 3rd, open- 
letter to hobbyists). 

1. We feel that it unjustifiably casts a shadow on the 
entire hobbyist community. 

2. We know there are many hobbyists who are not 
thieves in spite of the fact that copyrighted software is as easy 


to copy as are copyrighted newspaper articles. 

3. We feel this proprietary preoccupation is a waste and 
misuse of time and energies of talented software professionals. 

4. We feel there are differences between marketing soft¬ 
ware to hobbyist/consumers for their entertainment, and mar¬ 
keting software to the business and industrial community 
where it is used directly or indirectly for financial gain. We 
find it unreasonable and impractical to attempt to sell soft¬ 
ware to hobbyists when its price is half the cost of their hard¬ 
ware systems. It is unreasonable because it's too expensive. It 
is impractical because, at best, software is very difficult to 
protect against reproduction. 

Furthermore, it is naive to attempt to market software 
to hobbyists via a royalty agreement with a hardware manu¬ 
facturer. The analogy comes to mind of someone developing 
an excellent and useful reference book, then attempting to 
market it via a royalty agreement with a manufacturer of 
copying machines, knowing that the manufacturer is going to 
place the book next to their copiers with a sign saying, "If 
you want a copy of this book, you must send us $350." 

We feel there are only two practical choices in marketing 
software for the hobbyist community: 1) Charge very little 
for your software, and depend on volume sales for your 
profit; 2) Charge a great deal for your software, and sell it to 
your only controllable marketplace: the hardware manufac¬ 
turers. They need it to enhance their hardware. They are also 
the only ones who are making sufficient profit to be able to 
afford your high price. 

We believe that we are exemplifying these viewpoints 
relevant to the copyrighting of PCC publications. Please note 
the statement of Reprint Privileges inside the front page of 
each issue of Dr. Dobb's Journal. You may also note that, 
since we are marketing to the non-profit-making hobbyists, 
our subscription rate is $10/year. Compare this to, for in¬ 
stance, the $28/year that Microcomputer Digest charges for a 
smaller, monthly publication, or the $10 to $40 that DataPro 
charges for a single copy of some of their slender reports. But, 
these latter publications are being marketed to the highly 
profitable business and industrial computer communities. We 
have no particular quarrel with this. We are simply pointing 
out that one adjusts to the realities of one's chosen market¬ 
place. 

Finally, to those software professionals and hardware 
manufacturers who choose to provide low-cost Software to the 
hobbyist community: We wish to actively encourage your 
efforts. As you develop such software, if you will forward 
information about it, we will be pleased to publicize it, with¬ 
out cost. We believe that you are taking the right track in 
this new and exciting area.] --Jim C. Warren, Jr. 


THE SIX PROJECT STAGES 

Wild Enthusiasm 
Disillusionment 
Total Confusion 
Search for the Guilty 
Punishment of the Innocent 
Promotion of the Nonparticipants 


May, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 3 


120 





THE 1976 TRENTON COMPUTER FESTIVAL 

by Sol Libes 

[Editor's Note: The 1976 Trenton Computer Festival was the 
first manufacturer-independent computer convention of 
national scope for hobbyists. It was held on May 2nd.] 

Back in November 1975 when Al Katz and I conceived 
of a Computer Festival, if you had said that 1,500 people 
would attend, I would have said you didn't know what you 
were talking about. And, if you had said that we would have 
45 exhibitors, I would have thought that you belonged in the 
"cuckoo nest." But, it all happened on May 2nd at Trenton 
"tate College in New Jersey. 


Page 4 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 May, 1976 


SOL LIBES, ACG-IMJ president, spoke at the 
"Computer Club Congress". 

What started out as a small affair for about 300 people 
(we only had about 100 members at the time), six to nine 
exhibitors, and a flea market, exploded. Considering that we 
did not anticipate such a large affair, it is incredible that every¬ 
thing went so well. 


PAT DEITTMAN and associate prepared for demon¬ 
stration on use of microcomputers by radio amateurs. 


The Festival turned into a National Convention—the first of 
its kind. People came from California, Colorado, Florida, North 
Carolina, Virginia, Washington DC, Maryland, Ohio, Pennsyl¬ 
vania, Massachusetts, Illinois, Indiana, New York, Connecticut, 
New Hampshire, Michigan, and, of course. New Jersey—18 
states in all! 

There were 26 speakers with such well known authorities 
as Dr. Robert Suding, Hal Chamberlin, and Dave Ahl. They 
spoke on subjects such as the Z-80 Mpu—including demo, 
computer music, computer graphics, writing software, 16-bit 
mpu's, etc. 

The exhibitors included DEC, Motorola, RAC, Digital 


FLEA MARKET scene 


121 












DR. ROBERT SLIDING talked about, and demon¬ 
strated his new Z-80 microcomputer system. 


HAL CHAMBERLIN (left), Computer Hobbyist editor, 
demonstrated his new techniques for computer music. 


DAVE AHL (Creative Computing editor) spoke on 
computer games. 


May, 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


Page 5 


Group, dealers for MITS, IMS, Sphere, E&L, HAL Communi¬ 
cations, and many others. 

Amateurs set up demo's of their systems. There was a free 
program-copying service for programs in the public domain. 
There was a huge outdoor flea market. 

One exhibitor, who had brought 14 CRT terminals (@$500 
apiece) to the festival, sold 12 within minutes after the doors 
opened. By noon, all his stock was gone and he closed up his 
booth! 

Of course, I was very busy during the Festival, but I did 
manage to go to two talks—and they were great. I heard Hal 
Chamberlin's talk on computer music. Hal is doing some 
radically new things using his IMP 16-bit mpu and a special 
Fourier hardware system to create music that is better than 
that I have heard from systems using other techniques. Hal 
played a tape of the Bach Toccata & Fugue in D Minor 
which was programmed on a 16-bit machine and processed 
through his Fourier circuitry to produce a rendition which 


MORE flea market 


122 









sounded like the best musician I have ever heard. 

The other talk I heard was Dr. Robert Suding's concerning 
the new Zilog Z-80 Mpu. Bob had received an engineering 
sample of the Z-80 about 6 weeks ago and quickly and easily 
reworked a Digital Group CPU board to accept the Z-80 (it 
is not pin compatible with the 8080). Bob showed his sys¬ 
tem with a very impressive CRT display of all those Z-80 
double registers. 

All I can say is, if you were not there, you really missed 
the event of the year (there must have been about 100 Mpu- 
based systems up and running). 



ED GERRI spoke on computer graphics. 



100 door prizes—worth about $2K—were handed out 
at the festival. 


40 CHARS/LINE PRINTER FOR $250 

by Southwest Technical Products Corp. staff 
219 W. Rhapsody, San Antonio TX 78216 
(512) 344-0241 

Southwest Technical's PR-40 Alphanumeric Printer Kit 
is a 5x7 dot matrix impact printer similar in operation to the 
well-known Centronics printers. It prints the 64 character 
upper case ASCII set with 40 characters/line at a print rate of 
75 lines/minute on standard 3-7/8" wide rolls of adding 
machine paper. One complete line is printed at a time from an 
internal forty-character line buffer memory. Printing takes place 
either on the receipt of a carriage return or automatically 
whenever the line buffer memory is filled. 

The printer is available in kit form only and includes 
the assembled print mechanism, chassis, circuit boards, com¬ 
ponents, 120/240 VAC-50/60 Hz power supply, assembly in¬ 
structions, one ribbon and one roll of paper. It sells for 
$250 postpaid in the U.S., and delivery is 30 days. 



- ~ 


DAY RECOMMENDS . . . 

Dear Jim Warren Jr. 

There are two excellent articles in May 7, 1976, 
Science: 

"Microprocessors?—An End User's View", R.E. Dessy, 
pp 511-518. 

"Microprocessor Aplications: A Less Sophisticated 
Approach," J.T. Arnold, pp 519-523. 


photos by Marj Kirk 


Jim Day 


Page 6 Dr. Dobb s Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


May, 1976 


123 















Votrax makes the offer 

speech synthesis kit for un 

by John McDaniel 


Dear Jim: April 26, 1976 

This letter is to confirm our conversation with regard to 
the VOTRAX Synthesizer Kit which we had discussed. 

As I indicated in our conversation, VOTRAX was not 
aware of the computer hobbyist market, and therefore had not 
addressed itself to providing anything for that community. 

As a result of preliminary investigation, I am pleased to 
relate to you that we could provide a VOTRAX Synthesizer 
in a kit form for a price not to exceed $1000. However, we 
require more information as to the specifications of the kit 
and the size of market potential, before we can commit to 
this price. Our quotation on a minimum order and delivery 
would be contingent on receiving this data. 

Based on the text of your announcement in Dr. Dobb's 
Journal [Volume 1, Number 3, page 12], I believe that I have 
mislead you with regard to the size of the VOTRAX market. 
Your inference was that the VOTRAX market is not very 
large at present. This is not correct and, I am afraid, would 
tend to mislead your readers as to the impact the hobbyist 
market would have. This is not to say, however, that we're 
not interested in providing something for those users. 

I hope that this information will be of benefit to you. 

I look forward to meeting with you again at the Home-Brew 
Computer Club Meeting. If I can be of further service, please 
don't hesitate to contact me. 

Sincerely, 

John H. McDaniel 
Regional Sales Manager 
Vocal Interface Division 


der 

6 

$1K 

Data In, Phoneme MSB 

1 TTL load. 

7 

Data In, Phoneme 

Neg. True A 

1 TTL load. 

8 

Data In, Phoneme 

Neg. True A 

1 TTL load, 

9 

Data In, Phoneme 

Neg. True A 

1 TTL load. 

10 

Data In, Phoneme 

Neg. True A 

1 TTL load. 

11 

Data In, Phoneme LSB 

Neg. True A 

1 TTL load. 

2 

Output, Phoneme Clock 

Neg. True A 

2 TTL loads. 

3 

Output, Zero Decode 

Neg. Pulse B 

2 TTL loads. 

13 

Output, Audio Control 

Pos. Ture C 

Ext. 50K Vol. 

15 

Output, Audio Ground 

Con. Wiper D 

Audio Return D 

1 & 10 

Output, +5 VDC 

Interface Supply E 

S 

Output, +12 VDC 

Interface Supply E 

P 

Output, - 12 VDC 

Interface Supply E 

A&N 

Ground 

Signal Return E 


4340 Campus Dr., No. 212 
Newport Beach CA 92660 
(714) 557-9181 


BASIC SYNTHESIZER INTERFACE SPECIFICATIONS 
GENERAL DESCRIPTION 

The synthesizer requires 8 parallel data bits on its input 
pins in order to operate. Of these 8 bits, 6 are used for 
phoneme slection and 2 are used for inflection level selection. 

The synthesizer provides a clock output which must be 
used to time the input data. Data should only be presented or 
changed on the positive transition of this clock. 

Also provided is a status indicator (zero decode), which 
signals the presence of input data. This is useful when the 
synthesizer is operated from a buffer memory interface. 

All signals are TTL signal elvels, except audio output. 

Pin Description, Conn. 6, (Front Mother Board) 

Connector See Signal 

Pin No. Function Description Function 


Function 

Data In, Inflection MSB 
Data In, Inflection LSB 


Description 

1 TTL load, 
Neg. True 
1 TTL load, 
Neg. True 


A 

A 


SIGNAL FUNCTION DESCRIPTION 

A. Data In (Pins 4-11) Six bit phoneme code and 2 bit 
inflection code inputs. All phoneme inputs high are 
Null code causing no output condition. 

B. Phoneme Clock Output (Pin 2) Provides internal tim¬ 
ing of synthesizer and must be used to control data 
input. Data should only be presented or changed on 
the positive edge of this signal. When all phoneme data 
inputs are high, this clock runs with a period of 6 
milliseconds. When data input is present, the period 
lengthens, depending on speech rate and the par¬ 
ticular phoneme. 

C. Zero Decode Output (Pin 3) This signal indicates the 
status of data by a high signal in absence of data and 
a low signal when any phoneme data input is low. 

D. Audio Control Output (Pins 13 & 15) 1-2 volt maxi¬ 
mum audio signal from 50K external volume control. 
Additional external audio amplifier required to drive 
speaker. 

E. Power Supply Voltages. The basic synthesizer re¬ 
quires the following power: 

+5 VDC regulated @120 MA 
+12 VDC regulated @160 MA 
-12 VDC regulated @ 200 MA 
Pins A&N should be used for power supply returns, 
and Pin 15 for external audio amplifier ground 
return. 


May, 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 7 


124 



III. DIAGRAMS 


Inputs 


Conn. 6 

J =- 


Conn. 5 


4 

5 

6 

7 

8 

9 

10 

11 

2 

3 


13 

15 


1 

10 

5 

R 

A 


M 


F 


K 


JL 


«- 

< 6 - 




DO? 


-» 

-» 


DQ6 


DQ5 


-» 


DQ4 


2 DQ3 >, 


D 


«- 


A» 


DQ2 


10 


DOl 


-» 


C 




-» 


«r 


Mother Board 
Audio Output 

Audio Out 


11 DO0 

„ PHONEME 

3 CLOCK 

“ ZERO 

2 DECODE 


out 

-*■ 

out 


tF 


‘volume 

1 50K 




u 


71 


SYNTHESIZER 
Circuits No's 
538, 539, 540 h 541 


/\udio Q n d, 


U- 


=r 


|Powe r 
Input 


g 

o 


t 5 
. 12 
□ -12 
□ Gnd 


FRONT MOTHER BOARD 


NOTES: 1. Conn. 6 mounted on front mother board. 

2. Conn. 5 requires jumpers as shown. 

3. Power supplied to push on tabs on mother board. 

4. Audio control connected to solder points on mother board. 


INPUT/OUTPUT W AVEFORMS 


i i 


Phoneme Clock 


i*b MS ~ 

£-350.US jj- 

(C 

6 b MS 

u 

IT 

Lb—Varies with—_1 

)) 

u u 


Phoneme Data In 
(D° - D 5 ) 


phoneme h 
speech rate 

-#- 


-Q- 


1 


ss- 

-it- 


Zero Decode 



NOTES: 

1. Data in should be changed on positive edge of phoneme clock. 

2. Zero decode output may contain spikes when data changes. 

3. Data in is negative true (1 TTL load with 4. 7K pull up resistor). 

Page 8 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 May, 1976 


125 























































































BAD BIT GETTERS: 

Memory Test Programs 

by Ray Boaz 

(reprinted with permission from Homebrew Computer Club 
Newsletter) 

Every computer system needs a memory test program or 
two to ensure a high level of confidence in the memory sys¬ 
tem hardware. One bad memory bit can send a program off to 
Never-Never Land. The memory test programs listed here are 
for use with 6800 systems operating with MIKBUG as a system 
monitor. MIKBUG is a simple monitor (as it was meant to be) 
which has many useful subroutines. Several of them are made 
use of in these memory test programs. 

The terms used herein are consistent with the 6800 nomen¬ 
clature. A and B are the two accumulators, X is the index 
register, PC is the program counter, SP is the stack pointer, CCR 
is the condition code register, and M is the memory location of 
interest. 

Of the two programs, the shortest, MT1, is written to be 
used in the 6810 RAM used by MIKBUG as a scratch-pad. It is 
27 bytes long and fits into address space A060 to A07A. This 
should work well for the SWTP 6800 Computer Systems. The 
second, MT2, is a more general test program but takes up 58 
bytes total. The start and end addresses in MT1 are direct 
operands and therefore, shown blank in the listing. MT2 uses 
locations A002-3 for start, and A004-5 for end addresses. So 
these locations must be loaded before the program is started. 
Also in MT2 the I/O interrupt pointer locations (A000-1 are 
used so if applicable it must be set after running MT2. In 
general, both MT1 and MT2 operate the same until an error is 
found. 

In both programs a store is made to an M start address, then 
the data is fetched back, compared to good data, and if true, it 
is incremented to test M again with A+l. This continues for all 
256 bit combinations—00 to FF. Then X is incremented, and 
the next location is tested. This continues until the address is 
encountered. 

In MT1, on finding an error, a branch to MIKBUG software 
interrupt is made which results in the status registers being 
printed out as follows: CCR-B-A-X-PC-SP. B is the good data, 

A is the error data, and X is the address with the error. If 
testing 1K bytes, 2000-23FF, and an error was found which 
resulted in BOO, A=00 and X=007, the chip containing data 
bit 7 (MSB) at M=2007 is bad. M+l must be loaded as the new 
start address to continue the test to end address. 

MT2 on finding an error goes to a routine to print A-B-X, 
then continues to the next M until end address is reached. Here 
again, A=error data, B=good data, and X=M error. 

Both of these programs have worked well as memory testers 
and as chip testers for 2102 type memory chips. 

MT1 

A060 CE_START LDX LOAD X WITH START 

ADDR 

A063 4F OMT CLRA CLEAR A 

A064 5F CLRB CLEAR B 


A065 06 


TAP 

CLEAR CCR 

A066 A7 

00 

NVAL STAA 

STORE A AT X ADDR 

A068 A6 

00 

LDAA 

LOAD A WITH DATA 
JUST STORED 

A0 6 A 11 


CBA 

COMPARE B-A 

A06B 26 

OD 

BNE 

IF NOT SAME BRANCH 
TO ERROR 

A06D 4C 


INCA 

ELSE INCREMENT A 

A06E 5C 


INCB 

INCREMENT B 

A06F 26 

F5 

BNE 

IF B NOT EQUAL TO 00 
BRANCH TO NVAL 

A071 08 


INX 

ELSE INCREMENT X 

A072 8C 

— 

CPX 

COMPARE X TO END 
ADDR 

A075 26 

EC 

BNE 

IF NOT SAME BRANCH 
TO OMT 

A077 7E 

E0E3 

JMP 

ELSE JUMP TO MIKBUG 
CONTROL 

A07A 3F 

MT2 


ERROR SWI 

PRINT ERROR STATUS 

0000 FE 

A002 

START LDX 

LOAD X WITH START 
ADDR 

0003 4F 


OMT CLRA 

CLEAR A 

0004 5F 


CLRB 

CLEAR B 

0005 06 


TAP 

CLEAR CCR 

0006 A7 

00 

NVAL STAA 

STORE A AT X ADDR 

0008 A6 

00 

LDAA 

LOAD A WITH DATA 
JUST STORED 

000A 11 


CBA 

COMPARE B-A 

00OB 26 

OD 

BNE 

IF NOT SAME BRANCH 
TO ERROR 

000D 4C 


INCA 

ELSE INCREMENT A 

000E 5C 


INCB 

INCREMENT B 

000F 26 

F5 

BNE 

IF B NOT EQUAL TO 00 
BRANCH TO NVAL 

0011 08 


INX 

ELSE INCREMENT X 

0012 BC 

A004 

CPX 

COMPARE X TO END 
ADDR+1 AT A004 

0015 26 

EC 

BNE 

IF NOT SAME BRANCH 
TO OMT 

0017 7E 

E0E3 

JMP 

ELSE JUMP TO MIKBUG 
CONTROL 

001A B7 

A000 

ERROR STAA 

STORE A AT A000 

001D F7 

A001 

STAB 

STORE B AT A001 

0020 FF 

A002 

STX 

STORE X AT A002 

0023 CE 

E19D 

LDX 

LOAD X WITH ADDR 

OF CR/LF/* STRING 

0026 BD 

E07E 

JSR 

JUMP TO PRINT CR/LF/* 

0029 CE 

A000 

LDX 

LOAD X WITH ADDR OF 
ERROR DATA 

002C BD 

E0CA 

JSR 

JUMP TO PRINT ERROR 
(A) 

002F BD 

E0CA 

JSR 

JUMP TO PRINT DATA 
(B) 

0032 BD 

E0C8 

JSR 

JUMP TO PRINT ERROR 
ADDR (X) 

0035 7C 

A003 

INC 

INCREMENT M FOR 

NEW START ADDR 

0038 20 

C6 

BRA 

BRANCH TO START 


May, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 9 


126 




UNIZAP- 

A MODIFICATION OF ‘SHOOTING STARS’ 









by John C. 

Shepard 




107E 

78 



84 

MOV 

A,6 

; FETCH UNIVERSE AGAIN 

EDITOR'S NOTE: A game called TEASER, written in BASIC, 

107 F 
1080 

AC 

47 



85 

86 

XRA 

MOV 

M 

B,A 

; ANO COMPLEMENT IT (THAN 
; THEN REPLACE IT 

was 

published in the September, 1974, 

issue of PCC. The game 

10(11 

23 



87 

INX 

H 

j POINT TU CFNTER MASK 

was redone by Willard I. 

Nico under the title of “Shooting 

1082 

1083 

79 

AE 



08 

89 

MOV 

XRA 

A ,C 

M 

; FETCH CENTER OF UNIVERS 
j COMPLEMENT CENTER 

Stars , 

and was published as an eight-page article in the May, 

1084 

4F 

0E 

10 

90 

MOV 

C, A 

; AND SAVE THE CENTER OF 










1005 

C3 

91 

JMP 

UNIDIS 

; GO DISPLAY THE NEW UNIV 
} WAS SHOT 'QUIT 1 ? • 

i7/o, issue 01 nyie ipages umz,Ar is a variation oi 

1080 

FE 

51 

92 

INVALD: CPI 

QUE 

Nico s 

Shooting Stars 

game. 


10BA 

C2 

96 

10 

93 

JNZ 

NUTVAL 

IF NOT DO OAO STAR RUUTI 










108D 

21 

77 

11 

94 

LXI 

H,HEQUIT 

j POINT TO 'YOU QUIT' MES 





1 

; UNIZ-AP - 

A MODIFICATION OF 'SHOOTING STARS' A P 

1090 

CD 

32 

11 

95 

CALL 

MESAGE 

; PRINT MESSAGE 





2 

i DESCRIBED 

IN THE MAY 

ISSUE OF BYTE MAGAZINE (if 9). 

1093 

C3 

EF 

10 

96 

JMP 

AGAIN 

; SEE IF HE WANTS TO TRY 





3 

; 




1096 21 

6F 

12 

97 

NOTVAL: LXI 

H,BADNUM 

;POINT TO BAO MESG. 





4 

i CONVERTED 

TU RUN ON INTEL SOK-B0 B080 SYSTEMS BY 

1099 

CD 

32 

11 

98 

CALL 

MESAGE 

1 PRINT IT 





5 

; 


JOHN C. SHEPARD 

109C 

C3 

0F 

10 

99 

JMP 

UNLUOP 

; GO BACK AND REPRINT UNI 





6 

» 




109F 

7B 



100 

UINTST: MOV 

A ,B 

j MOVE UNIVERSE TU A 





7 

i THIS 

PHOCRAM IS PUBLIC DOMAIN... SEE BYTE MAG. FOR 

10A0 

FE 

FF 


101 

CPI 

0FFH 

; ARE ALL FRINGE STARS P 





3 

| Wc*iM : >M+**^M<**)M‘***^*****>Ml>M:*****iM‘>M‘*^+iMi+^ 

10A2 

C2 

00 

11 

102 

JNZ 

LOSTST 

I IF NOT, SEE IF PLAYER H 





9 

1 




10A5 

79 



103 

MOV 

A ,C 

; FETCH CENTER OF UNIVERS 





10 


ORG 

1000H 

i A GOOD PLACE TU START1 

10A6 

A7 



104 

ANA 

A 

j SET FLAGS 





11 

GETCH 

EQU 

C218H 

j input routine user-written 

10A7 

C2 

4C 

10 

105 

JNZ 

GOTSTR 

; IF CENTER NOT EMPTY, NO 





12 

ECHO 

EQU 

01F4H 

; echo routine user-written 

10AA 

21 

92 

11 

106 

LXI 

H,WINMS1 

; POINT TO 1ST HALF OF UI 





13 

HOLE 

EQU 

2DH 

; A 00 T 

10AO 

CD 

32 

11 

107 

CALL 

MESAGE 

j AND PRINT WIN MESSAGE 





14 

STAR 

EQU 

2AH 

; A STAR 

10B0 

IE 

30 


108 

MVI 

E,ZERO 

i BEGIN BINARY TU DECIMA 





15 

WHY 

EQU 

59H 

; A "Y" 

10B2 

43 



109 

MOV 

B,E 

| CONVERSION BY SETTING 





16 

SPACE 

EQU 

20H 

; A SPACE 

1083 

4B 



110 

MOV 

C,E 

s REGISTERS TU (ASCII) ZE 





17 

QUE 

EQU 

51H 

; A H Q" 

10B4 

15 



111 

DCR 

D 

; GET RIO OF LAST SHOT 





18 

COLON 

EQU 

3AH 

; A : 

1005 

7A 



112 

MOV 

A ,D 

i MOVE SHUT COUNT TU A FO 





19 

ZERO 

EQU 

30H 

; A "0" 

1086 

A7 



113 

ANA 

A 

; SET FLAGS 





20 

CR 

EQU 

0DH 

; A ZERO 

10B7 

CA 

E5 10 

114 

JZ 

LSTSIG 

; IF ZERU, SKIP CONVERSIO 





21 

MESND 

EQU 

0FFH 

; END OF MESSAGE FLAG 

10BA 

3E 

3A 


115 

MVI 

A, COLON 

; SET A TO OVERFLOW COD 

1(500 

31 

EE 

12 

22 

START: 

LX I 

5P,12EEH 

; SET UP STACK PTR. 

10BC 

1C 



116 

MOROEC: INR 

E 

I COUNT UP 1 IN I'S DIGIT 

1003 

21 

25 

12 

23 


LXI 

H,TITLE 

; LOAD POINTER TO TITLE M 

1P8D 

BB 



117 

CMP 

E 

i IS IT = TO OVERFLOW? 

1006 

CD 

32 

11 

24 


CALL 

ME5AGE 

j PRINT IT 

10BE 

C2 

CB 

10 

118 

JNZ 

TALLY 

! IF NOT THEN TALLY AND C 

1009 

06 

00 


25 


MV I 

0,00H 

I INITIALIZE UNIVERSE 

10C1 

IE 

30 


119 

MVI 

£,ZERO 

( ELSE RESET I'S DIGIT T 

100B 

0E 

01 


26 


MVI 

C,01H 

; TO STARTING PATTERN 

10C3 0C 



120 

INR 

C 

; AND CARRY INTO NEXT DIG 

1000 

50 



27 


MOV 

D,U 

; CLEAR SHOT COUNTER 

10C4 

B9 



121 

CMP 

C 

| IS IT = TO OVERFLOW TOO 

100E 

14 



28 

UNIDIS: 

I NR 

D 

; INCREMENT SHOT COUNTER 

10C5 

C2 

CB 

10 

122 

JNZ 

TALLY 

J IF NUT THEN TALLY 4 CON 

i ur 

IE 

0A 


29 

UNLOOPi 

MVI 

E,0AH 

; LOOP COUNT 10 ITERATION 

10CR 

0E 

30 


123 

MVI 

C,ZERU 

; ELSE RESET MIDDLE DIGI 

1011 

10 



30 

UL00P2: 

DCR 

E 

; DECREMENT LOOP COUNTER 

10CA 

04 



124 

INR 

B 

i ANO CARHY INTO 1«!0' s 01 

1012 

CA 

9 F 

10 

31 


JZ 

WINTST 

1 IF LOOP DONE, GO TO UlIN 

10CB 

15 



125 

TALLY: DCR 

D 

| DECREMENT SCORE FOR TAC 

1015 

7B 



32 


MOV 

A ,E 

; MOVE COUNTER FOR TEST IN 

10CC 

C? 

BC 

10 

126 

JNZ 

MOROEC 

i IF NOT ZERU THEN KEEP L 

1U16 

re 



33 


CPI 

0GH 

J IS LOOP IN 4TH CYCLE? 

10CF 

78 



127 

MOV 

A ,B 

: FETCH LEADING DIGIT TO 

101(1 

CA 

3E 

10 

34 


JZ 

CRLF 

} IF SU, DO A CR/LF 

1000 

FE 

30 


120 

CPI 

ZERO 

| IS IT (ASCII) LDM1 

; IF NUT DISPLAY 3 0I6ITS 

; Yr 

; 0,SPLAY a <»'■' ‘ 

j FETCH MIUULF ol d! 

; DISPLAY 2 UL.IIS, LUI 
; FETCH I'b 

1018 

FE 

03 


35 


CPI 

03H 

| IS LOUP IN 7TH CYCLE? 

1 0D2 

C2 

DC 

10 

129 

JNZ 

THREED 

1010 

CA 

3E 

10 

36 


JZ 

CRLF 

i IF SU, 00 A CR/LF 

10D5 

79 



130 

MOV 

fl.C 

1 '.‘20 

FE 

05 


37 


CPI 

05H 

; IS IT STAR FIVE? 

1006 

FE 

35) 


131 

CPI 

ZERO 

1022 

CA 

45 

10 

30 


JZ 

TEST5 

i IF SO, SU ' SPECIAL' FET 

1008 

C2 

E2 

10 

132 

JN7 

MIDPRT 

102S 

AF 



39 

NF.D0T : 

XRA 

A 

; CLEAR CAHRY (UNO A) 

1000 

C3 

ES 

10 

133 

IMP 

iSTSir. 

1026 

70 



40 


MOV 

A ,8 

j MOVE UNIVERSE TU A 

100 E 

CD 

28 

11 

134 

TliREEO: CALL 

CUT HUT 

1027 

0F 



41 


RRC 


; ROTATE NEXT PLALE INTO 

10E1 

79 



135 

MOV 

a.i: 

1/2B 

1029 

47 

D2 

31 

10 

42 

43 

PSUDOT: 

MOV 

JNC 

B ,A 

LJAOUT 

; SAVE IT IN 8 FOR A UHIL 
; IF BLACK HOLE, UO BLACK 

IOC 7 
10F5 

CD 

70 

28 

11 

136 

137 

MIOPRT: CALL 
L5TSIG: M.V 

UUTPUT 

A,C 

102C 

3E 

2A 


44 


MVI 

A, STAR 

; ELSE LUAQ A STAR. 

10C6 

CD 

2il 

11 

138 

GALL 

UUTPUT 

; DISPLAY HLMAINING OIGIT 

1 020 

C3 

33 

10 

45 


JMP 

DOIT 

} AND PRINT IT 

1V‘E9 

21 

AC 

11 

139 

LXI 

H ,WINMS2 

( PUINT TU 2ND HALF OF UI 

1031 

3E 

2D 


46 

LOACOT: 

MVI 

A,HOLE 

; LOAD A ULALK HOLE 

10EC 

CD 

32 

11 

140 

CALL 

MESAGE 

j PRINT THE MESSAGE 

1033 

CD 

28 

11 

47 

DOIT: 

CALL 

OUTPUT 

i PRINT THE CHARACTER 

10EF 

21 

CA 

11 

141 

AGAIN: LXI 

H,AGNMES 

) POINT TO ' AGAIN7' INESSA 

1036 

3E 

20 


40 


MVI 

A,SPACE 

; LOAD A SPACE 

10F2 

CD 

32 

11 

142 

CALL 

MESAGE 

; PRINT IT 

1030 

CD 

28 

11 

49 


CALL 

OUTPUT 

; PRINT THAT, TOO 

10F5 

CD 

IB 

11 

143 

CALL 

INPUT 

; GET PLAYER'S RESPONSE 

1038 

C3 

11 

10 

50 


3MP 

UL00P2 

; CQ BACK INTO UNIVERSE P 

10F3 

FE 

59 


144 

CPI 

WHY 

j IS ANSWER 'YES'? 

103E 

3E 

00 


51 

CRLF: 

MVI 

A , CR 

1 LOAD A CARRIAGE RETURN 

10FA 

CA 

00 

10 

145 

JZ 

START 

J IF SO, DO GAME AGAIN 

1040 

CD 

29 

11 

52 


CALL 

OUTPUT 

; PRINT IT. OUTPUT SUPPLI 

10FD 

C3 

0? 

00 

146 

JMP 

0007H 

; ELSE, BALK TU KIT EXIT 

1043 

C3 

25 

10 

53 


JMP 

NEDOT 

; GO BACK ANO DO MORC UNI 

1100 A7 



147 

LOSTST: ANA 

A 

; SET FLAGS 

1046 

AF 



54 

TEST5: 

XRA 

A 

j CLEAR CARRY (AND A) 

1101 

C2 

4C 

10 

148 

JNZ 

GOTSTR 

j CONTINUE IF FRINGE NOT 

1047 

79 



55 


MOV 

A,C 

; GET POSITION FIVE STATU 

1104 

79 



149 

MOV 

A,C 

TEST CENTER POSITION 

1048 

0F 



56 


RRC 


; PUT STATUS INTO CARRY 

1105 

A7 



150 

ANA 

A 

j SET FLAGS 

1049 

C3 

29 

10 

57 


JMP 

PSUDOT 

j REJOIN MAIN ROUTINE 

1106 

C2 

4C 

10 

151 

JNZ 

GOTSTR 

1 IF CENTER NOT ZERU, GO 

104C 

21 

61 

11 

58 

GOTSTR: 

LXI 

H.URSHQT 

; POINT TO 'YOUR SHOT?' M 

1109 

21 

Efl 

11 

152 

LXI 

H.LOSTMS 

; POINT TO 'YOU LOST' MES 

104F 

CD 

32 

11 

59 


CALL 

MESAGE 

; PRINT MESSAGE 

110C CD 

32 

11 

153 

CALL 

MESAGE 

; PRINT IT 

1052 

CO 

IB 

11 

60 


CALL 

INPUT 

j GET PLAYER'S INPUT 

110F 

C3 

EF 

10 

154 

JMP 

AGAIN 

j SEE IF HE WANTS TO PLAY 

1055 

IE 09 


61 


MVI 

E,09H 

; LOOP COUNT FUR TABLE SE 

1112 

21 

01 

12 

155 

BADMOV: LXI 

H,f3ADMES 

; POINT TO 'BAD MOVE' MES 

1057 

21 

3D 

11 

62 


LXI 

H.MSKT0L 

; POINT TO THE MASK TABLE 

1115 

CD 

32 

11 

156 

CALL 

MESAGE 

} PRINT IT 

105A 

BE 



63 

NXTGRP: 

CMP 

M 

| DOES INPUT EQUAL TAOLE 

1118 

C3 

0F 

10 

157 

JMP 

UNLOOP 

i AND BACK INTO GAME 

1050 

CA 

69 

10 

64 


JZ 

FOUNO 

; IF SO, GO ALTER UNIVERS 

111B 

C5 



158 

INPUT: PUSH 

Q 

; SAVE B,C REGS. FROM MON 

105E 

ID 



65 


OCR 

E 

; OTHERWISE, DECREMENT LO 

111C 

CO 

18 

02 

159 

CALL 

omen 

i GET A CHARACTER FROM US 

10SF 

CA 

B8 

10 

66 


JZ 

INVALD 

; IF LOOP HAS ENDED, CHAR 

111F 

CD 

F 4 

01 

160 

CALL 

ECHO 

; ECHO ITI 

1062 

23 



67 


INX 

H 

; OTHERWISE INCREMENT 

1122 

59 



161 

MOV 

c,c 

J SAVE ITI 

1063 

23 



63 


I NX 

H 

; TABLE POINTER FOUR 

1123 

0E 

0D 


162 

MVI 

C ,CR 

; DO A CR/LF 

1064 

23 



69 


INX 

H 

} TIMES TO GET TO NEXT 

1125 

CD 

F 4 

01 

163 

CALL 

ECHO 

; USING THE ECHOER 

1065 

23 



70 


INX 

H 

; ENTRY 

112B 

70 



164 

MOV 

A, E 

; GET THE INPUT OACK 

1066 

C3 

5A 

10 

71 


JMP 

NXTGRP 

j THEN TEST THAT ENTRY 

1129 

Cl 



165 

POP 

B 

; RESTORE B,C REGISTERS 

1069 

23 



72 

FOUND: 

INX 

H 

; POINT TO POSITION MASK 

112A 

C9 



166 

RCT 


; THEN JUST RETURN 

106A 

7E 



73 


MOV 

A ,M 

; ANO LOAD MASK INTO A 

112B 

C5 



167 

OUTPUT: PUSH 

B 

; SAVE B,C REGISTERS FROM 

106B 

A7 



74 


ANA 

A 

; SET THE FLAGS 

112C 

4F 



168 

MOV 

6,A 

; LOAD CHARACTER TO PRINT 

106C 

C2 

78 

10 

75 


JNZ 

UNI2A 

; IF MASK NUT 0 THEN ERIN 

1120 

CD 

F 4 

01 

169 

CALL 

ECHO 

PRINT IT 

106F 

79 



76 


MOV 

A,C 

; OTHERWISE THE CENTER PO 

1130 

Cl 



170 

POP 

0 

; RESTORE 8,C REGS. 

1070 

FE 

01 


77 


CPI 

01H 

? IS STAR IN CENTER? 

1131 

C9 



171 

RET 


; THEN RETURN 

1072 

C2 

12 

11 

78 


JNZ 

BADMOV 

; IF NOT THEN IT'S A WRON 

1132 

7E 



172 

MESACE: MOV 

A,M 

; GET CHAR. FROM MEMORY 

1075 

C3 

7D 

10 

79 


JMP 

NXTBYT 

| ELSE GO PR0CE5S STAR 

1133 

FE 

FF 


173 

CPI 

MESND 

IS IT STOP CODE? 

1078 

78 



30 

UNI2A: 

MOV 

A ,B 

1 REST OF UNIVERSE TO A 

1135 

C8 



174 

RZ 


1 YES. RETURN TO CALLER 

1079 

A 6 



01 


ANA 

M 

| AND WITH MASK TO ISOl.AT 

1136 

CD 

2B 

11 

175 

CALL OUTPUT 

i NO. PRINT CHAR. 

107 A 

CA 

12 

11 

82 


JZ 

BAOMOV 

; IF NO STAR THEN WRUNG M 

1139 

23 



176 

INX 

H 

1 INC. MESSAGE POINTER 

1070 

23 



83 

NXTBYTx 

INX 

H 

j POINT TO GALAXY MASK 

113A 

C3 

32 

11 

177 

JMP 

MESAGE 

; GO BACK AND GET SOME MO 

Page 

10 




Dr. Dobb's Journal of 

Computer Calisthenics & Orthodontia, Box 

310 

, Menlo Park CA 94025 

May, 1976 


127 



1130 31 

178 

PISKTBLi 

00 

31H,|i1H,0UH,01H 

113E 01 

113F to 

1140 01 

1141 32 

179 


DO 

32H,02H,07H,00H,33H 

1142 02 

1143 07 

1144 00 

1145 33 

1146 04 

100 


DO 

04H,16H,01H,34H,0OH 

1147 16 

1148 01 

1149 34 

114A 08 

1143 29 

181 


DO 

29H,00H,35H,00H,5AH 

114C 00 

1140 35 

114E 00 

114F 5A 

1150 01 

102 


DO 

01H,3SH,10H,94H,00H 

1151 36 

1152 10 

1153 94 

1154 00 

1155 37 

103 


DO 

37H,20H,68H,01H,38H 

1156 20 

1157 68 

1150 01 

1159 36 

11SA 40 

104 


DO 

40H,0E0H,00H,39H,U0H 

1158 E0 

115C 00 

1150 39 

115E 80 

11SF 00 

105 


DO 

0O0H.01H 

1160 01 

1161 00 

106 

URSHOT; 

DO 

CR 

1162 

107 


ASC 

1 YOUR SHOT > • 

1176 FF 

108 


DO 

I1ESND 

1177 0D 

109 

HEQUIT: 

DO 

CR,CR,CR 

1178 00 

1179 00 

117A 

190 


ASC 

'YOU GIVE UP TOO EASILY' 

1190 00 

191 


DO 

CR.flESHO 

1191 FF 

1192 00 

192 

WINMSIt 

DO 

['.R.CR.r.R 

1193 0D 

1194 00 

1195 

193 


ASC 

'YOU UON 111' 

11A0 00 

194 


DO 

CR 

11A1 

195 


ASC 

'YUU FIRED ' 

11AI3 FF 

19b 


DO 

flESMD 

11AC 

197 

WINMS2i 

ASC 

' SHOTS ... BEST SCURE IS 11 ' 

11U! 00 

190 


Dii CR.rCSND 

IV 9 FF 

11CA 00 

199 

AGNMES: 

DO CR 

11CB 

200 


ASC 

'WOULD YOU LIKE TO TRY AGAIN? 1 

11E7 FF 

201 


DO 

P1ESND 

11E8 00 

202 

LOSTMS: 

DO 

CR 

11E9 

203 


ASC 

' HEYI YOU LOST THE GAME' 

11FF 00 

204 


DB 

CR,MESND 

1200 FF 

1201 0D 

205 

BAOMES: 

DB 

CR 

1202 0D 

206 


DO 

CR 

1203 

207 


ASC 

'YOU MAY ONLY SHOOT STARS, TURKEY' 

1223 00 

20e 


DO 

CR,KESKO 

1224 FF 

1225 00 

209 

TITLE: 

DB 

CR 

1226 00 

210 

00 CR. CR 

1227 PCI 

1228 

211 


ASC 

'*.*.*.* UNIZAP *.*.*.*' 

123E 00 

212 


DO 

CR, CR 


123F 

1240 213 

1240 [ID 214 

124E 215 

125C 00 216 

125D 21? 

1260 00 218 

126C 0D 
126D 00 
126E FF 


126F 

0D 

219 

BAONUK: D8 

CR 

1270 


220 

ASC 

'TYPE 1 THRU 9 ... OR "Q" TO QUIT 

1290 

0n 

221 

DO 

CR,KESND 


1291 FF 


ASC 

CO 

i 

CR 

1 2 3' 

ASC 

OB 

CR 

4 5 6 

ASC 

i 

7 8 9' 

DO 

CR, CR 

,CR,KESND 


NO EHROflS FOUND IN THIS ASSENOLV 

31CE12212512ED321106000E0150141E,'A1[JCA9r'107OFf 06CA3E1v'FE03CA3E10FE'05CA46 
10AF7Ut'F47D231133E2AE3331i.'3E2OCC2U113E2i1(:O2U11C3111v!3E,i!K:D?!111i.3?S1l’.AF79 
0FC3291,1216111CD3211UD10111E >921301 iaEEA6910ini:A inii)23232323l.3OA10237EA7 
C27F.1079FT01C21211C3701 07<>A6CA1211237i-Ar472379AE4FC3,1E10FES1E2O610217711 
CD3211E3EF10216F12003211U30F1078FEFFC2001179A7C24C10219211C032111E30434B 
1S7AA7CAE5103C3H1 C0RC2f Ullll E3 J0t‘<9C2Eu10HE3S0415C2IIC1.17UFE3CC20E1 {I79FE3*! 


C2E210C3ES10CO2O11791'.D2O117H{.D2Ii1121AC111.03211210A11003211001 Hi IFESiOAUW 
10C30790A7C24C1 (179A7C24C1021 Ell 120321103EF10210112Ol)3211O3v;F10L52O1u0.2ED 
F401590E0OCOF4l117nC1 r.9Ofi4rCOF401 Cl OU7EFEFF02CU2E1123033211311.100,.1370207 
0033041601340r:29,'035005Ai‘1361 09420372066013.. 43E00039HOO001002020202,12020 

2020594F 55522 0534. ,4F542P3E2PFF pnP0v'D594F 552 ,*,4749564520555..20544 F4F 2 P4541 
53494C590DFF0[)0P.'O594F6520S74r4E20212121,iO594f 552046495245442V!FF20534i::4F 


5453202E2E2E20424553S42,153434F52452 049532031312 00UFF0O574F554L*442v15,940 55 
204C494U452H544F2,154525920414741494E3FFF0D4li4b59212S594F562,l4C4! 53542054 
4n45204?414n450DrF 1 0OP[)594r55204D41592L , l4F4E4Oby20S34i'4F 4F5420535441 52532C 
2555455524 D45S90DF F 00,1D0D2 A2E2 A2E2A2E2 A23554E495A4150202 A2E2A2E.2A2C2A0O0D 
20202P202P20202031 20, 322033PO202P2 020202 02P2P20342;i352036,-0202020202 ,'2020 
2020372 03n2S'390Oi'O0DFF0O54595S45203120544,152 S5203921J2E2E2E204F5220225122 


SYMBOL 

TABLE 



NAME 

VALUE 



GETCH 

0218 

NXTBYT 

1070 

ECHO 

01F4 

IN’JALD 

i ooa 

HOLE 

0020 

NOTVAL 

1 $96 

STAR 

002A 

WINTST 

1 V»9F 

WHY 

0059 

MORDEC 

ivioc 

SPACE 

0020 

TALLY 

1 $C8 

QliE 

0051 

THREED 

1 COE 

COLON 

003A 

MIDPRT 

1$E2 

ZERO 

0030 

LSTSIG 

1 viC 5 

CR 

0000 

AGAIN 

IV'EF 

MESND 

00FF 

LOSTST 

11 $0 

START 

1000 

BA0P1GU 

1112 

UNIOIS 

100E 

INPUT 

1110 

L'NLOOP 

1 00F 

OUTPUT 

1120 

UL00P2 

1011 

MESAGE 

1132 

NEDOT 

1025 

P1SKTBL 

1130 

PSUOOT 

1029 

URSHOT 

1161 

LOADOT 

1031 

HEOUIT 

1177 

OOIT 

1033 

WINKS1 

1192 

CRLF 

103E 

UINKS2 

11 AC 

TE5T5 

1046 

AGNfCS 

11 CA 

GOTSTR 

1 04 C 

LQSTP1S 

11E8 

NXTGRP 

105A 

BADMES 

1201 

FOUND 

1069 

TITLE 

1225 

UNI2A 

1078 

BADNUM 

126F 


Note that the assembler doesn’t calculate the ‘ASC’ values in 
the listing-but leaves space for them. The hex dump has the 
ASCII in it. Prog, requires less than 700 bytes. The 11 step 
solution is 5,2,1,8,5,3,2,7,9,8,5 



May, 1976 


Dr. Dobb's Journal of Computet Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


Page 11 


128 






























Palo Alto Tiny BASIC 


by Li-Chen Wang 

Within the first five issues of Dr. Dobb’s Journal we have 
published complete details and listings of four versions of Tiny 
BASIC: 

Jan. & Feb., 1976: Whipple's 8s Arnold's Tiny BASIC 
Extended (TBX) 

March, 1976: Greeb's Denver Tiny BASIC 

April, 1976: Mueller's MINOL 

May, 1976 (now): Wang's Palo Alto Tiny BASIC 

All of these have been for 8080's. We think this is 
enough for the 8080, at least for the time being. Therefore, 
we will publish no more 8080 versions unless they have some 
very unusual or valuable features, for instance: 
floating point package (well documented) 
comprehensive string & substring operators 
well-designed graphics/display interface & commands 


complete interface & commands for mass storage 
significant program & variables editing features 
extensive package of interest built-in functions 
full BASIC capabilities in under two kilobytes 

We are very interested, however, in publishing complete 
information on some versions of Tiny BASIC for the many 
other microprocessors, for example: 

8008 PACE 6502 

6800 SC/MP ETC. 

Also, as you read through the articles on the first four 
implementations, you should see better ways to do things, 
features that can easily be added, improvements that are 
possible in the documentation, etc. We hope you will imple¬ 
ment those, as you note them; write them up, and forward 
them for publication in the Journal as enhancements to these 
four Tiny BASIC dialects. --Jim Warren, Jr., Editor 


r~ 

V D 

r~ 

CN 


O' 

w o 

•H ^ O 
43 H P 
• 4J o 43 

kj a 4J 

4-1 © 

Jl o s o 

tD 

0 0 © 


* a 
«—■ 

© P 
> CD 
•H O 

to p 
0 cu 

rH 

U © 
0 43 
*H 4-* 



to 

0 I 

The 

ept 

hen 

he 

rH 


O 

O 4-» +» 

X id 

s> 

•H 

H 

II (0 O 

— o 

4J 0 

• d) M 

X +> -H O 

• P 

U fd 

0 0 <D 0) 

O CD 

10 

a 

O •» id +> Si 

44 (d O 0 

© 4-1 

0 + 

•H 4-* rH 

•H rH (D 

W -H 

4-1 

Ui 43 *. id P 

14 © 

<d 


W CM (d 

\o o (d > 

O O 

rp • 

© «H O U 

in -m 4- 1 


P 
< 1 ) 

© © id 


st id <D © 
U M Si 




ro 


O O 43 • 










* B 




43 

X 0 

cd nd 

p 



W CO 

O <D «H 





M*H+> ® 



>1 







4 O d 



44 

Q> 44 


0 



X CD 

44 CU rH U 



0 


43 V) • 



X S3 







a) to 

P 



CO 


4- 10 

44 



£ A 

O 0) 



id 


44 0 H 









42 

id 



<P P 

P 44 

P 

id 



« 

* CO S3 



43 


a) rH w 



r0 







0 




rH 0) 

Id 44 

P 

p 



E-4 w 

X C 44 B 



44 


b <d 



0 O 







Q) *H 

a> 



42 <P 

0) 

<y a) 

0) 



2 4- 

A ■* O 0 








(d W 






• 

P 

p 



id » 

44 rH ^3 42 

cu 



M 

x r (d P 



to 


W>d<w • 



P 







rH »P 




•H 44 

O 

44 

0 



03 ID 




10 


U OB 



a 






a> 

id <P 

44 



p a) 

S 

0 



CD 

Cu in 

«4H <D M & 



© 


a> © n3 



• 0 






u • 

> 5 




id 42 

CD O 

rp to 

0) 


CD 

A 

•H 43 O O 



rH 


d Q> U 



X CJ 






Id r- 

O 

44 



> 

P P 

P rH 

p 


r- 

r- « 

44 44 rO 





44 H W CD 



a) 4 J 






cu o> 

id rH 

•H 



to 

•H 44 

id id 

id 

• * 

* 

ro w 

CO id P 



© 


© 0 o 



M4 0) M4 






B H 

rH 




* p 

P 


CU CD 


A + 

CN * p id 



S3 


rH M 



O 55 <D 






0 (d 

P id 

T*~ 



to 0 

P »tH 

* 0 

s 

rH 

X 

> — 

O © P 





• a) a. 



44 r-4 






u a. 

►H 




p 44 

•H 0) 

44 id 

0 

cu 

V 

w in 

CM C\ 



-P 


— 



a) a) 






w 0 

O 

id 



0) Id 

CD 4J 

to U 

0 

E 

X 

* r- 

O O id 



w 


42 M fd © • 



P S3 (/) 

w 





0 

44 (0 




42 P 

0) id 

p 


id 


r— A 

44 44 



0 


w B 43 3r 



rH a) 






0 0 

rH rH 

p 



e cu 

42 P 

•H 10 

4J 

w 

4- 

CD 03 

PS© 

w 


a 


(8 44 o 



Id M 44 

O 



• 


• 44 W 

p <d 

•rl 



G CU 

rH 

4h a> 

id 

a) 

VD 

CD w 

44 a> 4 - ds 

C2> 




0) o «H 



> 0 >1 

44 






to 




P O 

a> id 

to 

43 


m 

V 4- 

©sc 



*3 


4J 44 © 



S3 S3 

ed 



Q) 


0) rH O 

0 ) to 

44 




J3 > 

a> a> 

44 

p 


C? r-. 

to © rH 

P 


p 


O id 42 42 



0) E 

H 



M • 


H id 44 

M -H 

rH 



43 <D 

44 0) 

p 43 


0 

* 

no 

44 © rH 

O 


id 


p P 



4 J P *44 

0) 



id .— 

• 

rd P 


P 



4J P 


0 44 

<D 


r-. 

* A 

© Id 43 -H 

2 




0) 14 r-4 ncJ d 



P c 0 

04 



a. 0 


CU CD rH 

to 00 

to 



*H id 

44 to 

nd p 

44 


X 

^ 03 

-Q 44 4’ 5 



to 


T1 itl rl Q) O 



rH 

O 



e P 

0) 

B W «d 

0 V£> 

<P 



3 * a. 

id tH 

(!) 

O 


II 

> ^ 

to 

»H 


P 


flJ W-H 



O S M 




O id 

14 

O P 

0 r- 

M 



B 


10 P 

JZ 

• 

X A II 

rH X 



© 


m <p u 3 +j 


• • 

mow 

CP 



u cu 

id 

O O CD 

•rH nj 




d od q 

>•* id 


p 

*—* 


rH P 0 

M 


CD 


© rH -h p u 


U) S TD S 

14 



w s 

Cu 

w 0 a> 

m 

to 



a) u 

0) O 

id Pj 


0 

+ 


•H M id *» 

tn 


© 


rH CD 44 a a 


0 

«d 0 a 

id 



0 

B 


id 1 

M 



e 

W -H 

& 

• 

•rH 

CO 

4- «* 

as 0 

E-* 


44 


S3 0 id 0 


O 

<d p 

O. 



P u 

O 

0 0 u 

u w 

O 



p 'P 

P t0 rH 

p 

to 

CM 

r. 

tt.ro 



c 


Id -H E 44 44 


•H 

(!) $4 P 

a 



id ' 

U 

44 id 0 

0) 

44 



0 p 

to 

id • 

0 

to 

t— 

(N O 

• 0 



*H 


•rl 10 O *P 


44 

-p 

0 



43 


43 

cu . 

id 



44 id 

a> <d 

to 

•H 

a) 

* 

V O 

X 2 44 





P 44 <1) £3 


O 

44 ,td a) 

0 

• • 


44 0 


H 44 c3 

0 r- 

M 




42 P 

<D P 

44 

p 


> 

* V 0 



(!) 


R) (0 3H N 


P 

s 


X.4J 


id 

O 

id id 

ID 

<P 



<D U 

CU p 0 

id 

cu 

X 


OX © 



M 


> Id H 


0 

W W 44 

»p 

• rH O 


U 43 

4J 

p O 43 

V r« 

Cu 



P 

0 x 

id 44 

P 

X 

A 

* O 

<r- rH 0 



id 


O W W 


44 

a< 0 

0 

<]> O id 


a> 44 


CD <P 44 

CM 

O 



id 44 

to 0 ) 

id 

rH 

0) 

X 

2 

(p id © 





vO (/} 44 »H 



> w 

id 

d>H U 


44 

t —( 

QJ 44 

rcJ m 




0) rH 

V p 

id 


w 

r- 03 

44 *H U 44 



tfl 


mh <j) a> 


• ro 

•H H Q) 


•H 44 44 

• 

id to 

id 

Id w 

0 

<D 


to 

W E 

id p 

W 

> 

>i 

II 

II II 

P H «3 



14 


id w 44 a) 



CD CD > 

O 

> rH 42 

'p 

(p to 

P 

44 0 ) 10 

id nd 

U 


p 

0 43 

id 

nd CU 

a> 

0 


P P3 

© O' CD 44 



a? 

10 

© id U) 

to 

© 

•H 

•H 

•rH P P 


M (P 

CD 0 H a> 

p 

id 


0 

O 44 

P 

P O 


id 


w 

B CD O 10 



S3 

cu 

P 10 10 43 

p 

P 

— CD 

44 

s m 

id 

CD rH 

CD 

G CD rH 

id 

cu 


•rH 

•rH *H 

Id 44 

id 

4J 


E-f 

Fh 

© rH 


(0 

e 

»—i 

fd *H »H 44 % 

0 

id 

X x 

a' 






* 

B 


to 

10 p 

u 0 

( 1 ) 

0 

0 

PH 

P-i PH 

44 0 


14 

p 

42 

CM 

•H 


^ —w 

B 






r- 

O 


to 

10 id 


* P 



H 

M PI 

id O id H 


d> 

P 

id 

© 0 > . © V 

44 

© 

CO Q CO 

43 





II II 

«. 10 

O 

• 

a> 

a) 

to (D 

id 

P 




44 44 


Si 


•H 

*4 P id U W 

u 

(4 

CQ ^ M 

44 

\ # 1 

4- 

> 

< 

II 

A V 

1 r 


0) 

p 

P 43 

P P 

44 a. 

<D rQ 

O 

O O 

to © 


G 

rH 

0 

© © 14 (d to 

p 

0) 

<«d te V) 

•H 






CM rH 

P 

CU 

CU +J 

tD H 

id b 

rp 



cm ro 

T) ^ • 


0 

r*4 

(T? 

4J X U CUM 

p 

42 








^ 0 ; 

rH 

P 

K 

X -rH 

•H Id 43 O 

P 

to 



C* P *H 03 


2 

icd 

> 

Id W (O 


E4 


f«S! 






4- I 


44 

W 

w > 

to > 

44 O 

O 

P 



H id rH O 


Page 12 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia.. Box 310, Menlo Park CA 94025 


May, 1976 


129 



and 4 with a prescribed probability distribution of: 3% of concatenation are not shown in the examples, 
being 0, 15-3=12% of being 1, 56-15=41% of being 2, 

98-56=42% of being 3, and 100-98=2% of being 4. REM or REMARK Command 



VO 

p t- 

Ul 



* 

o «- 

X 

MOW 


in 



Q) P ui 


1 

0 0 

T— 

x a> 


£* 

x a 

o 

P t> X 


ro 

iJH ai 

r— 

0) 


(N 

fd X 


X 0 * 



> X 

x 

3 X G 



O <d 

G 

XI id 


O 

0 X 

<d 

g x 


•H 

<D X X 


O X P 


Ui 

g p <d 

Oh 

X 


U) 

r-f > 

4- 

tr* td X 


0 

(TJ O 

X 

a > a) 


X 

> P 0 


X P 


eu 

X 

G 

x 0 id 


K 

a) x p 

O 

P X <D 


0) 

x 

X 

0 P X 



p 0 p 

Ul 

CQ tr* 


0 

rH a> 

Ul 

<D P 


X 

o x ui 

0 

X a> ui 

T— 

P 

p td 

X 

Ul X 

I 


•H CJ 

CQ 

o 

c 

P 

— l-l <D 

X 

x 

II 

O 


a) 

X G 



X > P 


O id X 

cr* 

0 

td 

0 

0 

+ 

g 

cr* a> *0 

x 

r- **X 


X r-t ttf x: C 4-> to *> 



• 



id 

W +J Ifl 


• 


U 0 




X 


(B 

> 


P 



0 o X 




CQ 




<C P * 

O 

r— 


X P ^ 




Eh 


*. 

0 

0 


t 


p 






o 

X 

0 Ul CM 

0 

*e 


•H rH G 






o 

p 

rH 

G 



0 id O 




XI 


r~ 


X * * rH 

G 

* 

G 






1 

o 

(0 —. • 

(d 

o 


O td cr* 




X 


fG 

p 

•H CM 0 

> X 

CQ 

X 0 « 




a> 


II 


x o • 


w 

V 

•H 




X 


X 

•ce 

(d -pH 

0 

W 

»te 

D W 'O 




o 




> W 

X 

0 

»—* 

•H G 




c 


% 

0 


P 

M 

4 

0 0 




Cr* 


CM 

rH 

a* • o 


a. 

X 

p-H U CQ • 




X 


\ 

XI 

X 0 o 

ui 

X 

* 

X O 0 CQ 






*£ 

id 

p • 1- 

mH 

0 

___ 

fd 



U) 

Q) 


li 

•H 

•H 1 



CQ 

•HO O 



0> 

XI 


«< 

X 

P w 

T— 

0 

A 

M P O P 



O 




ai 

0 

T~ 

X 

«e 

<d 



Cr- 

rH 


% 

> 

Ul CM G 


p 

w 

>H HH 




rH 


VO 


\ O 

0 


ll 

id o «i 



tr 

•pH 


* 

0 

•b f=e *rH 

M 

m 

> 

0 G C3 

G 


G 

3 

*0 

in 

X 

— Ul 

0 

o 


je Cd >4 tr 

(d 


•*H 


G 

i 

P 

G- G Ul 

X 


% 

P 0 0 

e 


XX 

0 

fd 

G 


O O 0 


0 

CQ 

% 

B 


p 

G 

E 

m 

P 

CM *H U 

w ' 

G 

4*: 

P P X u 

o 



•rH 

B 

CM 

0J 

ui a. 


rH 


0 o o 

u 


G 

rH 

O 

ll 

ui 

* w X 

T- 

(d 

II 

W G M 



id 


u 

*e 


• 0 0 

o 

> 


0 * 

EH 

Eh 


Ul 



rH 

0 X 

T— 



*H W X G 


E 

El 

•pH 

X 

E-i 

rH 

. CQ 0 


0 

EH 

H *H P (d 

Xi 

H 

W 

X 

w 

W 

•pH 

X X X 

o 

X 

CQ 

•H mH X 

cc 

CQ 

P-. 

E- 

XI 

X 

3 

w 0 P 

p 

p 

XI 

> re 0 P 

P4 

04 







G 






•> 

• 



0 



0 


<d 






U 

Ul 

o 


X 



X 


O 



Ul 




0 

p 


P 



P 

% 




*H 



P 

U 







- 

Ul 



0 U 



0 

<d 

0 


G 



% 


0 



0X0 




CQ G 


O 





P 



X p X 



Ul 

Ul X Ul 





X 

CQ 

o 



0 p 



0 


(d 0 





o 

U 

G 



X U) o 



G O 

> o 


Cu 



ro 


cr 



P 0 G 



X 

r* 

td 


XI 



z 


• 


rH 0 



td 


G CQ 





% 


0 *0 


P X 



> 

G 

0 Ul 





• 

D*pH 

0 


td td X 




•H 

> 





0 

G X X 


X C P 



0 


X X 


Q) 




•H 

G 

0 


P 0 *H 



X 

O 

Cr* Cr* 


0 



•H 

M 

O P 


3» 



p 


G 


P 



W- 

P 


td 


p Ul 




X 

td O 


1 




W 


E 


CQ*H 0 




G 

G 


<d 



r~ 


w 



0 X G 



Ul 

td 

X 0 


G 



+ 

0 

o 

0 


0 X H 



0 


o 


•H 



ro x 


X 


X rH 



u 

Pm P X 


rH 



* 

P 

0 



0 



td 


p 





«< 


pH 

P 


• 0 



CQ p 

X x 


(d 





cr* w 


B 



Ul 

O 

0 > 





G 

G 

G 

G 


0 0 td 





X 


'G 



O 

td 

•H 

B 


X P Ul 



VO 


P rO 


G 



•H 


Ul 


* 

O G 




Ul X 0 


td 



W 

% 


Ul 

• 

P *H 0 



G 

0 

U P 




W 

s 

X 

X 


0 X X 


o 

•H 

G 

0 G 





0 4# 

0 

•H 

*< 

X CQ P 




X 

CQ X 


CQ 


CQ 

M 

(Q X 

<d 

CQ 



*» 

PQ 

td 

Ul X 


u 


U 

CQ 

r» 

P 

CQ 

u 

U) Ul G 


P-. 


> 

CQ 





X 


•H 



id H O 





Ul 




■B 

0 

ro 

0 

p 




% 

G 

0 

0 0 


G 




CM 


G 


p s d* 


o 

td X 

O X 


M 


% 

0 

r- 

P 

X 

*» 

G 0 G 




P 

td 


G 



X 


id 


z 

X.P *H 


4 * 

C 


CQ X 


P 



P 

u 

X 

% 

4*: 

P -H P 




rV 

u; x 


0 


re 


CQ 

p 

U) 

CQ 

G G 


* 

P 

G 

X 


U 



4H 

«re 


Cr* 

«• 

O P *H 


W 

O 

td X » 


i 



o 

r 

0 

G 


U) X 





a* 


0 


m 



P 

•H 

m 

0 td CQ 


% 

Ul 

«. 

G 0 


Cr* 


CM 

0 

W 

o 

X 

CM 

S X 


Q 

0 

Ul 

O G 


(d 



G 

U 

JZ 

P 

r- 

id 0 



G 

0 

G X 


•H 



pH 

0 


U) 


ui a) g 


* 

rH 

o 

0 td 


M 


u 

td 

P 

• 


o 

X G 


U 

<d 

td 

> 


I-l 


CQ 

> 

u 

CQ 

0 

CQ 

0 P *H 



> 

CQ p 


<d 


re 


td 

X 

P 

p=C 

X P 


% 


Ul 

O 0 


o 

• 

5 

0 

X 

1 

o 

z 

4 J X G 


m 

0 


G X 



0 


X 

td 

CQ 

G 


0 O 


4 * 

X 

ro 

P 


td 

o 

% 

P 

X 

(J 

Cr 

*. 

0 P U 



p 


0 



•H 

r— 


o 



r- 

0 P 


* 


G 

X * 


0 

> 

4- 

P 


<d 

O 

4- 

G (d o 


03 

p 

X 

(0 


W 

0 

fp) 

G 

p 


P 

m 

P 



G 


0 


G rc 

* 

•H 

o 

G 


* 

O Cq 

• 

« 

•H 

w 

0 P 


td 


icC 

In 


0 

»o 


X X B 

£ 

rt 

X 


X G 

• 

U P 


CQ tr*X 

0 


CQ * td 

Eh 


cQ^a 

0 X 



G 

E-* 


G 

P 

Ul 

Eh 

CQ X 

X 

X 


G X X 

<d 

rH 

Cu 


rH 

•H 


G 

5Z 

rH (J CT* XI 


X 

<d 

P CQ 3 

rH 

P 

XI 

rH 

X fO 


XI 

X o 

CQ 

H 

X 




•H 

G 

CQ 

•rH 

p 

G 

0 

CQ 

•H O X 

CQ 

CQ 

•H 


P 0 

G 

> 

O 

CQ 

> 

w 

<d 

X 

CQ 

> G CQ 

£ 

CQ 

> 

o 

H X 

td 



*o 











0 











Ul 


P 









G 


Ul 









P 


0 









U 0 


3 


• 







0 X 


O 


X 


X 





X 


X 


0 


0 





X 






X 





<0 rl •• 


0 


X 


X 





G P 


X 


o 


o 





Ul O G 


p 









(d 0 




X 


X 





G S 


p 


id 


id 





d id Q) 


id 


o 


o 





0 O P 




•H 


X 





ui td 


CT* 


X 


X 





G SHP 


G 


0 


0 





0 Ul 


X 


s 


B 





0 X 


p 


G 


G 





x p id 


X 


G 


G 







td 









G -p 


p 


G 


G 





Id 0 O 


Ul 


X 


•H 





O 0 











X P 


B 


Ul 


W 





XXX 


td 


0 


0 





0 p td 


X 


p 


P 





P CQ 


Cr* 


G 


G 





td cr* 


O 


0 


0 





X G w 


X 


B 


B 





x td 


CQ 


P 


P 


• 



r O 3 




<d 


td • 


Ul 



0 O p 


0 


P 


P o 


P 



X x o 


X 


U) 


Ul CM 


G 



X X G 


P 




V— 


0 

Ul 


X O 




0 


0 


B 

X 


U P X 


0 


X 


X P 


0 

G 


Ul G 


P 


p 


P G 


P 

<d 


0 0 id 


G 




0 


id 

X 


f O X 


O 


X 


X s 


p 

X 


P *o 


0 ® 


» — 1 


X 0 


Ul 



W G 


X X 


id 


id p 



X 

Ul 

p td 


0 0 




id 


X 

G 

X 

G CQ S 


X 


P 


p p 


X 

td 

G 

id 0 b 


O B 


G 


G U) 


td 


<d 

BOO 


P G 


O 


o 



G 

B 

E W O 


G 




p 


0 

o 

B 

O 0 


P 


P 


p id 


P 

X 

O 

O P 


X P 


G 


G 


0 

p 

o 

Ul o 


id G 


X 

o 

X CT* 


X 

id 


did 


P 0 


X 

CM 

X G 


0 

•H 

p 

X G X 


Ul B 


CQ 

T— 

CQ X 


nzJ 

> 

o 

p <d x 


0 




P 



0 

0 

B rxj 


X P 

EH 

X 

EH 

X X 


X 

X 

X 

X B 

S5 

x id 

Ul 

X 

CO 

X Id 

3 

X 

X 

•rH 

X o W 

E5 

X P 

M 

X 

M 

X P 

W 

X 

X 

Q 

«< O (d 

CQ 

3 Ul 

X 

3 

X 

3 W 

IS 

3 

«ec 


£h 





X 









**d 






0 





<d 









G 




















td 








Ul 


Eh 

X 










0 





nd 

• 

0 


W 

o 









T- 

X 





G 

w 

B 

TTJ 

X 

p 




IS 






p 


P 



id 

X 

td 

G 






CQ 





G 



Ul 



B 

G 

G 

id 

G 

G 


O 


CD 

CQ 




0 

G 


id 



B 

td 



X 

O 


Eh 

Dc 

EH 

W 




0 

•X 


X 



O 

X 

G 

* 


•H 


O 

W 

W 

Eh 




3 






o 

X 

o 

z 

EH 

P 


15 

55 

CQ 

in 




P 

Ul 

# 

0 





X 


W 

td 


II 

II 

II 

ll 




0 

•a 

£ 

X 



e» 

•V 

P 

H 

X 

X 


• 

• 

• 

• 




X 

G 

• * 

P 



Ul 

0 

O 

CQ 


> 


o 

55 

CQ 

in 





td 

£ 




X 

X 

G 

CQ 


0 









P 

B 


0 



0 


G 

z 

X 

X 









o 

S 

G 

X 



X 

0 

P 


o 

X 










o 

O 




B 

X 


% 

3 

X 









X 

CJ 

X 

p 



G 

s 

*0 

s 


td 









0 


O 

U2 



G 

0 

G 


0 



CQ 


fcQ 





X 


o 

G 





td 

CQ 

X 

£ 


D 


CQ 





B 

• 

1 

B 



P 

0 


P-4 

p 

P 


CO 


*e 





G 

Ul 

X 




td 

> 

Ul 

z 


U) 


o 

£h 

E 

w 




G 


E 

Ul 



X 

td 



o 

0 


u 

io 

W 

CM 





G 

0 




p 

X 

X 

* 

Ul 

p 


II 

H 

CQ 

H 




P 

td 

Ul 

G 





o 

s 

X 

X 


• 

X 

II 

in 




C 

s 


td 



p 

p 

3 

• 


o 


CO 

II 

£1 

ii 




0 

B 

td 

s 



CQ 

o 


CQ 


X 


o 

• 

W 

■ 




B 

o 


E 



0 

G 

0 

£ 


Ul 


o 

X 

CQ 

in 




0 

O 

Ch 

O 

• 


U 


M 


• 

£ 









P 


X 

O 

P 


X 

G 



E 










td 

0 



G 


0 

td 

•o 

• 

EH 

0 









p 

X 

03 

£ 

0 



0 

G 

Td 

5S 

X 









Ul 

o 

0 

55 

B 


e> 


td 

O 

H 

Eh 










B 

P 

CQ 

0 


>-t 

Ul 

B 

•H 

CQ 










td 


td 

D 

P 


X 

0 

B 

X 

CQ 


• • 


CH 







X 

X 

EH 

id 


0 

s 

o 

0 

z 

• 

Ul 


CD 

Eh 





p 

o 

td 

W 

P 


0 

cd 

o 

CQ 


nd 

3 


CQ 

IS 





o 


04 

CQ 

Ul 


X 

G 



X 

0 

o 

CQ 

55 

H 

25 





0 

0 

£ 



4H 


X 

cd 

o 

P 

X 

O 

M 

CQ 

P 

O 



Ul 

G 

Ul 


G 



G 

X 


p 

P 

X 

(Q 

II 

CQ 

CQ 

Eh 



p 

o 


X 

0 


Ul 

O 

id 

>1 


•H 

c 

II 

• 

II 

II 

II 



U) 


0 

G 

> 



X 


X 

fD 

B 

p 

• 

5S 

• 

• 

O 



•H 

>H 

X 

id 

X 


G 

p 

<J> 


G 

o 


Cm 

H 

CQ 

CQ 

Eh 



Ul 

X 

id 


Cr* 


id 

0 

p 

B 

<d 


Ul 








G 



«• 



X 

G 

<d 

0 

P 

0 

td 








O 


H~ 

£ 



X 

G 

o 

X 

Ul 

X 







EH 


o 

0 

G 

CQ 

G 



4H 

G 

P 



0 






w 



3 

0 

O 

id 


0 


G 


X 

G 

X 






X 


p 

o 

B 

EH 



Ul 

H3 

X 

3 

X 

id 

td 







Ul 

G 

X 

0 

tn 

G 


G 

G 

P 

O 

id 

O 







II 

P 

0 

X 

P 

£ 

X 



td 


rH 



U) 







G 

S 

o 

td 



Ui 

>. 


>i 

X 

£ 

nd 

nd 



EH 


CQ 

nd 

0 

0 

p 

P 

* 

X 

X 

id 

a. 

id 

o 

• 

G 

X 

IT) 


X 

O 

O 

0 

B 

P 


Ul 

£ 

G 

G 

s 

Ul 

B 

p 

E 

rd 

o 

CQ 

CQ 

W 

55 

£h 

•H 

0 

td 

r- 


O 

<d 

id 


•G 



H 

E 

3 

C 

M 

X 

CQ 

in 

X 

4-' 

p 

VO 

0 

X 

B 

B 

G 

X 

G 

X 

CQ 

B 

>. 

II 

II 

II 

II 

it 

CQ 

id 

Ul 

r- 

E 

o 

B 

B 

o 

o 

O 

G 

CL 

O 

0 

• 

Cm 

• 

• 

• 

B 

p 


CM 

td 

o 

O 

O 


3 

>- 

id 

£ 

o 


*e 

M 

55 

CQ 

in 

X 

in 


ro 

Ul 

£ 

O 

U 


.May, 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


Page 13 


130 


Tiny Basic commands are listed- below with examples. Remember print 1 ABC'’XXX• 
that cammands can be concatenated with semi-colons. In order 

to store the statement, you must also have a statement number will print the string "ABC", a CR without a LF, and then the 
in front of the commands. The statement number and the 




P 

rH 


P 

X 

p 

m 



w 

CL 

P 

© 

© 


© 

w 


3 

© 


to 

EK 

3 

3) 

• 


nd 

W 

© 

W 

P 

nd 

P 

SB 


O 

> 


3 


U 

in 

nd 


G 

EH 

W 

© 

a> 

G 




© 



B 


© 

o 

© 


© 

CO 


P 

XJ 

© 

O 

© 


X 

© 



• 

X 

CD 

p 


6 


W 

CL 

B 


w 



© 

P 


nd 

PC 

© 


© 

• 

S 

CQ 

•H 

X 

© 

P 

rH 

H 


P 


G 

U 


p 


© 

o 

* 


© 

fi 

© 

© 

•H 


© 



© 


© 

G 

G 

o 

u 

ro 

X 


© 

P 


P 


p 

B 


B 

© 

p 

© 


© 




a> 

P 

E 

© 

G 

CQ 

p 

o 


B 


p 

U 

© 

CL 

Eh 

O 

© 

p 


3 

P 

3 

+ 


p 


O 



© 

P 

© 

X 

Eh 

H 

p 

© 

G 

© 


O 

© 

4H 


o 

P 

© 

P 



W 


P 


P 



>. 

T— 

to 





to 


G 

P 

55 

r~ 

© 

MH 

© 

P 

P 

© 

* 

3 

nd 


5s 

nH 

3 

P 

© 

o 


X 

•H 

O 


G 

G 

:* 


© 

© 


Ol 

© 

© 

© 

O 

© 

nd 


P 


T~ 

© 

© 



o 

P 

5s 

CD 

> 

o 

o 


p 

G 

II 

© 

© 

1 

E 

S 

rH 

ex 

3 

CL 

EH 

o 


B 

CQ 

© 

© 

X 

> 

© 

u 

© 

© 

© 

ED 

H 

CL 

D 

P-1 

rH 

H 


£> 





3 


P 

P 

e 

in 

H 

B 

E-< 

PL 

f-H 

rH 

© 

in 

© 

PL 

CL 

© 

rH 

nd 

© 

© 

p 

O 

•H 

O 

f*3 


o 

•rl 

P 

O 

p 

O 

o 

P 

© 

G 

P 

P 

o 

O 

> 

U 

C5 

X 

p 

a 

P 

u 

p 


Cl 

Eh 

> 

© 

© 

W 

G 



G 


nd *h 

W 

G x> a« 

© 

©•HO 


H 

W 

P v rH 

P 

G nd O 

G 

© © P 

© 

B P 

B 

© © nd 

© 

PPG 

P 

© G © 

© • 

P 3 B 

P CQ 

©OB 

W X 

U O 

O 

©GO 

P T“ 

© 

G * 

G © 

© *33 

•H CO P 

P 

•H P 

© G 

nd 

4H O 

G nd o 

<P «H 

© G P 

•H W 

B © 

nd © 

BSP 

© 

0 B U 

O P 

U O © 

p CL 

O XI 

X 

P 

CL © 

W 55 CL 


B 

3 © 
*r~' x 
P 

o 

P P 

o 

g 

O Q> 

•H 3 


►< 

X 

n3 

© 

O 


nd 

G 

© 

B 

B 

O 

u 

E-i 

3 

cl 

ss 


© 3 
rH 3 3 
Eh t- 
0) w 
X 3 o 
P P 
© 


<l) 

x 


>1 

X 


G 

o 

rd 

0) 

p 


CP 

G 

*H 

P 

CO 

0) 

G 

P 

O 

X 

P 

a. 

© 

nd 

CP 
X 
Eh 


a> ® 

X * 

Eh ro © © 

X X 

P P 

• to 

«— © © 

+ > X 
*S rH P 
(P 

G CO * 

O B X 

•H © 

w,c ai 

CO P rH 

(P Xi 
P CO © 

3 c5 *H 
X O G 
© *H © 

CO > 

<p co co g 

X <D © -H o 

P U X G -H 
ft+J +J +> 
p x © 

O <P »M 4-1 o <P 


G CO 
•H CP 
X © 

P G 
►H »H 
& p 
G 

nd o 

G U 
(d * 
E G nd 
B CP CP 
OJ3 M 
UP (D 
P 
G 
© 
O 
O 
G 


nd <P 
U X 
O P 

<P 
cp 'H 
X 

Eh nd 
© 
P 

• P 

O -H 
P B 
© O 
N 

© 

G X 

© 

> G 
© <d 
U 
P 

O P 


P 

CO 

o 

B 

© 

X 

P 


© 

G 


© 

G 
© 
X 
CO sc 


<P 

o 


P 

O 3 • 

O O 
P 3 P 
© 


co nd 
•H G 
X © 
S 
B 
O 
H U 


B • 
H P 


X P 
P fd t>N > 

x nd x 

rG P © O nd 
P Aipfl (1) 

•H O © M 

5 © © P > 

© x © © 

nd p O to to 

© Cn 

•x (d to © G 

I X o 


a 

© 3 

p o © 

p 3 X ' 

G PH U © 
U © © CO 

x x: © x P 

CO P P . X P -H 

P *H nd P 


U 


G 

© O • 

B P • 

S 

O .X 

© u o 

D, fd 
BKO 
O O CO EH 
U P. CL -h X 
s w 


© nd 
1 nd G 
© 
co a 

B 
G O 

o u 


nd 

rl 
rH O 
>1 o 
Xi P © 

p x 

>H G P 
O 

u ** 

nd 

© © 
B P 
*d © 
co P 
G 

© 
p 


G 

O 

nd 

© 

P 


I 

nd *H 
G B 
© © 
B (0 


G 
O 

o 

G 

CO X! © 
•H P 
•H (0 
t7» at *H 
c 

•H nd nd 
P G G 
CO © 


© 


p p 
H 
nd 
G 
© 


© 

P 

Cr> 

o 

p 

CL 

© 

X 

p 




o o © 


•H 

© 

p 


•H G 

© 3 © 25 

© 

B B 

H 

P 

© 

© 

X 

w 

© 

p 

o 

W rH 

© © 

P T"‘vH 

G 

s s 

H 

O 

3 

P 

Q> G W 

•H 

> CJi 

0 

G 

O H 

W P 

P P © 


0 0 

© 


H 

P 

6 O 


•H G 



Cl P 

© P 

rH p p 

4-J 

o u 

0 

G 

© 


© *H 

nd 

p *H 

w 

o 

5K 

P 

rH P 

O 


•H 

O 

> 

P 

G P • 

G 

© at 

•H 

nd 

X’ 

CL © 

X -H »P 


K K 

P 

•H 


O 

•h nd 

© 

cn O 



G © 

X -H 

J H D 1 

P 

O O 

© 

P 

© 

G 

© © © 

B 

© rH 



© rH 

© 

nd G 

P 

Cl Cl 

B 

3 

P 


X O P 

B 

G rH 

X 

© 

U X 

© 

©P! -H 

CL 


O 

U 

P 


E-i CL © 

O 

o 

■ 

P 

QJ © 

CL C3 

> O • > 

© 

> nd 

P 

© 


W 

X 

U 

*tp 


p 

P -H 

W rH 

© *H nd O 

nd 

© H 

3 

X 


o © 
o 

>1 
P XJ 
CO 

• © nd 

© rH © 

U S» 
•H © O 
> X rH 
© P rH 
nd O 
© 4H 
P XI 
G © 
CL P X 

G CO 
•H G P 
B O 
© G 
PPG 
P G © 
Xi u 
B 

©BP 
P © *H 
P p 
O' 1 * 

to o • 
nd p © 


J 

O 


O G 
P o • 
•H nd 


B 
© Eh 
S X 







© 

nd 


G 

P 

£ 

© 

G 


© 

X 

• • 

P 

© 


P 

© 

< 

© o 



Eh 

G 

s 

•H 3 

s 

© 




idi 

• • 

p 


© rH 

P 

£ 

c 

EH 

• 

P G 

CL 

•• <j> 

r 


G 

P O 

S 

CQ H 


P • 
G © 
•H U 
P -H 
CL > 
© 

rH nd 


o 

•«H P P 
CO O O 
CO G • 
© © P 
P 3 P 3 
CL rH © 3 
X © X G 


© > P •»-1 
p 

G CO © © CO 
CL.H P p © 


O £ X 
P 3 
CLP O 
CL nd 
© B 
P O nd 
PPG 
CL © 
P 

cl a) © 
©pH 
U P cn 


H 

5= 

H 

3 

CL 

C 

G 

•H 

W 

© 

P 

U 

© 


G K -H P 


E-< 

3 

CL 

5z 

M 


nd 

G 

© 

CQ 

P 



© 

IK 

© 

© 

w 

© 

O 

p 


3 

W 

to 

B 


Cn 


3 

P 

•H 

p 

© 

CL 

G 

"X 

B 

W 

r=« 


Eh 

3 

W 


rH 

G 

O 

m 

O 

3 


© 

O 

O 

w 

o 

X 

•H 

•H 

Eh 

O 

Eh 


p 

3 

© 

a> 

p 

© 


W 

p 



• 

p 


X 

p 


P 

© 

© 

O 

© 

m 

a 


£ 

© 

CL 

p 

© 

P 

P 

H 

P 

H 

•• 

© 



X 

© 

>' 

P 

CL 

w 

P 


w 

© 

to 

W 

© 

to 



X 

t* 


Eh 

N 


1 

•H 



nd 

B 

© 


w 


H 

3 



G 

© 

G 

O 


w 

© 

3 

to 

G 

to 

nd 

© 

X 

© 

P 

o 

ad 


Dc 


0 

» 

G 




<P 

w 

EH 

© 

r 

Q 

rH 

O 

© 

G 

rH 

nd 


rH 


B 


3 


3 

E 

•H 

rH 

© 

nd 

© 

in 

© 



© 

M 

B 


•H 

X-’ 

© 


M 

W 

X 

a - 

© 

Pd 

O 

nd 

IB 

G 

© 

P 






EH 

u 

© 


•H 

P 

3 

Eh 

© 

nd 

►« 

nd 

to 


© 


P 


X 


P 

© 

X 

© 

— 

w 

P 


CL 

G 


X 

P 

o 


© 


*H 


© 


O 

*i 



© 

nd 

3 

to 

P 

o 

rH 

© 

•H 

W 

• 

w 

rH 

© 



P 

p 

X 

•H 

© 

P 


•H 

G. 

O 

© 




© 


W 

© 

EH 


© 

© 

X 

E- 

G 

p 

•H 

“ 

P 

X 

3 

W 

P 

rH 


3 

© 

•H 

P 

• • 

CL 

E 

CL 

•H 


CL 

G 

CL 

X 

© 

© 

CQ 

X 

3 

2S 

P 

© 

© 

© 

3 


a 

> 

£ 

© 

G 

H 

Eh 

•H 

P 

O 

H 


© 

> 

© 

P 


© 

P 


nd 

G 

© 

CO 

tr> 

G 

•H 

P 

P 

CO 

© 

P 

H 


© 




© 



P 

fcH 

© 

CO 

P 

G 

rH 


G 

o 

© 



© 

G 

3 

• 

W 


> 

G 



rH 

<p 

P 

© 

CO 



3 

© 

rH 

© 







© 


•H 

nd 


•rl 

O 



X 

H 

X 

> 



o 

O 

S 

O 

p 

© 

G 

nd 



© 

B 

© 


G 

G 

P 

•H 



© 


© 


Q 

nd 

CO 

© 

S 

P 

EH 


© 

© 



X 

e 



© 

O 

•H 

W 



•H 


G 

CO 

P 

© 

rH 

X 

c 



P 


p 



P 

o 

G 

• 

0 

•rH 

W 

W 

• 


P 

• 


•H 

P 

p 

© 

© 

u 

© 


H 

P 

© 




o 

•H 

X' 

S 

P 

o 

© 

t— 


© 

nd 

© 

P 


© 




© 

• 


O 

G 



© 


© 

G 

o 

3 

a. 

P 

X 


> 

G 

P 

P 

L-l 

nd 

G 

to 

3 

3 

nd 



•H 



3 

p 

© 

u 

U 


CL 




© 

x^ 


O 

CL 

O 

p 

O 

G 

© 

• 

P 

B 



O 

u 

© 

B 


© 

© 

X 

w 


© 

B 


to 


3 

•H 

•H 

3 

•rl 

P 

© 

© 

P 



X’ 

© 

B 

© 

p 

X 

X 

© 

*H 


P 

B 

nd 

na 

Vf 


© 

B 


P 

© 

0 

P 

© 



© 

p 

•H 

P 

© 

3 





P 

O 

G 

G 

3 

© 

© 

•H 

© 

G 

© 

© 

P 

P 




•H 

P 

© 

p 

© 

G 

© 

CL 



O 

© 

3 

i —1 

P 

a> 

rH 

P 

O 

G 

a. 



nd 


nd 

nd 


P 

p 

fd 

P 

P3 


<P 



O 

© 

EH 

P 


P 

O 


w 

© 

© 

G 


G 


X 

W 

o 

P 

o 

P 

Eh 


O 

3 

nd 

«P 

> 



© 



© 


© 

X 

© 


© 

o 

G 



P 



CO 



o 

© 




X 

P 

3 

G 

X 

p 



B 


S 

p 

© 

G 

nd 


CL 

nd 


0) 

3 

P 

CO 

© 

• 

© 

P 

C 

O 


o 

© 

rH 

E 


B 


B 

a> 

G 

3 

PH 

c 

nd 


B 


© 

•H 

P 

nd 



•H 

•H 

G 

© 

rH 

rH 

O 


O 

1—1 

P 

> 

© 

G 

Eh 

© 

© 

X 

© 

P 

c 


P 

G 

o 

G 

> 

P 

© 

p 

X 

•H 

U 


u 

o 

•H 


•H 

CO 


P 


G 

G 

•rl 

P 


© 

Eh 

•H 

O 

3 

O 

M 

© 

at 




p 

© 

3' 

G 

3 

CL 

•H 

Eh 


© 

B 

u 

CO 

B 


P 

rH 

U 



•H 


3 

3 

© 

p 

© 


O 

3 

© 

w 

© 

X 

© 

0 

P 

p 

3 

E 

© 

P 

rH 

© 

3 

© 

P 

3 

O 

C 

•H 

G 

3 

X rH 

O 

p 

Eh 

Qj 

W 

P 

© 

cl) 

© 

i—1 

O 

P 

•H 

O 

X 

O 

P 

© 

C 

Eh 

Eh 

P 

O 

3 

G 

O 

P 


CO 

nd 

3 

Eh 

P 

P 

E 

CL 

O 

P 

* 

HH 

a) 

3 

P 

> 

3 

CO 

CO 

Eh 

U 

© 

© 

V 

to 


nd 

© 

Cl 

CL 

O 

P 

to 

© 

Xi 

G 

© 

o 

s 

© 

M 

tJ' 

o 

p 

CL 

p 

o 

Cn 

G 

*H 

P 

10 


© 

P 

cn 

O 

P 

CL 

4H 

O 

G 

C 

•H 

P 

G 

U 

© 

X 

© 

© 

p 




Ui rH 






O 


•H »H 


p 



to at 

P 


at 


© 



©•HO 

© 


G 


X 



P rH 

N 


O P 

• 

p 



P P rH 


*H G 

P 

M 

p 


G O 

P 


W © 

G 

© © 

G 


^ © P 

O 

CO 

W B 

© 

P P 

© 


© a 

G 

•rH 

© © 

a 

O P 

a 


© G 


P 

P P 

© 

55 O 

© 


*• P © 

to 

P 

3 © 

p 


p 

• 

P © u 

•H 


X P 

© 

nd 

© 

G 

© p 


PI 

© CO 

p 

• G 

p 

O 

P to to 

P 

o 


w 

o © 

to 

•H 

P nd 


© CO 


O 

G P 

P 

O 


X 

G 

3 

P 


•H 

•H P 


5s nd 

co 

© 

nd *H • 


P 


CO 


O 

© 

- 


G to nd 

to 

© 


© 

© UH 

P 

© 

w 

to 

© © 

£ 



3 

X c 


• P 

CO 

© 

X X 

o 

© 



p 

P 

© 

M 

> 

£ P 0 

55 

S 


X 

© 

© 

u © 

CO 

O 

•* O P 

H 

© 

• 

G 

B 3 

CO 

•H X 


X 

Eh X © 

3 

(0 

u 

•H 

O rH 


> 

3 

© 

ffi « 

EH 


525 

Eh 

P © 

to 

© G 

55 


U * 

3 

© 

H 


P > 

*H 

nd © 


nd 

H G © 


X 

3 


P p -H P 

r- G 

P CO 

P X © 

<M 10 P P X 

O 

G © 

3 p a 

M © P © 

p rH 

© P 

© a 

P P G 

G O 

P 3 

O G O 

O P 

© O 

© X 

X *H O 

. © OP 

a i 

P © 

© X 

3 P © © 

© *H 

P 

P M 

v p rd P 

P B 

•H © 

nd x © 

red rH 10 tO 

© © 

nd x 

G » X 

G © © © * 

P to • 

p 

© P 

C H > U 3 id 

to « 

© 

a G o 

O G © 

© U 

p 

a o 

•rl to © © *H to 

o 

O 0 

OH© 

C0 nd p P P 3 

p X © 

p 

o P G 

U) G p p C 

X 

© 

•H © 


Eh 

CO 


© © 

P B «P 
CL B H 
X O 
© U 


O P 

* u o 

— G 
© G 
G O 10 

P -H *H 
rO p p 


CL P 
B nd P 
G © H 

T~ it Si 

O 

O H nd 
© 


CL G 
B H 
G © 
T-> S> 


O CO 
Eh O G 
O CL O 
O H 
nd O 
G O 
© I 


o 

p 


3 

X x 

© 3 

5 


O nd 

p 

to 


•H 

• 

EH 

P P 

P P u 

55 

G 

P C 

G 

nd 

P 

p a 

p 



3 0© 

W 

O 

© 

O E 

G 

© 

© © 

G 


P - 

O G X 

3 

*H 

© 

*H O 

© 

rH 

X to 

© 

EH 

o — 

© © 

EH 

P 

X © 

P P 

B 

•H 

E 

B 

la 

© 

X w 


3 

X 

3 P 

S 

a 

3 © 

© 

M 

© 3 

© -H nd 


O 

p 

O 

o 

•H 

c 

P 

CC 

3 P 

G 

nd 

© 

O P 

© nd 

u 

to 


© 

3 

rH P 

© P © 

P 

X 

G W 

X © 



P x 

P 


© 

X -H 

o 

© 

G 3 

© P 

5a 

to 

G 

to 


> CO 

P 



© a 

3 

3 

•H 

© nd 



nd 

G 

© 

B 

S 

o 

o 


ro 

li 

X 

£h 

W 

H 

CQ 

V 



•H 

rH 

P 

© 




© 

o 



© 

3 

3 


B 

G 

© 


© 


rH 

•rl 

> 

© 



X 


P 


X 

B 

3 

nd 

© 

© 

a 


X 

P 

•H 


O 

X 

nd 


P 

nd 

H 


p 

O 

3 

G 

P 


© 


P 

■H 

at 

to 


p 

G 



G 


3 


o 

3 

© 

© 

• • 

co 





• 

nd 


© 


© 

© 


+ 

© 



B 

P 

nd 



P 

P 

p 

© 

© 

p 

B 


to 

B 

• 

O 

CO 

CO 

nd 

B 

CO 

© 

0) 

o 

to 

•H 

G 

• 

3 

© 

B 

O 

3 

B 

CO 

r— 

3 

© 

G 

O 


p 

X 

CM 

© 


© 

•H 

CL 

X 

O 

<N 

© 

O 

nd 

* 

© 


© 

U 

P 

© 

p 

x— 

p 

to 

6 

to-r 

•H 

p 

O 

T— 

O 

O 

G 

•< 

u 

p 



G 

X 




• 

© 


.X 






© 



Uj 

3 

3 

© 

B 

G 

3 

rH 

© 

P 

O 

to 

© 

o 

o 

rH 

o 

B 

o 

rH 

X 

3 

3 

P 

© 

•H 

3 

rH 

• 

© 

p 


p 

e-» 

Eh 

rH 

H 

B 

E- 

rH 

B 

3 

3 

P 

S 


3 

•H 

•H 

P 

© 

© 

o 

o 

O 

•H 

O 

O 

O 

•H 

3 

O 

O 

3 

© 

p 

O 

> 


to 

N 

X 

5Z 

CD 

O 

at 

O 

U 

e 

Pt 

G 

O 

CD 

U 

P 

•H 

CD 


o 

04 


P 

a 

© 

B 

© 

P 

© 

P 

M 


CL 

B 

G 


O 

P 

G 

O 

•H 

P 

3 

U 

© 

X 

© 

© 

P 


CO 

3 

© 

u 


Page 14 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 84025 


May, 1976 


131 



Control oE Output Device 


* 



* 

* 



Z 

* o 

* U 


OJ 

* U 




* 


a 

* 

* p 


* >- zo 




* 


3 *U) o to 

* UP 

* 


* JO 




* 


OS< IL 

< u 

p 


2 P 

* 



* 


J -J I 

PP td 

«H Q < 


CVJ o to< 




* 


IttJP p 

QCIO to 

Z 


h-i 




* 


zoujh 

< 

P < to 


pa to 

* 



* 


»3JJH Z• 

PUJZ 

to 


tnujl*" 




* 


DO (J) «t 0 

to I — 

a torn 


ap u 




* 


toaaoa p 

UJP < 

^CPIO 

* 

upto 

* 



* 


UJ I « D_J 

a x 

a z u*- 

* 

a < •- *-• 




* 


z p id to i to c 

NUJ 

0 <<I 

* 

oasi 

* 



* 


2<t9 JO 

PN UJ 

jut- 


< COP 

* 



* 


P 0 < CD D < 

a*-*x 

UCD < 

IL 

U X 




* 


D t/) O UJ 

< JP 

P ItL 

J 

P U3C U. 

* 



* 


o w >- a «ujp 

p < 

to ujua 

a 

D 10O 

* 



* 


cuzujzxioa'p 

( 0^0 

p a 

u 

OhU 

* 



* 



p p 

OPP 


20P 

* 





odujpp z i 

* H4 

* z to to 

* 

* «-« to 

* 



* 8 - 


a 

* zo 

* UUild 

* 

* a u. uj 

* 

CD 


* 


uj in j- s 

* *-*u 

* hpq; 

* 

* ana 

* 

O 


* 


> Z< "PD D> 





* 

CD 


* 


< I I to o Z CO 





* 


a 

* 


x • ia at- 





* 

J 

id 

* 


ZOJ CDt 0 >- 

- u 




* 

id o 

> 

# 


D ZJQDPJ 

o < 

a 


3t 

* 

H 2 «£) 

DC 

* 


OP< ZtO z 

O P 

CO 

QC 

to 

* 

Z 0 < N 

id 

* 


pto J< oo 

o (O 

V" 

U 


* 


* 


a z j oz 

o * •* * 

» »~s 

(3 


* 

M c-»* 

IL UJ 

* 

* 

to 0 <p tu<o 

* at- J 

J <-» 

• 

u. * o 

* 

a z 

Ida 

* 

* 

h>Muo:tn td 

X # to to • 

X^CZP 

< 

< << o 

* 

OZld 

_i 

* 

* 

ujmp on 


J 



* 

u. o I in > in 

* 


J U Z P JO 

a 

CD 

M 

T 

* 

hUZCLO 

* 

CO 

o d oto > a < 

u oa< 

izaa 

o 

co a a 

* 

UW | D Q Z 

* 

UJ 

p uj a -< uj j u uj 

a-oz i 

UOJJ 

o 

300? 

* 

mhw-ujo 

* 

z 

uj jppqcpwct 

OQJTU 

x-*uo 

J 

a jh-> 

* 

tQUJ J 

o a 

* 


to Jtou z 





* 

< > o 

3 

* 

p 

< z D a uj to uj 





* 

£D > 


* 

D 

zu*-ao^ujco 

P 




* 

£D 

-J 

* 

CJ 

O P oz 

a 


U- 


* 

> 

-J 

* 

a 

•h uj uj to P UJ m z 

< 


J 


* 

Z 

< 

* 

m 

s-m i-Z a a H 

p 


a 


* 

*-• 


* 

D 

O >-H<lL3U 

<0 


U 


# 

P 


* 

V) 

do p n 





* 



* 


a < uj to p a p 





* 



* 

id 

P 2 UJP (OCO UJ 

(S 




* 



* 


to Z ptooDI 

(9 




* 



* 

< 

Z PO CD < 2 (OP 

(Si 




* 



* 

a 

— < 

(3 




* 



* 


T <UJOZa 





* 



* 

o 

o p id id uj • 

o O 

o 


CO N 

* 



* 

a 

cd to a p >1 z 

coo 

o 


o o 

* 



* 

id 

oVMiauuPO 

o < 

CD 

D 

o < 

# 



* 

N 

coa p a too *h 

O CD 

vO 

O 

o -» 

* 



* 


oto P 

n-nu 

n u. tdm 

UJ 

if) < r* ro 

* 



* 

* 

UJ 21 »-i UJ UJ UJ o u 

IU0U<J 

UJ UJ CQU 

n 

Luro aju 

* 



* 

* 

XUJXItOXSUJ 




o <t 10 

* 



* 

* 

PZPPDPP to 

OH<t N 

CO 0'<CD 

UJ 

* 



* 



oo o o 

o o oo 

o 

HhHH 

* 



* 



ooo o 

OOOO 

o 

OOOO 

* 

****** * ** 

************ 

0000 * 0000 * 0 * 

OOOO 


H 

* za 

* oa 

* *-• X 

ND 

•» — t- < 

* A«n 

o 

z 

* oo 

* za 

X 

* UJ 

* QQ 

* PUJZ to 




* i a z 

* < 3 

< 3 —> S tO 


ro uj 

<t a h 

Id-.*- 

s; 

P aoPUJidPUJ 



u to 

tn Du. 

vD XU. 

uj ajcoop uj a a 


p a < 

PI o 

• 

O*- 

t- _] <Jh«H a IQ 


to x 

to P p J 

p iduja 

PU 

mince 0 “Di u-h-oo 


a umo 

a ~u 

tntoax < 

to ; 

auj«t>-:iJ- s <in< 



3 UJ tO 

a x uj p x 

au. p 

_J *-« < (3 tooa U.I! 


az 

a a *h 

\ZI U 

MOP 

aa3aa:UJ<QU oh h 


o < P 

n j o' 

X< 3 Z 

X < 

o<<a (D H > HU! 



X O < 

j j — a x 

max 

i > < UJ O UJX<U 


aui 

a u 

CD CD DZ 

*-Z 3 

>a xoax nu<o 


a h u. 

zuj too 

Z P P < 

Z UJ 2 

h<<: hjdiup *— uj ® 


X < □ 

o a zoj 

o uj x uj j 

—* 

in> ra oxQ- ml *h 


UJ D 

u < a < o 

— a u a £D 

U. X P 

t- i~ - inoujz h ooo 


JP 

a d j 

OP I 

UZ 

ho hIvhjho mz 


* < to 

* Z P u. P 

* z oz 

* Ul*- 

*inzH m jxzo 


* > id 

* Old D 

* o z z □ 

* x a 

*UJ»»OP PtO*-UJ*-ZULU. 


* tda 

* ua N CD 


* ua 

*HUZh(SIBhJI-U<mh 


eg 

a a 


UJ 

o 

p 

< 

z 

>\D 

acn 

- 3 aa 

> JO UJ o< 

p zxx oid io> 

to 

a a * 

X J Z 


ZX • 

• ® a »o »>N < » 


X JX 5 

* Kl ® < 

• M UJ to 

U .“*0 

a nujuj .tujH .j 

a} 

ujiuj- 

<OZ<UJD» 

<• Z Q (0 

<u.o- 

X* UZQO-XUQXtO UX 

CD 

J x a 

a 

M 

j a 

J 

a*- j x ja «-• 

ro 

a. 

jtoa < 

oa p o a p < 

a p ua 

a ja < 

znt-aujaamiJrao 


os X 

□ SlUOSUJX 

DSIUZZ 

o <SI 

O3UJIZ<DZ30<aZO 


uanu 

juajuau 

uua*-^ 

auiu 

~«un»u<naxuiJTj 




SSI 

0 

to 10 

<3 

C3 

(3 

Q 

o^o to tou. 

irk CA 94025 

o o 



oo 

ooo o o*h 


in ^ 

UJ 

O CD 

H <*■ 

o co o u. a oo 


io 

<* 

t\l CM 

a< 

to u_ a ro oo 

o 

QinnN 

U < O O CD O 

< ujoron 

hODN 

tL'etD(\jnot><iomoN<-» 

- 

UUJUU) 

NCO UNCDU-d- 

HlLUnU 

tuu^ 

ujqou^ucmooujuujqcnj 

ro 

CO CD U U. 

o cm n <!■ Ifi 

OO O CD U O 


mO'D3UU-OM<l-N®0>000 

s 

•H •>« 0-4 

CVJ CVJ eg OJ OJ <\J CM 

cm eg CM CM CM 

rofo n ro 


- 

OOOO 

O O O O OO O 

oo ooo 

OOOO 

oooooooooooooo 


OOOO * 

OOO 0 000 * 00000*0000 

♦oooooooooooooo 

CO 


0 

G 

P 

O 
G P 
P 

G P 
P G 
G 


G G 
O 0 
G w 
G P - 
P CL 
G "G | 
Eh G P 
G 44 

W G 


o 

I 

M W 
O *H 
P 

P 0 
G Oj 
O G 
O -P 


M 
P 
G 
0 S 
X 

EH G 
O 


0 3 

03 » 

to 

G 

• P 

0 

-p 

o a. 

l 

*G P »H 

O to 

M 

G 

f 

M 

G ® <d 

H 0 e 

Cb 

'G C 

P 44 

O 

ed Cd cr> 

to G *G 

a 

<D 

G 44 

14 

<d <d 

*«c tr 0 

td 

w 

O J 

P 

% a, 

P4 P 

X 

G 

G G 

G 

03 O 

td 0 

w 

<D 

p in 

O 

U ® 1 

P* 0 


<P G 

•H | 

u 

G M 

ss G P 


rQ 3 

3 M 


* P o 

H P 0 

• 

G M 

o 

0) 

= P 

Eh M *G 

p 

r P 

p 

Ce G P 

3 

o 

ed G • 

EH 44 

o 

W 0 G 

G tO 

p. 

U 44 <D 

to c 

a 

55 G O 

M P -H 



(D Cd MO 


C CS u 


> 

0 w 

G 

M U 0 


WOP 

Q) 

0 G 

P 

= Cd 

0 G 

G O 

'G 

•H 


3 P 

CL • 

O r-» p 


> W 

P 

0 0 P 

P P 0 

•H 0 P 

P 

0 M 

0 

O-i 44 

P 0 Cd 

P P 0 

G 

*G 

Cd 

P. % 

*G P 

♦H G 

Cd 

m 

<d 

P fd *G 

G P 

*G -H 0 

C 

P *H 

Cd 

0 

0 0 

G p G 

*H 

G G 


* 0 G 

Cd P *G 

O Cd P 


Cd Eh 

G 

0 O CO 

G G 

O 

0 

G 

o 

CL Pi *H 

P 0 G 

W 0 

G 

•H 


G P G 

CL 

P -H P 


P G 44 


*U 

G 

G 

-P 

W 

P 

0) 

GJ 

G 

G 

P 

O 


a> 

cl 

m 

p 

w 

w 


Eh 

55 

M 

05 

04 

a) 

p 

® 

G 

3 


o 

r a 

o 

p 

3 

o 

X! 

3 

o 

G 

a; 

p 

o 

G 

W 

0 

O 

T3 

P 

G 

XI 

G 

O 

M 

w 

*Td 

G 

G 

P 


VO 

CM 

m 

G 

<d 

G 

p 

p 

0 

p 

<d 

p 

CP 


u 

* 

CQ 

a) 

P 

o 

G 


p 

w 

•H 

w 

0 


O 

G 

W 

0 

O 

'O 


P 

G 

G 


O 

*G 

O 

P 

o 

g 

w 

3 

o 

c 

nd 

G • 
(d P 
•H 
G 

O O 
>-n3 

w o 

n3 P 

G 

(d 

P 


0 
X! 

P 
G 

o a) 

m p 

0) (d w 
p 

w 


44 

O 


K (D O 
udjs . 
o w 

0 P 0 G 

go o 
p mo 

>-i M 

p 0 -h 0 
•H .X 3 *G 


P 

<d fG 
P M 
E O 
G 

G 0 
G 
P P 
G 

<D 0 

e o 
<d (d 

p M 
fd cl 
P 0) 


oj 

u 


*G 

G 

G 

P 

0 

P 

a 


u 

l 

H 

O 

P 

P 

G 

O 

O 

0) 

g 


P o >c 

W p 

G 

M 

ro 

G G -H f 

O O W P 

0 M 

G 

G 

O 

PI G M 

G M 

P 


ro 

G G Kd 

P -H 

C 

G 

— 

0 G 

3 

0 

G 

3 

P 03 P P 

0 

a 


a 

O GO 

Cd u 

0 

S 

E 

4h 0 *H 44 

PM 

p 

G • 

o 

0 G Eh 

p W 

G 

G 'G 

o 

G P O 

0 G 

P 

G 0 


G 

CT P • 0 

P OQ 

W 

G P 
G 

o 

G G PPS 

G P 

0 

EH -H 

"ro 

•H 0 

G G 

G 

to p 

c 

Dj P X 

U *rl 

P 

M Cd 


P 0 • 

Eh 


M 

3 

44 44 0 p 

G • 

0 

= CD 

o 

“3 


O *0 

<d o 


o 

m 


0 

G 


Cd 


G 
M-H 


0 O-J 

0 

n3 P 


0 P 44 


PPG 




W 

3 

3 

W 

O 


•H P 3C 

1 

O 


w o 

P 

G 0 

li 

G U- 

G 

P G 

• 

Cd o 


P O 

3 

W 


% 

P 



P 

a 


G | 

G 

P 

*» nd 


G 

G 

P c 

o 

0 G W 

G 

G P 


0 P 


0 


e* 

0 



0 

0 


PGP 

G 

P 

P 

G 3 

* 

W 

O 


G 

Cd »H 

O 

Cd 0 p 


P 

P 

O 


G - 

•P 




a 


O U M 

03 

G 

G 

G 0 

P 

G W 

Q 

G 'P 

G 

G G 

G 

Cd 0 


0 0 

G 

*G 


4- 

a 



G 



P 


1 

0» 

a g 

G 

O -H 


O G 

Cd 

au cj> 

G 

G G *0 


0 

»rt 



m 

G 



G 

G 


P P 

G 

Cd 

B 

a 

0 

•H 

w 

fd 


g e 

Cd 

O, G 


P 0 

o 

P 







O' 


0 W 0 

O 

G 

0 

O 0 

a 

P 0 

Q 

P 

B 

G G m4 


G 0 


G G 

Cd 

M 

s 

li 

P 



P 

G 

w 

G G 

G 


P 

U G 

0 

O G 


0 55 

G 

Cd P 

0 

O 0 P 


P P 



to 

U 

•H 

CM 


•H 

O 

G 

G M 4-* 

0 

G 

G 

p 

P 

0 M 


.X O 

P 

G W 

G 

G G 



0 

W 

M 



+ 



G 

O 

G 


G 

P 

p 

G 

P M 



C7» 

O 0 -H 

P 

W P 0 


P G 

G 

G 

EC 

«u 

W 



W 

0 

•ft 

0 P 

P 


W 

0 G 

P 

P 


O 0 

o 

G Cd,H 


G 


M P 

P 

G 

Fh 

ro 

G 

u 

0* 

G 


P 

0 G G 

O 


0 P 

W 

O 0 


1 0 

p 

W G 

44 

-X G P 

P 

C -H 


0 

5 

•f 

G 

* 

CN 

G 

P 

o 

O P 

44 

G 

G 

P -H 


O G 


M "r4 

CL 

P G 

44 

O O 

P 

O 3 

P 

a 


CQ 

0 

CQ 

r— 

0 

C 

0 

•H 0 


G 


P 3 

G 

P 



P 0 G 
P »G 
G 
O 

o 


o> a> _ 

o p g 

G 0 t* G 


G 
G P 
P G 


(d 

0/ P 
P G *G 


Eh 


Eh 

5z 


II 


ii 


p 

p 

o 


P 0) G , 

O p -H 1/1 * 
G 0) M <d 03 


0 

P 


a) 

X 0) 
P M 


G 

nd Cd 


P 


G P 

03 

G 

0 

0 


Eh 

Eh 

3 

EH 

H 

03 .H 

O 

M 


r—1 

U 

P 0 

0 

0 

•H 

P -H 

O G 


G 

G 

P 



B 

P 

EC 

e- 

W 

C 

Pa 

O 

03 


G 0 

0 

W 


P G 

e 

M 

MG 

G 

P Cd 

• 

P 

0 


P 

0 

0 

P 

3 

C~ CL 

e* m 

EC 

M 

LP 

O 0 

P 

O nd 

P 

1 

G 

O P 

0 

0 • 

P 3 

Cd fO 

Cd 

03 


P 

G «r/ 

o 

P 

P 

0 


Eh 

Eh 


e* 

e* 

to P 

o 


M 

.* 


O 

p 

nd >h 

•H 

44 

0 

U 

•P 


0 G 

p 

a> 

G 

W 


O 

«< o 


3 O 

3 O 

— 0 

p 

G 

4-> 

V 

«• 


G 

M 

P M 

G O' 

O G 


G 

o 

G 0 

p 

G 

P 

c 

r— 

EC *- 

EC VO 

CN 

o «- 

O CO 

M G 

p 

P G 

G 

G 


O C 

P 

O G 

0 0 

o p 

Eh P 

G 

G 

Eh 

P P 

PI 

Eh 

W 

•H 

w 

3 CN 

3 CN 

w 

EC m 

tn ro 

w P 

P3 

M O 

0 

G 


Eh G 

W 

Eh O 

> X 


132 






o 


in 



a 






u 



Q < UJ 




UJ • 

z 

M 



a iuu .1 




u 


> 



uu < z 



^ u. 

CEO 

< 

ZXO 



«J Z CO 

a 



a 


u < 

K 


k a u x 


UJ 

(/) o a *-• 

cm 

CE 

OKU 



M y 

o a 



UJ 


z in < 

a 


uj< a h ja: U 


X 

k a ctu 

KK 

o 

M fr- 



_J O J D 

7 



u X 


M uj 

u 

K 

_i < or u. <->h <u. 


K 

a ujuj 

(OUJ 

u u 

hjz 

Q 

o 

- z 

* D 



> K 

o 

U^cx 

V) 

M 

UJ u U U —3 CE K Z 



X Nl CD U5 UJ • 

J 

o: id 

< J M 

CE Z 

u 

K It IL 

o 



< 

z 

-«<t 

z 


fl>HD U) UjDUJfna 


to 

O |2Z ZUJ 

KU 

a 

UhO • 

uz < 

• a 

z uo < 

u u 

u 


m « 

u 

z 

M 

u 

<uu zxzzin k 


UJ 

tr z d-.'-z 

OO 

JU1 

Ota: 

CD *- X 

Ou 

D * o Z 

X 

z 




M u u 


KU 

uenu J —u <zux 


N 

aozojo 

7 

UJ _J z 

-J IL 

X 2 

O I 

z »h o in 

Kin 

M 


o u 

• 

z > 

• 

UJ Z UJ CD UJ-I UlL -*XK 



Z D 

in 

x~~ 

01 10 z 

DUO 

-J 

O UJ < JZ“ 

< 

-J 


z z 

z 

in*-* < 

o 

J — 

Z OO*- 0X0* K 



K UJ _J UJ * 

CO *-• 

KJ J 

> >■ *- D 

zero • 

o 

z z u - 

IL 3 



< M* 

*-< 

u .Jin 

z 

UJ-OU U. KU K 3 


< 

H<ZUIU) 

Ml 


CE <£ K 

< o 

KkO 

*— — • ZLZH 

o 

LL 


J 

o 

H* A 

D 

o 

jkjoz xuoau 



— z <z 

CE 

•a o 

C5ZX 

U K 

< z 

a o j a —oz — 

* 

o 


u 

u 

K IT. 1 

a 

K 

JI-3 >hhZZ<Z 


K 

Z I Jh{/) 

K UJ 

ooz • 

X JOK 

zuu< 

Q.M 

K A - -J - 

u 



o u 

CD 

cc -u 

IL 

• X K UJ — A oenu— u 



UJ K UJ 

•“• CD 

UJC 5 

u<*-- s 

-ill! 

(02 a 

01_J 1 QUO. 

~>u 

a 


o 

A 

IO 


OUJXZIL a 1 <(£ZJOJlD 


z 

I m UJ UJ x 

X 

K _JCE K 

X K 

_i ar c 

-OH 

< K K<ZUi- 

-JZ 

z 


a 

1 

u_ k 

K 

ZHUJ“Z3U.IDtD«lll~-ClUh 


M 

h JllUlh 

•o 

u OO 

U CX Q 

U *- K 

D CO 

K CE Z CL U CD 

< 

u 


D UJ 

u 

o * 

c 

D 

ZJD ZKKILJ D 



KZ K 

KZ 

-jin uj 

U 3 OU 

U_JO 

CO A 

zua 2 O A A h- 

> LL 

A 


X D 

Ci 

Q< 

z 

ooaaaud< nzKa 


o 



u*~c cr 

x a .j 

X-. K 

- a i 

o — k a o < i i in 

11 — 

1 


U -I 

• 

ast z u 

• • 

LL z 

1 1 1 > K QHHIU UV)2 


z 


Z UJ 

OICM 

K u 

K X < Z 

x zu 

iia*-o auuuu 

-J 

(J 


< < 

u 

II — CE 

N 

• • >—* 

mu jaxauiDiuiiDo 


< 

in a. • v- 

oz 

KUO 

• Q CD 

3 ~ 

md<uu aaooi- 

X o 

CD 


CD > 

CD 

< LL < 

z 

NLLOCDXZKDUCD1--KXU 



uj < a: id *-* c 

M 

CX NS 

KS U< 

O 150 













«■ 

«J K UJ X * UJ 

CE J 

o 

<QJJ 

k za 


k a in ce 









U. U. LL 


2 

CD V) CD H U 

u 

• IO 

Z _J 

• •-* 

X 

— z <o UJ 



K 






Z z z 



y U i «f 

UI 

• UK K 

UIUJH Z 

uoho 

o 

+ tr >o u. 



u 






D DO h 


a. 

~ UJDU. Z _J 

<x 

oz- 

KhUO 

KUU J 

< 

oeja ax ux 



u 

«•*» 

— 


<$■ 

K 

K K K 0 1 


o 

a zzohq. 

< 

IJhJQ 

CX X Z H 

ZK ct D 

K X 

>-HD Oh-* Z DD 



a 

u 

uu 

z 

K 

X 

X ux X < 


•w* 

< — JUJ 

U-tn 

O J u 

<K DK 

**uac 

CO u. C 

vun O o_l V) A J CD z 




o 

OO 

-J 

in 

z 

K a CD K 5— H 



> j uj k cr 

o 

< U ex 

hi < 

OCX (X X 

•_J *“ 

■*!— 

I 


o 

X- 

J- .u 

o 

» 

Q 

• in <© 


o 

zin < 

UJ 

JCE ZUJ 

in uj o 

aa uio 

a au 

aJJJJj»uuum 

* 

o 

• 

UJ » • 

UJ • *u • 

IL ZU 

N 

uz 

UJ>JJUJIL J • • * 



_J IU»-*UJ (/) 

COX 

a uj*-* u- 

K X O 

CX K 

s 

c 

D 

A 

p 

H 

H 

H 

H 

HI 

A 

G 

D 

D 

T 

K 

A 

L 

CD 

N 

D 

A 

A 

0 

A 

A 

8 

A 

u < u. o 

z 

OIL 

id i x 11 m i« x n n j _j*t i 


tr 

<1 Jffiiw 


u x_iin 

< < K u 

r u z r 


J 











u 

Z|- M 


(X K Z 

u 


M 1M 

_JM M ** JI- _lfD 





X 

IJI 


I-J 

_1 X — — 




M x 

o < < 

CEO *> 

z z z 

o_iam_ia a q jujq jzdc 

a 

a 

uo 

UO inocDin-jm 

a 

V) J 

a jo cl aumaoQou 

o 

• 

tlJ IL I X •-• 

10K 

•Z CX 

<hj: ce 

CX UJ o: 

O<OD<OKOKKO<DO<OOO 

u 

X 

ujchhjoh:odd<d 


D< 

00<QI-0003JSOOOQ 

2 



z- 

O < CO K 

D z □ 

cx aa 

_io_iuio_jcn_iwui_iua_iu« 

-J- 

a 

D 

ojmoj«iajioaua 

D 

au 

ajujBiajaaui<JJ< 

UJ 

K 

z >- * 

03 

u o 

U ZO X 

DO< D 












s 

D 

V) O CE UJ 

u 

K (X < CO 

>UCD UJ 

oz o 













Q 

• “ZO(t 

UJ 

CX C UJ ►- 

< K X 

s huj: 

K 











UJ 


a uj < suj 

UJZ 

UJ U. CE 

ino x 

U3 

CE 











X 


ujzo: iu! 

Z *-* 

« _l 

ZK < 

Z CD • 

< - 

cm n 









if 



X^UJ^SK 

J 

Z VKO 

X <s 

O 111 — 

K K 

V-. K 









K 


Z 

K _J CD V 

-J 

M (0 *- cx 

< IL 

*->_JZ 

in in 

U) w 










z 

M 

O 2 01 UJ V 

o 

< K 

ae ho 

HJwO 













CY 

<D<IQ 

U 7 

to zz 

oz< 

<KIH 













a 

UJ ZZKUJ 

X- 

1-CllUO 

OO K 

OZJK 


(B 










K 


s in *-• oi 

KK 

zx u 

CE CD O Z 

ou u 


(5 











i- 

O Q CO CD Z J 

in 

UI < 3 

a kz u 

-JaCE u 


til 











M 

(^ < M »-< 

IL*- 

z o 

XM* K 

a oin 


(3 










V) 


UJ X K 

ox 

HEOZ 

UHHZ 

> D 













» 

OtthMQi/) 

UJ 

JUUJ < 

Hi do 

a. ua k 

o o 

<0 O®o<0(8 10 U.O 






*0 

— 


(DO (0 <0 O 



z (DU*-* 


< K 

CO < u 

O OX 

o o 

oooooo o —< o 



o 



o 

o 

o 

OO o o o 




(OK 

< CD< •* 

<OH 

xino u 

U£D 

OCD—ONrOU'O KK 



in 


in 


CO 

c 

noon m no o 




Ui Z 

Z (X 

IDU CO u 

HJHjZ 

Cl < 

nuoooofoo n k 



u_ 


o 

M 

o 






CE < 

CE Wm< U 

-J x 

2 

o - 

ko — c\j — c\jc\jujoin^#ou.cjin 

M 

< 

couwcBOCMtoofninoin 

w 

ino 

«-*<Qor'JM<MlOUJ<lDU-UJO 


V) 

U ’ CD 10 (D 


UJ CL X CD 

>UJ< K 

K 10 U 

U-OiUNNNNNnuO-UUJMB 

u 

u 

— K — 

-K-UMMLUO 

u 

ou 

uDJU'ncvjuwu.uULUco'onco 

O 


<|[ 2Z 5" 

UJ o 
X z 

K OCE X 
U- OUJ D 

Z CD U 

M.< CL K 

u <*- u 
I xxio 

<oo*-<tK<Qonincoc>ou.o-‘ 

CVJ 

n 

«OKCDO'<CDUUjU.O —<■ 

in 

CD O' 

uooniooiiT'aJQUioro^uih 


< 

co S Z w *-• Z 

K< 

< -JK Z 

K CO 

HKK- 

ODUUOUUyOOOQOOOlUlU 

u 

u 

IDUUJUUIUUUUILU.IL 

IL 

U-lL 

ILILOOOOOOOO"'*’*' 1 - 








ooooooooooooooooo 

o 

o 

oooooooooooo 

o 

o o 

O On** —h h h — —h»4hhh 


****** 

** 

**** * 

*** *** 

*** * 

**00000000000000000 

OO 

oooooooooooo 

o 

00*000000000000000 


a 

a 

X 

UJ 


te I _J 
U 

UZ 


UJ 

O 

S3 

D UJ 


-J *-• 

jat-aui 

<au 22 i 


> 

k 


in 

o 


K O 


* 

N < 

-JO 

* 


u xu 


ou 

o a 

— CU U 

K 

z< 

a 

u 

cn •-« u 

K • U 

< 

Nin j 

tnux 

z 

UUKU 

ao 

k a 

x a _j — 

JO. 

-D 

ODD o 

a 2 

K 

DQ< Z< 

OH”) 

in u 

o<-a j 

< 

— a 

a a o u 

u z 


IU< H 

k in u 

* K 

K K > UU 

in- x 

(5 O 

d a 

K K 

z 

< a k x 

cn 

K 

2< OK 

* M.O 

ou 

u ox z — 

* x z 

z - 

-UH< 3 

*K< 


K * 

< K — 

XV) A 
hZ I 
— UJ 
Ui O 
KK w 
KV> 
ma k 

X 

Ui LU UJ 

I IH 
K K 

llJ 

urn x 
a 3 k 
<□ 
aji 
X-Jh 
Q O h 
UIL3 


OU 
Z I 

CVJK UJ 

> 

UlO u — 
ISQ.I- 
hO < 
JOJ 
Q-J.JU 

Qooa 

<U 

UJ < 
•HI 
II <1-0 
X o 
KK O 
O K - 
ZUJ • 
H- UJ 
U_ >• (/> • 
•-•id a*-* 


V) 

UJ 


J 

o* 


K 



mz in 

->• 


-1* 

K 

cn 

z 

K OK KK 

K CD 

2- 

au * 

CD 

M 

M 

a z mcohh 

M 

o- 

ua 




uj<o-oo 

uu 

CEU 

KUS 

u 

K 

o 

> M MM 

-z 

utn 

U>K 

in 

X 


z JOllJQQ 

OO 

< 

<03 

o 

* u 

z 

OX CE 

o 

in 

o 


II x 

KUJ 
K D 

oa z 
z-- 

X K 
U V) Z 

- a 
*u 

a ii 

2 Q 
DU- Z 
D-< 


* k a 

* D 
UJ K 

ZI UJ 

> a 
z cx 

KUU • 

V)MQh 

K ZO 
HDZ 

* </>Z 

* UJ IL 

* K<- 


u U U K U 

zoxxo 

• -« KUJ 
in 

a> 


i - 
iu (/) o 
z-< 


mi UJ 
X 


Kin x 

u< 


* 

* 

* 

# 

* 

* 

* 

* 

* 

* 


zz 

OD w 

ZZCD 

< 


* z * 

w 

K 

w(/)« 

* 


+ * o 

- u 

o a 

* 

ocncEin 

JOZ 

UZ 

mo 

* 

HlflOH 

I-< 

Ml M 

m a 

* 

nju Z 

* 

oa 

M »CE 

* 

CD A D 

OU K 

wa 

IHW 

* 

X 2 O 

-a u 

-u 

K — 

* 

K CU 

H 111 — 

oa o 

u* 

* 

uu □ 

JII 

ZK o 

o —* 

* 

tn m a cd 

X 3 cn 

< in u 

oo* 

a a * 


z 

o 

£D 

a 

< 


a 

<n 


• <o < 

• 

_J • • • 

-J 


XXX 


-J 

M Ml 

CD 

OKQOOUOK 

xza 

OOOQOOOU 

UU2 

_ja <jj<ja 

X — U 


a 

o to 

tD ^ 

ZO • * 

_J *U * *.JUUUJ _J 


U 


• * 
o o 

- U. X J_I_IU_IUJ . 

o < * a niaxo u. 

♦X* MX • f . « • »— o <0 

_l . O * U » N UUJJJJ *W. • • 

xcax - uxz<xztDCDcoixxr<oxJj< 


a 

o 

o 

m 

— — 3 «► 

ujZ oat- 

OK IOJ 

< w * *cro 
• u • muucrx 
IIBXZOOUJ* 


m CD m m ►* I — — CE 

aazaKaKOoauinooooo uaaaouaa aiooa< 

OOOZIUZHjOZZZDODOOQQZZQOOOOOQZDOZI 


u 

K 

in 

K 


04 

U 

K 


(9 

(9 

e 


vO — O O 

O^OUJlLCOHMNmU-UJUNO 

uouu.no^woiO'Ona)«u 

mOKccxcDuoc—cuminioK 
inioir)ininif)i/)ir>vOtO'no*o»0'0 
OOOOOOOC'OQOOOOO 

ooooooooooooooo* 
Page 1 6 Dr. Dobb's 


ro o 

K O 

pxiflW'OOHiiinnf'iO' 


z 

K 

V) 


31* 

OO 

TX 

o< 


U 

<3 


a 

< 

X 

u 


> 

cx 

CL 

O 

V) 


* 

* 

* 

* 

* 

* 

* 

* 

* 

* 

* 

* 

* 

* 

* 

* 

* 

* 

* 

* 


* 

* 


X 

< 

a 

o 

o 

a 

a. 


V) 

< 

CD 

>- 

Z 


UJ 

X 


V) 

K 

<J 

111 

-J 

o 

u 


< 

X 

K 

a 

o 

o 

-j 


o 

n 


Q 

O U. 
UL O 


G 

< 


U 

O 


O 

o 


., ~__ *-• <t u. uj to uj o uj < oj <in < o a> 0 * o< ro votnu ujuk — <oj in 

WUU^OOU^^WliJU <M<UUGUGm<UOU<CVJC\IQ04--UCO>OfO£0«OU-UO.- 

©ououo —wm-itino 
iDO'O’O'ONNNNNSN 
ooooaooooooo 




u 

o 

* 


X 



n 

in 

* 

* 



u 

< 

CN 4 

* 

* 

ui 


m 

m 

m 

* 

* 

X 

O 

o m n 

r— 

CM 

* 


K 

O 

o o cn 

< 

m 

* 

z 


U 

«n ©u cn 

CO 

u 

* 

— 

m 

K 

< < < < 

< 

< 

* 

< 

H 

< CM 

in^ncoouoKOno 

* 

X 


— U 

o —u<o<oinomo 

* 


m 


K<(DUUJU--'C'J'^U)COC7\<lJOUJl. , -0-^OJ < tl/)»0<DO<CDUU.Ol r )UJ<£DOUJ 
Kf^.NKKNCO«X)<n«ClOO£OCOcncDCDajOa»CMM>a‘C><M?'C'CM><<<<<<< 

w w ^,____ w _ ooooooooooooooaoooooaaoOoaoooooooooo 

^# 4000000000000 #OOOOOC OOOOOOQOOOOOOOOOOOOOOOOOOOOOOO 

Journal of Computer Calisthenics 81 Orthodontia, Box 310, Menlo Park CA 94025 


n<to> 

CD CD 03 
coo 
ooo 


* 

* 


* 

* X 

* K 


May, 1976 


133 




• 







u 

x~ 

• 

3a3 © 



* 




© 







© z 

u 

a 

© © © a _j 



* 




z 







X — 

- X 

a 

H H H © 3 © 



* 




o 







z ax 

H X w 

o 

P-Z-O- D< 


© 

* 




t-H 



in 




< HUI 

X S3 

< 

^ Z *"> H 


u 

* 

H © H 

© 


H 



a 




_l ©HU 

UJ • 


• O H H X 


< 

* 

Z I © 

© 


U 



o 




tn < h 

z h • a 

a 

©CLX©UH ©© 


© 

*■ 

UJ)- < 

© 


z 


- 

H* 




Z 3 < 

*-«H O 

3 

< © « XX 


<H 

* 

2 J 

© 

©© 



a 

< 



* 

U — © 2 

H CO UJ o o 

3 

l-OZ .11- l-l- 

N 

o*-* 

* 

©< 


z© 

iL 

s 

a 

a 



* 

Z »- 

© © < UJ 

3 

Z X 5- 



* 

H wZ W 

#• 

•»-*© 


a 

IL 

UJ 



* 

*-a• 3 < 

UJ IL • X 


H »-*H U © X 3 

H 

©o 

* 

< > *-• *-4 

>- 

© «J© 

© 

o 

s 

a 




* O UJ • 

k Hi/iau 

O 

xa ©H • HO 

M 

XO 

* 

H 

«■ Z 

z 

tr 

U- 


o 



H 

* <C H- >© 

~3v- 

z 

©HZ<»> Hi 

© 

H 

* 

© © - _l 

H< 

*-z • 

o 

; 

z 




U 

uiz z a 

UJ • UJ o < 

(-X 

z©-xa© 5 © 


o 

* 

H UO 

a 

©a® 

3 


H 

z 



UJ 

U_J — o< < 

JX UJUJT2 

© 

< o 

© 

ao 

* 

oz©a 

<© 

3 H 


z 


o 



a 

UJ oz _J 

© U ©_J 


OUJ15JOO J© 

© 

3 

* 

ZhXH 

H ►" 

H na 



; 

fr-s 



V-5 

x ©a o uju 

< H © © •> 

0 

h a < < < © i© 

o 

UJ 

* 

<o©z 

© 

©©< 

H 


a 

H 



o 

uja o a in 

H < *< X © 

o 

© 


Z 3 

* 

a - a 

« © 

ua h 

a 

s 

tu 

< 




O UJ IL o o 

A 3 UJH H © 

z 

ahHnao oa 


< 

* 

H U 

Z 

a © 

UJ 

a 

H 

-1 



* 

* Z > IL 

1 © > 


3©©a3< <Q 

© 

© a 

* 

u© o 

o- 

<Q® 

U) 

h 

V) 

© 



* 

* U<lL©© 

Jll _JU_©** 

u 

3 © © < 3 J OQ 

< 

J7 

* 

© © Z rn •• 

H© 

H© 

z 

s 

£ 

a 



* 

* — © — CD 3 

x*-* ©o-*u 

z 

©ana - )© 

3 

u < 

* 

a © <o© 


>o 

— 


CM 











* 

-« X ©* 

xo 

© <H 



a 

— 

<1 


— 







* 

Ot-» HO 

u© 

X© 


— 

© 

— <M 

M Ifi H ^ 


1 







* 

HDJ 

<a 

H O 

< 

a 

• 

a -* 

•-* -• a •* 


t>=S 


© 


a 



* 

UOUUJ 

m o 

QU 

3 

IL 

H • 

x a 

CL CL X Q. 


© 

<-* 

u. 


cm © <r 



* 

H H © ©O 

H 

©H 

o 

m 

< a 

® X 

X X • x 

n 

< 

uj n 

—’ N © 


X H X 

• 


■» 

3 ax© 

o© 

H o 

<t3 


x tu 

m ® • 

• • • * 


H 

o X 

X » x 


© • © 

© 

*•» 

* 

uo~© 

u 

3X0 

ao 

o 

2B H 

a ii - 

• - II - 

a 

0 

• © 

© X © 


- ox »x 

3 N < 

-J 

* 

© © Q © 

H 

uu 

X > 

H 

O V) 

U- A % 

A II V V 

X 

J 

UJ » UJ « * 

I » »© » 

J 

UJ©X *3 u 

0 m m 

© X 

* 

x a - (J)< 

••© 

© < A 

• » 






X 

iVQ<Q-NIJN<02U 

H 

M 

N 

H 

0 

E 

A 

H 

M 

N 

A 

H 

L 

X 

H 

A 

( 

* 

© © ^ 

* a 

X© } 








-1 






* 

la <n 

a- 

© 

3a 

3 

2 : 3 : 

3 3 3 

3 3 3 3 

3 

K-t 

co r •-* 

w 


w 

M 


* 

O© QQZ 

o© 

a® 

UJ< 

3uj 

©3© 

UJ DU UJ 

UJ UJ UJ UJ 

UJ 

n 

3 Z © UClQ-UQ-Q.OUQ.Q- 

u 

aiuaaouaiouQOoaa. 

* 

HZ ZO 

H 

QUH 

f-i 

OH 

hOI- 

HOH H 

H H H H 

H 

o 

O0D0Z3SZX30UJSS 

z 

SSZOEOZX^OZOZOOX 

* 

< © < •-* 

©© 

U Z 

hU 

111*-* 

— © — 

>-• LJ*-s (-* 

l~l 5~» t-J S~) 

— 

.j 

iih« jHUiMUnjoy-i 

»unMaijwunjHj<jin 

* 

uj a; o st- 

• I 















* 

OH O 3U 

H 

•• • a 







H 







* 

o uQ© 

Q 

• H 3 







U 







* 

oin u<n 

Z© 

©XU 


in 

© 

CO 



© 

u 






* 

ii a 

<H 

3 © • 

oouj 

to 

CQ 

03 



a 

UJ© «* 


CM 

fO^ © 



* 

© 3©a 

3 • © Z 

CM CM st 

< 

< 

< 



sso 

XX X 


X 

XX X 



* 

x© x x© 

• u • 

o • © 

ao© 

H 

H 

H 



Q 

UJ UJ UJ 


© 

© © © 



* 

HOOHX 

• ©HU *■* 

in turn 













* 

a a h 

jx a 

• o 

-aOn 













* 

© ►- ©a o 

©© < 

z •• 

<t Ifiif 10 













* 

~z © 

Z HQ<© 

OOJO © 













* 

0©H0 

• o©z a 

d-inca^ 













* 

©U J©H 

Orn 

< • © 

onion. 


O 











* 

3 CD < 


zx 

C\J <t St st 


© 











* 

o < o 

m .. O 

- an 

in r><MO' 


in 




— 


-• CM 


CM CM 



* 

© ® H © 

H-hODO 

in in in <i- 


<* 




o 

o 

o o 


o o o 



* 

_j© »a 

© z 

HH 

Qu U. 1DIL ■* 

IL < 

<t <t «tC0 ON Q 

n (mq< 

©III 

UJ 

UJ N 

<© © 


Ch eo© O 

© 


* 

DQOZUJ 

hD^OUJJ 

ro in *$■ st st in 

-eu. < uJ oo n — — 

cm n n cm 

f> n 

M 

CJ 

© H ^ 


O © N 

N 


■K 

©z z a© 

jauon j 

in <t o> a, q n 

■<t<viin mm© ©<tnst©stostUstustst 

— 

iL©<nuj<nuj<ujmuj< 

r)©cM©.-*r)©m©cM©ro©voN-«o 

* 

<<«</> 

* * < 

• « < 

coccinstst * 

in ® co incoco rieocattrfnromoontoDBxo 

CM 

UjQfH»-«lLUCM £DUr r )«- , CQQ 

CM©Q(MQU©CM©QNCV|'0©«n©© 

* 

H 1 3 HZ 

© 















* 

<Z 3U < 

aa 

aa a 

u. — non© 

-‘^nmNMDou.ii.-* nst»oH<7'<u©o 

-to 

© 

COco<7'<OUUJ-«<Mint£icOO'< 

ow©<M©<tNO'<©©©o^n<f© 

* 

xo oua 

oooaoo 

CCDCDmUUOOOOOOQOOa©©©©©©©©©©©© 

U- 

ILH.UUI1ILOOOOOOO 

O O O —> *-* — •"•r-^CMCMCvjCMcM 

* 

3 U U©H 

U.U.13U.U.U. 

-S —» — — •—S — 

— — — 

— — **• — 

HHH — 



— 

H H »* 

(VJ CM CM CM C\J CM CVJ 

CMcmCMCMCMCMCMCMCMCMCMCMCMCMCMCMCM 

* 




OOOOOOOOOOOOO 

000000000000000*0 

*00000000000000 

ooooooooooooooo 

oo 

* * * 

****** 

****** 





* 



H 0 

















• 






< © 

H < 

© 

* 


Z 

ZU © 

© 
















© 






© a 

~ © 

> 

* 


o 

1ZO 

< 
















© 






a © 

a 

< 

* 


M 

Oh 

*r-« 


© 














o 






< i 

a < 

Q © 

* 



aa© 

H • 


I 














Z 






H 

o© 

z 

* 


©u 

H © 

a- 


H 














< 






a 

©zo 

©o 

* 


_J© 

ocnin 

< • 






H 










3 






© © 

© 3© 

a h 

* 


©© 

© < 

aa 

3 

U- J 

© 



Z 










3 







UIHJ 

1 

* 


< 

3 © H 

a 

© 

© 

o 



tu 










O 






© 

<oxj 

-Jtu 

* 


H © 

ox 

© • s 

H X 

s-e 

z 



s 










U 






uj 

acH~ 

xz 

* 


X 

IH© 

x • 

— u 

3 

< 



© 
















© © 

©a © 

*»* 

* 


<H 

© X 

H ®H 

Q- 

• 

3 



H 










© 






Z© 

©z 

* -J 

* 



OH 

• z 

I 2 X 

>H 

3 



< 










a 






3 

xoho 

z 

* 


HO 


Q ® — 

u< 

© — 

o 



H 










o 



© 



O 

uz< 

*- 3 

* 


© H 

X © 

z a a. 

< © 

Z 

u 



© 










3 



z 



3 H 

3 OO 

U© 

* 


Z 

H-» 

<• a 

© o x 

o ® 




\ 













Q 



© 

o *a _j 

©Z 

* 


*-*o 

OZ 

a 

H 

© 

H 



H 













— 



Z X 

ZHDO 

© 

* 


<© 

Z~I 

H • 

O 

© 3 

u 



U 





z 





H 



H 



AU 

©a a 

A©< 

* 


oa 

<ou 

© •! 

• f-U. 

© © 

© 



© 





a 





a 



u 



1 © 

a * i 

1 >© 

* 


< © 

a -« 

©uu 

© o 

©H 

a 



a 




m 

3 



H 

H 

© 



z 



JX 

inosjm 

©oa 

* 


© 

u X 

H • H 

SH 

a — 

— 



►H 




3 

H 



3 

z 

© 



3 



Xu 

H(/)00 

Q3< 

* 


u© 

ZO 3 

©< 

©©N 

o 

QH 



OH 



a 

© 

© 



a 

— 

a z 



© 


© 




* 


Z Z 

-© 

© 3 

H© 

oa 

© 



X 



H 

O 

a 



z 

tr 

o - 






o 

H© 


* 


*-< 

ao * 

X 

— 

<© 

— 

z 

3 

© 



O 

u 

* 

3 

a 

— 

a 

H 



o 

© 

— 

z 

a z 


* 

* 

aa 

HO- 4 

H «_J 

N — 

X 

© 

3 

© 

z 

© 


u 

• 

• 

© 

a 

• 

• 

© V 



z 

CQ 

© 

© 

a 3 


* 

* 

HH 

©X | 

x© 

U. © 

an 

• 

a 

Z 

• 

-J 

a 

* 

as 

z 

a 

© 

a 

9 

* < 



a 

< 

• 

H 

OH Z 


* 

* 

© 

CO- 4 • 

©u< 

OH 

IQ 

• 

e 

• 

• 




m 

a 


0 

H 

H 

• H2 



» 

• 

* 

X 

V)X *_J 

* 


© 

W CQ© 

H H 

^ X 

3 

H 

• 

» 

H 

• 

• 

o 

3 

3 

• 

• 

3 

Z 

a j 



• 

• 

© 

H 

oh oia 

* 

u 

< — 

x© <o 

< <© 

a CDH 

->© * 

© 

z 

3 

X 



H 

© 

H 

3 

a 

a 

— 

O IL3 



o 

© 

N 

< * 

♦ •> o 

*3rn 

* 

UJ 

« 

HOHZ 

zx© 

© - 

XH 

H 

© 

© 

111 

© 

© 

n 

O 

© 

Ii! 

a 

z 

a 

H- UJO 



z 

CD 

— 

*© 

U J © > © > H 

* 

X 

© j© 

< 

— — 

IDIl 

<H© 

© 

a 

Z 

z 

-J 

f-4 

u 

u 

a 

a 

© 

— 

rt 

© o> 



a 

< 

© 

XO 

ZX0303© 

* 

© 

1-0 J 

O »OJ 

3<3 

3H 

3 

* - 






















* 


©a © 

H» H3 

a 

3~3* 

IIL< 




















*-* 

a j 

-1 

* 

© 

©H < 

H O 

© © • 

ZJO 

HO© 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 3tt 



3 

3 

3 

oo 

sa ajaja 

* 


HZH 

HUHU 

H<H 

J 

— © 

3 © 

© 

© 

3© 

© 

© 

© 

© 

© 

Hi 

© 

© 

© 

© ©< 



3© 

© 

Ui 

oo 

03H0<0<3 

* 

* 

O 

z© z 

z 

>- in T 

*>-a 

O H 

H 

H 

OH 

H 

H 

H 

H 

H 

H 

H 

H 

H 

H HX 



OH 

H 

H 

©© 

u3©a uau-i 

* 

* 

©U © 

-a —h 

©o - 

za- 

Z 

© — 

*-» 

f-i 

© — 

M 


— 

—i 

— 

*■* 

M 

►H 


-o 



© — 


»-s 




* 

* 

O X 

a-oz 

©©a 

<©I 

3 <© 























* 


O ♦ H 

a oa © 

— aa 


© < 























* 

H 

UO 

• 3 

3©- 

©UO 

HX 























* 

u 

zo 

o o© 

o 

o<© 

-U 3 

— 



CM 













st 






* 

© 

© 3H 

©HHH 

o-a 

aa 

H© 

CQ 



ID 










o 

O 

a 

© 






* 

a 

XO 

o< <f 

z ©D 

© < o 

Z< H 

< 



< 










CM 

CM 

<* 







* 

— 

1-U.O 

o an 

— z 

HXH 

<X~ 

H 



H 










O' 

O 

© 

H 






* 

o 

z 

X 3© 

ao • 

©u© 















© 

CM 

St 







* 


© ©fr-* 

© • 

HU* 

— 

©H © 









© 





— 


fO© 




o 



* 

* 

o*»o 

-HQ 

© 9 

©a© • 

w O J 















© 

<t 0) 







* 

* 

a 

© 1 ©z 

©Z 

ZO©- 4 

Z 3 








CM 

CM 



<* 

■* 

o 

CM 

on 




© 



* 


Z TO 

O ©© < 

©CD — 

Q Ul 

UJ Z 








<fr 

© 



© 

© 


© 

CM© 




o 



* 


ouu 

© 

I a 

uu a o 

©© 







© 

© 

© 



© 

© 

o O 

© 

©<t 



© 


© © © 


•* 

© 

*-*HU 

• CD©H 

h © a 

ZO H 

CD ©© 

m 



tf) 




© 

© 



© 


to oj 


St St 


n 

st 

© 

©a 

* 

© 

H < < 

• «CDU 

©* 

©*-. o 

< O — 

n 

© 

N 

© 



•& 

n 


O 

CM 

o 

a 

tL © 

n 

CM© 

st 

< 


oo o 

oo 

* 

© 

U3 

U H © 

2- 

© a < h 

HOI 

© 


m 

© 

© 


© 

© 

© 


© 

© 


<f in 

© 

©st 

St 

© 

© 

o 

©m © 

— on 

* 

© 

© © 

© ©a 

— 3 * 

CD H © 

H 

o — 

©n 

©M> 

u> 

o© 

H © < 

© 

CM© 

— © — 

© 

©© < 

© — 

CM O' 

<* © — © 

UJ 

IL — 

©©CM — 

0» 

o 

u —• u © © o 

* 

< 

© < O 

X©©- 

o 

< ©a © 

© © 

•<t >o m n <* cm 

c<tO'itin<f cc^to 

^C'-tfUtflDtoNUfMCX* 

st 

st-t 

st o<t nst 


h-CMCM — O 

— on 

* 

H 

o 

©I—o 

m I • 

H 3 

oil 

U CM CM CM © CM 

©nU<J-C7‘nf^CMNCMCMCMfMn'OCMC7‘rOoCMQCM<f<7' 

a 

OO 

cm © — © m 

>0 

©QCMQUOUU 

* 


© ZU 

• H 3 

• u ~ 

<3© 

— u 

<t ©io <n<tco 



St St 

m eo < ©ip 




* 

* 

— © 

© 

• na 

© “> H 

o a h 




















©O' 

UQon^NO'U 

* 

* 

IX© 

l-OJJ 

<a 

X© >• 

ZH< 

©©©©©<0©©©©©<U©CM<t0CD — 

©©COCDQCM^O'CD©- 4 © 

CD 

men 

— »-s 'O & © 

F- *“• 

-• F-. CM CM CM CM CM CM 

* 

* 

HJO 

<HI< 

<s * 

H — <© 

©©3 

{yjcMnnnnnnn^<f^^<t-timnirMntO'OioO'0'ONNNHN®io 

© 

OCM<«« 


M ij r-4 

— — — 

* 







— — a-t 

— — 

— — 

— — 

— — 

— — — 

— 

— *4 

— — — 

— 

C- ; r— 

r4 

— — 

r 4 — — — 

— 

— — 

— 

— — tr* 

H 

OO 

oooooooo** * 

* 

******************* 

* * * *0 000 0000000 0000 0 0000 000 0000 0c5 0 00 

© 

OOoooooo 

iy. 

1976 


Dr. 

Dobb's 

Journal 

of Computer Calisthenics & 

Orthodontia, 

Box 

310, 

Menlo 

Park 

CA 94025 




Page 

17 


134 






LU 




h 






4* 



a 

a 



t 





H 

^ 2 V 




Z • 






* 



ID 

( 0(0 



a 


t 

SB 


a 

* ~ 1 




CL H 






-»■ 



H ID 

«o • 



0 

UJ 

c~ 

to 


►4 

J J 



O 

® a ax 









Z X Q 




a 

z 

3 

0 


J 

< o O 

5 

ID 

Z N 

CL CL N X ID 






# 



hLUJ 

• X UJ 

0 

(O H* 

s 

►4 

OQ 

0 

uia 


H a 

•• 

z — 

< H 

a 0 uj z 



tt 



-R 



O H 

(OHO 

to 

DZ 


O 

IJ 

X 

a zu 

ID 

</) <X H 

s 

*- a 

< 

xuoz 



Ol 



* 



a ato 

0(00 

» 

IHI 

H 

CL 

r 0 

H 

a « 

X 

*- IDU_ Z 

V) 

JO 

U. LD2 

UJ hHlUp 



X 

UJ 


* 


to 

UJ ID 

0 ® 0 

z 

H O 

Z 

an 


a 

z _J« 

H 

H Z Z ID O UJ 

UJO 

0 ^ 

jza 

z czcoz 

to 


UJ 

3 

N 

* 


0 

XHZ 0 

X 

CL 

a 

a 

na 

>a 

« 

0 


UJU. DZUZ^ 

u 

Z ID 

1 t-O 

UJ M ID H *< 

UJ 



J 

H 

* 


H 

UlL O 

H *UJ 

O 

o a a 

Cl 

zo 

0 


HID 

IL 

troai-H *- u 

<H 

< 2 H 

a jil 

H fL</>HLL 

• 3 


UJ 

< 

Z 

#■ 


O 

< <UUD 

touix 

H 

Z 3 

CL 

*-* CL 

to< 

Q 

3 <C 0 

M 

ID O X JH J < 

aa 

< to 

0 

<H O 10 

H Z 


X 

> 

►4 

* 


O 

H 03X 

- ZH 

UJ 


3 

Q< 

<0 

-1 

a x 


X ID H H CD 


ILD)*-* 

HH 

DhZOO 

to*-* 


H 


a 

* 


• 

too 0 

*-< 

a: 

tOH 

O 

toan 

© 

O 

Z Hh 

a 

hSV) a XH 

J 

J J 

UJ X ^ 

J 2 0 

►4 H 

to 


UJ 

a 

•4r 



IUZ< 

QHlL 

• 

*o< 


CL 

a • 


a 

ID 

hqi x a 

IL 

1 ID 

> ID 

<iucr h- 

JZ 

0 

UJ 

X 


* 


UJ 

®D<H 

JDO 


Q2X 

UJ 

ana 

an 

• 

0 z 3 

> 

IL X ID 1— U, ID O 

0 J 

CL O J 

►4 z a 

>>Qw * © 

0 

z 

N 

H 

0 

* 


X 

a zoto 

OO 

CL 

•-4 H 

X 

H XX 

a *4 

H 

< 32 

ID 

*4 H10 hzO 

J 

UZJ 

O H* 

UJ < LL K! 

IDO 

UJ 

< 


H 

* 


H 

UJ 

CtZ 

UJ 

oa 

H 

wan 

X 

Z 

O Of 

3 ® 

O (Oh J 

*0 

- 3 

0 

to to 0 * 

X 


3 

H 





HH - UJ 

UJ c 

X 

xto 


2H 

HO 

a 

j a 

OQ 

h za< zao 

z 

ldhZ 

O HID 

♦ x *- z ; 

hh 

H 

J 

Z 

UJ 

* 


UJ 

Z Z CD CD 

IZh 

H 

• h a 

a 

< Q 

z 

a 

za 

X ID 

(/) ZanOZQ 

II 

>Z 

to to 

<000 

to 

to 

< 


CL 

* 


X. 

w OO 

hHh 

cr 

CQ H « 

> 

0: 0 Z 

H 3 

3 

0 aa 

H 

id il^ •• ct h «h z 

tL 

wOll 

JO J 

IDZaCLlLUL 


►4 

> 

a 

O 

•a- 


»—3 

OOtOH 

<0 

D 

O CL < CL 

< 

<Z»- 

OO 

0 

Z XX 

< 

H«U-UCLWU.< 

u*-» 

OO** 

<OlD 

H<JQWH 

- J 

J 

UJ 

a 

2 

-«• 


J 

a oto 

• 2 UJ 

u . 

a a 0 0 

to 

a<a 

za 

s» 

< HH 

• a 











+ 



IDOO 

• to 


OH»-CL 






h-UJ 











* 


to 

H CD » s: 

(0 UJ 

0 

oao cc 



H 

CO 

a a 

az 











■» 



X 

01 : 

z 

- <za 



z 

O 

< 0 

*4 UJ 

H 

CM 

O 

*4 

<0 









iuZh< 

ohz 





3t(X 

O 

> 0 

JO 

z x a a 

a 

JCE 

JK 

CL 




X 


■a- 


• 

H<<ID 

X W 

CL 

HO Z 



O CL 

X 

a 


3IZ<ZOZ 

0. 

za 

X CL 

0 a 




3 


* 


iM. 

oxa 

HZ< 

O 

<ZH« 

< 

z 

X 3 

H 

QCLHCOX 

J© 

Z UJHJ*r.J 

© 

lL (/) 81 

IL Z * 

N © 


a 


Z 


•a 


oc 

H H < 

to — 3 : 

a 

x<« 

X 

0 

<0 

(0 

OJWWHU 

j** 


M> • 

jztr 

J Z ® 

j ro to od « 

zo 

j 


H 

PO 

* 


0 

ZZ 

* s 


H2 CO 

to 

0 

» » 

» 

• • * *ZQ 

3 

azz *a^zw 

» •© 

O : 30 


®CLHC£ * 

*4 a 

cr 

OIL 

oa 

* 



UJ O CL UJ 

tu 

0 

2 *3 

3 

az 

NO 

JJJJJJJDZ 


hUJU.UO.USLJ 

V » 

OCLC3 

v a - 

u a a a ® 

na 

ox 


(Dacca 

* 



CL wlD> 

zatu 

< 

OOOI 

a 

oa 

ZX 

iixxxnaw 

tL 







to 




* 


a 

a ho< 

-<x 

j 

ZOCLH 






< J 

J_IJ JJJ 

»-»o 

J O 

J 0 

CL JO 

j 

JHIIIJ 




a 

ODCL 10 

H 

a 

« a 

-j 

ax o 


X 

Xh Ji 

a 

jjjajjja 

OH 

j an 

J a H 

aoajan 

ja 

j z 0 . to j a a 

* 

* 

X 

OOO 

O UJ 


X asj to 

.j 

a too 

a 

<0 

too 0 a-i 

wu 

< <<2 <«* «2 

c</> 

<2 a 

< za 

X O < Z LO 

<2 

4mX3<OJ 


* 

UJ 

UJ UJ 

UJ 3>- 

< 

H x « 

< 

X 3 < 

20 

3030H0H2< 

w w 

uuunuuUT 

JH 

oih 

U“>H 

UJ JTUlh 

03 

oimjauao 

* 



UJXZX 

> CD 


X H tO 

0 

aao 

“ 3-1 

fl.JUW<W-3U 












* 


03 

XUJI-H 

<a 

to 

CL wQ 






HO 












z 

D 

H 

<0«ID 

< 

ao z 





z 

COZ 


H 









* 

o: 

to 

H ® 

z 


>N® < 

S3 




a 

M 

H 

Z 









& 

D 

O 

H< 

CO 0 

H 

a w 

3 




3 

J • 

V) *4 

H 

CM 

0 

-4 ro 


*o 

03 



* 

H 

O 

<X» UJ 

H «Q 

M 

zo® 

to 




H 

< 

M V) 

K 

GL 

nr 

a cl 


a 

CC 



* 

ID 

m 

IHZ> 

X 


to OO CD 

0 




a 

ID2 

J J 

CL 

CL 

0. 

a a 


a 

a 



* 

a 


H CL*-» 

a oto 

a 

0*4X3 

0 




cc 

XZ 











* 


•r 

O oto 

UJ< < 

> 

OHHIO 






HO 











* 


0 

H tO H CL 

H H 3 

< 

ZDCOO 






U 











* 



a luo 

Z (0 

to 

DO« O 






IL 











* 

* 

• 

UJUJ CLO 

^ to 


X ® 






*-.< 











« 


e» 

o>* UJ 

0 LDw 

-J 

* aa 

















* 

* 

CL 

x < a 

ax i 

-J 

— H< 






aX 











* 


a 

atouj 

HH 

i»*» 

cca 






OH 

oin'Ooo^'ON 


OCM 

O CM 

CM M) CM 

tnw 

0 


^0 

CM 


CD 

X 

zz 

X w 

H 

ox 0 

M3 

<0 

O© 

CO 

0 © eowa 

©4 

ooooo ooo 


OO 

OO 

000 

qo 

0 


0 

O 

* 

D 

UJ 

• UI^UJ 

oz 

to 

— H •< 

O 

0 

OO 

0 

c 0 ooo 

a 3 

N 0 <T 0 <WLJ< 


UJ O' 

UJ O 

CD CO CO 

C-.Q 

UJ 


UJ 

CD 

* 

to 


OCLH> 

<HD 


T - X 

•4 


0*4 

m 

on n cm 0 

ID 

N 

O 

O <!- 

0 n 

O' <*■ < 

0 CO 

0 


0 

O 

* 

0 

CD 

Z<OUJ 

H* O' 

a 

CL Z CD 

a 


<0 

0 

00 0 <t < 

H O 

ooo<Qjion 

aaffi'OonaQaomaa© 

LLOI^CJfOlL O'OOfO 

OMLIflQ 

-ro 

* 

0 

D 

< Q 

tO Q UJ 

3 

D CL D CL 

0 

aao 

CM< 

a < a *4 cm ^ cm n 0 

Z ID 

UUUO U l)Wll 

OUNOUUUOOUUUNOO^UUUUNOUU 

OlLOUUUO 



to 

2 * CL Q 

lijN 


HDtoa 

0 

ooo 

O CM 

acMacMwrocMOo 

*-D 











* 

* 

O 

2OC0Z 

UJ> 

H 

anc > 






CL Z 

-I <tN< a <Sn 0 

C‘CDOOtD-*<t-tf)ON<OlDtLO^WtnflDCDUOUJ^ 

<t N CO 0 < Q UJ 

■a> 

* 

O 

QhD< 

x <(0 

D 

ccaoa 

*4 

-tao 

OO 

aam<N<ma~* 

a id 

'O'O'O'O'ONNN 

NNNNNOOCOCDCDCDCOCOaDCOO'OO'C’O'CMT'O'tX 

<<<<<<< 

* 


» 

OUJtO^ 

H (0»-« 

CD 

* a * z 

CD 

a ccd 

CO 

C300000000 


CM CM CM cm cm cy cm cm 

CM<MfMCMCVjC\JW(VjWCMCMCMCMfMCMCJ<Vi(MCMCMCMCM<vW 

CM CM (M CM CM CM CM 

* 







CM 

CM W CM 

CM CM 

CM CM CM CM cm CM CM CM CM 

* * * 

00000O00* 

ooooooooooooooooocoooooo 

OOOOOOO * 

* * * 

** 

** 

* * # 

■& * 

**■»# *0 

OOO 

OO 

O Ooo OOOOO 

* 

z 











UJ 













* 





H 





^ *4 



OJ 

*4 a 

ft 



• 

j © 

a 




» 





© 

H 




3 



© 

H Z 

ft 



a 

OOH »4 

0 




* 




a 

H 

a 




a 0 

a 


< 

3 w 

ft 



< 

an z 





* 




a 

a*«» 

0 




z 

z 


H 

ft 0 j a 

ft 



2 

H ~H 

a 




* 




aa 

a 

a 


ft 

a 

»-i © 

»-4 



ft a 0 

ft 



2 

ztpa< 





* 




a a 

na 

< 

ft 

ft 

ft z 

ja 

J 


Z 

ft H 

ft 



0 

ozas 

< 



• 

# 




00 

3 a 

H 

ft 

ft 

ft *-• 

* z 

ft A 

a 

ft **H 

aaa^x 

ft 



j 0 

a 

a 


z 

• 


* 



ox 

UH 


ft 


ft -1 

* a 3 

ft 1 

z 

ft *4 

aooo a 

ft 



X 

OHIO 



a 

X 

* 

ft 



< H 

a 3 

a 




* an 

ft © 

©-1 

ft O 

a a kujd 

ft 



© o> 

HQXa 

< 


a 

a 

# 

ft 




XU 

X 

A 

a 

—0 

>x 

H 

J 

za 

xa«za 

ft 



*4 < © 

M H 



S 3 

»—• 

* 




a> 

aa 

H 

a 

0 

aa 

jan 

JZ 


J< H 

a a h *4 

* 



am 

a 0 

a 



z 

* 

0 



H 

x 


0 

w 

o> 

X H 

a a 

a 

223 

o ja 

ft 



0 0 

HltZ 

0 


a 


•ft 

H 



~Z ® 

oa ® 

O 


a 

w< 

z< 0 

h a 

a 

a 2 0 

0 a za xh 

* 



w ®a 

• O 


a 

< 

a 

* 

O 



02 

z a 

Z 

3 

0 

za 

zx a 

Z 3 

< 

zaa 

HOmIIH« 

ft 



• an 

az a 

a 

J 

X 


* 

O 

• 


a < 

<oz 

©4 

a 

H 

3 

33a 

30 

a 

3 0 X 

oaano 

ft 



® H < 

a oh*-* 

a 




-ft 


z 


ana 

Z *4 

a 

z 

a 

an 

a a 

a © 


a a 

0 3 ao 

ft 



• < a 

©* 4 © 

H 


H 

z 

ft 

© 

c 


o<o 

®< -1 




a 

0 < 


a 

0 

an oa<o 

ft 



©2a 

zaa 

O 

H 

a 


■ft 


CO 


hx 0 

CL 

* 

* 

# 

* a 

ft z a 

ft H 

2 

* Z Q 

* >az a 

ft 


> 

a a 

3 aa © 

3 

3 

84 


ft 

ft 

H 


ana 

0 aa 

Z 

* 

ft 

* *4 

ft *4.. 

* a 

3 

ft *4 z 

*OmQjo 

* 


a 

h oa 

za h 

O 

O 

J 

a 

ft 

ft 

X 


a 

QZZ 

0 

* 

* 

* a 

•» a 0 

* a 

© 

* a < 

ft a 2 azo^ 

ft 


X 

zaa 

a a« 


X 


z 

* 

ft 

H 


• a 

<* 4 < 

►4 









ft 


as- 

44 

< X x 2 

a 

H 

a 

0 

ft 




an 0 

_j a 

a 

za 


z 


H 


4 


ft 


O 

a ©a 

ana 

j 

►4 

a 

0 

ft 




zoa 

a 

a • 

oz 


0 


Z 


1 0 


ft 


a 

aaa 

> 0 • 

0 

3 



«- 

(0 

O 


wzir 

naz 

an 

(D 3 


© 

H 

a 


(Ma 

3* 

ft 


Z J 

- z< 

m<aa 0 

z 


H 

CO 

ft 

0 

H 


-j 0 

hwmQ 

cr m. 

X H H 

X 

*H 

a a 

a 


©X 

x 0 J 

ft 


*4 0 

0 

0 a 

*4 

K«B» 

Z 

»-4 

* 

z 



H 

• X 

a 

ixx 

X 

XX 

z < 

W 3 a 

o<a 

xzx a 

ft 


ja 

ana 

oaaaa 

a 

a 

a 


ft 

a 

H 


0 ®a 

Z^HZ 

xo 

O H H 

0 

OH 

O J H 

QUQW 

« 4 K 

O J< H 

ft 


a h 

oaz 

ao a 3 


u 


a 

ft 

►4 

z 

• 

an 

3 a 0 

ao 

Q © » 

0 

O * 

• oa 

© » 

» » 

X » 

QO • Z 

ft 


aaz 

aa 

3 ax 

a 

V 

a 

M 

«■ 

a 

M 

H 

CL *4 QC 

aa a >4 


Z JO 

z 

za 

JZ * 

_J _) -J UJ 

X J 

azzNao 

ft 


z**o 

• an 

0 a >na 

0 


X 

X 

# 

a 

O 

a 

O O 

• OOH 

ao 

a xx 

an 

ao 

xao 

mo 

ox 

oaaz<o: 

ft 


©-xo 

••a 

J 3 ©4 O CD 


< 

H 

H 

* 


a 

< 

naa 

h 3 

XH 


a 







ft 


JH 

* X 

JJHZ 

a 



v 

« 

0 


H 

a h 

za ao 

H 

_J >4 

j< 

j *4 

*4 j 



J »4 

a x j j 

ft 


> 

• aa 

0 < 0 < J 

J 4 

a 



ft 


0 

a 

3 J 

*-* aa 

» 

JO 

J H 

JO 

oja 

X 

IU 

joa 

a a J -J a a a 

ft 


OH© 

• a 

a > a j 

< 


a 


ft 


H 


HO< 

©ax 

a j 

< OH 

< a 

< Q 

o< 2 

OH 

Oz 

<02 

X 3 << 2 CZ 

ft 


a< 

©aa 

a >- ©4 

a 

< 

H 

• 

ft 

z 



aa 0 

aa aa 

aa 

0 ja 

oa 

U J 

JUT 

x a x *4 

O J 3 

tuauoTaT 

ft 

* 

> 0 

0 X 

zaam s 


a 

% 

O 

ft 

3 

a> 

0 

a x a 

azo 

HH 









ft 

ft 

<HZ 

H H 

01a 

< 

a 

< 

z 

ft 

a 

a 

H 

►4 a J 

HHQUi 

< Z 




J 

j 


J 


ft 

* 

aa« 

ZH 

*4 h o a 


z 


< 

* 


z 


a 

ff-l<x 

33 




X 

a 


2 


* 


mH 

©4 © 

a aaz 

z 

a 

Q 

2 

ft 

ft 

3 

X 

HlH 

H H 

jtr 


a 


z 

H 


a 

0 

ft 

H 

J«ia 

CL *4 © 

a HOD 

*4 

0 

m 

2 

ft 

* 

H 

U 

aa a 

ZHlil 

< ® 

3 

0 

z 

z 

Z 


z 

H 

ft 

z 

** J *-• 

a-J© 

oa<z ©4 



H 

O 

ft 

ft 

X 

< 

x< < 

ax x a 

> 

a 

H 

3 

3 

3 


0 

0 

ft 

tto* 

a < h j 

© 0 

Z OH <H 

O 

a 

< 

O 

* 


H 

© 

HH 

ana 

ao 

z 

a 

a 

a 

a 


a 

0 

ft 

a 

2 a 

< z 

3 <ax ©4 

a 

z 

a 


* 

a 



a cm 

az 3 

H 









ft 

a 

aa<a 

a *4 

oa oa 

H 

< 

a 

H 

ft 

0 


a 

a o 

a az 

• 









ft 


OHHX 

©- a a 

aan 0 

O 

a 

z 

X 

ft 

H 

to 

a 

0 Q< 

oaa *4 










ft 

0 

aaan 

© 4 H 

na a 

3 a 

2 

a 

a 

ft 

to 

H 

0 

ZZH 

2 oan 

CC 2 









ft 



0 a 

<a a 

o a 


0 

7 

ft 


a 

0 

*4 <r 

z oz 

03 









ft 

ft 

0 j» a 

z » 

0 a © 

a 

1 



ft 

ft 

a 


a z 

ronj-o 










ft 

ft 

3 S 

< *0 

a ® J 

an 

0 

a 

a 

ft 

* 



* *>* 

aao 

CC 









ft 

ft 

H © or h 

2 ©z 

*4 or 0 z © 

*4 0 

a 

©» 

H 

ft 

ft 


♦*> 

ffl c~. 

a 

ao 

a©© 

in 

a© 

0© 0 

© 


N *4 r 4 

iri © 0 CM 

•Si¬ 


~oa 

2 •< 

aaoo 

3 

a 


3 

ft 



a 

— • a 

a • * © 

xz 

ooo 

0 

00 

ooo 

0 


OOO 

O O O O 

ft 

H 

aaw 

O © 

h ©h a 

O O 

< 

*•** 

u 

* 

3 

a 

u 

a h 0 


a< 

oinn 

0 

oa 

ooo 

«4 

a 

cm a © 

O <t O CM 

■si¬ 

a 

<0 MtZ 

u» * 

< 2 ZO *4 

Z 

1 

a 

a 

ft 

a 

0 


uzz 

x az 


< "• *4 

< 

< — 

0*40 

O 

*4 

aaa 

< 

ft 

©4 

14 < 

a 

SDwZlL 

*4 a 

X 

J 

X 

ft 

z 

W 

a 

*-a< 

az na 

0 * 

O -4 CM 

ON 

0*4 

*4 O < 

a cm ©a 

0 *4 a 

a ao QtM* 4 n 

* 

j 

HHO 

HHJ 3 

a za <94 

a j 

u 

cc 

a 

ft 


3 

0 

zas 

tczzz 

na 

O CM CM 

O O 

0*4 

CM O O 

UJCMW 4 

U CM O 

0 ooooao 

ft 


h aa 

zao 

0 a 20 

H CD 

< 

0 


ft 

* 

a 

H 

302 

a 3 3 3 

oz 









ft 

* 

a* 4 *-o 

*4 uj a 

a a 2a 

a 3 

CD 

•4 

0 

* 

ft 

z 

a 

a uo 

xaaa 

O *4 

» 0 (MJ 

a w 

a© 

&UIL 

cMa © n 

c*oa 

cm a< n <0 a 

ft 

* 

©4 J jo 

a ia 

lujoa. 

O 



0 

ft 

# 


® 

* ® u 

H* • • 

* =J 

CM CM W 

CM© 

an 

aaa 

<fr «<t -sT <• 

< < 


* 

* 

J® H 

a 3 < 

<h ©oa 

<0 

< 

< 


ft 







CM CM CM 

CM CM 

CM CM 

CM CM CM 

CM CM CM CM 

CM CM CM 

CM <M CM CM CM CM CM 

ft 








**»««* 

♦ *ft 

*ft *** 

ftft ft* 

ftft**000*00*00ft OOOft 0000ft 

000*0000000* 

ft ft ft ft 

ft ft ft* * 

*** 

* * * * * * * * * * * * * 


Page 18 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 May, 1976 


135 




o tout 

© • 

© < «-* 

a in 


o z©i 

Qa h© 

JDl CJ 

JCUJ 

_J>- Z 

J ©< 

a o < 

o©©z 

o o© © 

U--JU. 

i UiXO 

ID © © 

©*-*H H© 

©Z -J 

Z2< a 

*M *-4 © © i 

0 ©D©0 

« 5 < 

©_jN«z 

O <*-•' 

Q < O 

zz ©a; 

Z >> N 4 

< *-4 < 1 

<ffl© • 

© > 

©© 

•ID I 

zqnui a 

CZ H© 

O© © D< 

Z*~* 

N|-H Z 

< a©x 

h< *-® 

XH <H 

- © H 2 s 

X © X 

Q UJ iZO 

o • 

zaooJ • 

U<H© 

a©©u«J© 


U U)V) 02 

- U) (D 


© 

O 

a 

o 


© 

o 

UJ 

tt 

o 


s 

• e'¬ 
er H 
< ft 

>x 


UJ 

z 

05 X 
N© 
Qkl 
< « h 


a 

uj 

O UJ 
J> 


o 

UJ 

UJ 

a 

o 

< 


a 

UJ 
H H 

- Z 

Im 

— o 


DH 
0 ©X 
O >© 



© 

a 

-J 

z 

© 

«c 

o 


X 


© 


o 

> 

a 

z 

o 

© 

D 

X 

X 

o 


j- 

© 

o 

o 

• 

H 

© 

© 

> 

X 

© 

a 

H 

> 

H 


3 t H 


© = Z 

© 

X 

X © 

© 

zz 

< 




ja <h 

o 

© 


O *- 



3 X ©©H 

J 

►4 © 

> 




H •© 

c 

OX© 

© 

“HQ 


a 

s ua©z 


<1 


a 



IHn|~ q 

J 

-ua 

z> 

©©*-* a 

z 

© 

©o©© 

© 

O 3 

© 

© 

X 


HX X*-*© Z 


< 

z 

©-J 

»_a 

> 

.. x< a 

Z 

< 

o 

H 

u 


NUJNJI< 

© 

©H » 

*-* 

© CD © H 


© 

xu ©a 

o 

© 


© 

< 

H 

3 H JhJ- 

H 

o in© 

H 

a < > x 

• 

z 

© >* D 


x a 

© 


03 

N 4 

OO «J ® 

X 

a z 

z 

o~< © 

a 


< © © H U 

a 

u© 


© 


X 

©©© ona 

H 

d©o 

a 

oa©H 

< 

© 

3 t I © 

o 

©X 

J 

z 

H 


Avaaoznz© 


aio 

u 

<< 

> 

> 

© H«J© 

a 

I 

< 

o 

M 

JI 

<o*-*« an 

© 

H 


> •© 


< 

3 © O 


u © 

> 



A 

a aai-tnxxaz 



o © o 
zzo z 
<♦-.-> < 


a 

n z cl 

cuj aJo©sja© 
lt.QOVlI^QOIJD 

Z • **•*• • £) ♦ * • 

<tilZIIICDXXZWIII 

© 

oo.axooooojo xz 

OZXUOOOOO<OOUM 

JUTX r J<JJ<UJJXH 


© 

a. 

IL 


© © 
o o 
© u. 
u o 

©tDCMtD — Oft-HC'OO'ftCQN 

NCDuacuroftCM — ua<\j©a 
o — cMtoioa'ftuaonftN© 


H ©> 
UJ O UJ < 
UZ>-W 

H 

X 

HZ 

< a 
x< 
a > 

o 


uJ 
o 

a 

< 

> 

a 

ujo 

OJ 


in in • »a o z 
OJXODZOO 
otnujoza cou 


o 

o 

< 


H 

< 

z 

3 


H 

X 

z 

a 

* 

<> 


u 

z 

*•4 

a 

o 

j 


• • 

• x < z a 

POX X • 

-J©-J. 

j • • •©□. 

_JX *-J *JJ 

xox: 

x^jisi Noa 

iziuiQir 

X 

a j 

X 

©X 

oaazaaj 

aouo © 


££ 

< 

> 
a 
ujluo 

OOJ 

• • *© a 


I o 
J J 

xo 

H 

X 

J 

a 

o 

j 


UJUJiV/rr'V 

H hQUJDH<UO 
©©uaQ 3 co. a 


zz 

jcr 

*-» uj a a 

XUJO NOD 
zoj xju 

• *x z• • 

-JJ 


H 

a 

a 

OUJ 

-JO 

• • 

J j 


a 

O 

a 


xxxax 
</> in 

> x a j x -J ~jh» 

na ©x oaazaa-j aouo wqi ouo atrauaa izjz 

W)XHDUOOOZOXO<OXOZOODQUOOZOOaOZU<OSQI-QUM<w 

mwaxjjmu-)aujTjNjja<xjjMjjamxuanjtf)Jxu.utL 


X 

UJ 

z 




X 

z 


CM 

X 

z 


n 

O 

o 

o 

o 

o 

© 

o 

Oft 

CM 

o 

ft o 


into CD lf> n ©fflH CD SO © © © © © © © *Q 

oo o o o o 6 o o o OOO OOOO O 

ft © n io © in in o O' n cd o no nq-h in 

<0 O < yQ 0 © © o O O (X) N O' o c o o 

U-<winm<uin<N<^o<©UJfn'0<inc'£D< f n©w<«^Noj©o^<<cj<©NQN 
aOCMO©c\JNCQU©UQUC\JU©N©C\l© — © c UN<'JNC\iaCDa©UOQ<MCVjC\l©aUa 

C‘ftQo~*cvj©©n<co©ac\i©©C'ftcQ©a©—ft©*oHft{Doao©ftN<ao«-‘cvj© 

ftftftin©©©LO©©©©©©tc<n»o©»rv0©NNNNNNNNNN©©©©©©C'O’<?'O' 


ft 

ft 

* 

* 

* 

* 

* 

* 

* 

* 

* 

* 

ft 

•* 

* 

ft 

* 

* 

* 

ft 

* 

ft 

ft 

ft 

# 

ft 

# 

ft 

* 

* 

ft 

ft 

* 

* 

* 

ft 

«• 

ft 

ft 

ft 

ft 

ft 

# 

ft 

* 

ft 

ft 

ft 

* 

ft 

# 

* 

# 

ft 

ft 

ft 

ft 

ft 

* 

ft 


© 

H 

>> 

© • 

Z 

Oo 

UJ*-* 
CCH 
o~ 
z o 
o z 

NO 

u 

© 

UJ 
© 
o j 
z < 

<UL 


DZIln H»-* •< 


©ft 

<~ O J 

Z 3-* 

z 

©H »-H 

*-xoa 

Hi 

© • O H < H 

a ©a< 

XH 

ft © Z D X X 

an a> 

H *h 

*h OH © 

• »H< 

H 3 

• • ©© z 

i < 

Z 

a —x© 

©©X 

< ® 

aa ©o© 

XIU© 

© 

x © - z X 

HH<n 

>■« 

©IZ • ft H 

CO 

©V 

H © O X 

©© X 


ZDiaSH 

X »-* < © 

oz 

ft O H © O ft 

H 

©ft 

• NU 

J ©H4 

3 

HO J © 

e *-* 

n© 

© ZO Z© © 

©© Z 

-J* 

•-aax o 

H4Xff < 

-J*-* 

O GOZ HZ 

©o 

o-J 

©0 3 — 

oh © 

© 

3«J © • H 

Zm -PH. 

H 

OUlllHOZ 

< © 

©M 

JZI fY O 

XlL© 

© 

jHHkUJU 

XOH • 

© 

G ^ 

O On 

ZH 

© H Z 

UH3H 

ft< 

©ft ©©O 

©oz 

U© 

© OX NN Hi 

• H H 

a 

*-• Z H H 

H-J©a 

• H 

< e • D 

o ja 

X 

• x©a a u 

a <©- 

©*-» 

© xhcl© © 

Z D 

aco 

*-* oo x X X 

N>OZ 

* H 

• UZUJ©© 

•D3Qn 


o 

z 

►4 

a 

H 

Z © 
ft© 

x< 
an 
o > 
llOQ) 
H 

(0 O 
H H © 
*-*UJO 
ft©© 
3 U 

zo 

*-*©tt 

© xa 

HH 

<0 

Z©»-* 

©►* 

X UJ 

-3rf 
©< 
• <*< 

Znir 

okc 

JO 

o> 

U UJ 
UJX 
<IH 
H 

> U- 
© £~* 

oz 
©*• • 
3 a 
OOOL 
-JUJX 

Ja© 

o> 

U-H W 

N 

H © I 
DCDH 
O 

OIL 

OHO 

UJ 

H ® UJ 

zao 

HlJ 

ax< 

aw> 


rn 

rmnnnnnnnnnron 

nnnnrJnnnnnnnnrjnnnnnnnnnnnnnnnniwnonnnnnnn * 






o 

o 

ooooo 

00 00000*0000 000 OOOOOOQooooo oo oooooooo oooooooooooo********** 

ft ft* 

* * ** ** 

*♦* 







ft 



• 

^o 

< 
















ft 

• X 


o 

J© 

© 







a® 






• 

« 

©© 

ft 

CM H 

® 1 

© 

ft X 

a 

• 






©a 

H 




; 

© 

H 

ax 

* 

a - 

Z - © 

• H 

UUZH H a 

< 

a 


• 

^4 3 



©< 

I**3 




0» 

o 

z 

©o 

ft 

X 3 

UJwwUS 

© a ft 

H.©H4< _ UJ 


< 

X H X 

aa 




o> 



a 

H 

H 

o 

a 

HX 

ft 

© 

xa zoo* 

x o> 

©x x o a 

© 

>© 

O** — o 

©© 

O © 

o 

X 

a 

z 


© 

© 

ft H 

X 

aa 

© 

ft 

X 

h x *H-tna u 

ft oh* 

>u©HHao< 

> 

© 

002 O 

HH 

H Z 

a h 

u 

oo 

H9 

© 

H 

*-» 

IH 

H 

3© 

XX 

ft 

oa 

©ua ©< 

© _JH 

x o >-«z 

ft 

j© 

JHm © 

©© 

H4 

© 

ft 

«H J 


z 

Z 

X 

3 

© 

UH 

<o 

ft 

HO 

o hQhnh 

u 

a©—©* <© 

© 

oa 

*> J 

• 

H J 

H x 

H 

• 

© 

o 

M 

© 

5 © 

• 

- z 

aft 

ft 

IL 

H O © J O 1 © 

©• < 

*-*o©a x> 


ao 

o o 

H 

©□ 

z u • 

© 

© 

a 

© 

o 


a 


M 

<03 

ft 


Z * <z 

•-» a © 

> O© *Xft 

a 

HO 

HO© H 

OUJ 

© OH 

< a 


H.O 

o 

a 

H 

..o 

o 

oo 

a 

ft 

an 

© < a © o © 

xoo 

J •H*IH HO© 

j 

z< 

ax 

a o 

HZ 

O H ft 

© 

J 

2 

H 


O 

HH 

-J 

-ja 

© 

ft 

X© 

D © *crzi 

HIL 

ja CD H © — u 

o 

o 

. OH - 

o 

• © 

a ©> 

I 

JO 


X 

X 

z 

< © 

o 

o 

s a 

ft 

©a 

-JCVJH • -J H 

• © 

*H<H -x © 


u© 

HU3 HU 

3 * 

ona 

a 

H 

© 

O 

H 

o 


©© 


H 

a < 

ft 

II H* 

<aza<< 

a ~ 

a> J -©i 

© 

H 

ft © © ft UJ 

H 

z<a 

H oo 

3 

>H 

z 


ft 

© 

a 

© 

©X 

o 

ft 

a© 

> a*-< z 

— © 

ft • J©JXH 

X 

© — 

IXIUHIX 

© *-« 

0X0 

X H J 

o© 

©ft 


© 

H 

z 

© 

X 

X© 

a © 

ft 

< 

XO>©H*-» 

> a 

©©©ft X H 

H 

X 

H © X < H © 

I 

OHU 

© z • 

z« 

JX 

© 

ft 

© 

< 

3 • 

H 

HH 

S 3 

ft 

> © 

© © a a h. © 

l-HO 

© J 2 H © 


H© 

- HO * 

HO 

a 

H »- 


H 

> 



© 

© 




ft 

X 

H o o 

OHO 

©Oft© X OH 

© 

»-4 

© J© 

Z 

©© 

O 

o© 

X 

ft 

© 

o 

X 

*© 

o 

oo 

OO 

ft 

a h 

►*• © H -J © O © 

OUJ 

Uft ©©©HH*h 

> 

H 

>©a<>© 

a o 

H>> 

o uz 

it a 

UH 

© 

z 

-J 


0-1 

z 

Z-J 

-JZ 

ft 

o 

©x-a © > 

< 

©— UO X 

< 

© J 

< © O > ft © 

oo 

Oft ft 

Z H.M. 

j© 

<© 


ft 

o 

o 

©© 

< 

ftO 

Oft 

ft 

© © 

H H© ©H < 

o • 

za©a ox x*- 

© 

©X 

©oa©©o 

aa 

z ©© 

ft oa 

XX 

©o 

o 

© 







ft 

- < 

© ft H © X ft © 

z > a 

<IO<HUJ 











© 



© 

H 


ft 


© G OH U 

-JO 

H > H a 



a «-* h *h 


UH 

a 





o 



o 

z 


ft 

o e> 

j© *-« © 

ana 

O Z 30© 



< 1 XI 


zzz 

H < 







H 

u 

a 


ft 

z z ~ 

o<x©© o«- 

z» 

z JH o© X 



>© j© 


— a © 

a > 





X 


ft 

X 

cc 


ft 

ft *-• • 

Z>HHhZ 

o© 

^OOZIH©H • 


J 

a o a o 


a aa 

a a 




N 

H 


X-i 

H 

o 


ft 

I - 

< © © »-*< 

• za o 

azftH^a © 

ft 

ft 

o< o< 


000©0o0© 

a 

u 

® 

a 

© 


3 I 

© 

u 

< 

ft 

• H «• 

X*- ©HftttJ 

J H OO©© 

X 

> 

JHU JH 

u 

HJUJOJ-JO 

© 

m 

a 

a 

• 

X 

O • 

• 

• 

a 

ft 

•-* 

• OH© • © {X 

- oo 

ft z©© — ©oo o 

© 

H 

• • © • • 

© 

^ • 

• • * • • CD 

CD • 

• 2 

ax 

• 

-J 

9 

• a j-j 

-J-J© 

o 

ft 

a©©a©-<z, *-< 

xu 

uoazo©j—z 

o 

© J 

JJX J J 

X 

ajjjjjjujj • 

• J 

J *J 

• • J N 

X 

^JNWXIIIQ 

ax 

ft 

XXO< J3CDH 

© u © 

«~*o<ohq: ©« 

a 

©X 

XX© XX 

© 

axxxxxxmxxxjx 

XftXXNftXOZ 






© 

ft 

©< 

>< ua©©©<a x 

O JH H 
















.j •-* 

ft 

© a 

a a > h h © h 

O © > H *©ooz 

j 

J 

h* a h« 

a 

6-4 


a 





Q 

aaoa 


a a 

-IZ 

ft 

a ©© h© xoi< 

~© X 

JllUXHIttOO 

j 

JU 

oaa o 

IfLlQ 

X O IOQQn 

oouaa o 

uaa 

o 

O 

OXOOHOHO 

< •-« 

ft 

uiujhjhi u jh ©a hz« 

HXUftHH U 

< 

ft © 

HOX XHO 

2X20H0HUH00U000X00Z0X0 

©zz 

jjNDjawawa 

u© 

ft 

Hull t-~® — 

3 © O © • 

© hMi za 

u 

UQ 

©JO©©J 

o©oj©j©x©jjxjj<©<j*-* 

HlJOUl 


•» 

# 

* 

* 

* 

•» 

ft 

» 

ft 

ft 

* 

# 

ft 

ft 


in h < ©x oaxz x • 
<— »l3aO<JUh<HbC 
0J if) 01^0 ZUJQ> U 

••azican »<o: ozz •< 
©x<h>x < <© H 

3 E © © w UJ © UJ • X © V) © 

a 23 © ©a-©Hze>o< 
OO x©©<z> o»-©u© 

©HX ••HOI -J<Z o<n X 
a • H© 0 . ©©3 D © H 

OhOWOUJ- >o x©z X 

3 a© *Z 3 JrfJliJ(.ZlUC 0 HS 

hx --«j_Jin- x x < o 

©ow© << H •© 


x a *o«z 
h •© auu o 
a >-* © © © 

(DO XXX • • H 

<o hhuh* d 
© • *- *-*au 

© - 0©OX Q© 

©«az z»-.©x 

>a <~ <-J* © 

aa>t 

j©©o 

JIXZ 
2HH< 


o©o: 
: z z* 
c *-• <. 

► © • 
©©a x©t 
cn • oou t 


a 


CM 

rn* © 

N 

o 

cc 

a 

aa a 

QL 

a 

a 

a 

aaa 

a 


- © * < < 


© 

© 

© 

© 

© 

ft 

ft 

©HZ > • 

• 

. X n«a 

a i 

X 2 hZ 15 O 

O 

o 

o 

O 

o 

ft 


<ao j ©« 

• Z 

• H J© 

ft H 

©U an Z© 

n 

ft 

n 


© 

ft 

a 

Xfto • J H > O 

H 1-4 

a j jho 

> 

IftH ft X — O 

o 

< 

o 

o 

o 

ft 

o 

>©--z< a 

2 

< © 6-4 CD < © 

a 

HHO>H 3 (T 

ftU^ftO' 

CM 

- 4 fU ^4 

ON 

ft 

a 

- © 11 3 ©© • 

JU 

>a 3 <Io 

HO 

©Z hCD 


\Q © ©«-«->• © •>« w* ©O©®© ©O® 

oo ooo ooo ooo oo ooo 

— © NO© ©V0© ©^a-^O ©<N 

©N oo© OQ© ooooo ooo 


fO 

o 

ft 


ffD 

o 

© 

ft 


CUNCDU©©(\J©WQ«J© 

ftN©aoQ©^«<Nj©«na' 

OOOOOOQ©©©©© 

CMCVJCMcmCMcmCMCMCvJCVJ CMCVJ 

ooooOOOOOOOOft 


oca — a Q.ZQ-Q Hh-ct 

* ooujo.nq:qhionoiimq: d 

* ©©ix0ozxjij©iD<©a 
ft • * H©HU<H. H » ©H>N-w 


x x hJja 

©OH©C< © 
zzNiHiiouw 

• QJII-Ot-HlLH 


**♦♦***#*#♦*** ft*ftftftftftftftft* ft* 


oomcvj«~*r)©oj-*ro©r>-c\j<(vjcDOd.- <coo©a©a©n®<ium<eu 

Ou<NJrvjojuocgojoouiMcuwcj©ojoW©'0'OnnoNcvj©«JNCJfflo 

<Oo^ftN<co©~ft©>eoco©*-'ftir>©m©©o-«rgmftinoN<JX)UO 

©©©©©©©©©OOOOOO^--* — 

(vjwwwNwwwryjnnnnfonnnronrnnnnnnnnnnn n © o 
*oooooooooooooooooooooooooooooooooo 


May, 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


Page 19 


136 







* 

* 




A 

a 








X 

Od 





* 




a 








u 

z© 





* 




xo 

©UJ 

O 




O 

0 

_J < 

CM h- 



• 


* 



UJ • 

UJZ 

~o 

II 


z 


II 

II 

A J H 

J z 

• 

X • 

a: 


* 



IUJ 0 

v< 

•J 

—J II 

9 

d 


*/ 

-J 

CM< © 

IIM 

© 

OH 

< 


* 


• 

P* © © 


• < on 

X-J 


o 


X 

x 

a 

A 3 H-O 

X 

UJ 

> 


* 


© 

-J P- 

z • 

u > • II -1 

I 

j 

H- 




aa a 

WOZmI 

bJ 

* ©© 



* 


z 

O < < 

<© 

0 a ji 

z 

x 

© 

0 


Z -4 

xo 0 

a z -4 

h- 

* *4 ■ 

o 

X I 

* 


0 

ZlL UJ 

H- 

J A O X 

dz 


a 

11 

0 II 

a 11 

©a 

a h- « 

►4 

* 

* P* 

UJ© 

* 


H 

< a 

U 1 Z 

C\J • t Z 

Dd 

» 

z 

j 

a j 

O-J 

• v a 

XUAHX< 


UJ© 

* 

P- — 

* 


© 

IL UJ 

> UJ 

d j 11 z d 

r H O 

s uj -4 

H 

1 

SKI 

S HI 

a n © 0 

©QCM©© 

UJ 

H-Z~ 

* UJ 

- 2 

* 


© 

© — a 

«2 

< a uj Ad 0 

»UJH- 

A © 1 ! 

V Ul 


(1 UJ 

VUJ 

0 _JZ©H 

V d *4 H- • 

a 

J w 

O 

►4 

* 


UJ 

cn -> 

ID 

X d H s Dh 

: d© 

• -J -J 

S -4 0 

H- 

r KH 

» CH 

• I M " 1 • 

za 0 

o 

U. -J H- 

K J 

vu. 

* 


a 

<0 •© 

O 

©UJ »4 »|-UJ 

• d 

• <1 

• II d 

UJ 

• UJ 

• Ul 

-1 H> •© 

O X © © II 

X 

UJ ** 

UJ < 

© 

* 


a. 

H- »< 

za 

» 4 va aujd 

a • 

a u. 

CL -J H- 

© 

a *© 

a •© 

©zoa© 

z ©aa j 


o>- 

©> 

-1 

* 


X 

O »Z 

< < 

Dooa 

O UJ - 

0© • 

OX 


OUJ 

0© 

aaooa 

CM© v<oi 

• 

H- UJ 


X — 

* 


UJ 

zz »o 

u 

© UJ x 0 * » 

• ©UJ 

• ©0© 

4 • 

UJ 

•©UJ 

•©UJ 

Dd 

D an 

© 

* a © 

* H- 

©K 

* 



M<WW 

© 

•->0 j ••© 

JJD 

-1 j©o 

_J H- —J 

© 

-J-J© 

-J-J© 

HHUJJ> 

HjHSWh 

UJ 

* X © 

* UJ 

H- 2 

* 


-J 

— P- *■* 

• < 

I < 0 0 UJ 0 UJ 

uj < a 

UJ< Jd 

UJUJUJ 

-J 

UJ< _| 

©< j 

OUDU© 

©< ©O©© 

>- 

* uiiu 

* © 

-D 

* 


< 

© U 1 A Q. • 

0 • 

H©-JOdZ> 

aiLH 

ttll< h 

a©d 

UJ 

dU_© 

aa© 

za©a a 

u>nuaw 





* 


u 

aD©o • 

• A UJ 














* 


*4 

Odd • 

d © 

—4 













* 


0 

Hi-aiii • 

tuauj 

1 











-4 


* 


0 

< xa- 

JXX 

© 











© P" 


* 


-J 

aauK- 

muJH 

0 








atu 


UJ 44 

<© 


* 



UJ — V A 

<vz 

CM < 







uu 

CM© © O 


O H- 

> • 


* 


a 

ACL 1 ~<t 

►4 < 

d HU® 


ffl 

© 


© 

© 

CD© 

aovj 0 

*4 

~a © 

P- • 

p- 

* 


0 

cm 0-4 «a 

a zcr 

a •uj- < 

-4 < 

-4 < 

— < 

X 

-4 < 

— < 

U • 

<CL • »I 

CL 

• u • 

UJ • 

tu 

* 



or a *a 

*i<< 

xjjxa • 

a 

CL • 

a • 

• 

Q.N • 

au * 

-I *-J_J 

•XJJXIUJ • 

•hX 

< ©M 

©• 

JI 

* 


-j 

0 .UJ©O • X 

> a. 

ujiiiuxyjDxNjDXNyjDxjNg 

L 

U 

X 

N 

L 

U 

X 

N 

L 

U 

H 

U 

A 

H 

H 

C 

E 

H 

H 

C 

0 

H 

A 

© 



© 

* 


< 

X X >4 • UJ 

UJ 










H 

M 

JU 

»4 

* 


u 

UJ p- 

H> Z 

JIM J 

-j 

-J 



-J 

_J 

I 

-J _J 

az 

a a 

JW 

a z 

* 


►4 

V © *4 A 

< < »4 

jWOajKOH 

JH-Ql-Jrl-Ql-JQM-QKJI-Oh 

jHQHaHoawQjxxjaoo 

x — 

QXX 

<© 

X M 

* 


K 

AILZAON 

XX 

<DOX<UJOuj 

I<LUOUJ<UJUJOUJ< OUJUJCUJ<UJOtLJ 

<HJOUJOUOODO<UU<000 

na 

JUT 

UH 

"111 

* 


UJ 

• oonz 

H- A 

uajnuajauaja 

uaa'jaujaajctua-iauajaQ.a-iaoLjoxxua.jj 





* 


X 

a Ha:<a 

za 














* 


X 

o©*-a 0 

o<a 











K 



* 


K 

• Z<X© 

©ux 

•4 










© 



* 


►4 

jOailKHAA 

UJ 

d d 

CM 

n 



© 

0 



© 

IL 

K 

*4 

* 


a 

UJ uivzvujz 

UJ© V 

OL CL 

•4 

-4 

-4 


-4 

*4 

•4 -4 


a 

UJ 

UJ 

P* 

* 


< 

a©a-^ow in 

z 

X X CL 

a 

a 

a 


a 

a 

a a 


►4 

o 

-J 

© 

* 



V w 0 1 hAIDhAhOZ 

UJ UJ X 

X 

X 

X 


X 

X 

X x 






* 


© A A >--«t<H-a©*- 4 < 














* 


©cMCMAWdaa — uaap* 














* 


Kaa •©QQaazxDo© 














* 


<aaa© xohiuzid 














* 

* 

DxXOI*H©W>aV©D 














* 

* 

©©© •H^avvv 

vCDuZ 














* 

* 

<WJ II < 11 11 

< 










m 

* 

© 

*• 

* 


> II 

UJ a ** •* 

© **U 

•4 *4 <}• 

<* 

«r 

* 


<■ 

< 


<* © © 

o 

o 

o 

o 

* 

a 

UJ •• 

ffO"*"** 

nX 

ooo 

0 

0 

0 


0 

0 


0 00 

»4 

oo 

UJ 

N 

* 

a 

• • 

V AvAA 

UJ A 

UJOO 

0 

0 

0 


0 

0 

— in 

© 00 — 

m 

o — 

N 

o 

* 

X 

• A 

HCVJ 

AO<t 

Oll<J 

< 


<* 


<* 

< 

uu 

© N OO 

nns 

<©< 

QllU^nN 

* 

UJ 

a a 

©©a©aa 

dza 

*4 n 0 © u. 0* 0 © U- 0 

0 ©<pu.O'QtL©©UOOOU.O‘ 

ooao^CM 7 '^©aoo©o^- 4 iij 

out 

— U.U 

uuwooa 

* 


aa 

aDaaaa 

o.wa 

OJUUQ'OUUU®U«JUQvOUU'OUQ‘OUUU©UUOOUUJUNUJUJ*UUJUJUO<MP r ) 





* 

* 

X X 

tu©xiu XX 

X X 










u oo 

— CM <t 

N<(DUQO 

* 

* 

UJ u 

xujujxujuj 

UJ©UJ 

N<CD(JDO-«<Vn'CK(OOi<ClUJlL.O- 

- CM © © N © CD U Q UJ ao 4 * r> © © 0 < © UJ U-CM 

U. U.O 

ooo 

ocooo— 

* 

* 

** V 

3 RCT V 3 tVV 

V< V 

M 4 H 44 M 

^CMfMCMCvJCMOJCMCMCMCMCMfM©©©©©©©©©©©©*-*^-^-*-*^*^-^© 


■tf <f sfr 

* <■ < < 3 - <fr 

* 






000 * 000 * 

oooooo* 

******************** * ooooooo oooo 090 00000oooooo00000000000000OOO 


• 

• 

a 



© 

a 

H- • 

a 



z© 

a 

OO 

x • • 



W ZH 

X 

a 1 

• ©©• 

• 


© —d 

© 

Z _j 

© DP 

0 


©< 


♦40 

<Z J© 



a h- 

© a 

*> d 

Z < < _J 

a 


OK© 

© O 

s © 1- 

z >• 

►4 

n 

X 1 

a 

f'-IZ 

00 

• 

0 

p-©© 

-J z 

H-H- O 

UZHQ 


11 

© Z (X 

_J~ 

< O 

<<d 

© 

• 

©© 


XO 

>- 10 

* X 

d 

Dd© • 

* d 

3 K O © 

© *H -3 

* — 

* a 

Z IH 

0 

5 © a 

Z 

* © 

* X 

-dKX 

oa • 

d >- 

O O O © 


* © 

P- — © 

z a 

K H- 

© *4 j- X 

X© 


ZXZ z 

•4 ©a 

zo 

H© H- 

© — 

a © 

O © D 

d H-X 

-ZD 

< © 

d 

-X 

U dO 

*- *- © 

d< O 

d JJP 

© 

H- 

- Z 

© < 

a > 

© <©D 

* — 

* 

• ©0 

* © 

i— 

a 0-0 

* X 

*© 

o©za 

© X 

ja © 

© oa x 

* p- 

* — 

ZH<M 

IZH 

JZW 

© © < H- 




H- © 

— 0 © 

> — 



© © 

xa 

Jtrj 

©Z * 



X © 

• H-O 

a z 

X <© 



© p" 


— D 

© X 0 



zaz 

©► 4 © 

©© 

P- *H-Z 



D^O 

©©0 

HXU 

— © < 

0 


d©d 

H- K-J 

H- P- 

JPZ 

•» 

X 

• 0 • 

O < 

* < 

a ©©x 

© 

• 

NJZU 

O > 

OHZ 

a <©0 

X 

<JZU.ZI- 

O • 

— Z — • 

- u 



d 

z© 

J«Z« 

H-dO 

- a 

d 

J < 

©01 

<a a d 

©< z* 

0*4 

aoa a©ap- 

JJh 

>a ©a 

•4 > < P* 

ox 

xoox<x© 

©0 

Z © H- © 

-J © • 

©© 

ujHiuna 

DUO 

—a a 

< •-!• 




O K 

KZ 

< a* h 




o< 

©OO »4 

aa © 




© 

hZZ* 

HOXUlL 




d >-J 

< 

© © J© 

X 



O © © 

• J z 

© OQ 

© 

a 


< 

as -J — 

OHUZ * 

d 

*4 


UJOw 

a > - 

©© X < 




-J©d 

xa 3 0 

5 -P-X> 




0 X 

©d © 

0 © © 




ZO> 

OZJ 

JZWO 




— J 

H-© 0 a 

JO©©© 




© -J© 

d: hz 

OUHJZ 




ox 

a v- < 

a <<o 




zan 

ZdDX 

xo 0 

0 


CM® W 

M 

HOU 

©©- 1 © 

0 


ooo 

OH- 

a © 

► 4 p< J © 

0 


O'CM CM 

ZW© 

©s x — 

- > - — 

0 


4 t© <* 

Hh® 

X ^*© 

• © 3 r 

— © 

a o©cmocmn 

<z 

H 5 © 

P> X © 

cm n 

OMDUUOU 

0^0 

O© M 

a u —— — 




<dz 

axxi 

_J < ©©X 

0 a* 

<®uoor)'0 

~a< 

Ht h-H- 

- UHHH 

0 0 

C> 0 ' 0 'a<« 




© © 

n©©n©©© 


***************00*0000000 



e'¬ 

< 


K 


er 0 

0 


a 

d 

OZ 

> © 3 * K 


X 

© 

a — 

CO © 0 © 


0 

H- 

dd 

CD Z C'-H- 


a 

Z 

©H- 

O <• K d 


a 

• M 

© 

© — 0 a 0 a 



P O 

a 

5 • a h- © z • 


© 

* az a 

o< 

O O < © CD 


< 

*©a 

* 

© Z > H < © d 



* a p* 

*©x 

© d--o 


OP 

QD X 

* ©© 

0 h- a a a 


zx 

d © CJ ©P- 

<H- 

a d* <p- 


*4 UJ 

dO- P-D 

H-U — 

na > — > 


dH- 

© a 

D 

Huza Q 


H- 

a ©Q o z 

azK 

D ©— O © 5 < 


©© 

za J ©*4 

z — x 

CD CD a CD <*• © 


d 

-00 0 

— © 

< p- d 


P-O 

p- 0 

©z 

• — • UJ P- < 


ZH 

# © O O Q 

* > 

© d © > © I p 


— © 

* ©z Z© 

* <© 0 ©<©< 0 i© 


a© 

*d< <d 

*©~z>->>©xs 0 


aa 

a p- 

z z 

— d 


K 



X d 


< 


0 

P-J D 

u 

^ I© 

© 

H- 

©X 0 

K 

a 3 »o 

0 

© 

• * • 

© CM 

* 4 © O w< 

w 

KCJ 

© a © © tu © 

© k a 

• a © • • • 

• ©d • 

X©XIOQ 

* QOh 

u*-q u<u<<oa< 


O 



• 



a 

a 



X 



©x 

a 

m 


X 

« 


P-U 

© 

p- 

d 

u 

d 


z< 


z 

© 

d 0 

< 

m 

W HH 

a 

d 

(D 

© z 

> 

P* 

o©- 

0 

d 

X 

0 © a h- © j 


z 

a • 


0 

O 

ozao x 

Z 

d 

z* 

© 

u 

Z 

HhOIJ 

♦4 

d 

K »4 

© 

• 

O 

©(DZ-JO 


o 

X « 

< 


© O 

© — < © 

© 

u 

©XI 

u 

© 

>OP 

*4 <0 UO 

O 

• 

HZU 


> 

*4 < 

I K©- 

© 


O 

z 

< 

k ©a 

Hh K H- 

< 

Q 

ODH 

*4 

© 

< a© 

© ©©<©© 

> 

© 

© X 



0 

IPOPDCDO 


O 

O©© 

© 

0 

© < © 

Z Z_j 

© 


OZ 

> 

© 

z > 

Q-Q-<Z • 

> 

P* 

Off 

< 

J 

©< 

©d zo >< x 

< 

© 

z 0© 

© 

< 

< <© 

oa <a©oo 

© 

O 

< a — 


p- 

k a 

d 



K 


Z 

Z z 

© 



Z 


d 

a - 

a 



d © 


d 

-d X 

a 



a a 

© 

©D 

ao up 

- zo 

© 


0 h. 

O 

DU 

WUO ©© 

..©CD 

O 


u • 


® * 

• » • • • 

• H- • 

•© 

Q 

» • 

_l .UJUJ UJ -J • _J 

• ©©©a • 

<JIIIIIIIIQ<UQ pioiiixiiq<* 


X© > I> _j X I« *-* I »-• © *4 d U 

on a. a o©©an-aa©p-a qcd ajoo cox too oq wojoaaaxooQii aap- 

QOOH-oa OD<ZWSJDWXOODl-0<OllJHDUODOhDO^DO<OXOOgOZOOhOOW 

jjawaa ujauohT)ahTjj«waujowaxjajwj<wajUJiuzQ.xjHja.«)aaH 


a 

a 

© 

a 

2 


K 

D 

a-* 

2d 


CM 

a 


m 

a 


* 

a 


© © 

o o 

in — 

o o 

<o «-*W 

CM U, UJ 04 Q D 

N<COUlLO 

<<<<<(£ 

nrtnnnn 


on 
oo 
CD IL 
* CD 


rnr) 

oo 

OIL 

ILU 


© 

o 

* 

< 


© 

o 

u 

n 


© 

o 


m ©o © 

o Oo o 

v-i *-S O © 

© oo o 


<9 

(1 

a 

©a 
o — 
< ©K 
ro o fo 


o 

o 

o 

o 


© 

o 


in ana <n©a << aNcv —oa'nocuincD <©~cm-. 0 '<m©©o —a o —conmcM — cM — —ao 

OUUlLOUQUQ- — -.oujCM©(MCM<Mr>CMOr)U*MQOQ©KCMN©CMQaUCM 

•*^CM©©OUU.O- , <! , ©©^©OUQUJLLO-*<*©ffl©UJU.(M©©©fflUU-O~ , C\J©*©®<><0 
CDtQCDfflCDCDCQCUuUOUUUUUUUUOOQOQOOOliJUJUJUlULJUlaiLaiLatUULlLlL 

.,. nnnnnwnnnfonnnfonrinfonnnnnnnnnnnnnnm^nnnnnnnnnnn 

*boooao*ooooooooooooooooooooooooooaoooooooooooooooooo 


Page 20 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 May, 1976 


137 
















©• 

# 






0 

< 










UJ u_ 

* 

* 





© 

(0 






2 




az 

* 

* 




3 

0 © 

< 






O 

K 



©3 

* 

* 




0 

© 2 

K Z 






O 

© 


z 

K 

* 


J 



3 

© a 

O 


a 

© 


s 

* z 

< 


* O 

©X 

* 

© 

i 


a 

li. 

z© 

z ~ 


© 

CO 


N 

* < 

3 


* ©►-• 

Ql- 

* 

0 



UJ 

(1 

K 

K 


© 



K 

* a 


A 

* vO© 

• 

* 

j 

z 


K 

UJ 

© 

u© 


2 

K 


< 

♦ 

© 

z 

N S 

a 

* 

X 




> 

*- © 

Z Z 3 


3 

© 


X 

© 

*-* 

• 

CM© N 

©z 

* 

X 



u*- + 

0 

a 

O K 3 © 


z 

D 


3 

KUI O < 


2 

a ©03 

* ©©• 

* 

0 

a 


<0 


zo 

*-* »■* © < 

3 


2 


S 

Q.CD ffi 

O 


a 1 zo 

* 2©Z 

* 


© 


CD 0. Ul 

© 

02 

K ^ 

X 

<K 




X © >- 

Z 

Q 

XZ <x 

*330 

* 


0 


© 

fm4 

t—< 

UO<C£ 



® 


• • 

©k n x a 

3 

O 

© O K X S 

ZK© 

* 


z 


ZK 


©a 

ZO <UI 

Z 

K O 

K 

s 

> 

^© 1 KO 

O 

2 

W*- <U 

© © a 

* 

* 

»-4 


UXK 

K 

0 

3 K > 3 


»—1 ♦-« 

«-* 


< 

03 z 02 

a 

II 

©©X •• 

N UJ CO < 

* 

* 

< 


^ UJ © 

*-* 

© u 

© OO © 


O 

O 

a 

© 

z 2 0 co©a 

< 


CD KK > 

x > 

* 

* 

2 


©K 3 


0 

OZ<< 

© 

© 

e~» 

a 


a z 2 © 


Z 

<x o< 

©Kin- 

* 


© 


2 

UJ 

zy 

O H- 

3 

«© 

O 

X 

© 

a © © 

a 

W 

u©z© 

© 

* 

z 

a 


KO 

© 

<0 

zo ®aa 

3 

O 


© 

© 

* a 0 > k 2 

< 

0 

* ©KZ 

*KkO 

* 

0 



U,Z_| 

3 

x 0 

HZQO< 

< 

a 

yo 


3 

* X z <©3 

a 

Z 

* xo<o 

* Ul> z 

* 

© 

» 


u< x 

UJ 

UJ 

U.<zz> 

> 

0 * 

oz 

« 

© 

* © < ©oz 

3 

a 

* uzu© 

* 0 © < 

* 

0 

u 
















* 

X 

© 





m* 






K 2 


K 


© Z 

* 

u 





z 

J 



m 



zo 

K 

Z 


Z 0 

* 


z 




0 

< 



< 

<? 


aa 

a 

a 


3 CD 

* 

* 

S-4 



3 

© 

© ^ 


2 

a 

a 


3 3 ZK 

< 

z © 

Z 3 

k a 

* 

* 




a 

0 

< < 


3 

X 

X 

K 

0 O 3< © 

H K 

< © 0 © 

0 c 

x © < © 

* 

* 

K 



I 

X*H 

ku a 


z 

• 

• 

< 

z X XIK3 

<© 

a 0 *-0 

Z© X 

K Q>0 

* 


3 


X 

0 © 

urn 

•*© X2 

2< 

HCD 

•» 


X 

ttX 0 0 * • • 

a 

2 • * > * 

a y i 0 

* • • CD . 

* 

Z 

3 


U Ul ® 

» » 

• a 

3 X - .3 

1 • *• 

V) m 

N — 


3 

< •» » •■© 3© 

•3 * 

3 *333U*-*U3 

<1 • • 

3©3 33© 

* 

0 

© 


©3<<©<<©X 

X© U<IIJX<Z« 

• 

30 

©<<©3^0X0 

UI©XQXXXE)OlUX3 

au<X©3X0XX©03 

* 

© 

© 
















* 

X 

a 

3 



3 

*-« > 


3 

U 

au 


3 X *- 

a *-* 

X 3 

3 3 

X - 3 , 

* 

X 


X 

aaoQiaQizja 

oaKaouoOK3oaKK 

a k 

KQ. 

3oaaaa© cxaoouo ax©3auK 


«ID J4»- 

* 

u 

• 


ooaozoo <2 

02©20Z0Q©<00©© 

x© 

©2 

<002023000200ZOKOU3<OZ© 

<«002©Q300<9© 

* 


© 

2 

aajwij 

HUT 

3")h-njHjjo;u3HQ:K 

©K 

a-> 

U3HiH-)a33unjj 

3 © a x a u a *-< a 

UU3«3tt3ax 30aa 

* 

* 

0 

O 















* 

* 


a 















* 

* 

> 

© 




<• 











* 


© 


to 



a O 



z 


cviro 





© 

* 

© 


© 

n 



a <• 



a 



0 



m 

N 

* 

0 

3 

0 

a 



x a 


a 

< 


aa 

z 

< 


m 


* 

ffl 

X 


X 



© X 


X 

a 


xx 

a 

a 


< 

© 

* 

3 


© 















* 

© 

© 

K 















* 


© 

U 














© 

* 

* 

0 

< 















* 

* 

8-4 

a 















* 

# 

> 

K 















* 



CO 















* 

© 

O 

3 


0 

© <* 

««»—' <■ 


0 



© 

4- OO © N 

©O 

© © 

4-© O 

© © © 

* 

O 


© 


0 

00 

00 0 


0 



0 

O O O OO 

OO 

0 0 

O O O 

0 «"• 0 

* 

*-a 

O 



u 

< u 

0 © © 


N 




CD © ©©-© 

®<o 

< «-4 

CD N © 

m 00 

* 

> 

UJ 

« 


O' 

©© 

< © © 


N 



< 

© & O © © 

CM 0 

•H 40 

11 <0 O' 

*■« OO 

* 

w 

0 

© 

HHUN<o}MJ r ' 

-«m©<©r)'0©OQcoNo©ffl©©©0'-HO'ro 

ouN<in<in<-* 

N<*H©fO©C\J-«CO©Or-*HO 

OOU<<0'<©© — O»4*C7' 

* 

0 


a 

UONCDUNtDUU 

NUa.QSN'OiOUUMBUUNOQUNOUIJ 

UKffi©©UQCM-« 

uuo(Min<\uocvjujiuuuu(\iu 

UUNffllLUtMOUjNOfilU 

* 


> 

03 














, 

* 

* 

1-8 


N©a<©uiiLO»n 

©auoo— 

CMf0<©©a><©UQ©©O 

-CMfO 

©o<©©©(M<N<m© — 

CM r> 4 N © O' < 0 © O 

H^MDO'UOOnWlDffiO' 

* 

* 

O 

© 

OOOOQOOUJUJ 

©©©©©©©©©©©©©©©©©©0000 

oooooo^^-h 

-<»-««-»(\JfM{\;CMCM(\jCMlMCMCMfn 


* 

* 

» 

0 



©©©©©, © © © © © © © © © © © © m © © © © © 

©©©©©©©©©©©©© 

* 




000000000*0000000000000000000000- 

* 00000000000000000000000 * 

0000000000090 * 

•* * 

***** 



© 





3 

A 



3 


A 







a 




a 

O 

© 



0 


< 







KO 




©a 

3 

a 

A 


3 


a 







u z 




K ©3 

© 

a 

4- 


© 


a 







< 0 




z© < 

a 

X 

a 

K 

IU JI 


x 0 

K 





N • fflN 

Z I 32 

o o © o 


©© 
©y 
y ~ © 

<3> 

IL 

hh 

M 

CO UJ to 

ujct o 

>h-CL 


UJ 

> 

K 

< 

o 

< 

z 


CM 

a 

x 


CM 

cm 

a 

x 

oo - 

“CM - 

-ia + 

ix» 


A 

r> 

a: 

a 

x 

UJ 

V 

c- 

K Q 
© O 
— < 


in 
cm 
a 
m x 

a * 
a- 

x + 

uj • 


UJ A 
3ro 
JK 

<a z 

> x o 

UJ *-« 

uj vlu j<n 

> Qi 

< o UJ 

©zzza 
<\j < 

* a 

WKQKZ 

©© z©o 
>ocm-*u 


a 

m©© 
ao~ 
a * -x 
jxjj • 


o*-o 
a a© 


hZZhlU 
XOO J> 
©*-.~0< 
k ©©© x n 

UJ K 

© o o a © u 
a z z * < 
ocmcm© a 

K »~© K 
lOhh in CD 
UJinino jd 
a -*-«©© © 


uj cm 
o a 


* jtu 


cm 

r> < 
r) cm a 
a x 
xj • 
•o- 
in i t 


IUJII<Q<IQWIZCJ« 


UJ 

V A 
JO 
k a 

in a 2 : 

-4 X UJ 

UJ X 
UJ V K 
> 

<Q O 
in zujq 

CVJ»— < 
* < 
WhOO 
UJ UJ UJ z 

>oz< 


z 
roo 
a© < 
aow 
jxxa 
xiuux 


A 

< 

a 

a 

x 

UJ 

VN 
> 
K J 

tna 


hJ 
Ul 3 
02 


<• 
n 
a 
<x 
a * 
a« 
x* 
UJ® 


a z 
xo 

UJw 

k v © 

in 

-Off 
ZQZ 
©CMU. O 
> *”• 
<k coin 
inui 

oay 

• < u 

cnoujuj 

UJZJI 

xuu 


* u. K 
o o 
z in 
zin 

UJ JOW 

OIh 

in A 
zz 

y J 
O I 

OK UJ 

zinx in 
cm«-*o «“■* 


in 

ouj 

ZK 


IUJ 

> 

zo 

•-* K 

JfDhZ 
ITJ2J3 
UJ H DDO 
J 3 Q©U 
J Ul 

< •wcro 
J Ah Z 
in a < 

o in < 
Kin*-ujo 
3JIJQ 
a<Ku< 


ui 


3 

o 

j 

U 

a 

UJ 

> 

o 


o 

UJ 0- 
XUJ 
<no 

w H 

z > 
»-• *-) 
no 


_ zz 

V© OCM 

z~ 
ko in 
in 

hqq: 

zo 
©imil 
> 

<K CD 
inui 

a 

• < 

inoui 
111 z J 
><u 


in 


U.UJJU. 

OQION 

o 

ZZZz 

*-• »-* CD 

inoKin 
z in uj 
y cm — y o 

O Dh 

UJK K UJ > 

IDUJXm 

uaouo 


3 

o 

ZUJZ 

oz 

S-4 J 

inKX 

KUjSz 

J>an 
O<C0 
iinOK 
: in j 
uj 3 
>-inuiin 
< jinuj 

©©3a 


CM 

n 

a 

xo 


3 

o 

UJX 

o< o 
• *3 * 

3^ -J 


in s 
n©o 
ao 1 
x •< 

• j - 


cm 

r> <t 
© a 
a x 
xtn • 

-© - 

Nas 


u 

8-. U 

3U 

13 

u 

X 3 3 

30 

K 

oa k 

3 K 

©3XxoaooaaaaaK 

©33a 

3 K 

© 

02 © 

<© 

3<UU000002022© 

3 < < 2 

<© 

K 

3^K 

UK 

aoxx_jx3<a->xn-JK 

auu^ 

UK 

CM 






n 

a 


CM fO 

< 

© 


a-« 

a 

CM 

CM CM 

CM 

CM 

CM 

a© 

x 

a 


a 

a 

ft. 

xa 

© 

X 

XX 

X 

X 

X 

©x 


z az 
<t o ©©o 
a in o^-in 
aox - »xx 
jx .ijji . _ 

XUJCDUXXU<<N< QXZ<I<NIU<ZX* 

IJHJ J *-• U 

injojixjoaaoaxaooaaQauaaK 

3<0<UU<C0200U200Q2Q2©22© 

a u ju x xu j-« -> j x -> j j *-• n < n o -> “> k 


z a z 3 uj 

< o©©o o ou 

a tnowin x «tn 

aoy • *xo < > • 

-JX *ijjx - ®u M J 
XUJODUXXU<UJNCOQX 

I3~_| J X3 

lojojiiJoaawjQ 
3 <O<UU< 0020<0 
aujuxxujH-)Q.uj 


CVJ 

© 

a 

x 


© 

© 


n 

a. 

x 


o* 

u 

© 


o <■ 
00 
OIL 
OK 


O 

O 

© 


<■ 

o 

O' 

© 


<* 

o 

< 

© 


«*o 


4- 

<$■ © 

© < 0 

00 

0 0 0 

O 

0 0 

00 0 

< u 

0 <00 

'O 

© ON 

N © O 

0 a 

CO 0 O 

© 

©00 

0 < < 

(MDlLOn 

IflOQfO 

QlL<UmO'OOCiriOUS«NII)NO 


00 

o CO 
COO 


in 

o o 
©ON 
Ul O© 


in © 

o © 

N O 

© < 


tn 

© 

<o» 

< © 


UCMoCMUUCMoUUCM^UJUUJUJN<N-*oii.<| A .LJUlMffiUIUUU UU<MC\JliJUOUUJUJUKCDUr'-COUJUN(MOQU- - QfOUUOCM<UJUOUUIUJUNCDUUU'0 


©©N©tDUIU.O-»<©©NlDcDOQUJao-«nj©©OUQUJU.orO© 

10 ©©©©©©©©©©©©©©©©VO©NNKNNNNKNN©©© 


C‘UOUJU.On©fflC'<OUMLCMfO'<t©©0‘UOO-H<©©©UQUJU.W<-N©0'UOUJ^tVin 

©©©©cCO0>0'0‘C'O<7*OO<<<<<<<<lD£aC0lDCD(D(DrDCDC0OUuUUOOUOQa 


o# 000000 oo 000000000 c 00 o 00000000000 * 000000000000 coooooooocooooooooooooooooooooo 


May, 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


Page 21 


138 




e 





• 

® a 

s 

e> 



H 

CL 



* 


UJ 


n 

• 




CL 

a uj 

n 

H 



a 

UJ 



* 


HX 


H 

Wtt 




a 

0 0 

H 

3 



< 

UJ 1/3 H 


UJ 

* 


an 


< 

_J< 




O UJ N 

0 _j 

< 

O CL A 

* 


H 

z*-*u 


X 

* 


z 

in 

x in 

CD> 




< z a 

< < 

X 

X UJ 1 UJ 



V) 

»-* < 


H 

* 


00 

M 

3 — 

< 




— 0 

u 

3 

e H a 

UJ 


UJ 

jotr 



* 


a-j 


S • x 

— u. 

3 



• -J 

© 

s 

UUJUJ 

z 

UJ 

CL 

< 


(L 

* 


a_j 

z 

• H 

* ao 

•O 



H H 

H O 

* 

• <01 


D 


UJUJX 


O * * 

* 


— 

o 

uj cr 

* < z 

az 



UJ UJ — 

UJ UJ H 

* t* 

* * * . a »- 

-J 

-J 

H 

X XU 


* * 

* 


HU. 

— 

o o o 

* >ww 

a 



a z 

CL Z 

* o-H 

* * * cw <0 


< 

V 3 • 

HH 


H H * * 

* 


tn 

H 

< a a 

CO — 

xo© 

z 

* 

<© 

-Z 

a < 

* * * H X -JO 

H 

> 

D UJ 

UJ 

S 

tn a 

* 


an 

O 

wo: 

_J O UJ V) 

tucaimu 

0 

* 

UJWh 

uj ja 

XO© 

<• uo 

z 


“>> 

hhujx 

N 

UJ <>> 

* 


— »«♦ 

u 

in W o 

< Z (X 

WO 

— 

* 

0 

o o 

X 

HHCTXH < 

UJ 

UJ 


d zan 

8 

a h a cl 

* 


u. 

UJ 

uj * in 

> os 

ujza-J 

V) 


aw • 

an*- 

UIU1 

<<osaujuj 

tr 

X 

• H 

a —uj 


V) CL CL 

* 


z 

X 

Z -J 

H S O 1! 

HhD< 


z 

DOS 

D x Uj 

oh tn 

iia* cxxaH 

a 

H 

o< 

z ax uj 

< 

UJ UJOO 

* 


H UJ 

UJ 

o ®< 

w n < s 

< a> 

5 

H 

az- 

q. wa 

Z-J 

3s 3c CC O H UJ D 

D 


ao 

*-a *a 


I atntn 

* 


- X 


HHO 

V) H 

O W< 

II 

LL 

— ; 

z 

ujiiu 

o< ujh to x a 

U 

* 

UJUJ 

0 

H 

H o< 

* 


H 

o 

UJ zz 

<UJ V) 

-»d UJ 

8 


• 5- 

* UJ 


Z • UJ 3s 


U 

nz 

OldOH 

Z 

UJZ 

* 



z • 

oano 

* I>© 

<JH> 


* 

S Zh 

© Z © 

* 0 * 

* * * *- > O 

H 

UJ 

0 oh tn 

— 

0 ZUJ* * 

* 


• • 

< - 

5Xn 

* 3< < 

> < UJ < 

O 

* 

••OO 

UJO-J 

* z X 

***aa<HZ 

UJ 

X 

ILU. 

ujjauj 

a 

z~x* * 

* 


• ***, 

CL 

o dhh 

* : </) a 

W > *" © 

z 

* 

s uz 

>- a uj 

* UJO 

* * * a otn<< 

V 

u 

— — 

a uJDa 

a 

< JH* ■¥■ 

* 


aa 

O CL 

z -> o 













A 


UJUJ 

UJUJ 

•• < IL 111 









H 






* 


U. -J 

Ha 

o oow 









z 



CL 


> 

* 


IL J 

zz 

zxz 

H — 



— 

c\j 



H 

a 


H 

CL 


a 

* 

* 

D< 

i—a 

— U <OUJ 

< > 



H 

-J- 

-J 


< O ~ 



a 

UJ ~ 


0 a 

* 

* 

Su 

a • 

»< zo 

X © 

-1 

H 

U- 

XU. 

X 


X H UJ 

UJ D 


< 

az uj 

c* 

h oa 

* 

* 

• 

a 

OHS — < 

3 • 

X 

< 

* 

V) 9 

z 


S V) 0 

ou 


H 

Z_J ON 

in ino 

* 


UJ 

h 

-JCDH^a 

0 • 

• u 

23 X 

• 

za 

z 

a 

* H w 

V * 

z 

05 

— H *■*' 


h ®a 

* 

— 

OX 

h < 

-J H 


U-J * 

J » * 

• • 

U_ DU 

IL O 

u 

ujuj auj »il 

* J-J 

» _J 

UJ • 

• aiuiL •* 

•> 

a ujuju: 

* 

tn 

HH 

a 

OZ<UJO 

ox« 

OJXZ 

XS30 

• 

<a « 

<ao 

X ON 

0 

0 

A 

p 

c 

A 

A 

A 

A 

H 

H 

A 

H 

M 

ON<<inao<t «l« 

<aHQOUJ 

* 

0 

z 

z o 

ilwixq: 







-J 







a 

« 

z 

*-<>* 

UJ 

3<W 

> XU 

a 


u 

u 


CO — 

X w _J X 

X 



_i 

-U 


* 

UJ 

to 

©D 

uja s on 

Ha WH 

a oclo 

yOHQ. 

H 

a an 

aan 

zan 

tno® ja tn cn 

tnoua 

a a oa ajua 

OHDJHBQl. 

* 

M 

UJ 

- z 

I UJ 

WZ3W 

xooo 

ZOUJZ 

V) 

OIW 

oxw 

OX W 

dod<oqddhqdozo 

OZOOZ<lUOh*ODD<t/)DOZ 

* 

a 

zz 

— 

H H UJ O UJ 

h “> a h 

UJ-JQ--J 


H 

a d h 

aoa 

huq: 

njwuajawwjajHM 

itjhdu aawjowuaajn 

* 

u. 

— UJ 

UJH 

ZUQI 















* 


-J> 

z z 

W-< H 

-1 






X 







> > 

* 


— 

~0 

aaw* 

< 






X 

HHK 






act 

* 


HO 

-JO 

<aw>z 

> 






y 

<<o 






CLCC 

* 


D'— 


wa- 

H 



Z 

«*• 

w 

0 

xxa 






00 

* 

Z 

a 

HN 

• Hza 

UJ 


> 

— 

H 

H 


3!3ir 






tn tn 

* 

-J 

z< 

33 

ax a* 

V) 


V) 

U. 

u. 

UL 

UJ 

o<uj 






o< 

* 

O 

— 

Q.C0 

OIUHW3 















* 

z 

z 

z 

aHW<o 















* 

IL 

< — 

*- a 

CL O- I 















* 



UJ 

W© < 















* 

* 

tnet 

UJ N 

• WHO* 















* 

* 

OUJ 

x< 

> wz 















* 

* 

<H 

HZ 

00<Q 















* 


WO 

M 

hwi z 

in 


tn 


w 

Oi 


0 <o 

CD 


0 

no 


0 oin 

* 

z 

a< 

• x 

• < 

0 


0 


0 

O 


0 0 

0 


0 

00 


0 00 

* 

J 

a 

o a 

o • • > 

«$* 

0 



O' 

CT 

0 

UJ U 

— 


0 

N < 

IL 

U ti- © 

* 

H 

• < 

z w 

UJHH CL* 

< 

<* 

< 



m 

0 

< n 

0 


0 

<< 

r> 

m CD < 

* 

UJ 

zx 

< H 

H<<a3 

u. <wilo©il <t —- 

fOOO'rn 

IL 23 

— mu. o* 

— roc?' 

U- UJ CO 

m —no —<inNcvj<inuir r )in 

— < UJ N < O (D -«eg 

ujNNONin — n 

* 

O 

JU 

X 

<XXQO 

U. Q UJ 0 ro O Q sf UJ N 

WNUU 

umau.ouoou.uu 

UJU.U 

O-OUO"!!.? 1 

-•CUUJNdiff! 

OUMJ3U.U-U.- 

HQ(MJUOhU 

* 


H 

XH 

J* 3:©I 















* 

* 

UJUJ 

oo 

wo<oa 

uju.f'jn<ttr)'OHa*< 

CQUOW 

-«wr)<tinco(7'<coL>u. 

o-^n 

^incoououju-o^^in'ON 

coo'Uouj — 5rin'OH<^<miuiLofo 

* 

* 

ox 

uz 

a* • • • 

NNCD©©©©©©© 

CO CO 00 CO 

OC?'OCM>a'C'CM?'(7'0' 

<<< 

<<<<<<<<CDCDlD£D£na3 

ramoccDuuuuuuuuuuoQ 

* 

* 

® H 



wwwinwwwwmm 

in into in 

ininintninininminioin 

in in in 

inininininmtntnintmnininin 

inininininintf>inininininininininin 

* 



* * * 

******0000000000 

0000* 

0 

0 

0 

c 

0 

0 

0 

0 

0 

0 

0 

* 

0 

0 

0 

* 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

c 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

* 

* * 

**** 


UJ 


UJ 







* 

* 

O 


oa 







* 

z 


UJ 







* 

< 


ox 


H 





* 

X 


ZH 


u 


Z 

-J 


* 

u 


<- 

muj 

< 

X 

JO 

X 

a 

* 



UJ 

0 

a 

0 

I- 

CD 

s 

* 

9 


-J 

*UJ z\ 

H 

a 

* tn 

* u. 

0 

* 

1 


I 

* Q — ~ 

2 ) 

*IL 

* U- 

*0 a 

u 

* 



• 

* j 

uo 

* 

* OUJ 

* — 

UJ 

* 

IL 

t 

*0 

>- H + 

U 2 tn 

* UJ 

0 

z J 

a o 

* 

— 

> 

H UJ 

uim ja 

— 

Q 

zzz 

ZO IL 

N<Z 

* 


_j 

ZO • 

O D UJ 

ZHHH 

UJ 

oo< 

o~» 

za < 

* 


j 

uj ztn 

*-* x tno 

-DCDZ 

OH 

tn-x 

inin 0 

os 

* 

• 

< 

a < 0 

> UJ z 

O D 

CD U 

betnu 

0 tn 

HOI 

* 

UJ 

z 

UJX< 

— uj a >-* 

nauio 

D < 

X 

IUJ J 

inuu 

* 

0 

0 

U u -J 

00 < 

-J QU 

in a 

u* • 

Ut 5 < 

X 

* 

z 

— 

iLirn 

— UJ X 

D CQ — 

H 

u 1 

z 

111 * 

* 

< 

H 

— UJ 

* > > Ui 

tn s >0 

* CD 

* UJ 

* < 0 

z in • 

* 

I 

— 

O NtU 

* — < a 

UJ D*~* Z 

* O J 

* XU. 

* X z 

<wo 

* 

u 

O 

ZX 

* 0 tn — 

aoo< 

* tnx 

* v>~* 

*u < 

innz 

* 


Z 

IL-H 







* 

0 

O 

— 







* 

z 

u 

HH 







* 


z 

0 w 







* 

« 

D 

• zo 


CJ 




— 

* 

♦ 


UJ 


UJ>UJ 



• 


* 


CD 

0 *o 


- 000 



0 

uo 

* 

IL 


ZH 

IO-UJ 

<J CD • • 

J «I < 

T 

X <J < CQ®< 

I • 

* 

— 

O 

00 

-j • •> - • 

-1 • • DU-J 

• » » * 

* tn 

» • • * J * * * 

• tn j 

* 


z 

z*-a 

x j x 0 a < i x u utn z 1 D 

< vj -j < a x o 

«<z 

< • J X < X 23 D 

<OZX D 

* 


< 

<inui 







* 

• 


a 

X — —1 

— —J 



— 

a 

* 

-J 

_j 

_JtU < 

WQQJOQ 

a OQUja oh 

QfflOgcQOH 

oan 

0 < 00 <QUQCCOH 

oaaxxH 

* 

X 

X 

no. 

D O O < O O 

OOOZ< XOUJ 

Q D O O © O UJ 

oow 

oioaiazooouj 

0 oxuo w 

* 

• 


< 2 


-jm_j jenja 

j —a 

jujjujhjxjq: 

jxdxu a 

* 

U- 0 

u. 

u.tno 







* 

0 

0 

0 u 

UJ 



z 

z 

UJ 

* 

IL 


Ul 

0 


w 

0 

0 

0 

+ 

zo 

z 

z-z 

— 


0 

in 

tn 

j 

♦ 

0 

0 

O UJ 

> 

— cu 

23 

* 

0 

X 

* 

-z 

— 

- X 

— 

>> 


X 

X 

X ^ 

* 

tno 

tn 

tn • h 

0 

00 

tn 

0 

u 

U U 

* 

— 


0 







* 

tn tn 

in 

tnuiuj 







* 

* 

UJ 

* oa 







* 

u a 

0 

uz < 







* 

UJ — 

z 

UJ < 







* 

X J 

X 

XXUJ 







* 

UU. 

u 

uuo 







* 



a 

tn 

mm 




tn 

* 

• 0 

«, 

• UJ-J 

0 

00 




0 

* 

z z 

z 

UJ H X 

0 in 

U. ON 



0 

u 

* 

0 < 

0 

0 z 

cm 

u- mm 



© 

N 

* 

tn 

in 

-J* - * 

mu © 0 — o 

— N UJ u 0 cu 0 o> 

OfOU-U<HC* 

UNO 

U U- N O IL u. n © UJ N ^ 

u<n©n O' 

* 

*z 

0 

X UJ 

OJCNUtMUOOOUO-U 

NO"nH( 7 "OU 

NWU. 

ncvoncmnocunw^u 

N<lLUJUJU 

* 

xo 

X 

*iuin 







* 

0 — 

u 

u a< 

<tnuuj — wn<MnN©tDujtL 

0 — t\jm <t\n m 

NCOO 

<©uouju-o— oj<rm 

m NOCD UQ 

* 

• in 


• <u 

<f«c*^<finimninininininiotn 

m m m m m m m 

m m m 

oO'ommmNNNNN 

N NHNNN 

* 




mininminininmininmininin 

inmminmmm 

inwrn 

ininintnmmmtnmmm 

m mm mm m 

* 

********* 

oooooooooocooo *0000000* 

000 * 00000000000 * 

00000 0 * 

* 






© - 


OUJ 


• 

— H 

* 

Z J 

• w 

u 

a D 

* 

<CD 

s X 

H 

u a Ha 

* 

< 

•*H 

m w 

0 0 z 


Z — 

• 

— 

XS H Z- 


oa 

in 

a 

H H 

tn 

— < 

xo 

tno 

-jzo tn 

0 

<n> 

HZ 

— H 

3 0 UJ 0 — 0 

z 


— — 

xtn 

< aa z 

ID 

JUJ 

21 L 

H 

tn wawo*-» 

— 

<x 


O 

OIWQNZH 

a 

OH 

OH 

Z 

zh h << 

u. 

O 

UJ — 

• < 

UJ-OWAZU 


UJ H 

O 

a 

3 J 1 X- 

0 

W 

z * 

u •• 

0 Dtn 00 


ztn 

id a 

z 

z- 0 —• uz 


< 

u 

xa 

<hx h - 

a 

0 

H 

H D 

vZWfflZHv 

0 

>z 

— < 

— H 

a — nau 

a 

22 < 


3 W 

wa a w 3 * 

a 


IL X 

a 

coaiLDa 

Ui 

O • 

— H 

0 

UUJOU — UJ 


w a 

— 

w • 

>• H * Q> 

0 

* a 

3 

OQ 

CD ZZ - 


ox 

® • 

ZH 

>-OlLIUH 

* 

JUJ 

oow 

w 0 

0© O — — X < 

* 

-J 

zwa 

0 

uj an ho 

* 

aw 

<QUJ 

tn — 

HO p * UJ 


u. x 

X ZX 

— 

ZWHOtt *z 

X 

H 

X UJ H 

• 

— HXWW— 

X 

» 

O 

oin 

ozwx>oA 

u 

wtn 

UHS 

zo 

a-HWwz1 

O 

w w 

— O 

< z 

0 

z 

CDH 

< a 

X < 

oao ox* 

UJ 

< < 

ILU. 

X X 

z j»iih 


- D 

u - 

0 X 

-woo oz 

* 

a _j 

0 w 

uo 

az h ua 

* 

<< 

0 

u 

H-W • CL 

* 

>> 

0 *z 

< 

O-jXtnOHD 


UJ 

ztn — 

z 

HHtUUO 

z 

< 

UJ WH 

IL — 

UJUJ ZHUJ. 


H 

DZ 

— < 

xxw-aa 

IL 

tn — 

UJZO 

H 

HHtrO< — u. 


H 

X — u 

tna 

wano — 

* 

u • 

HH 

y w 

mini m 

* 

W ®UJ 

ZO 

ou 

HHi^UKO 

* 

a rr D 

inoz 

w 

zz x a z 


XQ.-J 

xu< 

xz 

— — HU O < 

J 

WX < 

u 

u — 

a a *c<mz 

< 

w > 

wzw 


a a h— -• -• 

> 

: 

xoz 

s 0 

om h • 

H 

JZH 

u— — 

X w 

8 z W —< Q 

UJ 

< < < 

H-J 

xa 

a wh W(duuj 

in 

> X 

S D 

0 — 

0 x a I H — H 


HZH 

ZUH 

OD 

anwH oz 

* 

ww 

— w X 

zo 

a in oz — 

* 

tnx 0 

U.X w 

w w 

WHZU.z-a 

* 

8 HH 

5 WZ 

t a 

s ——0 <—a 


-ft******************** 


Page 22 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


May, 1976 


139 










o 












z 










* 



• 

J- 

UJ 

o 










UJ 

a 









k 

* 


o 

3 

z 

a 

UJ 










Z 

3 









a x 

* 


Zz 

O 

t—! 

a 

o • 









ct 

Ml 

fr- 



UJ 






UJUJ 

* 


Ml UJ Ul 

CL 

CL 

Mi 

ouzo 









UJ 0* 


UJ 



U-> 






>k 

* 


fr-xx 

met 

a 

• y 

<t win 









let 


a 



JH 






o 

* 


Z3K 

_j< 


UJ</) 

Z A 









fr-u 

fr- 



5 

u 






© 

* 


M 

co i 


fr— 

UJw** < 

• 


a 






o 

X 

z 


o 

fr- 

UJ 

to 



* 

a a o 

* 


a a > 

oy 

IU 

o y> 

Ct 

A 

* 

UJ 

k 





z<to 

UJ 

o 


Ct 

30 

X 


* 

* 

u 

* 


0.0© 

ou 

fr- 

3~ 

< ct uj m 

A 

* 

fr- 

< fr- 



* 


< to 

z 



er 

Ofr- 

Ml 

© 

Ul 

* 

* 

oy o 

* 



o< 

o 

o 

ujX*-* 

< 

* 

u 

or w- 

o- 


* 


UJUJ 


to 


Ul < 

X 

fr- 

UJ 

> 

* 


oz©z 

* 


© Q Z 

CD 

o 

zct 

yjoo K 



< 

UJ Q Z 

a 

z 

* 


j z a: 

z 

UJ 

k 

X 1 

fr- Ul 


ct 

o 


a 

Z~ UJ 

* 


a©© 

a 

o 

O UJ 

y x z 

O 

o 

a' 

fr-_jfr fr- 

u 

a 



Ml o O 

3 

fr- 


< y 

MUJ 

I 

o 

CD 

X 

y 

»- y • 

* 

* 

Ofr- > 

OIL 


A 

ZDZd 

z 

fr- 

< 

Z03Z 


3 

o 

s 

K O 

er 

> 

• 

(0 u 

JH 

0 

o 

< 

3 

© 

©oa© 

* 

* 

hZ- • 

Ml 

UJ 

O-J 

<Z 

< 

<0 

X 

M* fr- Mi 

<fr- 

fr- 

fr- 


Zfr-< 


m 


< 

5 

3 

< 


Z 

c 

OUH 

* 

* 

©m. Ofr- 

• 

A 

z< 

j xto * 


fr- 

u 

0(0 uja 

X 

UJ 

V) 

< 

3 (0 

» 


< 

O S CD 

Ct K 

O 


IL 

fr- 

z 

03 

* 


Ct 

Ul 

m 

u 

CD UJfr- fr- 


cr 


n<cta 

fr-UJ 

cc 

fr~ 


< z 

a 

n 

z 

o 

u 

z 

z 

O 

CL 

IL 

k oy 

* 

z 

fr- a o 

fr- • 

o 

X 

X UJO 


a 

< 


•wZ 


o 

(0 

fr-jet 

u 


Ctfr- 

Zfr- 

fr- 

UJ 

ct 


a 


azu 

* 

_j 

- <_j 

oct 

o 

OUJ 

Ofr- a > z 

UJ 



CL UJ *UJ 


« 


Ml 

Z 3 


cl 

3 *-* 

»MW 

» Ml 


3 

UJ 


* 

>-UJ 3© 

* 

fr¬ 

© 

3 UJ 

Q 

fr- X 

Z UJ Mi 

z 

* 

fr- 

X X com 

co • 

(0 

* 


W* to fr¬ 

to 

*-i 

fr- 

to 

(0 

>- 

fr- 

z 

* 

* 

UUJOl 

* 

et 

*-• z </> 

03 


< fr- 

~o Ofr-y> 

M< 

# 

UJ 

DCUJ -J 

<o 

UJ 

* 

J- 

et < UJ 

< 

y 

UJ <0 

UJ(/)(0 

UJO 

V- 

UJ 

o 


* 

K* U.U 

* 

a 

« MM 

•J 

a 

X 

Ofr-a<*-‘ 

-J 

* 

U 

corn kuj 

3Z 

>- 

* 

*-• 

a 5 ct 

5 

CO 

cr m* 

>- <MI 

>o 

K 

Ct 

z 

* 



* 


UJ ct 

UJ< 

o 

IL 

< <o 





















* 

o 

OU©CD 

3U 


<o 

ujy> Jujz 

X 




















* 


< 

o 

UJ 


_JUJ z«J 

K 









-J 



in 








* 

* 

>-oo 

zo 

-J 

y>y> 

u y) »-• 

W4 






m 



X 



fr¬ 

• 






cvj 

* 

* 

Q .J 

Mifr- 

0 

OUJ 

< IM l/) 

5 






►- 


o 

z 


i— 

et 

o 





UJ 

A 

# 

* 

£t fr-O 

© 

z 

Z fr- ^ 

• a • 



UJ 


to 


o 

• 

fr- 

z 


o 

H ® 

© 





Q 

© 

* 


a©< 

z 

Mi 

<>z 

-Jy5 y)>uj 

UJ 


Q 


0. 


» 

s 

to 

3 

n 

<3» 

O < 

• 





w 

a • — 

* 

x 

UJXX * 

*a 

<n 

x mo 

X fr-<> 

z 

< 

w 


cr * 


m 

e> 

fr-a 

Ct 

* 

-Jfr- 

ra-«y 

X 



<M 


» 

UNUJJ 

* 

3 

fr- fr- 3© 



UJ M« 

IL w Jh 

M 


• 

UJ 

UN 


s 

* 

C£UJ 

» 

A 

xo 

«» fr- CD 

* 


rk 

fr— 

UJ 

<liZOIl 

* 

Z 

z*-> 

on¬ 

X 

oini. 

ZOUKfr- 

J 

QJ 

< 

003 N 

03 Z 

3 

» 

< 

a rax 

N 

I 

xra 

<ora 

< 


I 

03 

o 



* 

fr- 

*MUJ«/) z 

er uj 

MS 

o 

— hZh 




















H 

* 

Ct 

o <« 

CLCL 


OK O 

Ct Q < CO 

J- 



u 

M 


u 

Ml 

A*- 



u 

Ml U 

Ml U 

u 



i 


aaua 

* 

a 

a z 

< 


zxet 

a uj o 

X 

o 


ua fr- k 

o.a 

fr- 

fr- 

o 

ACLCL 

Q. 


QLfr- 

OQ.fr- 

Ofr- 

fr- 

aCLfr- 

ID 

OIXZI 

* 


UJUJ o 

1 • 

• 

< UJK 

ujmu.oa 

UJ 

o 

o 

ZXUJD 

X X 

UJ 

to 

o 

< XO 

X 

z 

X(0 

OX (0 

03 

3 

OXUI 

3 

JU1-1 

* 

* 

OISID 

y uj 

IL 

Z(fl 

m x old 

fr- 

-J 

-J 

Huao 

on 

tr 

fr- 

A 

uua 

-j 

Ml 

-)fr- 

-J *n fr- 

JO 

O 

ana 

a 



* 

* 

z s<a 

u© 

A 

UJ z 

JD fr- • 



















a 


* 

* 

Ml V) o 

< UJ 


fr-UJ ^ 

Dza zz 

o 

o 
















X 

y 


* 


a a k 

©X 

< 

ox 

Z UJwtM. 

UJ 

fr- 





0 











2 

v> 


* 

u 

K©©u> 

K 


Oh- a 

UJCOCt 

> 

to 





K 











z 

Q 


* 

k 

WJI 

< 

fr- 

a x 

ujxxao 

< 

fr- 

m< 




to 




CM 

n 





in 

fr¬ 

z 


* 

c n 

3 k© 

© 

O 

e> o 

Xfr-D uj 

<0 

a 

<0 




1- 


fr¬ 


fr- 

fr- 

fr- 




fr- 

et 

IL 


* 

k 

<< •- 

ao 

o 

UJZT 

fr- ZUJfr- 


a 

CL 




o 


et 


CI 

Cl 

O 




a 

a 



* 

o 

U (f) 

o 

X 

X ~ 

O CL Z 

< 




















* 


© »-< 

U. uj 

fr- 

fr-fr-< 

y>< ui<3 





















* 

* 

KO 

z 

M 

z 

frai a 

to 




















* 

* 

Zfr-UJO 

oo 

5 

Zm> 

Z frWU 

fr- 




















* 

* 

•-« fr- _j 

y z 



W.O fr¬ 

z 




















* 


Ct <7) >-0 

o 

a 

a_j 

et fr-U^O 

M 




















* 

o 

Q.ZE 

OIL 

o 

o < 

a hoz 

a 



















vO <0 

* 

K 

a 

_J»M 


zujo 

o *-* < 

a 




vO 




>0 

cvjr> 


M5 




© 



o o 

* 

© 

* Ofr- • 


< 

*~* I CO 

* UJ *G 





o 




o 

o 

CM 


O 




o 



a-< u 

* 

fr- 

Ofr- x^. 

• 


Ct fr^o 

TOOL O 

a 




oo 



CM 

uo 

O' 

n 


h-O 

o 



© 



on ^ 

* 

Ct 

fr-UJUtt 

o • 

fr- 

fr- X 

DUJUJ JUJ 

z 




on 



CVJ 

n o 

n 

CM 


(M<t 

CO 



© 


< 

ujwnn 

* 

a 

©az© 

fr-UJ 

o 

wet 

ZUJ>-lfr- 

-J 


< 

ncooDK 

UJ(\J 

o 

Ul cm u. uj 

QUJw 

< 

n 

(MLNinUiniLU.COUJK 

N 

w* 

nc* 

© 


ILU-U 

* 


H 3 

©k 

a 

uj a. 

fr-ZUJ<Z 

fr¬ 


o-l 

hCQUO 

ILU 

u 

uwon 

UU.UJ 

u 

CM 

uJucMorouuinono 

O 

UJUU 

o 



* 

* 

a O © 3 

HO 

h- 

UJfr* UJ 

tr 5 M4 

et 

















CVJ 

nmcoo 

* 

* 

azx< 

oo 

o 

X IL > 

au-O *ct 

a 

u 

o 

UJ u. o - 

OJ^ 

N 

CD(7'<CD 

Don 

n 

o 

a* < m u o u» <v n in k 

© 

a>< o 

UJ 

n 

nnn n 

* 

* 

• <KU 

• o 

o 

fr- < o 

• wiua 

m 

n 

n 

nn *t <t 


<* 


in io 

in 

in 

ininininmin»O'O»o'0\o 

<0 

© © © 

© 


vO o o «o 

* 








o 

<0 

O »0 »0'0 

O0 

O 

vO'OO'O 

CHOC 

0 

o 

«o vo m «n 

OiOO'Oifl'C'O 

© 

© © © 

© 


*00000*************************000000000*000000000000000000000000*0 




© • 

C- 





0 


Ml 

J o 


> X 

a © 


k a x 



Z 



J fr- • 

© 

z •* 

< u 

© z 


X © © 



© 


© 

— z 

© a 

K m. 


0 KKK©ct< 

3 




K 

fr- o »a 

©M.N 

< 

U -J 


0 3UVZHJJ 

0 

a 

0 


V 

©uj ©a 3 

HJIJ ©©© 

K © 

< 


a a<ZMifr-to 

k a 

© 

© 


a) cw a 

fr-COUJfr- 

IK © ZhI 

x »y> 

• y a © 

k a 

© za<_iz 1 

3 ©a 

-J K 

tn 


©© 

fr~ UJ 3 > UJ 

K K m* K 

©to * • 

K u < A 

3© 

z© m. < y 

a z< 

1 z 

© 


y QKZO 

3_J OCt 

© <U LJ 

K fr-I 

M QK< X O 

a k 

^ W I © © 0 u 

Z HI | 

1 ~ 

* < 


uz©-.a 

© UJ © 

ZhIZ ' *o 

X ©ct u 

* zawe u x 

z z 

ACL Ku>-Ja< 

mi ja 

* © 0 

* a 


<©030 

OmjO 

*“• K Ct N Z 

©k z<a 

* w-<< 5 

Ml Ml 

© x <0 m 

3 

* 0© a 

* 


m 

* _J fr- 

© ©z*~* 

X • «fr- < 

* 050 A fr¬ 

O 

© ©KXia 

K © 

* CD 

* © 


0 • © 3 

©OQ< 

^ *© ct x © 

K©X-J©© 

om I A © © 

©a f'- 

O© Zy> jd< 

x ao 

Z K 

a 3 


*©KXO 

-Jfr-O - 

^ao<0© 

ou © 

ZZfr -U© 3 < X 

> a 

a < © y 

© W« Z 

Z O fr— X 

z© 


©Ofr- A 

-J 2frZ 

X© Ml K 

© a ©z 

_J<©K©J Z -J K 

< a u 

OO frJJOUO 

ZK< 

JM.O © 

JZIL 


©© z 

3fr- 1 m. A 

K00XUO 

0© <I©K 

k y 3 

© X 

zx © o< x 

Z 

0©ZK 

Own 


z < ©© 

Z H fr- fr- 

ZZZ0 zz 

©©k 1 a 

©k a •© © © © 

3K 

© 0 © 0 uj m u 

K © © 

z z 

Z A 


*wa o-a 

-J fr-UJ 

Mi^iM. < < Z 

0MI (/) fr- < 

oa y zi-ii a k k 

• © Ml 

• k Qa © 

© -J 

©y< • 

© y 


J M.I < 

O LLl< a 0 

wCZ-J ©< 

zer a a 

JU w DO O © © 

© 

»© •© • 

0 O 

UUK 

©u 


n ok a 

z<o < - 

a z© xa u 

K © O Q K 

*c© az z jioj©©o© 

to© ©_j k • ©0 

Q «* 

* UJ w- 

* > © 


KZ X 

< 30 fr- 

Ml fr-< 

zzI©Z © 

*axozo 0 ©©©©uz< 

©-J © © 3 0 © z 

0 ©a 

* IK Z 

* <1 


© »©©o 

< ZtflUJ 

I-OOh o 

Z© K < 

* auznH mi o>o>©<5 

>© >-omz>< 

oau 

* U*-*MI 

* tnu 


0U 3*-U 

©u< © 

©x©z Jmz 

- X z 






- 03 

Z © CD < u < 

oa oua© 

a 




z 

© 



U.O *Z < 

fr- ©< 

©©oaux 

© 


A A 


0 

z 



Jfr-<u 

A © *?-J© 

CD X < K 

© 


« <*■ 


m 

3 



UJ 

ujx — w*© a 

K Q©< 

© 

i“» 

o<w a © 

< 

3K 

K 



© a z uj o 

ZlfrtJ < 

©cz© 0 

DO- HIOZ41U 

z-j ©^ y 

az 

OX 

X 


© 

UJUJOZZ 

©K J O 

X < oz 

CDmiJ A JUJJJO 

©0 ©_J CD 

©3«J 

XK 

K 


O 

a© *1 < 

> O © < Z © 

K© QZ< 

•yo ©0 0U0U0W a 

©© *©©o ra 


x 0 • 

a 


M < 

c? 3 y> j 

wito»- Z : ■*. > 

X©Z« 

©x • A * »o *o • 

»©u 

ON *3 •© • 

ja •© 

* • © 

AAA 


A • • 

Z W 5 a 

0 < < 

ouo<© • 

qun ra n < n o n ra n 

<Q <3 

N<UJZ<CUNQ< 

0 u< 0 

< <©Q 

♦ XXX 


IU< JCU 

0© UJUJ 

K«IZ©© 

fr-© a 








wHinjz 

<oz <a 

©© *u 

UwJ Uw Ml Ml 

w 

M. M. Ml 0 

_J Ml 

Ml 

X 

a 


t aow 

© © . © K 

© N O CVJ 

Ko-jQ-Kaaaaaaaa 

ua 

KoaaoaauoKauca 

0 era q 

3 © U 

X 

a K CD 0 

fr- fr- UJ I «J 

iwoiujix 

0 *»-t < 

DO<X3XXOXXXXX 

fr-ZZ 

©oxxSxx©o3x<Ox 

oozo 

030© 

0 

0© 030 

W 3I5 

k 3 a k q: k © 

X Jiv 

0-Junou~>M,-)unun 

© — u 

cjLnjuoOJonyjo 

jmj 

tuajD 

u 

act jv)j 

OK < 

Ml © K * 

©U<KO)Q 







1 UJ 

IWJlLlO MNK hm Z 






a 



• COIL IU. 

‘-JOM-ILZ 

M.< K 5 ©»- 

z 




z 

z 



© 3 ** K O 

© M. . O 

3© wi O © 

A 




-J 

A 



oa w 

Z © 5 © K (/) ©<(0 ZK 

K Ml 


© 

3- 

0 

O «■* 



X UJO 

mi O fr- O fr- O 

mi *-ia a 0 

© A 


A 

A 

z 

Z J 



u a kz 

-J ©>ZZ ZUfr-IU <XK 

O O 


O 

O 

© 

©© 



UJ •UJUUJ 

oo i mi© 

mi X K K 3 









y k-j 

< « too UJ Z H Q (A 03 UJ 









ou< ©ui 

< » 5 ^a©a 

Ml Z O 

(9 








z<a ox 

© © o O x < 

K a A 

(9 








<©< K 

Oaz —j © © k 

JKJJJIU 

m 








x o 

Z<3 ZO ©_J<-Jwimi© 

ra 








axuK© 

O©*- OOh|-h333 









©© A 

©©©X4I *UJ<JW3 

©K© © © © 


© O 

©O © 

0 © 




U. X K K < 

> K ? O I J 

• • • 

«-«oo O 0 0 0 


O 0 

OO O 

0 0 

O 



u_ K to M, z 

• <© K ZU© 

• o©a t-a 

N C\J < << <©©OU 

0 

© < KU U 

< ©© O 

© u> 

n 



3 < 0 

Z CO Mi *<0< 

ZfrZZxt 

nno oo 0 n © n 0 

0 

k 0 no © 

0 oino 

0 -• 




CD © J ©M 4 

-J *Jo© * 

a *w jzw 

N — 0<N©<K<©<©< 

<Mn©mco©(McD©<ffl©fw.noujn 

UN<- 

©< CO K 

Ml O < © K 

o ©© 

OK©©K©a©Q<KOOQ 

Q^UUO©UCDU©U©U 

hh Ilumi uk ©u -*nou unu 

K CD © •- 

©cgCM©©0 — (><r 

©I ©3 

zxz » : z 

Z © 3 Z Z Z 








xux<a 

©©mim«©( 0 ©mi 

©ao©©© 

«N<Oo-noN<UU.^ 

<»© 0 COO<U©OCM©O(Da'U©^ 

*©»oo» 

uuoo 

-4 

cvin<©0 

HUfrUU 

• K „J —• Ml Ml 3: _J 

® «a® -• 

QOQO©©©©©©©©© 

©U. ©©©©©©OOOOOOOOO 

•™i r— M H 

•^•mu-iCMCMCMCJCMNCM 


» 


©©©©©©©©©©©©© 

©©©©©©©©%OM500©M>iOOM> 

'OOC'O 

iO'OO0*OOO0'O<O 

******************** 

*0000000000000 

00000000000000000 

*0000*0000000000 


© 


o 

< 

A 

© 

< 

© 

3© UJ 

<<zu 

X U < 
uj *- a 

U > © © 
UJ < II II 

0©mu 


u 

uj<o 

Ua- 
-t <✓) 

a > 

©<4(D 


2 

0 WZJN 

w* ©0 io 
co z y m< 

0 z<©©k 

y mi 0 fr- QJ 
UWh © mO 
UJ ©• > > © 
XO II I < UJ UJ 
UZCD- ©Qa 


©© 


z-* 
oz* 
wa i 

y • - 

i© 


tu 

Q 


> SO 

Uw • 


QQlDVUZaJUfl]Q<, 

-I J « IJ 
ov)oujaou(fljQ 
O 30©<X 0©3<O 

jajocnjoauj 


-«<\i 

zz 
a a 


© in'O © 

o oo o 

< K©0 < 

O ONW * 


^inwOQf'J^OOtnoeD 

^Q^OUILOOUUN 

©<v©<m©mQ©©cvj 

ONNNSNNSKMO 

i0\O'Q\Q'C'£)\£)'O\Q*Q\Q 

oo ooooooooo 


UJ CVJ 

a 


o©o 

0 

Zxz 


a 3K *# 


©KO N 


O©© K Z 

© 

CL> O * 

K 

0 a zu 

* ©> 

©© z 

* zm 

xai© 

* Ml 

0©Kmi.* 

30 

CM-Xm, Q 

K © 

IK©kZ 

XK© 

© M.O 

zx© 

k©k© 0 

O© < 

> a 0 3 a © 

zza 

m<z o** 

© 

a © n 

OK 

KX a© . • 

* z© 

©oo-jku 

*MO 

OU Z © mi z 

*©n 


UJ CM 
O 3 

X © 

UJ * • UJ UJUJ 

Q <IU O© 3 *OQ 


u 

zo 


fflauai- 
© X © O © 


mi -J © "> Q m> £t 


S OU 

zz 


H 

X 

z 

Q 

z 

© 


CM 

U. 


M5 

O 

r-» 

fO 

fO<U<CDoO Wf*) 

MDC<QIUU. OOh 
cm cm cvj cm {\j cm cm nnr> 
«0 vO \0 O vO o'O <o<o«o 
0000000*000 


May, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 23 


140 



UJ 

C£ 

O 

2 

O 

Z 

© 

z 

< 

UJ 

x 

o 

k 


V) 

a 

id 

X 

N 

zo 

a 

3 UJ 
Na 
UJ o 
ttN 
© 
OUJ 

oa 


aa 

UJO 

>*z 




N 




o o ® 

Q 



N 












CL 



* 

II ©13 

z 

I 


Z 3 








2 




o • © 



* 

^ -JUJ 

13 < 

u 


a a 


U 






N 




HH • 



* 

in 

O < -1 



3H 


< 



o 



c- r 




<ao 

UJ 


* 

u o 

N_J •_» 



N 3 


CO 



o 



o 


9 


© uj x< 

> 

« 

* 

o ©«J 

U. UJO ~ 

- 3 


UJU 





KLU 



uj z 


a 


©i n>© j 

< 

a 

* 

H*- J 

2 I UJ 5 

© 


a 


< 



> 

< 


a a < 


n 


ujP J 

© 

o 

* 

U. O < 

ttNhH 

« 


o 


N 

K 


U. —4 



a k 3 n 


o 


a ora 3 


o 

* 

HZIL 

o Z- 

OIL) 


oo 


*-* o 

3 



z 


< 

a 

<- 

* 

octooa 

Q 

< 

* 

-J * 

.U.UJO 

oa 


z 


< -1 

G 


a 


* 

JCDUJQ 

u. 


* 

o< u.o< Ul 

N 


* 

© z 

LUh-^2 *-* 

-j< 


<G 


30 


o 

O 3 


* 

U. QL 

u 

z 

* 

< UJ J> CD 


z 

* 

• »-•« a: 

CL 3 

3 


y- 



H 

UJ 

ZU 

* 

* 

© o 


a 


z > a 

UJ 

a 

* 

- 3 

a *-jx 

HK 


\L 

K 



X 

UJ UJ 

o 


HD •< 

N 

3 

< 

z aa o j 

a 

3 

* 

S26 

JZIO.U 

<U. 

IL < UJ 

M 

>-UJ 

a © 

©a 

< 

o 

•-NNUJ 


N 

X 

aya>jj 

o 

N 

* 

© © a uj 


O 

Zu. 

a 

(DO 13 

oo 

*-• 


03 


cd<oq: 

N 

(U 

in 

DUO< ~ 

x 

UJ 

* 

UUU2 

>- dO 

©© 

□ OUJUJ 


< 

z 

z 

UJ© 


* 


w 

a 

3 

N<©©a3 


a 

* 

OO 

*©UJtJ ® « 

H 


m 

© 

UJ • 

UJN»-* 

3 

a 

X 

©©UJ • 

03 


a 

UJ N »-• 

* 


* 

* < H 

-*3 oa 

¥ 

©© o 

3 

a > 

© •“* U. 


o 

o 

3 a >- 


n 


or© »a n 

UJ 

ii 

* 

u. < 

N 0©< UJ 

©u 

►-« »-4 

H» Ul 

N 

o 



• © 



N ^ o 

y 


ii in to n < 

© 


* 

X ^ © 


*-• Ul 


Bi 

< 

< 

o© 


© 


* 

<©H< 

© 

u 

* 

UWUJDX 

J 

u 

* 

u *-o 

a ex _J 

XX 

HH UJO 


O ID 

z <o 

UJ X 

UJ 

* 

1— < O UJ 

< 

CD 

* 

CDi-*>-UJCOH 

Ul 

CD 

* 

• J— UJ 

• UJ X < 

t-o 

>-4 

au 

© 

za 

<3Z 


13 

* 

©xza 

X 


a 

u 

N 






N O 

a 

< 

z 

S 

Z 

N 

x a< 

N 

z 

X z 

< 

> 

M 

-1 

J 

a 

-j c> 

a 

J 

-J •- 

> 

a 

a 

a 

a 

a 

y z oa 

a 

a 

a a 

a 

o 

o 

o 

o 

o 

no a©o 

-o 

o 

o o 

o 

-i 

a j 

J 

J 

-j 

© © woj 

3 J 

J 

-i -i 

J 


x a • 

• 

• 

• 

»13 • • *x 

a • 

9 

9 • 

9 

«l 

«* *j j. 

JJJJJJU 

JIUJUJ 9 

•JJJ 

JJJJJJ 

X 

<JNIX3 

LXXXXXCD3 

xuajxzi<jNixixxiixi 


•HO 
©3a<z 
N © a I < 
JHX 


NX *U©U 
DH<Hw 

a *-• uj 

ZUZSDI 


X 

oaaa a. cl cl wh 

N OOSOHOHOHOHDUJ 

©_i*-«->a©a©a©a©aa 


a 

a 


*-• j 


jaoa oo: 
<002000 
DQ.<*)JJh 


< 

X 

w 


<9 


X X X X XI 

a to in to to ©©n 

20000Q3000D011J 

ojD.JaJajo.jaaa 


3 

a 


* 

ZUJJ u 

»-♦»-.>-•© | n 

3 m 





* 

~a<tL 

-J 

© u • © 

IL 

a 

• 

« 

* 

< u*-uj 

O ©9 00 

U O WO 

-J 

u 

o 

u» 

* 

© 3 CD 

Z *w3aH 

o • oo a 

0 

(3 


N 

* 

UJ N UJ 

© b- 

U. • MU- * * LL UN 

• 

9 

9 

9 

* 

ZU.X •>- 

ILUJUJUZZ 

<<<ZOOXN<rtfdZ 

< 

A 

U 

0 

•XN- 

X 

* 

mD1-<< 

•-*© Nooa 






* 

N© X 

>9 u 3 

X - ^ 

*-• o 

M 


►«» 

* 

3 OZ 

L3 CD N 

© c:aai-aoQ-[iHO.i- 

OH 

ONa 

aoH-a 

Q 

* 

0<K»^© 

• < UJ<UJ 

3Q0X0UJZZX03XUJ 

03 

QUIZ 

OZUJZ 

Z 


o ^ 
»-« 
y 
X 
u 


a id 
>- z a < 

otcahj 
\ 3 >\L 

O N CD 
UJ UJ UJ 
> jaiui 
J J IH 
ZOHH 
C£ 


N<rauaon<*Nco©uao 

QOQQQUlUJUJUJUJUJUJUJli. 

<00'0»£)'0'0'0'D'0'0*0'£>CiO 

ooooo ooooooooo 


•0 © © 

(0 

CO 

IL © ©© 

N ® © © © © 

* 

o o o 

o 

o 

—• o OO 

OO O o o o 

* 

U- O* 03 

o 

IL 

N < IL N 

Ml Q © O N 

* 

UJ o o 

r- 

O 

< O OO 

— O O o o o 

* 

U ©< ^fU^CVJ 

CM 


— 0 ^< 7 ‘CVJ<U ©<<©<©<©<©<©©0 

* 

Ntuuuicgiijc^ujrvjujcjuu 

WUUmQlNNOJOOJUJOJUJCVJUJlMUJlMUJOU 

* 


3 

o 


9*<tN©0\uaO.-«<N©©UaorO<*NCOO' 

IU.ILILILILH.OOOOOOOOH--HHH 

OiO'O'OOOONHHHHSNNSN^N^ 

•aoooGoeooooocooooQooo 


3a jo > 

NON J 
JZOOZ • 

:a aoo 

•UJH UJ 

jo a 

J©»-0 *o 
J HH 
t join 

- •> joa 

joo*- a 

1 HHJQ 
J OO ZUJ 
IQOHUJa 
- m m »-• to < 


HJHX a 
DlLDhlL 

a a *■<>- 
znz * o 
►-• »-o z 

I • 

JJOO 

:oiuq 
• az 
nao 
)ZoZ 
!QH< 
CUUJ 

cc~ 

i< oo 

■ ©N 

:©►-« 


ajHoaaM<oaouaJOJawz<aH< 


* * 

* 4 

N * 

o******************* 


UJ 

UJIUJ 
IHI 
N h 

10 ?o 
y 

O »< 
UJ 
IttO 
OUJUJ 

ja 

* j« 

o<uj 

►-* U J 

y u 

IUJ 

ox© 

* N *-* 


CJ 

8 


ro 

u 

o 


* 

X 

o 


13 C 
N< < 
3 JN 
a a © 
z uj 

hnk 


•"* u. 
ON 


N N 

o o 

LL OCvJU. -40 <000 

— OOh oO o o o w 

<M — OvCD'Z><-'OUJOUINUIO'£DO'OCDCOvO 
UlLUQUJUU.QlLljrOQrOUQOUJUQU( 

<QUJU.-»rO\ONOQ3UUJlL^(M<J‘l/)NCO< 
•-^^^wwojevjcvjrjcvjfvjcgnfnnfofonfo 
NNNNNNNNNNNNNNN^NNNN 
* * *000 000 0 0 0000000 000 00 



z 


UJ 

a 

o 




* 




*-» N 


UJ X 

*~4 H- 




y 



z 



U *-* 



UJ 

z 


UJ 

u © 3 

© 

Z o 

©u 



z 

< 

N 

Q 

moH o 

y 

9«UJZ 

< -• UJ 

3 


►-» 

j 

X 

JZ 

Ul 9*9* U 

z 

-J 

oa 



J 

m 

UJ 

-J*- 

U O ID 

< © 

jaza 

o o 

UJ 




N 

<< 

< »->-»-♦ UJ 

-jy 

3 Ul »-• O 

ZHlUX 

* z 


N 

< 


X 

a u © o u 

© z 

ZO IL 

a i 

**-« 


X 


UJ 

K U 

©mi- < 

< 

Z N 

3NNtt 

* -J 


13 

>- 

X 

oa 

-jujo a 

o_j 

zaHHU 

n a o 


a 

M 

© 

N 

ID 

HQDOJXU) 

z© 

UO < 1D< 

© UJH-lL 

za 

UJ 

O 



UJ 

ZJ(fl«<U 

*-< 

*-• X —-J 

a >z 

JUJ 

o 


o 

Z 

UJ > 

3 O UJ > <N 

Q ID 

© 1 liJQiL 

o«- y 

NO 

a 

<t 

© 

UJ 

3 < 

O a *-• H-H- < 

<2 

CL 

♦ oau 

aa 

o 


3 

X 

© 

u© o o © 

UJ •-• 

hhid y © 

o a< 

a a 


N 

O 

N 


9 * uj id y 

-JO 

Ul ZfflN O*- 

© © © 


X 

Z 

J 


© • 

o > O UJO 

< 

a »-•> ©uj 

©o 

* 3 

ID 

>-« 

J 

o 

UJO 

ZJ02UJIO 

O UJ 

o a< <io 

ILJZO 

* O 

—4 

a 

O 

z 

HZ 

<XX<3HJ 

z J 

x ax jo-« 


* J 

X 

a 

© 

< 


a 

F>© U ©• 

Z w CD Z 

a * • oj u a- 

• J JJZU • * • 

uNijxxaa}D<<w< 

x »-« u u ** *■* u 

EaXDwoaauoKaot-aoHDoaai-QHa 

OlUUJDOSOHJOOZODiODOOiOUJQJi 

mxoaJoaojHOjoojojJoaa<oo 


< © 

JUJ 

© 

z • 

•> * 0 © o 

z 

Q.< 

UJ< — ON* 

a 


X 

3- 

Z 

< v— «■ 
» *uj f *uj *a • 


UJ uj 

o o 

W< w< 


o 

N 

10 

N 

a 



© 

© 

zz 

z 

z 

aa 

a 

a 


<jo<iQwa< <Q-3 
►«» J*-* O -J 

ou quo JgtrS J*“ 

oozogzo<oj3<ijj 

jjwjjMjujowua 


z 

j 


a 

a 


© 

© 

© 

© 

© 

o 

o 

O 

O 

o 

a 

(ML 

OO 

o < 

o a 

© 

© N 

(H CM 

o o 

© c* 

1 < © o © 

OfDnQO 

N <UJN 

©©NO©©- 

©ON© 


o 


<UJO 
©vO<\J 

CULfO<NmUJOUJNNQO' 

^rtH'iHOUfODC'UU 


«o 

o 

u 

ro 


* 






* 


J 




* 


»-• 


a 


* 


N 

A 

X 

a 

* 


z 

1 

N 

X 

* 


3 

J 


N 

* 



I 

X 


* 


A 


o 

O 

* 


1 

a 

a 

N 

* 


U 

a 

a 

Z 

* 


© 

a 


M 

* 



X 

< 


* 


a 

3 

a 

< 

* 


a 


a 

a 

* 


m 

O 

< 

CL 

* 


X 

N 


< 

* 

* 

3 


a 


* 

* 


A 

> 

a 

* 

* 

o 

1 

< 

:> 

* 


N 

a 

© 

< 

* 

< 


o 


© 

* 

I 

A 


a 


* 

© 

1 

a 

J 

a 

* 

3 

in 

a 

CD 

J 

* 

a 

o 

a 

< 

© 

* 



X 

X 

< 

* 

© 

UJ 

3 

a 

X 

* 


a 


< 

cc 

* 

* 

tu 

X 

> 

< 

* 

* 

X 

o 


> 

* 

* 

3 

a 

a 


* 



a 

o 

a 

* 

< 

X 


o 

o 

* 

a 

9 

z 

J 

o 

* 

o 

a 

3 


J 

* 

a 

a 

6 

« 


* 



o 

a 

® 

* 

* 

a 


o 

a 

* 

* 

3 

y 

a 

o 

* 

* 


u 

* 

a 

* 


y 

o 


• 

* 

z 

u 

j 

a 


* 

3 

o 

© 

X 

a 

* 

o 

J 


N 

X 

* 

o 

© 

< 


N 

* 

> 



© 


* 

X 

< 

© 

a 

0) 

* 



IDU 

a 

y 

« 

* 

© 

> © 

o 

o 

* 

* 

a 

O 

N 

< 

* 

* 

> 

X H 

© 

N 

* 


o 


a 

© 

* 

a 

X 

• a 

a 


* 

3 

r* 

z o 


9 

* 

> 

• X 

3 

9 

< 

* 

X 

a 

O J 

<y 

X 

* 


3 11 

o ~ 

au 

© 

* 

« 

> 

>N 

o< 

3 

* 

* 

XU1 

X z 

an 

a 

* 

* 

* Q 

- 3 

• © 

9 

* 






******* 

** * 

** *** 


© 

a 

a 

N 

Z 

N 

a 

N 

3 

H4 

a 

©o 

• © 

O 

N 

a< z 

a 

z a 

U > 

n a < 

o * 

a 

* © © 

>a 

oa 

3 X 

* 

©u© 

<< 

* n a n 

*u a 

aa 

> 

* aN o 

• aa 

z<oa 

za 

* a >* © a 

za > i 

a hn 

ao 

© z 

300N 

3aNz*-y 

3J 

a 9 a o 

O X O 

N > © *"* U 

N 

DJUIHW O 

oa 

aoaoo< 

aa 

>XZh< 

>X 0 9 

a x*-a o© 

aa 

x o a J 

x i3 a 

a 

o 

ii lua w 

N © 

• a xza 

II N 

* N >U N 

* © *> 

© © h n a o 

© 

*aaoz z 

* ao < 

aJ30I0 

oa 

* Q 13 X *— 3 

* N ZX 

> a © © n J 

©a 

,s*> 

•* 

z 


au 

o 

a 3 


o© a 

X 

o o 


3 

© 9 U 

«-'<0 

u J 

9 »IIJU> 

9 N * 

aj * •> 

N < <0©X 

A 

O 

N 

A 

yjNQKJI 

©X 

a 

sn uua 

o©a g 

© n u u o a 

aa 

oaONZZZ 

03X0 

3 a a a o o x 

oo 

ua j ©9-*~*-> 

jWffQO JJT 

aa 


a 

3 

> 


z 

3 

a 

o 

> 

X 


Q 

X 


< 

a 

a 

a 


i© 

*0 


o 

o 

o 

o 

a 

vO 

© 

u 

u 


OOOOOOOOOOGOOQOOOOOQOOOOO 

Page 24 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


N©<evjnrom © wfvJo sr ^cocDCD<NFJ «- *** 
UJU HO^oU OIU 

O »D a O »■* W © ©NO(DUQUJlDO*-*C4 IP'O 
©©©OOOO UUDUUDUUQQO OQ 

lOvDoOiOOO © <£> © © NO © O <0 *0 vO *0 ©© 

*0000000*00000000000* oo 


May, 1976 


141 




A NOTE TO MEMBERS OF THE 

SOUTHERN CALIFORNIA COMPUTER SOCIETY 

by Jim C. Warren, Jr., Editor, Dr. Dobb’s Journal 

i am writing to object to several of the actions of 
Louis G. Fields, vice president of SCCS, that have recently 
come to our attention. 

1. On April 12th, we sent Mr. Fields 500 copies of the 
March-April issue of People’s Computer Company newspaper, 
for distribution at the Aoril 24th SCCS meeting, compliments 
of PCC. 

I happened to attend the meeting and found that, first 
of all, Mr. Fields had failed to bring most of that supply to 
the meeting, and secondly, those he had distributed were 
stamped in oversized red letters, "Compliments of Louis G. 
Fields." 

This may have given the completely false impression that 
either Mr. Fields was the donor of these complimentary 
copies, or that PCC was somehow supporting Mr. Fields. Mr. 


f l »»f f 


Fields did NOT donate these copies, and, after having the 
opportunity to see him in action, we wish to adamantly state 
that PCC does NOT support Mr. Fields in any way! 

2. Along with these 500 free copies of PCC, we also 
forwarded a number of other PCC publications, as per Mr. 
Fields' telephone order of April 12th. His order totaled 
$359.75 (unrelated to the free PCC copies). We forwarded 
the telephone-ordered publications to Mr. Fields with the 
understanding that he was representing SCCS. 

In spite of repeated billings, to date he has paid only 
$59.75, received June 10th. Our contacts with the other 
SCCS officers have consistently shown them to be responsible, 
trustworthy, and responsive. 

3. As a result of the above-noted incidents, PCC will 
make no further donations or sales through Mr. Fields to 
SCCS. We will be delighted, however, to work with any of 
the many other SCCS officers. 

Note: We do not mean this to in any way reflect 
negatively on the SCCS, nor on the many Society officers 
who are doing an excellent job of administering a worth¬ 
while organization that provides many useful services to the 
computer hobbyist community. 


36 Z 



• 


©O 



• 


U ® 

m 


to 


©OO H O 

• 

m 

Z 

• 

o*Z 1- Dr* »-< H 

© 

Q 

o 

• 

c*-.© au: cd 

UJ 

O 


H 

i xau z i nh© 

Z 

< 

H 

H-4 

-jz u 

fr-S 


u 

X 

OUJ^IO OS H< 

H 

O 

Z 

M 

axu aa ca 

a 

H 

a 

-J 

HU • UJ KZ<W 

o 


IL 


z oil izah 

a: 

a 


UJ 

OUJ 1 U. HO DOW 


o 

a 

X 

ucr jo ouhujw 

O 


z 

H 

OO z UJttI 

\ 

» 

< 


Hzao <na h 

»-« 

V) 


<0 

— H H »- • 


o 

(0 

t-4 

*Z H »0)Q 

UJ 

a 

Q 


i/)Odz ©© o ©© 

x 

(0 

Z 

A 

wZUO O Z > UJ 

H 


< 

UJ 

Z 


a 

X 

u 


a 

a 

X 

< 

> 

a 


o 

a 

< 


X 

u 

to 

-B B X 

X 




— © no 

V 

a. 

UJ 


uu a 

H 


cc 

> 

o »o oxu 5 

< 

o 

o 


UN* »IUN > 

a 

H 

X 

© 

(9Z< • < U O Z H • 

• 



V 

cc 





►* M <(T 

oc 

a 

cc 

a 

a cl <cl a uh< 

< 

< 

< 

< 

XXOXHX x ©©X 

X 

X 

X 

X 

unjgcnuaau 

u 

u 

u 

o 







*4 

© 

O' 

o 

© 

IL 

© 

© 

© 

sfr 

O 

UJ 

O' 


st 

■* 







oj 

<t 

fU 

© 



© 

OJ 

St 

St 

st 


<t 

© 

© 






u 

O' 

© 

© 

© 

u. 

UJ 

o 

u 


U- 

*—4 

st 

O 

o 

O' 







in 

«* 

st 

© 

CVJ 


CVJ 

OJ 

St 

st 

St 

© 

© 

OJ 

st 








St 

n 

o 

O' 

O' 

CO 

ro 

o 

n 

O 

m 

n 

n 

a 







<t 

in 

<t 

<nj 

<* 

<t 

© 

© 

CVJ 

st 

CVJ 


© 

© 

<t 







o 

o 

»«* 

© 

o 

St 

o 

N 

IL 

0 

n 

UJ 

CO 

O' 

O' 







st 

CVJ 

*t 

<?• 

CVJ 

© 

<t 

St 

St 

OJ 

© 

st 

CVJ 

<t 

St 







o 

<t 

o 

n 

© 

© 

© 

© 

St 

© 

St 

© UJO 

o 

<J 







C\J 

st 

© 



© 

<t 

© 

© 

st 

St 

© OJCVJ 

OJ 

st 


N 

© 

© 

N 


in 

© 

n 


© 

IL 

o 

OJ 

o 

OJ 

UJ 

© n O' 

O' 

O 


O 

© 

c 

O 


in 

<t 

© 

© 


st 

OJ 

<t 

OJ 

© 

St 

st©© 

OJ 

OJ 

u_ 

CD 

o 

o 

OJ 

n 

u. 

© 

Oli H 


CMUU- 

© 

OJ 

IL 

*■« 

oiu cn 

© 

© 

o 

st 

o 

© 

© 

o 

<t 

st 

cvj st st 

© 

© CM<t 

OJ 

© 

<t 

St 

OJ <t st 

st 

st 

UJ 

cvj 

< 

IL t\J 

n 

©ON 

o> 

llJ 

n o 

o 

on <t 

o 

U.-STO 

o 

stu.n 

n 

CO 

IL 

V 

n 

fNJD 

u 

U U U 

© 

st 

©©© 

P4 

04 ©© 

© 

St ^-sf 

st 

<t st © 

st 

st 


• 

UJ 

H 

m 

a 

o 

o 

© 

a 

z 

< 

X 

U 

a 

Q 

O 


© 

V 

N 

UJ 

z 

D 

a 

O 


» 

© 

z 

< 


z 

UJ 

I 

u 

M» 

-J 



UJ 






X 

Z 


a © 

a 

* 


X < 

M 

< 

©< z 

© 

u 


Ott 

- 

Uj 

H UI-© 

u 

< X 


o: 

CD H 

a 

zcroo 

© 

HU 


UJ H 

hd a 

< 

-< © z 

a 

© < 

© 

uj co a 

z© a 


O CD © 

CD 

H 

a 

CD o. 

uio z 

UJ 

Cl h 


a© 

© 

H H 

a o ♦-* 

> 

X < < 

a 

o 

X 

Zina 

a =■ • 

< 

aujuiiM 


u a 


<ao 

a uj 

© 

a©H a a 

oil a 

a 

© 

ux 

UZGZ 

a 

©co << 

w © 

©© © 

H 

rr 

t— ^ *-s 

a © 

HSQ 

<a©©o© 

a 

UJZO 

o a 

oh m 

za©©© 

huzhh 

< 

>3t U 

na oa 

o z X 

«ZJ» 

©> a©>-»-» 

H 

oo 

©H© 

j© a 

O _J<< 

a co m 

mx 

© 

max 

© © 

X z 

a x*-s©© 

CD 

a « 


< u 

H© © 

- uiH 

OIL 

<<H©<J 

X 

UJ H 

zuiauj 

a a *-«uj 

hqzhh 

»-a au a 

u 

Jan 

H>?> 

oo xz 

xza xx 

anauH a 

< 

J UJ B 

O <UJ< 

U-Zhn 

©< A©© 

<x zaxo 

H 

<X© 

a © h© 


na i hh 

> © 1- 

CD © H 

© 


O 

z 

2o 

« 

o 

o • 

HU 

0 a 

o 

COIL 

a m 

COUN CVJ 

o o 

oil 

<H 

a-.oj«iH 

st cm 


HX 

< • ♦ J J 

-i • 

*xx 

0 

0 

* 

0 

0 

0 

0 

0 

0 

s 

T 

H>XWXX#X# X# 


e cc 

< < Da a a© a aoaa 

x x offaissoafjjjjijtjwOawwwowoaoz 

O U UJOQOOUJQQOaQQQOOUJQOQOUJDLUOUJUJ 




X 

H© 

na a 

UH 

HUZQ 

z 

CC 0 

H 




o 

z o 

xz< 

ZJ 

ZHZZOZ 

u 

©z 

2 

X 



a 

mo 

z •-« > 


jaaDmW 

CO 

IL© 

-J 

u 

niL 

NO 

H 

©a^ 

a xa 

aa 

a a zhh k 

a 

IL U 

X 

< 

<t st 

©OJ 

© 

oan 

4HQ 

o o 

ao<x xx 

< 

3 d 

H 

H 

© s 

©Oo 

<0-4 

ou© 

>©_J 

U-J 

JJaHHH 

> 

mm 

© 

© 


*n stoiojroro 

uoinuj^N 
oj <t st n n 
o^oinoo 

oi st © stOJOJ 

*t uj oj <o u © 
st st st sto» st 
U- — 0©N© 
st st oj <t ^ 
IL O st O' UJ © 

st oj © 
©NfflU. U~ < 
OJ <t<t st it <* 


O O Oo O OO O 003 
oo ©ooooooo 
IL O O OOOOOOOK) 
U-OO OOOOOOO-* 


U© — <t©tDCDO©lLNlLN0'Mi0'-«nmm©U' < tUsrc0QC0o«"*0' —COO©lL 

mm<t<t<tst<tstsfst©©'OvONN©COa)O‘O'0'<<CQCDUUQQO©©U-lLU 
NNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 
oooo©ooooooo ooo ooooooo OOOOOOOOOOOO© o 


OHnu)inN(MDOii. nnifl6 

OOOOOOOOOOHHHp 

©©cococococococdcocococou. 

OOOOOOOOOOOOO*** 


OvONlLlLN o 
OH © N N < © 

ILUUUU-IL © 
r«wtr4a«r4H 04 


May, 1976 


Dr. Dobb's Journal of Computer 


Calisthenics & Orthodontia, 


Box 310, 


Menlo Park CA 94025 


Page 25 


142 








INDEX TO THE COMPUTER HOBBYIST 
VOLUME 1, ISSUES 1 THROUGH 9 

This is an excellent newsletter. We strongly recommend it to 
every serious computer hobbyist. Not flashy; no side-show . . . 
just excellent, comprehensive, well-written articles. 

—Jim Warren 

The Computer Hobbyist is a newsletter/magazine totally 
dedicated to the use of computers and associated devices as a 
hobby. Both software and hardware are discussed in feature 
articles. Circuit diagrams and program listings frequently sup¬ 
plement these articles. In addition to the features, each issue 
contains an editorial and regular columns on surplus, letters 


from subscribers, and want ads free to subscribers. Occasion¬ 
ally, as the material warrants, book and product reviews are 
printed. Frequency of publication varies from 4 to 12 weeks, 
so subscriptions are for a particular number of issues rather 
than a time period. The Computer Hobbyist is offset printed 
on looseleaf 8 ’/ 2 "x 11 " paper suitable for ring binding (except 
for the first three issues which were folded to half size) and 
is mailed third class to subscribers in the continental United 
States. 

Occasionally, printed circuit boards and other hard to 
find components are made available to aid our readers in 
constructing the projects written up. 

For further information write to: The Computer 
Hobbyist, Box 295, Cary NC 27511. 


THE COMPUTER HOBBYIST 


NUMBER 1 

1. A GRAPHICS DISPLAY FOR THE 8008 PART 1 - Fundamental concepts and programming 
technique for inexpensive vector graphics display. 

2. SURPLUS SUMMARY - THE TELETYPE STORY - Survey of teleprinter equipment suitable 
for computer output. 

3. NOTES ON THE 8008 INSTRUCTION SET - Some simple tips for more effective 8008 
programming not mentioned in the Intel manuals. 


NUMBER 2 

1. THE 8080 IS HERE - MITS ALTAIR 8800 product line preview and comments on the 
future of hobby computers. 

2. LOGIC SYMBOL CONVENTIONS or HOW TO READ TCH LOGIC DIAGRAMS - Discussion of 
MIL-STD-806C logic symbols and logic design using the "dot convention". 

3. A GRAPHICS DISPLAY FOR THE 8008 PART 2 - Description and diagram of digital and 
analog circuitry for vector graphics display generator. 

4. INTERFACING A 5-LEVEL TELEPRINTER PART 1 - Description of simple current loop 
interface with common teleprinters. 


NUMBER 3 

1. A GRAPHICS DISPLAY FOR THE 8008 PART 3 - Description and diagram for large 
screen XYZ scope using common magnetic deflection CRT's and photos of display. 

2. BOOK REVIEW - Critical review of MICROCOMPUTER DESIGN from Martin Research. 

3. CHESS BOARD DISPLAY - Description and listing of chessboard and chesspiece 
display program, fits in about 500 bytes. 

4. INTERFACING A 5-LEVEL TELEPRINTER PART 2 - Description and listing of print 
software that accepts ASCII input. 

5. A CHEAP MARK SENSE CARD READER - Description and diagram of circuit for reading 
pencilled data from tab cards with surplus Western Union card reader. 

NUMBER 4 

1. HUMAN INTERFACE YOUR GRAPHICS DISPLAY - Description, diagram, and driver software 
for a 4 variable proportional control input for interactive graphics. 

2. 8008 VS 8080 VS IMP-16 WHICH MICROPROCESSOR FOR YOU?. - Detailed comparison of 
strengths and weaknesses of microprocessors available to hobbyists. 


NUMBER 5 

1. TCH AUDIO CASSETTE DATA RECORDING STANDARD PART 1 - Rationale and description of 
proposed data recording standard for recording on audio cassettes. 

2. RANDOM NUMBER GENERATOR - Description and listing of random number generator, 
sequence length over 2 billion, program length 40 bytes 

3 . TCH STANDARD AUDIO CASSETTE INTERFACE - Description and diagram of machine 
independent audio cassette interface conforming to TCH standard. 

4. DRAWING WITH YOUR POT CONTROLS - Description and listing of program for 
interactive drawing on graphics display. 

NUMBER 6 

1. TCH AUDIO CASSETTE DATA RECORDING STANDARD PART 2 - Discussion of logical data 
format, cyclic redundancy error detection technique, and summary of standard. 

2. ADD A DATA STACK TO YOUR 8008 - Description, circuit, and timing diagram for a 16 
byte push-pop stack enhancement for 8008; machine status save/restore routine. 

3. THE TCH CASSETTE INTERFACE PRINTED CIRCUIT BOARD - description, foil patterns. 


Page 26 


Dr. Dobb’s Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


May, 1976 


143 





pacts list and assembly diagram for TCH audio cassette interface. 

NUMBER 7 

1. TCH AUDIO CASSETTE STANDARD ROM - Description and listing of audio cassette 
software for both 8008 and 8080. Also order form for 1702/5203 programming. 

2. BOOK REVIEW - Critical review of MACHINE LANGUAGE PROGRAMMING FOR THE 8008 
by Nat Wadsworth of Scelbi Computer Consulting Inc. 

3. NEW PRODUCTS - Brief review of Micro 400 computer kit and the Cramerkit series of 
microcomputer kits. 

4. COMPUTER PING-PONG - Discussion, description, and listing of ping-pong program 
using the TCH graphic display and pot controls. 


NUMBER 8 

1. INTERFACING THE ALTAIR 8800 PART 1 - Detailed discussion of system loading 
considerations, timing diagrams, and example TCH cassette and ROM interface. 

2. NEW PRODUCTS - Brief review of Altaic 680, JOLT, and Sphere computer kits. Brief 
discussion of Mini-Software's FORTRAN system for the 8080. 

3. AN IMP-16 MICROCOMPUTER SYSTEM PART 1 - Overall system description of high 
per Iormnnco 16 bit microcomputer construction project. 

4. WHAT THIS COUNTRY NEEDS IS A GOOD $20 MICROPROCESSOR - Discussion of features and 
programming considerations of the MOS Technology 650X series of microprocessors. 

NUMBER 9 

1. TCH SUPER SIMPLE FLOPPY DISK INTERFACE PART 1 - General description of floppy 
disk drives and discussion of controller requirements. 

2. INTERFACING THE ALTAIR 8800 PART 2 - Discussion of polled interrupt scheme that 
doesn't require a vectored interrupt card, diagram for interrupting keyboard. 

3. AN IMP-16 MICROCOMPUTER SYSTEM PART 2 - Detailed discussion of system bus 
controller. Also schematic and timing diagrams for bus controller. 


JIPDEC VISITS PCC 

We didn't know that People's Computer Company fame 
had spread so far. On May 19th, we were visited by the 
Microprocessor Application Study Team from the Japan Infor¬ 
mation Processing Development Center. The team included 
Professor Hidetoshi from Keio University; Koichiro Ishihara, a 
Research Fellow with Hitachi Systems Development Lab; 

Tatsui Miyakawa, Manager of Fujitsu's Computer Science Lab; 
and Kazuya Watanabe, from NEC (Nippon Electric Company). 
We were surprised, honored, and delighted by their visit, and 
pleased with the opportunity to exchange ideas and informatioa 

What may be even more interesting to our readers is that, 
in the face of all of the massive microprocessor research and 
manufacturing that is centered in the San Francisco Bay area, 
this JIPDEC group chose to visit only PCC and IMS Asso¬ 
ciates, Inc. (IMSAI). 


CHICAGO STORES: 

CHICAGO COMPUTER STORE 
ITTY BITTY MACHINE CO. 

There are two new computer stores in the Chicago area: 

Chicago Computer Store (handles MITS stuff) 

517 Talcott Rd at Hwy 62 
Park Ridge IL 60068 

Itty Bitty Machine Co. (handles IMSAI, etc.) 

1316 W. Chicago Ave. 

Evanston Ill. 

TedNelson of Computer Lib has a hand in the second one. 


WHAT’S A BAMUG? 

by Richard Lindberg 

BAMUG stands for [San Francisco] Bay Area Micro¬ 
processor’s Users Group. It is one of the many computer 
hobby clubs which have sprung up like weeds in the past year. 
We meet in San Leandro, Cal., on the first Thursday of each 
month. Meetings are held at the Great Western Savings building 
at E. 14th and Davis, at 7 p.m. 

BAMUG is a relatively small group. Anyone is welcome to 
join us, but we are mostly interested in the Intel 8080. We are 
starting a software library which, though still small, contains 
some very useful programs. 

We try to keep the meetings interesting. We have some 
demonstration at every meeting, if possible. At the last meeting 
we had one of our members, Ken Jackman, tell us some of the 
concepts involved in Nim-like games. He is writing a book on 
the subject and presents it well with the aid of his vintage Nova. 

At the next meeting we will have George Morrow. He will 
be hauling odds and ends out of his basement to show us. Of 
particular interest is his inexpensive tape cassette interface. We 
also hope to get a preview of his 16K ALTAIR-IMSAI compat¬ 
ible RAM board. 

We have voluntary dues of 50 cents per meeting, but you 
are welcome to attend without paying. If you have a program 
to contribute to our library, please bring us a copy. 

(Reprinted with permission from Homebrew Computer Club 
Newsletter) 


May, 1976 


°r. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 27 


144 











Texas Tiny BASIC (TBX) Marries 
TV-Cassette Operating System (TVCOS) 


by Digital Group Software Systems, Inc. staff 
Box 6528, Denver CO 80206; (303) 861-1686 

QUESTION: What could almost be better than having your 
micro programs run correctly? 

ANSWER: Having unique micro software to utilize to your 

heart's content!! Whether to create some fan¬ 
tastic program(s) or to have the facility to 
entertain yourself and/or friends with programs 
and games requiring a bit of "think power" . . . 
especially for those days when your "think 
power" could stand a bit of bolstering! 

All this is possible thanks to the software packages now 
being provided by Digital Group Software Systems, Inc., 
(DGSS), which was recently established and is headed by 
Chuck and Dianne Howerton. Software which is now available 
on cassette tapes, complete (for the most part) with docu¬ 
mentation for each offering, is as follows: 

1. TINY BASIC EXTENDED (TBS-TVCOS) 

10K, VERSION 1 

Created by Dick Whipple and John Arnold of Tyler, 
Texas, based upon design criteria published in Dr. Dobb's 
Journal Volume 1, Number 1, page 14. Dr. Robert Suding of 
The Digital Group designed and developed the software inter¬ 
faces between TXB (TINY BASIC EXTENDED) and the TV- 
Cassette Operating System (TVCOS) for the Digital Group 
8080 microcomputer. This is a superset of TINY BASIC as 
originally proposed; a limited and modified subset of the full 
BASIC language. It has 26 possible simple or dimensioned 
variables, 4 immediate commands (LST, NEW, RUN, and SZE), 
and 12 commands (DIM, DTA, END, FOR, GOTO, GOSUB, 

IF, IN, LET, NXT, PR, and RET) which may be entered 
either as program statements or immediate execution com¬ 
mands. Also included is a RN or Random Number generator. 

14 pages of documentation, which lets you do everything 
with TINY BASIC EXTENDED that is presently possible, is 
also included. 

PRICE: $5.00 @ cassette with documentation. 


2. TINY BASIC GAMES, DGSS SET 1 

Contains 5 games written in TBX language—3 games are 
TBX versions of games listed in either 101 Computer 
Games or What to do After You Hit Return [Both are 
available through PCC bookstore. Please see inside of 
back cover.]. Other two games are original products of 
author Howerton. Games on Set 1 tape are: 

a. CHOMP ; 2 or more players take 
turns biting into the poisioned 
cookie - Each trying to force 


one of the others to take the 
poisioned "byte"!!! 

b. CHECKERS ; You against the com¬ 
puter in this classic board 
game - WARNING; The computer is 
as crafty as a 6-year old playing 
his first game!! 

c. TIC-TAC-TOE : The computer plays 
a fairly reasonable game with 
just enough randomness in its 
selection to make the game in¬ 
teresting - Can be beaten. 

d. DIGIGUESS : Try to guess a 4 di¬ 
git number "thunk" up by the com¬ 
puter based upon clues it sup¬ 
plies. 

e. BRAINTEASER : A strategy game - You 
against your own worst enemy...YOU 1 
Try to create a pattern working with 
a set of rules to drive you nuts!!! 

PRICE ; $5.00 @ cassette with documentation 

NOTE ; TINY BASIC GAMES, DGSS Set 1, and 
all TINY BASIC GAMES are read in 
AFTER "bootstrapping" TBX-TVCOS 
program into micro-computer.... 
and away (:RUNcr) you go!! 

3. TINY BASIC GAMES, DGSS Set 2 

All the games in this set were adapted to 
TBX-TVCOS by Dr. Robert Suding from 101 
COMPUTER GAMES, PEOPLE'S COMPUTER COMPANY 
and WHAT TO DO AFTER YOU HIT RETURN. 

a. WAR-3 ; An artillery duel between 2 
or 3 armies - OBJECT ; To blast the 
opponent(s). 

b. THERAPY ; Have a relaxing "conver¬ 
sation" with DR. THERAPY and in¬ 
vestigate your inner problem(s). 

c. GOLF ; 9 holes of championship 
play on the "micro-links" - Hooks 
and slices are rare and 1-putts 
from 40 feet are fairly common. 

d. REVERSE ; Test your skills at ar¬ 
ranging things in sequential order 
from a random beginning according 
to a fixed set of rules. 

e. BIORYTHM; Predict your "highs" and 


Page 28 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 May, 1976 


145 



















"lows" from a computer-produced 
chart based upon your personal sta¬ 
tistics. 

PRICE : $5.00 @ cassette with documentation 

4. TINY BASIC GAMES, DGSS Set 3 

All the games in this set were adapted to 

TBX-TVCOS by Ted Holdahl from 101 COMPUTER 

GAMES. 

a. TAXMAN: Test your knowledge of fac¬ 
toring by trying to beat the TAXMAN!! 
It's tough but he can be beaten!! 

b. SNARK : Learn symbolic logic and the 
use of Ven diagrams while trying to 
find the SNARK. 

c. TRAP : Find the computers' num¬ 
ber by trapping it between two 
guesses of your'own. 

d. NUMBER : Learn binary-searching 
techniques while trying to pin¬ 
point a randomly-generated num¬ 
ber between 1 and 100. 

e. SQtJARE-ROOTS : Computes the 
square root of any number from 
-32K to +32K. 

f. CLOCK : This bonus program keeps 
accurate time using looping tech¬ 
niques and displays on the screen 
to the nearest second. 

PRICE : $5.00 @ cassette with documen¬ 

tation. 

5. TINY BASIC GAMES, DGSS Set 4 

All the games in this set were adapted 

to TBX-TVCOS by Ted Holdahl from 101 

COMPUTER GAMES. 

a. HAMURABI : Try governing ancient 
Sumaria successfully. The author 
says that the object of the game 
is to discover the rules. 

b. STARS : Guess the computers' num¬ 
ber based on clues which tell you 
whether your warm, hot, or cold. 

c. 23-MATCHES : Outfox the computer 
by making it take the last match 
in the pile - You can beat it if 
you try hard enough. 

d. 20-QUESTIONS : Take-off on an old 
radio-TV game where the player 


guesses the computers' number by 
asking questions. 

e. BLACKJACK : From 1-9 players - 
Play against the house in this 
Casino game. 

f. FACTOR : A bonus program which 
will compute the factors of any 
number up to 32,767 or tell you 
if it is prime. 

g. BATUM : A super bonus game which 
is a varient of 23-MATCHES. Good 
selections will really make the 
computer think!! 

PRICE : $5.00 @ Cassette with documen¬ 
tation . 

6. KINGDOM; LIFE 1 & LIFE 2 
(all on one tape) 

a. KINGDOM : Lets you be the "KING" 
of land/bushels/population of YOUR 
"KINGDOM" - Object of game is to 
accumulate 1 million acres and/or 
bushels which can only be accom¬ 
plished by buying and selling land. 
Tests your ability to buy and soil 
thono items and outwit the compli¬ 
cations all KINGS have!! 

b. LIFE 1 : Standard LIFE which will 
take a pattern and, with simple 
rules of LIFE, iterate until a 
stable situation is reached. 

c. LIFE 2 : Bi-Symetrical pattern gen¬ 
erator based upon modified rules of 
LIFE but a stable situation is NEVER 
achieved - Will continue to run and 
never repeat pattern for approxi¬ 
mately 1031 years!! 

PRICE : $5.00 @ cassette with documenta¬ 

tion (sort of) ! ! 

7. EDUCATOR 8080 

Designed to assist the micro-computer user 
in understanding the effect that the ex¬ 
ecution of various instructions has on 
status and operation of micro-processor 
unit - Provides continuous real-time dis¬ 
play of status flags. Accumulator, B and 
C registers which reflect their contents 
as changed and/or modified by instructions 


May, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 29 


146 































issued by user - Complete with EDUCATOR 

instruction set. 

PRICE: $10.00 @ cassette with documen¬ 

tation. 

8. AMATEUR RADIO HAM CASSETTE 
FOR 8080 

Amateur Radio (CW) Send and Receive 

RTTY (Baudot) Send and Receive 

CW Receive is automatically self- 
adjusting to any CW speed sent 

CW Send has 8 100-character mem¬ 
ories that may bo individually 
callod up 

CW Send also features a 256-charac¬ 
ter software FIFO buffer 

RTTY Receive can select 60, 66 and 
100 Words per Minute (WPM)j upper 
or lower case output to TV. 

RTTY Send program can send at 60, 

66, or 100 WPM. 

All 4 programs are designed to re¬ 
side simultaneously in a 10K 
Digital Group 8080 system. 

PRICE : Documentation and cassette 
HAM-1 $5.00 


9. OPERATING GUIDE - TVT MONITOR 8 
FOR 8008 BASED SYSTEMS 


The TVT Monitor 8 is a modification and 
extention of the Monitor 8 published by 
MIL before their untimely demise. The 
original Monitor 8 was written to be 
used with teletype/paper tape input and 
output. The TVT Monitor 8 is designed 
to be used with a Digital Group TVT, 

ASCII keyboard and Digital Group Cassette 
tape interface as input and output. 

Several features were added to the Mon¬ 
itor 8 to increase its usefulness. One 
of these is software scrolling of the 
TVT. This causes the TVT to simulate 
the format of a teletype by displaying 
the previous seven lines. Two other 
additions were the "Insert" (INS) and 


"Delete" (DEL) routines which allow one 
to insert or delete octal code at any 
point in your program. These routines 
move the following instructions in mem¬ 
ory to make room for the new instruc¬ 
tions or close up a space. In addition, 
the addresser of JMP and CAL instruc¬ 
tions are modified as appropriate to 
maintain proper loop registration. A 
program to zero memory was added (ZRO). 
And a program to load ASCII directly 
into memory (helpful for TVT output) 
was also developed (TXT). 

The use of this operating system in 
program development would typically 
involve the following steps: 

1) ZRO - zero program storage area 

2) Symbolic input of rough program 
draft 

3) TOT - input of any ASCII 

characters needed 

4) DPS - symbolic dump to ver¬ 

ify program 
or DPO - octal dump 
to verify code 

5) XQT - execute program as sub¬ 

routine of monitor 

6) SBP - set break point to 

print out register and 
flag status at any pro¬ 
gram step 

7) EDT , INS , DEL - these functions 

can be used to change, 
insert, or delete, in¬ 
structions at any loca¬ 
tion. A particular ad¬ 
vantage of this monitor 
is that on deletion or 
insertion of instructions 
the code following is 
moved up or down in mem¬ 
ory and all JMP and CAL 
instructions are modified 
to maintain registration. 

ONCE THE PROGRAM IS RUNNING TO YOUR 
SATISFACTION; 

8) CPY - moves blocks of data 

around im memory 

9) TRN - changes JMP and CAL 

arguments to reflect 


Page 30 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 May, 1976 

. ...I -------—... ..— ’ —- 


147 



















new page numbers 

10) 

TAS - 

can be used to store 
completed program on 
cassette tape 

11) 

PRG - 

can be used (if one has 
the proper hardware) to 


program EPROM's. 


Price: MONITOR-8 $6.00 

PLEASE NOTE: This package runs only on 
BOOQ- based systems - will not run on 8080 

All the above described programs 
and games can be obtained either 
by ordering through the Digital 
Group or, if your order is exclu¬ 
sively for software, you may order 
direct from: 

Digital Group Software Systems 
PO Box 1086 
Arvada, CO 80001 

Should you have any immediate 
questions. Chuck or Dianne may 
be reached at (303) 422-6197. 

Please try to restrict calls to 
9 - 5pm Mon - Saturday. 

Watch for the next Digital Group 
Flyer to find out what's new in 
the way of available programs and/ 
or games and other interesting 
items for your microcomputer. 

NOTE : All TINY BASIC EXTENDED 
(TBX-TVCOS) users are encouraged 
to develop, additional programs 
and games which will run -under 
the system. Users who submit 
programs and/or games to DGSS with 
appropriate documentation and who 
consent to permit DGSS to distribute 
copies will be paid a small royalty 
for each copy sold. Submissions 
must include a cassette tape 
containing the program or game and 
typewritten documentation as 
required. All submissions will be 
acknowledged but cannot be returned 


unless accompanied by a self-addressed 
stamped mailer. Obviously, if many 
users send in submissions, duplications 
will occur. In this event, date of 
receipt AND quality of work will 
determine which contributor's 
submission will be utilized. Royalties 
will be paid quarterly in cash or may 
be applied to the purchase of products 
at a discounted rate. 

• ttOOOOOOOOOOOOOOC&OOOOOOOOOOOOOOOO 

' 

I THE ALPHA-NUMERIC MUSIC SYSTEM 

► 

| by Malcolm Wright 

| In the January, 1976, issue of PCC Newspaper, an article 

► was published on a music program for the 8080 CPU, called 

► "Alpha-Numeric Music with Amplitude Control." Since Jan- 

► uary, the PCC bookstore has made this 22-page article avail¬ 
able for $2. The interest at the Home Brew Computer Club, 

y computer stores, and mail orders has been relatively high. 

( There have been many other music routines written for the 
I 8008 and 8080 CPU's, but Alpha-Numeric Music seems to be 

► getting a great deal of interest from music majors, as well as 

* the general hobbyist. Why? 

Looking into the Alpha-Numeric Music (ANM) program, 
j, one can see many features that don't exist in most of the 
^ other routines. 

b 1. An easy-to-follow encoding scheme for writing 

► music. Not just number look-up tables for coding, but letters 

* like C, D# (D-sharp), A! (A-flat), for the actual notes to be 
| played. 

y 2. A range of 6 octaves can be played, from about 

t 31 Hz up to 2092 Hz. 

► 3. Different voicing (different sounds) can be specified 

► any time in the musical piece by typing CTRL-E and a 
| number 0 thru 9 to pick the sound. 

y 4. Three different volume levels can be called upon for 

y loud and soft passages of music. 

► 5. The duration of the note can be set from a whole 

► note (W) down to a thirty-second note (T), to satisfy most 

* music fans, any time in the musical measure. 

^ 6. The tempo of the music can be changed to three 

► different rates including a nominal 100 beats a minute. 

If you have a convenient way of loading programs into 
^ your 8080 computer, I am sure you will enjoy this program. 

► This is a NOTEworthy routine that will MEASURE up 

► to any other music program and help you SCALE new heights 

► in micro-computer enjoyment by BEATing the dull and 

* average software. 

y Editor's Note: Malcolm Wright is the designer of this system, 

► and the author of Alpha-Numeric Music with Amplitude 

► Control. Please see page 35 for ordering information. 


May, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 31 


148 










The Community Computer Center (CCC) will act as a 
repository for program tapes; both source tapes and binary tapes. 
Everyone wishing to contribute programs to the public domain 
may do so by forwarding appropriate paper tapes to CCC. In 
particular, if you are hesitant about submitting a program for 
publication in Dr. Dobb’s Journal because you don’t want to 
hassle with its distribution, you are encouraged to forward the 
tapes to CCC and the documentation to the Journal for publication. 

The CCC will thus serve as a desirable alternative and 
supplement to the User Groups that are controlled and operated 
by many of the processor manufacturers, some of whom charge 
up to $100 for “membership” and access to the programs that 
their customers developed and offered to the User Group, without 
compensation. 

There is no membership fee for access to the tapes from the 
Community Computer Center. Instead, one pays only for the 
duplication and mailing costs: 

Duplication charge: $1/ounce or fraction thereof, for tapes 
(weighed after punching on fanfold tape) 

(Add 6% tax for orders mailed to a California address) 
Postage & handling: $0.50 on orders of $5 and less 
$1 on orders exceeding $5 

Payment must accompany all orders. Orders will be mailed 
First Class, within 3 days of receipt. 

Lists of available tapes will be published, periodically, in 
Dr. Dobb’s Journal, as well as being available from CCC: 

Community Computer Center 
1919 Menalto Avenue 
Menlo Park, CA 94025 
(415)326-4444 

The following source tapes are currently available. They 
are programs written for the version of BASIC that is implemented 
for the HP 2000F minicomputers, and are discussed in What To Do 
After You Hit Return (available from the PCC Bookstore, $6.95). 


Number Guessing Games SI 2 

Board Games 

Sll 

Number 

2 

Qubic5 

5 

Abase 

3 

Gomoku 

4 

Trap 

2 

Teaser 

3 

Stars 

■> 

Rover 

5 

Clocks 

3 

Welcome to the Caves 

S 9 

Bagels 

2 

Caves 1 

5 

Quailgt 

3 

Wumpus 

4 

Button 

2 

Caves2 

5 

Word Games 

SI0 

Business & Social Science 

S22 

Letter 

2 

flamrbi 

3 

Abagel 

3 

King 

5 

llanumn 

3 

Civil2 

7 

Madlib 

6 

Market 

5 

Word 

2 

Stock 

5 

“Nimlikc” Games SI 1 

Policy 

4 

23Mtch 

2 

Point 

4 

Batnum 

3 

Science Fiction Games 

SI2 

Nim 

4 

Tradei 

10 

Chomp 

3 

Sttrl 

9 

Zot 

5 

Last Chapter 

SI0 

Hide-n-Scek in 

2D S 4 

Crash 

4 

Murkle 

2 

Lunar 

3 

Mugwmp 

2 

Revers 

2 

Snark 

2 

Zeros 

3 

Pattern Games 

Sll 

Taxman 

3 

Dannie 

2 

The following games arc in 


Sun sen 

3 

Dartmouth BASIC 


Biosin 

3 

Motic 

5 

Mandal 

3 

Rescue 

5 

Life 

Amaze 

3 

3 

For historical reasons. 

CCC maintains a different price schedule for postage and ha 

ndling 

i 32 

on this particular set of tapes; 

duplication charge and tax, as above 
postage and handling; 

SlO.SOon orders under SI0 

SI .00 on order of S10 or more 

Dr. Dobb's Journal of Computer 

Calis 


byte swap 

We are experimenting with offering a “Want Ad” section. We 
will continue to do it as long as we can afford it (in terms of 
staff time and printing costs). Note: the charge for running an 
ad will undoubtedly increase as our circulation (and printing 
costs) increases. 

Please follow these instructions in submitting ads. Ads received in 
other than this form cannot be accepted, and will be returned to the 
sender. 

1. Type the ad, with a blank space between each line, in lines no 
more than 50 character positions in length. 

2. Include at least your name and address as part of the ad. 

"Blind" ads will not be accepted. 

3. Compute the charge on the basis of SI per line or partial line, 
per issue. 

4. Forward the typed copy and a check or money order payable 
to "PCC," to: DDJ Byte Swap, PCC, Box 310, Menlo Park CA 94025. 
Do not send cash. Your cancelled check is your receipt. Payment 
must accompany the ad. 

► QUULIUL8JU;_il_fi_0.iL5-S-0-S.S SLSLSLSLSULSLSLSLSIJLSL^ 

SELL: MIL MODS with MONITOR, TVT-1 with UART and key¬ 
board, Creed TTY, Altair 8800 new kit, unassembled. Send SASE to 
R. Schultz, 611 N. Dexter, Lansing MI 48910. -5/14/76 






“BASIC JUST WON’T CUT IT. 

GET STARTED ON A NEW LANGUAGE.” 

Dear Jim Warren, May 15, 1976 

I think you are wasting good space with still another 
version of BASIC. BASIC just won’t cut it. 

Suggest you get started on a new language for hobbyists 
with the best features of many languages. Should come in 
various sizes, always upward compatible. Also, it should be 
interpretive for fast programming, and compilable for fast 
execution. 

24365 Clipstone 

BiU Roch Woodland Hills CA 91364 

HOW ’BOUT SMALL PASCAL? 

Bill, 

I fully agree. You’re asking for a lot in requesting various 
sizes + upwards compatibility + interpretable + compilable, but 
I hope to offer at least part of that in our next HLL (High 
Level Language) for micros. Unless someone else volunteers to 
initiate a HLL project through the Journal in the next month or 
three, I hope to start a build-your-own-compiler project called 
SMALL PASCAL. My plan is to detail the design of each 
module of a compiler in a series of articles. The compiler will 
be for a block-structured PASCAL-like language, trimmed for 
microcomputer size, and modified as appropriate for a pre¬ 
sumed interactive, stand-alone environment (as opposed to a 
batch system). At this point, expandability and interpretability 
are low-priority goals for this project, but I’ll keep them in 
mind. 

I definitely wish to “push” a “good” HLL, instead of con¬ 
tinuing emphasis or reinforcement of BASIC. BASIC is better 
than nothing (and, currently, nothing else is available for 
hobbyists). However, I see no reason to continue to eat 19$ 
hamburgers when classy filet mignons are available at the cost 
of a little interesting effort. -JCW, Jr. 


& Orthodontia, Box 310, Menlo Park CA 94025 


May, 1976 


149 








dr. dobbs journal of 


$ 1.50 


COMPUTER 


C 


alisthenics 


60 


rthodont ia 


Running Light Without Overbyte 


June/July, 1976 


Box 310, Menlo Park CA 94025 


Volume 1, Number 6 


A REFERENCE JOURNAL FOR USERS OF HOME COMPUTERS 


CONSUMER COMMENTS 

■Praise for Pittman’s 6800 Tiny BASIC [letter & reply ] 4 

Good Reports & Plaudits for MOS Technology [letter/note] 5 
Short on Length, but Long on Quality [letter] 6 

Don’t Underestimate BASIC [letter] 40 

BASIC Complaint & Macro Message [letter & reply] 40 
Dennis Allison reply points out BASIC limitations 


Denver’s Digital Group Kit Draws Praise [letter] 5 

Accentuate the Software; Eliminate the Games [letter/reply] 6 
A Novice Constructs an IMSAI, S. A. Cochran, Jr. 7 

an attorney builds his first computer 
FCC Petition on ANSCII Transmission by Hams 42 


SOFTWARE 

A Bootstrap for the 8080, Lichen Wang 

Byte-Saving Programming Tricks for the 8080, Tom Pittman 
An Exercise for Novice Translator Implementors, Bill Thompson 
A Classy 8080 Text Editor, similar to a PDP-9 Editor, F. J. Greeb 


8 

9 

11 

13 


includes general comments, user documentation & extensively annotated source code 


Tiny Trek for Mueller’s MIN0L, Erik Mueller 
Button, Button Game in 8080 Machine Code, Ron Santore 

CORRECTIONS & IMPROVEMENTS 

Errors in & Improvements for Texas Tiny BASIC (TBX), Charles Skeldon 
Errata & Additions to Wang’s Palo Alto Tiny BASIC, Lichen Wang 
MinErrata for MINOL, plus Tiny Trek, Erik Mueller 

VIDEO OUTPUT 

48 Lines of 64 Characters on a TV for $499.95, Video Terminal Technology 
512-Character Video RAM from Canada, Matrox Electronic Systems 
Variable Character Spacing in Video Displays, Jim Day 
TVT—II Mods to Get 64 Characters per Line, David Valliere 
Homebrew TV Display System with Graphics, Glendon Smith 

complete design & implementation details, including complete schematics 
$98.50 Graphics Terminal Kit, Southwest Texas Products Corporation 

MISCELLANEOUS HARDWARE 

4K Static RAM Board (Unpopulated) for $18.75 4 

$450 Dot-Matrix Printer for 6800’s and 8080’s 36 

RCA COSMAS & |jScope [letter], Jim Day 43 

RANDOM DATA POINTS 

Do You..., a request for your assistance 3 

Going to Submit a Program to Someplace? [letter & reply] 6 
Table of Contents for First Six Issues of Dr. Dobb’s Journal 
+ propaganda, subscription form & questionaire centerfold 
Sonoma County Computers Hold Meetings 27 

1980 Census: Have Any Suggestions? 34 

Computers & Education [four brief notes] 40 

Iversons Initiate APL Newsletter, Jean Iverson 41 

IMS Associates, Inc., Moves 41 

TV Dazzler Contest back cover 


37 

38 

34 

35 

36 

27 

27 

28 

29 

30 

33 


Adaptor Makes LSI-ll’s and 11/03’s into Real PDP-11’s 36 
Western Data’s 6502-based Data Handler Kit for $169.95 43 
LED Replacements for Burn-Outable PDP-8/E Lamps 43 


16-bit, 3-MegaHertz Micro? [rumor] 5 

New club: TRACE in Ontario 15 

Pointers to Other Good Stuff 26 

6800 BASIC, Editor, Blackjack; Tiny BASIC Star Trek; etc. 
Central Oklahoma Computer Group 29 

Club: ICE-NINE in Illinois 36 

Tiny Time Sharing?, Lee Felsenstein 41 

Software Exchange for 6800’s [letter & reply] 41 

A Club Survey for a Club Club 42 


150 









DO YOU... 

. . . LIKE WHAT WE ARE DOING? 

* Publishing significant systems software, every month 

* Reprinting materials from club newsletters 

* Proposing & detailing “realizable fantasies” . . . exciting projects, feasible for home computers 

* Actively pursuing a role of consumer advocate 

* Publishing useful references . . . indices to periodicals, bibliographies, lists, etc. 

* “All Meat” pages; we are not accepting commercial advertising 

* And more— 

. . . KNOW THAT MUCH MORE MATERIAL IS BEING SUBMITTED 
THAN WE ARE FINANCIALLY ABLE TO PRINT? 

* Many more programs than we have room to print 

* Much more very useful material from many club newsletters 

* A number of projects that are practical & appropriate for home computer users 

* More consumer evaulations of products & services 

* Many, many more reference lists, indices, tables, etc. 

* Much more 

. . . KNOW THAT YOU CAN HELP US 

TO BE ABLE TO PUBLISH ALL THE GOOD THINGS WE ARE RECEIVING? 

* Since we . . . 

-are supported entirely by subscriptions & sales through stores 

-want to keep it that way (“keeps us honest” when we indulge in consumer advocacy) 

-are serving you ; not serving commercial advertisers 

* Then . . . 

-the only way we can get more income to pay our printers to print more pages, is to have more 
people and companies subscribe to and purchase the Journal 
-you have already helped by purchasing this issue 

. . . WISH TO HELP US HELP YOU? 

* Tear out the center-fold (not very sexy, but we hope it’s attractive) 

-pass it along to a friend or professional associate 
-post it on the bulletin board at school or at work 
-give it to a manager of microprocessor software or design 
-reprint it in your club newsletter 

* Stand up and tell your next computer club meeting about the Journal 

[and ... if you really like what we are doing:] 

* Send tax-deductible contributions to People’s Computer Company 

-do so as a company or an individual 

[Oh . . . didn’t you know? PCC, the publisher of Dr. Dobb’s Journal is a legitimate, state and 
federally chartered, non-profit, educational organization. Contributions to it are tax-deductible.] 

DC 

June/July, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 3 


151 


PRAISE FOR PITTMAN’S 6800 TINY BASIC 
and 

A Minor Complaint . . . With Tom’s Response 

Dear Bob, May 17, 1976 

I bought Tom Pittman's 6800 TINY BASIC and 
think it's the best $5 I've spent in a long time. I haven't 
tested it exhaustively, but it seems to work admirably, though 
slowly. The user's manual that came with it was simple and 
comprehensive, and gave enough info to make the program 
run on anyone's system with a minimum of fuss. Mine worked 
almost as soon as I got the paper tape read in. Tom Pittman 
is to be applauded not only for producing a good TINY 
BASIC that uses less than 2K, but for doing such a good job 
of explaining how to use it. If all hobbyist vendors con¬ 
formed to Tom's standards, there would be far fewer 
complaints. 

My only complaint about Tom is that he staunchly 
refuses to release the source listing of his program. I need to 
make some modifications to the program, for use with my 
cassette O/S, and I would like to be able to expand it. It is 
very frustrating to be kept so ignorant about his program, 
particularly since it seems to work so well. He seems con¬ 
cerned about his ability to retain control over the integrity of 
the program, and perhaps about the investment in time and 
potential money he expects to receive from it. I can't see how 
he'll ever make enough money (at $5 a copy) to keep himself 
in business. But the price may serve to discourage people from 
circulating clandestine copies of the program. Anyone who 
uses Tom's program without paying Tom for the privilege, 
should be tarred and feathered. 

Sincerely, 

David M. Allen 1317 Central Ave. 

Kansas City KS 66102 


Dear Jim: 11 June '76 

I have to agree with David's complaint—I would be very 
unhappy to find the tv I just bought did not have a sche¬ 
matic, but then a $5 transistor radio is something else. 
Though he does not seem to realize it, David has actually 
touched on the reason why I have not made source listings 
available. 

When I first started this venture, I too was not sure I 
could make enough money to stay in business; it was in fact 
a sort of experiment in economics. Therefore, as a hedge 
against possible losses, I sold copies of the source and main¬ 
tenance documentation to a company for a lot more money 
than any hobbyist would be willing to pay, though it was 
still considerably less than I usually sell custom programs of 
comparable size for. While the sale was non-exclusive, I do 
not think it fair to devalue this company's investment when 
to some extent they helped make Tiny possible. 

Aside from that one large sale. Tiny BASIC 6800 has 
not yet paid for itself, but the promise is there, so I expect 
to go ahead with other software for the hobbyist in the same 
price range, and I hope to make source listings available for 
the new packages. As for Tiny BASIC, I am presently pre¬ 
paring a comprehensive description of the IL (which is sub¬ 
stantially the same as that originally published in PCC) in¬ 
cluding instructions for modifying it to add functional capa¬ 
bility or change syntax, to be published in DD r ^{if you will 
have it). I had hoped to include an assembler v#nten in Tiny 


4K STATIC RAM BOARD 
(UNPOPULATED) FOR $18.75 

Dear Friend, May 10, 1976 

I would appreciate your disseminating the spec sheet 
enclosed to your friends and club members. A discount of 5% 
will be given to clubs with an order of 50, and 10% on 100. 

Several months ago I received several inputs on making 
an unpopulated 4K RAM board, hence I am producing the 
board for the hobbyist that does not want to get ripped off. 

The board has been fully tested and is in use by many 
people here in Dallas. I might add that it is in use on 8080, 
6502, and 6800 CPU's. 

Sincerely yours, 

Jim Garrett Box 2161 

Micro Applications Garland TX 75041 

4K STATIC MEMORY BOARD (unpopulated) 

FEATURES 

2102 and 91 L02 compatible 
User selectable options 

Protect/Un protect switch 
Battery backup 

Selection of address by dip switch 
Fully compatible with MITS/ALTAIR and IMSAI 8080 
Can be used with other micro/homebrew computers 
Full buffering of address and data lines 
Bipass capacitors on all ICs for improved noise immunity 

SPECIFICATIONS 

Double-sided MIL-spec board 

100-pin (50x50) on 0.125-inch centers 

Standard dimensions 

Plated through holes 

Gold plated edge contacts 

GENERAL DESCRIPTION 

This is an unpopulated 4,096 word (byte) Random Access 
Memory. The cost to populated is less than any kit available (based on 
advertised prices). Full instructions, schematics and parts list are 
included. 

PLUSES 

100% tested 
Instruction package 

Plated through holes and gold-plated edge contacts 
Uses 2102's or 91 L02's 

PRICES 

1-3 <§> $18.75 each 
4 or more (s' $16.25 each 

$1 for instruction package (one is included with each order) 
Texas residents add 5% tax 

DELIVERY 

3-4 weeks 

Coming Soon: "The Extender." 

We are interested in receiving consumers' compliments 
and complaints concerning Micro Applications, and all other 
large and small marketeers to the hobbyist community. --JCW 


(yes, I know it's slow), but already I am time-sharing my 
efforts between this, new software, and those expensive cus¬ 
tom programs that keep the rent paid; the projects with non¬ 
zero financial return seem to get higher throughput. 

Tom Pittman Box 23189 

San Jose CA 95153 

P.S. Your readers may appreciate being made aware of the 
fact that Tiny BASIC does run on a Sphere configuration, but 
they should mention which computer they have, since the 
code is slightly different for the different operating systems 
(e.g.. Sphere vs. SWTP, etc.). 


Page 4 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 June/July, 1976 


152 




DENVER’S DIGITAL GROUP KIT DRAWS PRAISE 

Dear Bob: April 26, 1976 

I finally broke down and bought myself a system. I 
took out a bank loan, added some cash of my own and 
mailed my cashier's check to the Digital Group for their 
Three-board system. 

Three days later I read in PCC that caution was needed 
in dealing with DG. I also read some mixed reports in Micro-8 
News. I was really nervous, had bad dreams, and didn't sleep 
for nights. 

2/10/76 Order placed with DG: 3-board system kit plus 
power supply. They promised 3-week delivery. 
Order placed with Herbach & Rademan: Clare/ 
Pender Keyboard. 

2/21 The three boards arrived, missing 74121 and 22uF 

capacitor. 

2/25 Keyboard arrived. 

2/26 Power supply arived. 

3/3 Mother board arrived. 

Total time: 3 weeks, one day. The missing parts took 4 
weeks and two letters. 

All parts are of good quality. 

TV-Cassette and Mother boards are slightly warped. 

5V 6A supply by Eentak Inc.; looks impressive. 
Documentation fair; assumes a lot. Several minor errors. 
Chassis, switches and connectors need to be ordered 
from other distributors at present. 

Time Spent 


2.5 hours 

I/O card 

4.75 

CPU card 

3.25 

TV-Cass. card 

2.5 

- 5, ± 12V power supply 

.5 

Mother board 

6.5 

TV modifications 

17.5 

Planning, cutting, mounting, wiring chassis 

4.5 

Checking things out 

41.5 hours 

Total time 


I took my time and spread it over about 40 days. I 
must say I savored every minute of it. 

I had trouble with the TV characters being out of focus. 
It finally dawned on me, after scratching my head for several 
days, that the TV interface was overdriving the TV video. I 
solved the problem by turning the contrast and brightness to 
zero. Later I plan to add a pot on the interface output. 

When I had gone through their checks, I turned the sys¬ 
tem on and sure enough there was a message on the TV 
screen: "Read 8080 Initialize Cassette." 

After dancing around the room, I proceeded to read in 
the cassette. Numbers flashed across the screen. First 1's, then 
2's, and finally 7's, then a bunch of dots. The dots weren't 
suppose to happen. More scratching of the head and several 
days later I decided it must be the cassette recorder. 

I borrowed a recorder from the school to replace my El 
Cheapo and everything happened just like it was supposed to. 
However, it still misses a few bits now and then. The H00 
baud rate is too fast for my El Cheapo. It looks like it 
would be possible to set the cassette read and write constant 
at a lower baud rate, re-record the Operation Monitor, and 
then every time the system is turned on key in the new con¬ 
stant from the front panel, and then read in the cassette on an 
El Cheapo. However, the DG system does not come with a 
front panel, just plans for one. 


I've been spending most of my time figuring out what 
makes the Monitor work. The DC documentation is not much 
help. I've also found out that machine language is a far cry 
from Fortran. 

I will echo what some others have said about the DG 
system: 

It does what they say it will do. 

It worked the first time I turned it on, which says a 
lot considering how complex it is. It's definitely not a 
beginner's kit. 

More documentation: flow charts for the Monitor 
(I'm working on a set), clearer instructions, spec 
sheets for the IC's and a better description of how it 
works would be nice. But that would mean more 
money and maybe in that case the documentation is 
OK. 

Last week I got info about DG's Tiny BASIC. I plan to 
order that and another 8K of RAM from them. 

Materials I'm finding helpful: The Bugbook III. 

Hopefully my Intel 8080A Users’ Manual will get here 

soon. 

I want to get: 8080A Microcomputer System’s Manual, 
Intellec 8/Mod 80 Microcomputer Development System Ref¬ 
erence Manual, SCELBI software manuals. 

Keep up the good work. 

Yours, 

Ed C. Epp Freeman Junior College 

Freeman SD 57029 


GOOD REPORTS ABOUT MOS TECHNOLOGY 

We hear that MOS Technology has sold about 1000 KIM's. 
We also hear that they are very responsive to customer queries. If 
you have needs or interests, the "good guy" name we have been 
given is Don McLaughlin, Product Manager for KIM, 

(215) 666-7950. 


PLAUDITS FOR MOS TECHNOLOGY 

Dear Jim, May 11, 1976 

Just received my third issue of Dr. Dobb’s Journal and 
I thought I'd drop you a note of thanks for putting in an 
article on a MOS 6502. From the lack of MOS Technology 
articles, I got the feeling that "Intel Valley" was banning MOS 
Technology products in California. 

Last week I called Intel, to get a software manual, and 
received the biggest runaround I have ever gotten. Unlike 
Intel, I have found MOS Technology will answer any and all 
questions on their products and it only takes one call to them 
to produce results. Many times I have called Will Mathis and 
Don McLaughlin of MOS Technology with what I, today, 
would consider to be stupid questions and received the time 
and help of their technical staff in getting me on the straight 
and narrow. 

MOS gets a number one in my book and should be 
given more space in your Journal. 

Very truly yours, 

Gerald D. Severson 


RUMOR: 16-BIT, 3-MEGAHERTZ MICRO? 

We hear that MOS Technology is planning to exhibit a 
3-megahertz, 16-bit microprocessor at this Fall's Wescon con¬ 
vention in San Francisco. They also expect to have a "rotate 
right" instruction in their 6502 by the time this issue reaches 
your hands. 

Page 5 


June/July, 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


153 







GOING TO SUBMIT A PROGRAM 

TO A MANUFACTURER’S SOFTWARE LIBRARY? 

WHY NOT SUBMIT A COPY 

TO YOUR LIBRARY (THE JOURNAL )? 

Dear Editor, May 12, 1976 

I've got a gripe. I ordered my Altair back when Pop 
’Tronics first published the article (took four months to get it, 
though). Anyway, they automatically gave me a 1 year's sub¬ 
scription to their Computer Notes. With each copy they in¬ 
clude at least one page of new programs available in their 
software library. These are programs that they keep asking 
people to send in, for which they receive a couple of pro¬ 
grams in turn from the library. We are told these programs 
are all free simply for a small handing and copying fee. These 
"small fees" are almost all $2 minimum—or more for the 
longer programs. The current offering consists of 29 programs 
totaling $61 in fees if one ordered all 29 (28 are $2 each, 
and 1 is $5). 

What I don't understand is why they don't publish them 
in their Computer Notes. As it stands. Computer Notes con¬ 
sists of 16 pages of virtually nothing but their own advertising. 
They say a subscription to non-Altair owners is $30. Personally, 
I wouldn't give 30 cents for a year's subscription. I bet after 
the 12th issue goes out and they start selling subscriptions 
they are going to be in for a big surprise. Who will pay even 
$10 for their advertising sheet? They also issue software with 
a $500 price tag to the hobbyist and then lament the swap¬ 
ping, passing around, trading, of it. What do they expect? 

But that's another story. 

The point is—why can't you publish these (or similar)? 
Just glancing at the latest list I see programs listed as being 
60 lines, 83 bytes, 73 bytes, 21 lines, 46 lines, 121 bytes, 

28/33 bytes, 56 bytes, 12 lines, 250 lines, 15 bytes, etc. You 
could get all eleven programs I listed on 3 or 4 pages, and 
that represents $22 of handling and copying fees. Publishing 
some would save us a bundle. 

This is what I hope Dr. Dobb’s Journal is all about. 
Actually, a lot of people just aren't going to get many of the 
programs unless there is a lot of the lamented swapping, trad¬ 
ing, and exchanging—or, unless you become the "library" for 
all of us. 

So far, you are doing fine. Keep up the good work. 
Durward Landers 2509 Lakeside Dr. 

Garland TX 75042 

We will publish as many programs as we can, if people 
will send them to us. Spread the word: Whenever someone 
decides to submit a program to a manufacturer's software 
library or users' group, encourage them to also submit it to 
the Journal. If it's systems software or assembler-level, we will 
probably publish it. If it's a program coded in BASIC or some 
other HLL (High Level Language), it will probably be pub¬ 
lished in PCC Newspaper. 

We see nothing wrong with offering programs to manu¬ 
facturers’ libraries. But at the same time, why not offer them 
to your library: Dr. Dobb’s Journal ? 

As far as reproduction and postage costs are concerned: 
there is a problem. The Community Computer Center (CCC) 
is maintaining a Program Repository and Duplication Facility 
(see the Journal, March, 1976, issue) for all programs sub¬ 
mitted to it. We think their charges are reasonable: $1/ounce 
for tapes plus 50 cents (orders under $5) or $1 (orders ex¬ 
ceeding $5) for postage and handling. Note that these are 
quite comparable to MITS' charges . . . and we brow CCC 


ACCENTUATE THE SYSTEMS SOFTWARE; 
ELIMINATE THE GAMES 
Dear Editor, 

You can eliminate 90% of the games. Almost all other 
hobby publications specialize in them. Emphasize your unique¬ 
ness: a repository for systems software. It's a great idea, so 
far well executed; so don't drop the ball by trying to cover 
too many other things. I strongly recommend that you push 
APL as you did TBASIC 

Robert C. Minnick Box 306 

Ouray CO 81427 

To a large extent, we will leave the games for publication 
in People’s Computer Company. We will reprint games from 
time to time, particularly when they are "games' systems," or 
are games written in assembly-level code. This might be con¬ 
sidered to be, so to speak, systems software for home computer 
users. Dr. Dobb’s Journal will definitely not be emphasizing 
games, however. 

We would be delighted to "push" APL as we did Tiny 
BASIC. All we need is for someone to provide design criteria 
and details appropriate for hobbyist consumption. We are 
alwsys on the lookout for competent individuals interested in 
providing the leadership for such projects. Incidentally, as soon 
as he can find the time, the Editor of Dr. Dobb’s Journal is 
planning on initiating a SMALL PASCAL project, to be pur¬ 
sued in much the same manner as Dinnis Allison's Tiny 
BASIC project. This will be based on Niklaus Wirth's PASCAL, 
a cleanly designed, excellent, block structured, high-level lang¬ 
uage similar to ALGOL, .but with much more powerful data 
description and manipulation facilities, and structured for 
single-pass compilation. 

One final note: PCC is not a program repository. We 
publish all available information about interesting software, 
including information as to how it may be obtained. However, 
we do not distribute such software in machine-readable form 
(e.g., paper tapes, cassettes, etc.). --JCW 

SHORT ON LENGTH 
BUT LONG ON QUALITY 

Dear Jim, 

Having just read your February issue (Vol. 1, No. 2), I 
was sufficiently impressed to part with the money for a sub¬ 
scription. What your publication lacked in length was more 
than adequately offset by quality and subject matter. Your 
questionnaire scares me somewhat as you apparently are look¬ 
ing for some new directions) Additional coverage of other 
topics is fine and may tend to broaden your base of appeal. 
However, I for one, bought your publication for what it cur¬ 
rently is—"a medium concerning the design, development and 
distribution of free and low-cost software." Should your en¬ 
terprise maintain its stated goal of presenting "detailed infor¬ 
mation concerning low-cost systems software," I will have 
spent the subscription fee well. 

I remain, 

Dan Artman 1445 Adams Rd 

Cincinnati OH 45231 

is doing little more than breaking even. Unfortunately, there is 
a lower limit on the cost of maintaining paper-tape equip¬ 
ment + purchasing supplies + paying a paltry pittance to a 
slave to operate the equipment and verify tapes that are 
punched and . . . etc. (Note: People's Computer Company is 
a publishing operation. We provide programs in human- readable 
form. We do not provide programs in machine- readable form, 
e.g., paper-tapes.) 


Page 6 Dr. Dobb s Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 June/July, 1976 


154 





A novice constructs an IMSAI 

An attorney builds 


his first computer 

by S.A. Cochran, Jr. 

I am a little out of my field messing about with computers— 
far more than some school teachers are whose interest is in 
propagating math instruction, etc. But even my life was not un¬ 
touched by some of the manifestations of the computerized 
society—about four years ago, I made use of the IBM Mag-card 
Selectric typewriter during a period of heavy work. Ever since, I 
had been struck with the convenience—and high cost—of 
mechanized typing. 

More recently, I heard that John Arnold and Dick Whipple 
were assembling a computer for what appeared to be peanuts, 
compared to the charge gaily levied by IBM for its typing units, 
much less its Mag-card units, and still less than its computers. 
Based on this information, I could hope to install a powerful 
typing system with greater capabilities than anything that I 
could expect to purchase from IBM with available resources, 
and at less cost. 

Having decided to get into the microcomputing stream, 
with the help of John Arnold, I decided to get an IMSAI 
rather than Altair because the IMSAI unit with memory was 
the same price as the MITS unith without memory. Also, 

MITS' prices for memory were substantially above those 
charged by IMSAI. 

I placed my order for the basic IMSAI unit on 
January 22nd. They received this order on the 25th, and the 
unit was actually shipped on February 2nd. I learned more 
about the units actually available from IMSAI on January 25th, 
and sent in an additional order on that date. It was not filled 
until March 1st, when some of the parts were shipped. The 
I/O ports that were included in the second order did not 
arrive until about March 25th. 

The serial I/O board was delayed by a considerable 
re-design of the board, which must have started in January, 
and must have concluded at the very end of February. The 
documentation received with the original equipment showed 
the manner of assembling the SIO 2-2 board, Rev. 1. I re¬ 
ceived at least one set of errata with the documentation, and 
one after I had already got the equipment. Ultimately, IMSAI 
sent me their SIO 2-2 Rev. 3 board, with all of the changes 
built into the board. 

I would like to point out that IMSAI was very prompt 
in providing the kit buyers with errata when they discovered 
something that needed to be fixed. In addition, on certain 
rather complicated modifications, they offered to make the 
modifications themselves if the kit-builder did not trust him¬ 
self to fix the unit satisfactorily. They have also been quite 
helpful with software for units of the equipment. For in¬ 
stance, with the CRI board they supplied paper tape software 
and a hexadecimal listing. 

In the revised order, I had requested the EXP-22 
mother board. I recall that I could not proceed beyond the 
assembly of the several independent boards during February 


while waiting for this unit to arrive. 

I had a little confusion about the proper procedure for 
completing the power supply and collecting it. I had docu¬ 
mentation for connection of the IMSAI power supply using 
two alternative transformers and they had shipped a third 
version of the main power supply. This was corrected quickly 
enough, and a minor problem with the 1 K memory board 
was quickly corrected when someone pointed out that I had 
interchanged a .01 mfd capacitor and a 33 mfd one. Testing 
of the front panel board and the cpu board had to wait for 
arrival and assembly of the mother board and additional 
memory. 

When the additional units arrived, everything tested out 
satisfactorily, except that there was a single bad LED on the 
front panel. I recall that there was an embarrassing pause 
after this LED was replaced—we thought that the entire 
equipment had gone berserk. However, I found that a piece of 
wire had worked its way behind the front panel, and was 
shorting the deposit switches. I have had no further problems 
with the computer, or with any of the parts supplied by 
IMSAI-except for the problems involved in learning to speak 
machine language like a native. (Apparently I don't do that 
yet.) 

My remaining difficulties in getting the initial system 
into operation have revolved around input and output devices. 

I joined John Arnold and Dick Whipple in the acquisition of 
three Burroughs Model 9350-2 communicating typewriters 
from Herbach & Rademan of Philadelphia. These units were 
correctly advertised as receiving and transmitting a form of 
ASCII. They appear to be based on the Friden Model 2300 
typewriter, a modernized version of the Flexowriter. They are 
not readily convertible to use as a computer input because 
there is a direct mechanical linkage between the keyboard and 
the keybars of this typewriter. Another thing that I found very 
hard to get used to was that this "typewriter" didn't have a 
backspace key! There was some additional major maintenance 
to be done on this equipment. Although it could be induced 
to type, thus far I have been unable to get the typewriter 
hooked up to the computer! 

After making the decision to use a separate keyboard, I 
bought one of the keyboards originally built for RCA that 
have been advertised by Sargeant's in Los Angeles. This key¬ 
board was advertised to be fully ASCII encoded, and it was, 
so far as it went. Unfortunately, this unit had provision for 
upper and lower case letters, numbers, and punctuation marks, 
but it did not have any provision for the non-printing control 
characters so common to computer work. In addition, upon 
applying power to the keyboard, we discovered that this key¬ 
board carried a strobe that was valid as long as the key was 
pressed, and used negative logic. That is, the strobe output, 
and all the other outputs supposed to be made true when a 
key was pressed, went at that point from a voltage of 5.0 to 
0.4 volts. It appeared that it would be necessary to add a 


June/July, 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


Page 7 


tair number of IC's to the interface between the keyboard 
and the computer in addition to installing an additional key 
on the keyboard for use as a control key. With all these 
matters before me I decided to keep the keyboard for future 
modification, and get another for my present use. But I did 
get a pretty keyboard enclosure from Sargeant! 

[ Later] ... I am now in the process of putting that 
pretty keyboard enclosure and keyboard to good use. It's going 
to take a certain amount of skill and understanding but one 
of my purposes in getting into this hobby was to acquire that 
sort of skill. Thanks to Sargeant's, any way, for providing me 
with an occasion for that sort of acquisition—even if it wasn't 
what I exactly expected. 

I feel that I should mention the question of IMSAI soft¬ 
ware before closing. In the advertisements that they began to 
distribute just after 1 ordered my IMSAI unit, they stated 
that they would ship an assembler, loader, and monitor with 
every unit, together with BASIC and other languages there¬ 
after. This assembler, etc., turned out to be a re-write of the 
assembler originally distributed by Processor Technology Corp. 
It uses all of a 4K memory, and needs an additional 2K of 
RAM, if not more. A complete source listing and paper tape 
of this assembler were enclosed with the unit. IMSAI also 
provided a listing and paper tape of software for their Cas¬ 
sette Recorder Interface board. On March 20th, IMSAI wrote 
all of their customers, stating that they were now ready to 
deliver their 4K BASIC, and expected to be ready to deliver 
the 8K and 12K BASIC languages on April 15, and May 15, 
respectively. The 4K BASIC was shipped at the end of March. 

I was ultimately charged $4.00 for their cost of duplication of 
the paper tape, and an additional $10.00 for a 70-page source 
code listing of the IMSAI BASIC. IMSAI had apparently 
enclosed it 'by mistake.' 

IMSAI's price for its 4K BASIC thus amounts to $14. 

In addition, IMSAI will sell the 8K and 12K BASICs for $1 
per kilobyte of memory required. The source code listing for 
these two extended BASICs will again be $2.50 per kilobyte. 
Compared to the longwinded philosophical discussions that one 
hears from MITS from time to time, this is probably a great 
bargain, notwithstanding that the IMSAI BASIC may not be 
quite as powerful as the MITS 4K BASIC. 

After acknowledging the assistance of my friends in 
checking out the IMSAI 8080, I conclude that this equipment 
is a well-designed, sturdy unit easily capable of expansion to 
the full limits of addressable memory. IMSAI has acted in a 
very businesslike fashion, and has tried to be genuinely helpful 
within the limits that are proper to a business organization. 
IMSAI recently raised the price of the basic equipment, with¬ 
out memory, to $599. Certain persons of my acquaintance 
griped very strongly at IMSAI's action. I consider that in view 
of the high quality of the merchandise, the IMSAI equipment 
is worth this premium price to the individual who has never 
attempted to build an electronics kit before. Anyone who 
considers the IMSAI not worth the price, should consider 
whether he or she could duplicate the system with available 
resources. If he could match the high quality provided by 
IMSAI, could he deliver the goods to others, at the price? If 
so, why isn't he in there competing? 

Yours very truly, 

S.A. Cochran, Jr. Box 607 

Attorney at Law Tyler TX 75701 


Bootstrap for 8080 

by Lichen Wang 

(reprinted with permission from Homebrew Computer Club 
Newsletter) 

If your 8080 microprocessor system is not equipped with 
non-volatile memory, you probably have to reload the memory 
from time to time. To read the Intel hex-format paper tape, 
you need to key in a loader of some eighty-odd bytes long. This 
is rather tedious and often leads to error. Altair BASIC has a 
bootstrap loader of twenty or twenty-one bytes long. In princi¬ 
ple, you can use this bootstrap to load in your own loader which 
will then load in your program. I coded one myself, and what 
comes out is a bootstrap sixteen bytes long. This is still too 
long—maybe our professional experts can make it shorter. For 
the time being, you are welcome to copy mine. 


The part that you 

have to 

i key in looks like this: 

0000 DB00 READ 

IN 

0 

;READ AND 

0002 E620 

ANI 

20H 

(MASK THE STATUS BIT 

0004 CA0000 

JZ 

READ 

;NOT READY YET 

0007 DB01 

IN 

1 

(READY, READ IN A 
FRAME 

0009 010900 HERE 

LXI 

B,HERE ;LATER BECOMES INX B : 
STAX B, CPI 

000C 02 

STAXB 

;LATER BECOMES FF 

000D C30000 

JMP 

READ 

;LATER BECOMES JNZ 
READ 


And the paper tape should have the binary equivalent of the 
hex numbers shown below: 

01 01 ... 01 03 02 FE FF C2 00 00 XX XX.XX XX FF 

<- leader -> <- bootstrapping -> <- your loader -> marker 

Where your loader is punched in binary format on the paper 

tape between the 00 and the FF is denoted by XX XX. 

XX XX. Your loader cannot have any byte with the value FF. 
The marker FF tells the bootstrap to start your loader, starting 
at 10H. After the FF, the paper tape is read by your loader. Use 
whatever format you want. 

If your loader cannot be loaded at 10H, then you will have 
to write another loader which can be loaded at 10H. Use it to 
load in your first loader to load in your program. This sounds 
very confusing, but that is how bootstrap works. Have you 
ever tried to get yourself off the ground by pulling your 
bootstrap? 

Incidentally, the I/O ports at locations 1 and 8, the status 
bit mask at 3, and the jump condition at 4 may have to be 
changed for different I/O interface board. Your loader should 
copy them from the bootstrap rather than setting them up on 
their own. (Or, you can code your loader to change location 9 
to RET, and use READ as your input routine.) This way the 
same paper tape can be used on different machines. To carry 
this one step further, your program should, in turn, copy them 
from your loader, so that it too can work on different 
machines. 


HIGH SCHOOL CLUB IN CHICAGO 

The University of Chicago Laboratory High School (1362 
E. 59 St., Chicago IL 60637) has started a computer club. 


Page 8 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 June/July, 1976 


156 







BYTE SAVING PROGRAMMING TRICKS 
FOR THE 8080 


by Tom Pittman 

(reprinted with permission from 

Homebrew Computer Club Newsletter) 

These are some programming tricks I have accumu¬ 
lated over the years which can often save a byte or two 
in 8080 programs. Because of the peculiarities in the 
instruction sets, only a few of these also apply to 6800 
programs and are so noted. Many of these tricks are 
widespread lore; some I have never seen elsewhere. I 
hope they can help you as well. 

For 2's complement signed arithmetic, it is some¬ 
times necessary to add a signed 1-byte number to a 
larger format. There are also other reasons for spread- 
ingasingle bit (in the Carry FF) to a whole byte (in A). 
I found this one in the Scelbi book: 

SBB A Copy carry to all bits in A 

The 8080 does not have a proper shift instruction 
which fills the vacated bits with zeroes. Normally, a 
CLC must precede the BAR instruction. However, for 
left shifts: 

ADD Shift with zero insert 

To insert a single bit (in the Carry) into the left or 
right end of the A without altering the other seven bits: 

RA L Remove old left bit 

RRC Insert new from Carry 

The right-end version is symmetrical. To divide a 
signed (2's complement) number in half, it is necessary 
to keep the sign bit (bit 7) unchanged while shifting A 
right. The 8080 does not have an instruction for this, 
but the RAR may be used if the Carry can bet set up 
to match the sign bit: 

RLC Copy bit 7 to Carry 

RRC Restore A 

The 6800 has a single instruction for signed right 
shifts, but no circular rotate. To copy a sign into the 
Carry: 

ASR A (6800) Duplicate bit 7 

ROL A Restore A with bit 7 in Carry 

Some of these other tricks with the Carry become 
more useful if the Carry can be set on the basis of the 
other conditions. A zero in A may be converted into 
either a one or a zero in the Carry (so that non-zero is 
the reverse) by one of the following instructions (this 
also works in the 6800 with appropriate opcode sub¬ 


stitutions): 

A D / 0FFH C=0 if and only if A =00 
SUI 1 C=1 if and only if A=00 

It is easy to get the sign of A into the Carry (any 
left shift will do); to get the complement of the sign is 
a little trickier. This instruction leaves the contents of A 
unchanged, and also works for the 8080: 

CP! BOH Complement bit 7 to Carry 

Finally, how do you pack a byte with some bits 
from A and some bits from B? The Univac 1108 has a 
special instruction called Masked Load Upper which 
does this. The 8080 (and also the 6800—but only when 
the second byte is in memory) can do this in three in¬ 
structions! Assume that the data in A and B (or any 
other register or memory location) are already in the 
correct bit positions. The mask represents a byte with 
the ones where the data in A is to be substituted; the 
non-data bits of A and B may contain garbage, as they 
are ignored: 

XRA B XOR B to A data bits 
AN I Mask Delete A garbage 

XRA B Insert B data 

The theory behind this trick lies in the fact that 
the XOR operation may be considered a "selective 
complement" instruction. In other words, where there 
are ones in B the bits in A are complemented, and 
where there are ones in B the bits in A are unchanged. 
The AND operation, on the other hand, may be thought 
of as selectively setting bits to zero in A, where the 
zeroes in the mask set bits in A to zero and ones in the 
mask leave the bits in A unchanged. Assume for the 
moment that the mask is al I ones; the other two instruc¬ 
tions exactly cancel each other, leaving A unchanged, 
since the ones in B complemented the corresponding 
bits in A the first time and recomplemented the same 
bits (back to their original states) the second time. Thus 
ones in the mask retain the original bits in A. Now con¬ 
sider zeroes in the mask: here the corresponding bits of 
A are cleared to zero by the AND operation so that the 
first XOR has no effect; the second XOR simply com¬ 
plements those zeroes in A which correspond to ones 
in B, which is to say that it copies the bits of B into A 
(remember A was cleared to zeroes by the AND opera¬ 
tion). Thus zeroes in the mask copy in bits from B. 
Since each bit operates independently, there is no re¬ 
quirement that the selected bits of A or B be contig¬ 
uous. Note also that no other registers or memory is 
required for this procedure, and that B is unchanged. I 
realize this operation looks suspicious, so I have includ¬ 
ed the following truth table: 


June/July, 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


Page 9 


< 

CD 

MASK 

1st XOR 

AND 

2nd XOR 


FIGURE 1 

Byte Packing Truth Table 

0 

0 

0 

0 

0 

0 

= B 


0 

0 

1 

0 

0 

0 

= A 


0 

1 

0 

1 

0 

1 

= B 


0 

1 

1 

1 

1 

0 

= A 


1 

0 

0 

1 

0 

0 

= B 


1 

0 

1 

1 

1 

1 

= A 


1 

1 

0 

0 

0 

1 

= B 


1 

1 

1 

0 

0 

1 

= A 



; PROCESSOR TECHNOLOGY REFORMATOR 


; THIS PROGRAM TAKES 8080 ASSEMBLY 
; SO'JRCE PROGRAMS WRITTEN ON INTEL'S 
; INTELLEC 8 WHICH HAVE COLONS AFTER 
; LABELS, CONTROL-I'S FOR TABS, 

! AND SEMICOLONS TO DENOTE COMMENTS. 


; IT CONVERTS THEM TO PROCESSOR 
; -TECHNOLOGY'S FORMAT WITH LINE 
; NUMBERS, TO DENOTE COMMENTS, 

,* AND NO SEMICOLONS AFTER LABELS. 


; THE READER MUST BE UNDER PROGRAM CONTROL. 
,* THAT IS IT MUST BE STOPPED AFTER EACH 
,* CHARACTER IS READ IN. 

,* THIS RUNS ON THE INTELEC/8 
; IT STARTS AT LOCATION 10H 
,* AND USES THE INTEL MONITOR 
,* FOR I/O 


OOOD 


CR 

EQU 

OOOA 


LF 

EQU 

3806 


RI 

EQU 

3809 


CO 

EQU 

0000 



ORG 

0010 

310001 

START: 

LXI 

0013 

CD8100 


CALL 


ODH 

OAH 

3806H ;READER INPUT 

3809H ;CONSOLE OUTPUT 


10H 


SP,01OOH JINITILIZE 

CRCHK ,* INPUT A CHARACTER 


STACK 


; PRINT OUT 4 ASCII DECIMAL DIGITS 


i 

; 

; DO THE OPCODE, OPPERAND, AND COMMENT 
,* MULTIPLE BLANKS BECOME SINGLE BLANKS 


0061 

4F 

POC: 

MOV 

C, A 

0062 

CD0938 


CALL 

CO 

0065 

CD8100 

P0C1 : 

CALL 

CRCHK 

0068 

FE20 


CPI 

* * 

006A 

CA6500 


JZ 

POC 1 

006D 

FE3B 


CPI 

';' 

006F 

CA4400 


JZ 

FCl 

0072 

4F 

P0C2: 

MOV 

C, A 

0073 

CD0938 


CALL 

CO 

0076 

CD8100 


CALL 

CRCHK 

0079 

FE20 


CPI 

' ' 

007B 

C27200 


JNZ 

P0C2 

007E 

C36100 


JMP 

POC 


; READ A CHARACTER, MASK OFF PARITY. 
; IF ITS A CARRIAGE RETURN, THEN 
; DO THE END OF LINE THING 
; CONVERT CONTROL-I'S TO BLANKS. 

; REPRODUCE LEADER. 


0081 

CD0638 

CRCHK: 

CALL 

R I 

,*GET THE CHARACTER 

0084 

E6 7F 


AN I 

7FH 

;mask parity 

0086 

FEOD 


CPI 

CR 


0088 

CA9500 


JZ 

CRC 1 

; ITS THE END 

008B 

B7 


ORA 

A 


008C 

CA9900 


JZ 

CRC2 

;REPRODUCE LEADER!! 

008F 

FE09 


CPI 

09H 

^CONTROL-I IS A TAB 

0091 

CO 


RNZ 


;NOT CONTROL-I 

0092 

3E20 


MV I 

A, ' * 


0094 

C9 


RET 


l REPLACE WITH * ' 

0095 

El 

CRC 1 : 

POP 

H 

,*FORGET RETURN 

0096 

C3AA00 


JMP 

NLINE 

;go to end of line 

0099 

4F 

CRC2: 

MOV 

C , A 


009A 

CD0938 


CALL 

CO 

S OUTPUT LEADER 

009D 

C38100 


JMP 

CRCHK 




i 

; PRINT OUT 

(< H,L > ) AS 

AN 



; ASCII DECIMAL DIGIT. 


OOAO 

23 

DPRT: 

I NX 

H 


00A1 

4E 


MOV 

C,M 


00A2 

CD0938 


CALL 

CO 


00A5 

C9 

, 

RET 



00A6 

30303030 

i 

DNUM: 

DB 

•0000' 



0016 

F5 

MDEC: 

PUSH 

PSW 


0017 

21A900 


LXI 

H,DNUM+3 

00 1A 

7E 

MD1 : 

MOV 

A, M 


00 1 B 

3C 


I NR 

A 


001C 

FE3A 


CPI 

' 9' +1 

;too BIG? 

00 1 E 

C22700 


JNZ 

MD2 


002 1 

3630 


MV I 

M, '0 ' 


0023 

2B 


DCX 

H 

J DO THE NEXT DIGIT 

0024 

C31A00 


JMP 

MD1 


0027 

77 

MD2: 

MOV 

M, A 


0028 

21A500 


LXI 

H,DNUM- 

1 

0023 

CDAOOO 


CALL 

DPRT 


002E 

C DAO 0 0 


CALL 

DPRT 


0031 

CDAOOO 


CALL 

DPRT 


0034 

CDAOOO 


CALL 

DPRT 


0037 

0E20 


MV I 

C, ' 


0039 

CD0938 


CALL 

CO 




,* FIRST COLUMN 

, CHECK 

FOR A LABEL 

003C 

FI 

FFCHK: 

POP 

PSW 


003D 

FE3B 


CPI 

';' 

,* COMMENT? 

003F 

C24E00 


JNZ 

LBCHK 


0042 

0E2A 


MV I 

C, 


0044 

CD0938 

FCl : 

CALL 

CO 

, # PROCESS A COMMENT 

0047 

CD8100 


CALL 

CRCHK 


004A 

4F 


MOV 

C, A 


004B 

C34400 


JMP 

FCl 




; CHECK FOR A 

LABEL' 


004E 

FE20 

LBCHK: 

CPI 

. . 


0050 

CA6100 


JZ 

POC 

,’NO LABEL 

0053 

4F 

LBC 1 : 

MOV 

C , A 


0054 

CD0938 


CALL 

CO 


0057 

CD8100 


CALL 

CRCHK 


005A 

FE3A 


CPI 

' : ' 

;DELETE 

005C 

C25300 


JNZ 

LBC 1 

;LOOP TO PRINT 

005F 

3E20 


MV I 

A, ’ ' 

;• ' SEPARTES LABEL AND 


TERMINATE A LINE WITH A 

CARRIAGE-RETURN, LINE-FEED 

AND GO PRINT THE NEXT LINE NUMBER. 


OOAA 

OEOD 

NLINE: 

MV I 

C, CR 

00 AC 

CD0938 


CALL 

CO 

OOAF 

OEOA 


MV I 

C, LF 

00B1 

CD0938 


CALL 

CO 

0084 

CD8100 

NL2: 

CALL 

CRCHK 

00B7 

FEOA 


CPI 

LF 

00B9 

CAB400 


JZ 

NL2 

OOBC 

C31600 

. 

JMP 

MDEC 

0000 


; 

END 



LISTING PRODUCED COURTESY OF COMMUNITY COMPUTER 
CENTER, 1919 Menalto, MENLO PARK. <415) 326-4444 

THEY HAVE COMPUTER GAMES FOR KIDS, BIRTHDAY PARTIES, 
TIME ON A PDP 11 AND PSP 


TIME ON A PDP/11 AND PDP/8, AND WILL REPRODUCE PAPER 
TAPES. 


-CODE 


Page 10 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 June/July, 1976 


158 




















AN EXERCISE FOR NOVICE 
TRANSLATOR IMPLEMENTORS 

An Arithmetic Expression Evaluator, Coded in BASIC 

by Bill Thompson 

Greetings: April, 26, 1976 

I have been studying compilers, interpreters and the like, 
and thought that some of the methods that I have used to 
gain a proper acquiantance with such a complicated subject 
might aid other uninitiated persons. 

As such, having access to an HP9830 (programmable 
calculator—programs in BASIC) I have constructed in BASIC, 
an expression evaluator-sort of an interpreter. Since it is in 
BASIC, instead of assembly, the flow is a bit more obvious. 
Thanks and take care, 

Bill Thompson 614 - 35 St 

Evans CO 80620 

Following is a program and sample run of a simple 
expression evaluator, written in BASIC. The program uses a 
transition table to "crunch" an expression. I have restrained 
myself from numerous embellishments which have occurred to 
me as I worked on the program—had I started on that route 
I would soon have succeeded in writing a BASIC interpreter 
in BASIC! Nevertheless, I do suggest that the beginner who 
wishes to learn enough to write a compiler or an interpreter 
will find it particularly helpful to write this routine in 
assembler code. If you have access to a version of BASIC with 
strings, add some of those embellishments I left out, such as 
program storage, exponential functions, and assigning an 
expression to a variable. All of these will get you into the 
program, and hopefully into your own language. 


a transition table to evaluate an arithmetic expression. There 
are 2 stacks: a transition stack, T, and an execution stack, E 
(arrays "T" and "E"). The program reads the expression once 
from left to right and takes various actions as directed by 
reference to the Transition Table (array "D"). As the expres¬ 
sion is read, if the new symbol is an identifier (name of a 
variable, its value is pushed on stack E. If the new symbol is 
an operator: (4 ( + - * / ) then the program goes to the 
transition table for instructions. It does this by comparing the 
current symbol with the top one on the translator stack (T). 

INSTRUCTIONS: 

1. Push the current operator on translator stack T, and 
continue reading. 

2. Perform an operation, push the current symbol on T, 
continue. 

3. Pop Stack T, continue (deletes parenthesis). 

4. Perform an operation. Pop T, then repeat the table 
look-up with the current symbol and the new top of T. 

5. Error: missing right parenthesis. 

6. Error: missing left parenthesis. 

7. End—evaluation complete. 

Notes: 

A "stack" is a last-in-first-out data vector. 

All operations are performed on the top two members 
of the expression Stack, E. 

All operations performed use the top of the T stack. 

All expressions must be followed by a blank. 

A blank is denoted in the table by . 

Values are assigned by expressions of the form: 

'LET E=5'. 

Reference: Translation of Computer Languages by Wein- 
garten, 1973, Holden-Day, Inc., ISBN 0-8162-9423-2. (Warn¬ 
ing: the reference though good, contains errors in diagrams, 
etc.) 


A TRANSITION TABLE EVALUATOR 
FOR ARITHMETIC EXPRESSIONS (IN BASIC) 

This program illustrated the use of stack techniques and 


Current Symbol 

14 ( + - * / ) 

(blank) 


t 14 


o 

P ( 


7 111116 

5 111113 


o + 

f 

s 

t * 
a 

c / 
k 


4 12 2 114 

4 12 2 1 14 


4 14 4 114 


4 14 4 114 


T 


Transition Table 


10 DU AS[«01,B$[ 1 01,CS t261 ,Cf261 .Traoi ,EraO] ,LX6,71 
20 HEM 

30 HE,VI SET UP THE TRANSITION TABLE 

40 HE ,A 

50 FOR 1=1 TO 6 


60 FOR J= 

1 

TO / 




70 

1EAD D 

I I 

,J1 




80 

NEXT J 






90 

NEXT I 






1 00 

DATA 

7, 




6 

1 1 0 

DATA 

5, 

1,1. 

1 , 1 

t * » 

3 

120 

DATA 

4, 

1 ,2. 

2, 1 

» • * 

4 

1 30 

DATA 

4, 




4 

1 40 

DATA 

4, 

1 .4, 

4, 1 


4 

150 

DATA 

4, 

1 ,4, 

4.1 

» 1 » 

4 

1 60 

FOR I 

= 1 

TO 

26 



170 

C [ I ] = 

0 





180 

NEXT 

I 





190 

FOR I 

= 1 

TO 

80 



200 

rm= 

1 





210 

Eli ] = 

0 





220 

NEXT 

I 





230 

BS=" 

( + 

-*/) 

ll 



240 

CS="ABCDEFGHIJKL7N0P0RSTUVW XYZ 

250 

DISP 

"I 

NPUT 

EXPRE 

SSI ON" S 

2 60 

INPUT 

A 

$ 




2 70 

IF AS 

I 1 

,31# 

"LET" 

THEN 3 00 

280 

GOSUB 

380 




290 

GOTO 

250 




300 

K= 1 






310 

L=POS 

(B 

S .AS 

IK, 

Kl) 


320 

IF L#0 

THEN 

350 


330 

GOSUB 

4 

30 




340 

GOTO 

360 





ll 


lune/July, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 11 


159 












350 GOSUB 530 

360 K=K+I 

370 GOTO 310 

380 M=POS(CS,AS[5,5 3) 

390 M=ROS(A S,) 

400 C[M]=VAL(ASCN + 11) 

410 PRINT "* ;CS [ , M ] *•■ = ••*CCM] * •* *" 

420 RETURN 

430 4= POS (C$,AS IK,K 1) 

440 IF M=0 THEN 500 
450 FOR 1=80 TO 2 STEP -I 
460 El I] = E[ 1-1 I 
470 NEXT I 
480 Ell]=CIM) 

490 RETURN 

500 GOSUB 1320 

510 PRINT 11 INVALID SYMBOL" 

520 GOTO 190 

530 GOTO DITCH,LI OF 540,590,650,710,770,830,890 
540 REM 

550 REM INSTRUCTION I 

560 REM 

570 GOSUB 990 

580 RETURN 

590 REm 

600 REM INSTRUCTION II 

610 REM 

620 GOSUB 1050 
630 GOSUB 990 
640 RETURN 
650 REM 

660 REM INSTRUCTION III 

670 REM 

680 GOSUB 1220 
690 RETURN 
700 REM 

710 REM INSTRUCTION IV 

720 REm 

730 GOSUB 1050 
740 GOSUB 1220 
750 GOSUB 530 
760 RETURN 
770 REM 

780 REM INSTRUCTION V 

790 REM 

800 GOSUB 1320 

810 PRINT "MISSING RIGHT PARENTHESIS" 

820 GOTO 190 
830 REM 

840 REM INSTRUCTION VI 

850 REM 

860 GOSUB I 320 

870 PRINT "MISSING LEFT PARENTHESIS" 

880 GOTO 190 
890 REm 

900 REM INSTRUCTION VII 

910 REM 

920 PRINT ASS" =" 

930 PRINT "* "SEC 1 Jl" *" 

940 PRINT 

950 PRINT "* STOP *" 

960 El 11=0 
970 GOTO 250 
980 END 

990 REM THIS ROUTINE ADDS A SYMBOL TO STACK T 

looo For 1=80 to 2 step -i 

1010 TtI]=TII-l] 

1020 NEXT I 
1030 TIIJ=L 
1040 RETURN 

1050 REM THIS ROUTINE GENERATES AN OPERATION 

1060 GOTO Till OF 1070,1070,1100,I I 30,1160,I 190,1070 

10/0 GOSUB 1320 

1080 PRINT "ERROR IN OPERATION GENERATOR" 

1090 GOTO 190 
1100 Ell]=E[2 I+EII 1 
1110 GOS JB I 2 70 
1120 RETURN 
I 130 Et1J=EI2 3-EII 1 
I 140 GOSUB 1270 


1150 RETURN 
I 160 Et1]=E[21*EI1 1 
11/0 GOSiJB 12 70 
1180 RETURN 
I 190 EtII=EI2 J/E11 1 
1200 GOSUB 1270 
1210 RETURN 

1220 REM THIS ROUTINE POPS STACK T 
1230 FOR 1=1 TO 79 
1240 TCI]=T[1 + 1 ) 

1250 NEXT I 
1260 RETURN 

1270 REM THIS ROUTINE SHIFTS STACK E 

I 280 FOR 1 = 2 TO 79 

1290 El I 1=1:1 1+1 1 

1300 NEXT I 

1310 RETURN 

I 320 PRINT AS 

1330 PRINT TABIK-I)l"~" 

1340 PRINT 
I 350 RETURN 

RUN 

INPUT EXPRESSION?LET A=5 

* A= 5 

INPUT EXPRESSION ?LET Z=6 

* Z= 6 

INPUT EXPRESSION?LET D=4 

* D= 4 

INPUT EXPRESSION?LET X=3.25 

* X= 3.25 

INPUT EXPRESSION?LET P=3.14159 

* P= 3.14159 

INPUT EXPRESSION?A*A 
A*A = 

* 25 * 

* STOP * 

INPUT EXPRESSION?A/Z*P 
A/Z*P 

+ 

INVALID SYMBOL (missing j, that is, missing terminating blank) 

INPUT EXPRESSION?A/Z*P 
A/Z*P = 

* 0.265258463 * 

* STOP * 

INPUT EXPRESSION?(A*Z)+D*X 
(A*Z)+D*X = 

*43 * 

* STOP * 

INPUT EXPRESSION?((A-Z)/(X*Z)+P 
((A-Z)/(X*Z)+P 

+ 

MISSING RIGHT PARENTHESIS 
INPUT EXPRESSION?((A-Z)/(X*Z)+P) 

((A-Z)/(X*Z)+P) 

* 3.090307949 * 

* STOP * 


Page 12 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 June/July, 1976 


160 


A Classy 8080 Text Editor 


by F. J. Greeb 

1915 S. Cape Way, Denver CO 80227 

(303) 986-6651 

May 6, 1976 [received at PCC June 21st] 

Hello People, May 12, 1976 

Enclosed is a description and source listing of my test editor 
program, along with some comments on conversion of the program to 
other 8080 systems. This material is being submitted approximately 
simultaneously to both the Denver Amateur Computer Society News¬ 
letter, and to Dr. Dobb's Journal for publication as either (or both) 
organization sees fit. As far as / know, all the bugs have been re¬ 
moved from the program. / have been using an earlier version, which is 
essentially the same except for the variable storage locations and tele¬ 
type routines, for several months. 

/ am also including a current description of my system, which 
will probably be out of date by the time you receive this, since I 
keep changing it, and some other genera! comments. 

Keep up the good work. 

Fred J. Greeb 

GENERAL COMMENTS 5-12-76 

TEXT EDITOR SOURCE LISTING-The listing is not 
generated directly by the 8080 assembler. It is the result of 
playing the source tape generated by the assembler into a 
system which has a high speed printer. The playback timing is 
not perfect and some errors do occur. All known errors have 
been corrected, but consider this factor as a potential source 
of errors when implementing the program on another system. 

TEXT EDITOR PROGRAM—The program has not been 
optimized for either memory utilization or speed. The original 
design goal was to use less than 4K, for compatability with 
the assembler. The first version used about 2K, and therefore 
no size reduction was attempted. 

Most commands execute with no noticeable delay. A 


Discs and controllers. A 16-bit system. High speed printer and 
controller. And on and on and on . . . 

PLANNED APPLICATIONS—Indefinite. I designed and 
built the system to learn more about the hardware. That pur¬ 
pose was accomplished: I did learn a lot. As for what I do 
with it, only time will tell. 


THE EDITOR 

The text editor program is a strong/line oriented pro¬ 
gram written in 8080 assembly language. The program is de¬ 
signed for use in the development of source programs to be 
processed by an assembler or compiler, or for general purpose 
ASCII file generation. 29 separate commands are recognized by 
the program 

The editor does not require line numbers to be present 
in the ASCII file. It has the capability to search for and lo¬ 
cate any string of valid ASCII characters in the file, irrespec¬ 
tive of their location within a line. Lines can be added, de¬ 
leted, replaced, modified, or printed with simple input com¬ 
mands. Once initialized, the program contains self protection 
features so that it cannot overwrite itself. 

HARDWARE REQUIREMENTS-The program occupies.' 
approximately 2.5K words of memory, plus memory space for 
the file being edited. An additional 128 words of memory are 
used for the 8080 stack. Peripherals supported are a TV-Type- 
writer, Baudot teletype (output only), and a cassette tape. 
Several of the driver routines for the peripherals are contained 
in the system monitor ROM, and must be supplied externally 
for conversion to other 8080 systems. 

COMMAND FORMAT AND DESCRIPTION-AII com¬ 
mands to the editor are input as ASCII data terminated by a 
carriage return. The only non-printing ASCII characters recog¬ 
nized by the program are carriage return (C/R, octal 15), end 
of file (EOF, octal 1), and Tab (Control T, octal 24). The 
program outputs a greater-than symbol, >, as a prompt indi¬ 
cating that it is waiting for a command to be input. 

The commands recognized may be classified into three 
general categories: Initialization, Edit, and Utility. All com¬ 
mands must be followed by a space and/or terminated by a 
C/R. Additional parameters associated with a command (nu¬ 
merical or string data) must be separated from the command by 
one or more spaces. 

Initialization Commands—The initialization commands 
set the file start address and define the end of file. All ini¬ 
tialization commands request the file starting address, which 
must be input from the keyboard. 

The initialization commands and their results are: 

NEWF Defines a new file location starting at the input ad¬ 
dress, and enters the input mode. 

EDIT Edit an existing file at the input address. Outputs the 
first line or page of the file, as specified by the out¬ 
put mode. 

LOAD Loads a file from tape, beginning at the starting ad¬ 
dress. Loading begins wieh a C/R is input following 
the address input to allow time for manual tape setup. 

Edit Commands—The edit commands are used to display 
and/or edit lines within the file. All edit commands operate 
on, or with respect to, the current line. In most cases, the 
current line is defined as the last line displayed on the TVT 
screen. The program utilizes a line pointer which always con¬ 
tains the starting address of the current line. This address 
changes as different lines within the file are accessed. 

In the following descriptions, a string is defined as any 
sequence, of any length, of valid ASCII characters. Parameters 


long string search or deletion of many lines will cause a few 
seconds' pause. __ 

DESIRABLE HIGH LEVEL LANGUAGE FEATURES 
(personal preference)—Efficient utilization of memory, possibly 
by converting source code to opcode (binary) equivalents, 
rather than storing source code directly. This conversion 
could be accomplished at load time, or by a separate pro¬ 
gram (a compiler?). 

User definable I/O handling, including multiple I/O ports. 
Considering the price of PROM's, I suspect most I/O routines 
will end up in PROM sooner or later, with everyone using 
different techniques and addresses. 

External subroutine call capability, including variable 
transfer capability. 

User definable integer and floating point variable 
capability. 

Several others I can't think of off the top of my head, 
and will undoubtedly remember after I mail this. 

SUPPLIERS—Excellent: James Electronics, Bill Godbout 
(2 week service on custom-programmed PROM's). Major sup¬ 
plier gripe: refund credit slips rather than cash refund on out- 
of-stock items. These have a habit of getting lost when re¬ 
turned for a cash refund. I don't know how the two men¬ 
tioned suppliers handle this problem. Out of numerous orders 
for a variety of merchandise, they have never been out-of¬ 
stock on any item. Poor suppliers: why bother to mention 
them—most have already received an abundance of criticism. 

WANT LIST—High level language. Floating point arith¬ 
metic and I/O routines. Floating point arithmetic hardware 
and/or schematics. Scope driver software using D/A converters. 
Games. Cheap paper tape reader. 

DREAM LIST—Cassette tape controllers, hardware and 
software. High speed CRT terminal, 72 column line minimum. 


June/July, 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


Page 13 









contained within parentheses are optional parameters which 
may be included in the command line. Only the parameters, 
and not the parentheses, are included if the optional 
parameters are used. 


A String Append the string to the end of the current 

line and display the result. 

BOTM Set the current line pointer to the end of 

file. 

C %string1%string2 Find the first occurence of stringl in the 
current line and change it to string2. The 
two string lengths need not be equal, and 
the second string can be null (i.c., a C/R 
following the second delimiter). The de¬ 
limiters (%) may be any printing ASCII 
character. 

D (M) Delete the current line (or M lines begin¬ 

ning with the current line) from the file. 
The file is moved in memory so that no 
empty space exists in the file. M is input 
as a decimal number, maximum value 
= 255. 


F string 


I string 


INSM M 


LIST 
L string 


N (M) 


Find and display the first line in the file 
which begins with the string. The search 
begins with the line following the current 
line and continues until a match is found 
or the EOF is reached. The found line 
becomes the current line. 

Insert the string as a new line following 
the current line. The file is moved up in 
memory to make space for the new line. 

If no string is included, or if only a C/R 
is input as a command, the editor enters 
the continuous input mode. In this mode, 
multiple lines may be entered in the file 
by typing in each line followed by a C/R. 
Exit from the continuous input mode is 
accomplished by inputting a null line (C/R 
only). When the continuous input mode is 
entered, the message INPUT will be dis¬ 
played. Upon exiting this mode, the mes¬ 
sage EDIT will be displayed. No prompt is 
issued between multiple input lines, which 
indicates that the editor is in the input 
mode. 

Insert M lines from memory following the 
current line (M = 1 to 255). The file is 
moved in memory to accomodate the new 
lines. The location (starting address) of the 
new lines will be requested and must be 
input from the keyboard. This command 
is designed for merging together of two 
files, but may also be used to move lines 
within the same file if the destination is at 
a higher memory address than the source. 

If this is not the case, only one line at a 
time may be moved correctly within the 
file. 

List the entire file on the output device 
(TVT or TTY). 

Locate and display the first line in the file 
which contains the string anywhere within 
the line. The search begins with the line 
following the current line and continues 
until a match is found or the EOF is 
reached. The located line becomes the cur¬ 
rent line. 

Move the current line pointer to the next 


line in the file (or move M lines) and dis¬ 
play the new current line. M may be pos¬ 
itive or negative (max. range = ± 255). 

P (M) Print the current line (or M lines). The 

last line printed becomes the new current 
lines. 

PAGE List one page (15 lines), beginning with 

the current line. The current line is un¬ 
changed. 

R string Replace the current line with the input 

string and display the result. 

T Set the current line pointer to the top of 

the file and display the first line or page 
of the file. 


Utility Commands—The utility commands allow display¬ 
ing of the various pointers used by the program; specifying 
parameters to the program; and outputting files to tape. All 
addresses output by these commands are displayed in split 
octal, low order address first, followed by the high order ad¬ 
dress. The utility commands interface with the TVT only, and 
do not putput to the TTY. 

The utility commands recognized, and the functions they 
perform, are: 


CLRS 

DISP 


DEOF 

DISM 

SETM 


MODE L 
P 


OUTM S 

T(C) 


RUBO X 


KILL X 


Q 

TAPE 


Clear TVT screen 

Displays current line pointer. This command is 
useful for the INSM command to determine the 
starting address of the lines to be inserted. 
Display end of file address. 

Display current setting of maximum memory 
size. 

Set maximum meory address. This value is pre¬ 
set to 7.5K for use in an 8K system, leaving 
,5K free for later additions to a large file. This 
command requests an address input. 

Sets the output to the line (L) or page (P) 
mode. In the line mode, only the current line is 
displayed following a command. In the page 
moade, 15 lines are displayed. The first line 
displayed is the current line. 

Sets the output device to the TVT (S) or tele¬ 
type (T). The T parameter initializes the TTY 
only (set to Baudot letters mode), and the TC 
parameter also outputs a carriage return/line 
feed. 

Sets the rubout character to X. X (initialized 
to ") may be any printing ASCII character. The 
rubout character erases the previous input char¬ 
acter in a command line. Multiple rubouts may 
be used to erase (back up) multiple characters. 
Sets the kill character to X. X (initialized to ?) 
may be any printing ASCII character. The kill 
character deletes the entire input line. If the 
kill and rubout are set to the same character, 
the kill function will take precedence. 

Quit. Exit to monitor. 

Transmitts the entire file to cassette tape. Two 
subcommands are associated with this command 
and require responses to queries displayed on 
the TVT. The first TVT output is "REMOVE 
TABS?". An input of Y (yes) will cause tabs to 
be converted to spaces prior to transmission to 
the tape recorder. If N (no) is input, the file 
will be taped unmodified. The next output mes¬ 
sage is "FULL OR PARTIAL FILE?". If an F 
(full) is input, the file is terminated by a double 
end of file on the tape. If P (partial) is input, 
the file is terminated by a single end of file 


Page 14 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 June/July, 1976 


162 


followed by an end of record (octal 3). These 
two tape end formats are not used directly by 
the editor program but are for use in an asso¬ 
ciated assembler, where they signal the assembler 
either that more data is required or that the 
end of the source code has been reached. 
Transmission of data to tape begins when the 
C/R following the F or P response is input. 

ERROR MESSAGES—The program will output the error 
message "WHAT?" in response to unrecognizable or improper¬ 
ly formatted commands. In addition to this general error mes¬ 
sage, several other error messages may be displayed. 

On all commands which require an address input, the 
address is tested against the minimum useable file address. If 
the input address is less than the minimum, the error message 
"MIN ADDR (LH) = XXX YYY" will be displayed. This pre¬ 
vents overwriting of the editor program by the file being 
edited. 

If a command is entered which increases the size of the 
file, the new end of file location is tested against the set maxi¬ 
mum memory value. If the maximum would be exceeded by 
the command, the message "MEM OVERFLOW" is displayed 
and execution of the command is inhibited. During the LOAD 
command, the maximum is not tested until after the load from 
tape is complete, and can overwrite data stored above the 
meximum limit. 

During execution of the INSM command, the data to be 
inserted is verified to be valid ASCII data. (Note: ASCII data, 
as defined in this program, is the 64 character upper case 
subset) If a non-ASCII character, other than a control char¬ 
acter recognized by the program, is encountered, the message 
"BAD DATA XXX YYY" is displayed, where XXX YYY is 
the address of the invalid data. Execution of the INSM com¬ 
mand is terminated if this error is displayed. 

If execution of a command, such as Print M, causes the 
end of file to become the current line, the message "BOT¬ 
TOM" will be displayed. This message will also be displayed 
if a Find or Locate command fails to match the input string, 
indicating that the sting is not present in the portion of the 
file searched. 

CONVERSION TO OTHER SYSTEMS-Conversion to 
other 8080 systems should not be exceedingly difficult. Sev¬ 
eral hardware dependent I/O routines, which are contained in 
ROM, are called by the program. These routines will have to be 
supplied by the user. The routines called, the functions they 
perform, and the registers which may be modified by these 
routines are: 

CRLF A register Output a carriage return/line feed 

to the TVT 

CLRS A register Clear TVT screen 

TAPI A, B, D, E registersSingle character input from tape. 

Data returned in A and D regis- 

■yyvyyyrryrrTTrrrrrrrrrrryryii 


NEW CLUB: TRACE, IN ONTARIO 

There are about 50 members currently in TRACE (Tor¬ 
onto Region Association of Computer Enthusiasts). It covers 
the greater Toronto-Hamilton-Kitchener areas of Ontario, and 
usually holds meetings on the first or second Friday of each 
month. Address: TRACE, Box 545, Streetsville, Ontario, 

L5M 2C1 Canada. 


ters 

Single character output to tape. 
Data in A register output and 
returned unmodified 
Time delay (approximately 5 sec¬ 
onds) for tape output routine. 
Enter at TMDL+6 for 0.05xC- 
Register value delay 
Address input from keyboard to 
HL registers. Carry set for normal 
return. Carry clear if input error 
occurred. 

System monitor 

ASCII/BAUDOT conversion tables. 
Numerical values of Baudot sym¬ 
bols listed in ASCII sequence. Bit 
8 set for ASCII symbols which 
have no Baudot equivalence, with 
5 LSB's containing the relative 
address of the double character 
equivalence in table BEQV. 

in addition to these routines and tables, a memory area 
for the 8080 stack is required. The program uses a 128 word 
memory dedicated to this purpose. The stack depth require¬ 
ment has not been determined, but 20 or 30 words should be 
sufficient. The two TVT I/O routines (TVTI and TVTO) may 
also have to be modified. These routines use hardware control 
of the 8080 ready line, rather than flag testing or software 
timing. 

The most convenient location for these additional mem¬ 
ory requirements is at the end of the present editor program. 
Only the value of MMIN (Minimum useable file address) 
would have to be changed, and this value is referenced only 
in the address input routine (HLIN). 

SYSTEM DESCRIPTION-HARDWARE May 12, 1976 

Custom design and construction. Based on 8080 microprocessor. 
1.25 MHz clock. Full front panel control and display. 

Memory 

8K RAM, Address 000 000 to 040 000 
128 word RAM, Address 347 000 to 247 2000 (normally 
used as stack) 

512 word PROM, Address 340 000 to 342 000 
Peripherals 

TV Typewriter (Radio Electronics TVT-1). Multiplexed half 
duplex type parallel data interface with hardware control of 
the 8080 ready line. No "echo" required. 

Cassette tape mass data storage. Suding type interface with 
software timing (inPROM) at approximately 660 baud. 

Two channel D/A converter. 

Baudot teletype with UART interface. Primarily used for 
hard copy output. 

SYSTEM DESCRIPTION-SOFTWARE 

Monitor (PROM)—Includes load from tape, dump to tape, key¬ 
board input to memory, display memory contents, execute a 
program, and ASCII/BAUDOT conversion tables. 

Assembler—Modified Processor Technology version. Modifications 
include four character (max.) symbols, octal output, multiple 
block data input from tape, unlimited ASCII string (data) 
length, object code output to tape (optional), and source 
listing to tape (optional). 

Text Editor—General purpose ASCII data handling for source 

code generation and modification. Line/string oriented; no line 
numbers required. 

Denver Tiny BASIC—Features integer arithmetic, 120 variables, 
single dimensioned variables, remarks, and a random number 
generator. 

Other programs—File list; memory check; octal editor; LIFE 
(from PCC, Vol. 4, No. 2—September, 1975); hex memory 
dump to TTY; etc. 


TAPO B, C registers 
TMDL A, B, C registers 

HL All except D, E 

MONT - 

LTRS, FIGS, BEQV 


June/July, 1976 Dr. Dobb’s Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 15 


163 




0 


IX 





>T 










IX 











LL 









X 










01 















UJ 





• • 





















IX 




LL 










if 





1/1 











i_l 




<x 





1 - 





i, ‘i 





III 




ill 






J 



LiJ 


3 

iX 




«n 




iii 






i- 



iY. 

in 

ill 





•X 

Ll 


LJ 

LX 


UJ 




X 




m 

•X 









X 

III 





'r —1 



1 1 

Lj 

■ i 

3 



111 

_| 

UJ 



2 


111 




J— 


n 


in 

2 


ill 

.J 


3 

3 


2 

10 

3 

2 


2 

iT 


2 



i"i 

lY 

111 

in i.n 


fi 

in 

'X 

i 

i.n 

f> 

1/1 

III 

.. 1 

.1 

LX 

i _i 



'X 


_i 


£ 

'X 

2 

t—i 

LU 


LL 

'X 

2 

UJ UJ 

0 

2 

III 

_i 

i 

UJ 

LL 

1.11 

2 

_• 

'1 

•X 

2 


LL 


Jr- 

t_i 


i i 

i>i 

n 

h- 

'X 


1*1 

. 1 , 

i i 


i- 

/ 


LL 

u_ 

i 

3 

■■I 

UJ ' ' 

Ll 

Ll 

LL 




3 

>x 

u 

v 




i 

r— 


III 

' ' 

u. 




U 



u 


ill 

ix Cl 




Ll 


LX 

u\ 

_J 


1 1 

Lxl 

iii 

f- 

fi 


111 

LX 


i.n 

lx 

u. 

u_ 

i—i 

'I 

rn 


. 1 

LX 

O 

in 

Ll 

U. 

Ll 

i—i 

'X 0 

•X 

UJ 

LU 

■x 

h- 

2 

UJ 

LL 

i- 

in 


01 

in 

l—l 

l—l 

l—l 



•X 

1 - 

■X 



in 

•>— i 

i—i 

i—i 




3 

L_j 

■x 

h- 

i 


Ul 


i 

•r 

h- 

3 

LX 




IX 

IX 

i- 

3 

i—i 

3 

'X 

IX 




lY 

LX 

Ll 

01 


3 

i/i 

i i 

h- 



LL 

in 

3 



I- 

U. 

1 — 

O 

'X 


LL 

h- 

~l 



3 

il. 

3 

i, i 

' 1 , 



UJ 



111 

h-i 

UJ 

2 

1 - 

in 

LL 

h— 

1 — 

l.u 


in 

lY ill 

h- 

1 - 

LX 

II 


3 

in 

2 

01 

IX 

UJ 

3 

3 

2 

3 

Q 


ill 

ni 

•X 

l 

m 

2 

III 

111 

lU 

i 

UJ 

lx _l 

m 

3 

•T 

2 

III 

m 

UJ 

i 

Ul 

IX 

1 

III 

ill 

i—i 

LlI 

1- 

UJ 

LxJ 

2 

£ 

0 

EI 


m 

0 

f- 

3 

5 - 

Ul 


in 

0 i 

LL 

i—i 

01 

01 

3 

3 

3 

Ul 


01 

01 

3 

01 

















LX 



ll 













H 


i_) 

in 











Ul 



3 













H-I 



2 

IX 

2 






h- 


3 

it. 

IX 

2 

LU 

2 


(• i 


3 


ll. 

_l 

_J 




iJ 

X 

h- 

IX 

1 - 

i—i 


2 


'•il 


•X 


2 

UJ 

1 - 

i-i 

HH 



i_J 


■X 


2 

LL 

L_j 

3 



111 

Li 

E) 

h* 

71 

h- 



h 

+ 

2 

X 


UJ 


1 

3 


'X 

U. 

3 

LL 

j: 


Ul 

l_! 

2 





i.i,i 

LL 


i i 


X 

•X 


*Y 


3 

•I 

1- 

X 

0 

ill 

X 



01 


3 

'X 

3 

3 

3 

Lj 





h- 

X 

























T 

1 



3 


1 

1 










1 

1 









|- i 

J 


i • i 

r 



fi 

i—i 

1 

! 



t-H 


i—i 

N 

'X 

IX 

l—l 

1 

l 

l-l 


i—i 


i—i 

M 

■X 

•X 

1 

-1 

i—i 

3 

i_i 

3 

Ul 



x 


1. /I 

0 

LL N 

LL 

2 

IX 

1 — 

*>f 

«x 

'X 


0 

fl. 

w 

LL 

2 

LX 3 

X 

•X 


LL 

u_ 

i_ j 

'-j 

Ul 

u_ 

'I 

li 



L-l 




i_i 

3 

X 

i.n 

_l 

u 

u 


2 


3 

U 

3 


i/l 

-» 


3 



in 


LX 



























2 


U- 

o 





















0 i 






Li 



LL 





















3 






Lli 


+ + 

+• h- 





















01 





0 













lli 



3 


UJ 



3 






















3 

in 

lY 



2 

3 

2 



2 






















1 





j 


j 







U 











3 








■*j 

UJ 



0i 

J 

i-i 



i_i 















—i 







lli 

■ i 




i i 

fi 




u 





3 

3 



UJ 






LL 

in 

*i- 




Ul 

3 

r j 

0 




i_i 

01 








2 









3 

m 

'X 




3 

'X 

n 

3 



2 


ill 



2 




3 


LL 



_i 



>x 



3 

Ul 

3 


in 


2 

ill 





»*' 

UJ 

i j 



2 






3 


01 


O 



m 

0 

it'. 

01 


>x 


i 

LL 

2 

01 



Ci 

i i 

i.L 


Ul 

_i 




2 




Ll 




rn 





3 


fi 

III 

i n 

III 



1 

Cl 

Cl 

LX 

11. 

.J 






i_i 


o 


3 



rn 

X 



Ul 




r j 


_1 

i' j 




LL 

01 

X 

•X 

fi 




U 

2 



‘X 

_J 

cn 


3 

■X 

_J 


>x 

ul 

ILl 

3 




ll. 

»r 



r l 

01 


X 

3 


Ll 

u 

LX 

•r—• 

!- 

U 

■X 

-J 

_J 



-J 

Ll 

Ll 


'X 

0 

fi 


2 

Ul 

IX 

LL 





_J 

o 



i i 

l_l 



_i 


_l 

u 

i 

3 


LL 

u 



3 

3 3 

2 


2 


III 

01 



3 

3 

i—i 


rn 

3 

UJ 

LU 


LX 

-1 

Ul 

U. 


u 




01 

X 

2 





—i 

3 






2 

3 

3 

3 

2 




'X 

o 



Q 


2 


u 

m 

f0 

3 

III 

Ll Ll 

U. 

01 

.1 


fi 

ll 


LU 

III 

i;J 

2 

X 


iii 

U 

u 

Ll 

X 

l_J 

LX 

LL 

UJ 

u 

Ul 



■X 

fi 

'T 

2 

t-4 

IH 

i—i 

UJ 


•T 


fl 


LL 

2 

2 

0i 

UJ 

3 

2 

i-i 

l—l 

h-i 

i_l 




01 

l—l 



LX 

3 

CO 


III 




i i 

i j 

LX 

_l 


111 

'X 

iii 

Iii 


2 

_i 

LU 





3 

u 

Ll 



UJ 






IX 

LI. 

3 


■X 


3 

i-i 


i 1 

3 

iY 

IX 

LL 


u 

u: 

3 

LL 

3 

3 

LU 




LL 

U 



3 

3 

3 

i i 

2 

in 



3 

111 

3 

1 

<r: 


r j 


i i 


3 

i i 

01 

2 

01 


Ol 

3 

1— 

3 

2 


LX 

u 

hi 

UJ UJ 

2 

-1 

UJ 

~i 


hi 

3 



LL 

fi 

2 


fi 

111 

0i 

2 

Ul 

_i 

LU 

LU 

lu 

LU 

LU 

LU 

_! 

2 


l—l 

0 

01 

'ID 

i—i 

3- 

3 

3 

TO 

0 

01 

3 


01 

3 

*“* 


_1 

01 



3 

3 

3 

2 

LX 

Ol 

01 

Ol 

3 


UJ 

UJ 
























Cxi 















i.n 










LL 

0 



Z 


LL 

LL 


LL 


i j 






2 


i i 

LU 

i “i 

LU 

O 


Ll 

•X 


U. 



CO 

3 

LL 



i_i 


3 

3 

3 

2 


_J 



LU 

iLl 




lli 

'1' 

LU 

•X 



1 



■X 



1 


X 



Li 

f j 


.X. 


LU 


LL 



'X 

3 

'X 

'X 

X 

3 

3 

3 

3 

•X 

U' 

3 

Ul 

>x 

3 

Ci 

UJ 

3 

-- 

3 

3 

3 

3 

3 

-Z 


LU 

3 

>x 

3 

Ul LU 








3 






_J 





-J 














>T 

•T 




i—i 

N 

LX 


1-4 

i i 


i—i 

1 

lY 

IX 

M 

LL 

...1 

IX 

i-i 


1-4 

N 

u. 

i-i 

<X 

•X N 

LX 

LX 




“j 

2 

N 

ll 

2 

Ul 

fi 

1 

2 

fi 


x 

2 

2 

2 

2 

■1 

2 

LL 

N 

IL 

2 

2 


Lj 

LX 

2 

2 



_l 


2 


3 

o 

3 

J; 

x: 

01 

3 

X 

2 

i j 



3 

3 




3 


3 

3> 


-J 

o 

3 




Cl 







n 











•0 







2 






i' j 

3 







i_i 











i_i 













_J 



















ill 













U_ 

2 







+ + 











3 







3 






3 


CM 


r4 

rH 

rH 

C'.J 

3 



0' 


CiJ 

rH 

0 C-.J 

3 

rH 



0 


CM 

rH 

rH 

rH 


rH 

3 


3 



3 



3 



3 

0i 3 


3 


0' 

ri 


3 

3 



rH 


01 

0| 



01 



rH 

H 0 

0 

rH 





01 

rH 

rH 

3 


3 

01 


0| 



0‘ 



3 



01 

0i 3 


0i 


0 

0' 


3 

0‘ 



rH 

Q 

0 

0' 



0' 


0' 

0 

0 0 

0 




0 


0 

0 

0 

rl 


0 

0 


0 



0 



rl 



0 

0 I’-1 


0 


0 

0 


0 

0 



*t 

in 

ij 

Ll 


rH 

C-.J 


0' 

Ll 

rH CM 

Ll 

CM 



«!— 1 

0 

0 

r-- 

r-- 

p._ 

3 

Ll 

CM 

3 

CM 


'■£' 

N 


0 

3 



r-- 

|0| 3 

3 

i'-'l 

Ll 

01 

'-£' 

3 

r-- 

•n 



01 

r._ 


3 


i-1 

C-.J 

■H 

cy 

Tf 

rH 01 

3 

r- 



Li 

(M 

CM 

'.£• 

L1 

01 

0 

rj- 

I'-l 

CM 

rl 


0i 

01 


rj- 

Ll 



3 

r - li 

01 

Ll 

3 

r-- 

'■£' 

0i 

'•£» 

O 



rH 

0 

rH 

0' 


H 

l v l 

rH 

0 

0 

0 rH 

0 

01 


rH 

rl 

rH 

0 

01 

0 

CM 

01 

0 

0 

0 

0 


0 

0 


0 

3 



0 

M 3 

0 

0 

0 

i v i 

rl 

0 

0 

0 



in rH lil 01 

rH 

lil 

Ll l v l 



C-.J 

'•£' 

CM f- 

C-.J 

rH Ll 

Ll 

rH 

'•£' 

'•£' 

CM 

'•D 

CM 

r -- cm 

CM 

Ll 

<•£' 

C-.J 

t- '•£' rl CM 

'•£• 

CM 

CM 

'•£' 

CM 

r-- 

'•£' 

Ll 

3 

3 

CM 

r i Ll 3 

'•£' 

CM 

'•£' 

CM 

rl 

'•£' 

CM 

r -- cm 

3 3 

0 

'/•J L0' S' rH 

rf- 

rH 

H Ll 

N 

r- 

rH 

r- 

0 Ll 

'Ll 

3 rH 

rH 

3 

r- 

r- 

rH 

r--- 

01 

Ll '-£' 

Ll 

rH 

c-.j 

N 

'•£' r - 3 3 

r-- 

0 

r-- 

c-.j 

CM 

rl 


3 

CM 

rl 

01 

0 3 CM 

r-- 

3 

r-- 

0 

01 

01 

r- 

'•£' 0 

01 0 

N 

rl | -1 rH C-.J 

01 

l-l 

l v l 0i 

rH 

i v i 

rl 

M 

rl C-.J 


0 rl 

r-i 

0 

•H 

rl 

rl 

rl 

| V | 

CM 0 

0 

rl 

0 

01 

CM 3 0 rl 

rl 

l'-1 

3 

l v l 

l v l 

3 

01 

l v l 

0 

0 

f-n 

rl r i 0 

f-i 

l v l 

rl 

! V 1 

rl 

01 

0 

CM M 

0 0 

3 


Ll 

»£' 

r-- 

rl 

3 

rl- 

3 

3 

N 

CM 

Ll 

'•£' 

r-- 

3 

3 

'•£' 3 

CM 

Ll 

0 

I'-'l 

•£' 

3 

CM 

3 

r- 

3 

3 Ll 

0i 

r-'i 

'•£' 

0 

M 

rj- 

Ll 

’-£' 

3 

I'-'l 

'■£' 

'•£' 

'•£' 

'•£' 

r-- 

3 

rf 

Ll 

r-- 

CM 

l-l 

3 

r- 

CM 

Ll 

'•£' 

0 

I'-l 

Ll 

01 

I'-'l 

Ll 

0 

3 

3 Ll 

'■£' 

'•£' 

'-£• 

'•£' 

r-- 

r-- 

r : - 

N 

r-- 

r-- 

0 

01 

01 

0 

3 

3 

3 CM 

CM 

CM rl 

M 

•1 

r+- 

3 

3 

Tj- 

Ll 

Ll Ll 

'•£i 

'£> 

'-£' 

r-- 

r-- 

r- 

r-- 

r-- 

0 

01 

01 

01 

01 

01 

0 

3 

3 

3 

3 

CM 

CM 

CM 

CM 

l-l 

rl 

i'-'l 

3 

3 

3 

Ll 

Ll 

Ll 

'•£' 

'•£< 

'•£■ '•£' 

'•£' 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

l v l 

rl 

l v l 

I'-l 

rl 

rl 

rl i-1 

l-l 

rl 

l V l 

ri 

•'I 

rl 

rl 

n 

rl 

I'-'l 

r l i -l 

l-l 

i'-'l 

l v l 

i-i 

f-i 

i-1 

M 

i-'i 

01 

0 

0 

01 

01 

01 

0 

0 

0 

01 

0 

0 

0 

0 

0 

0 

01 

0 

0 

0 

0 

01 

0 

0 

0 

0 

0 0 

0 

0 

0 

0 

0, 

0 

0 

0 

0 

0 

0 

0, 

0 

f. 

fi 

0 

0 0 

0 

0 

0, 

0 


0 

0 

0 

0 

0i 

0, Q 

0, 

0 

0 

0 

©I 

0 

0 

0 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 3 

3 

0 

01 

0 

01 

0 

0 

01 

0 

0 

01 

01 

01 

0 

© 

0 

0 © 

01 

0' 

01 

0 


0 

0 

01 

0 

01 

0i Q 

0i 

01 

0 

01 

0 

0! 

0 

01 

0 

01 

01 

01 

01 

0 

01 

01 

01 

0 

01 

0 

01 

0 

0 

01 

0 

0i 

0 

01 

0' 

0 

0 

0 

0 

O 

0 0 

0' 

0 

0 

0 

0 

0 

0 

0 

0 

01 

0 

0' 

01 

0 

0 

0 

0 0 

0 

0 

0 

0 

0 

0 

01 

0 

0 

0' 

0 0 

0 

01 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

01 

0i 

0 

0 

0 

01 

01 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 0 

0 



Lli 



















i.n 



















«X 








l£ 

Ul 










_ i 





V 



UJ 

t_i 







01 



iM 





i i 



h- 

1 1 







si. 



2 





GE 



01 







l-l 

2 



«X 





1- 



H-1 


•[ 


2 


IX 

2 

‘X 

LL 


_l 





01 



rn 

iii 

,- 


Ul 

1- 

3 

*1. 

_J 




'•£' 


01 





S- UJ 

2 



UJ 

H-I 

i__i 

2 

UJ 

i—i 


i- 

i- 

h- 

Ul 


H 


LX 

i LL LX 

h-i 

h- 


LX 

L_j 

LL 

>_ 




1 

iT'i 

i 

2 


III 

1 

UJ 

1 1 LU 

_J 

ill 


1 l 

UJ 

LL 

i i 

U. 

il 


m 


LX 

i~i 

I/I 

01 

_J 

h- 

LU 1- 'X 


01 


01 


Ul 

i_i 

li 



2 


1— 

h~ 

2 


i—i 

i i 

~l ( j 

o 


. H 


h- 

0 h- 


i_i 

r~i 


UJ 


i 

i 

i i 


Y 

ij 




LL" 

LX 

1 

'X ' 

Y— 


2 

2 

m 

'-£' 

fl 

iji 

i-i 



LX 

LX >X 



i~i 

<r. 

LL 

Ol LL 

_i 

2 

>X 

<1 

Ol 



LX 

h- 


1- 

■X 

h- >X Ul 



J- 

UJ 

t- 

01 L— 

ll. 

'X 


LX 

>x 


y- 


i—i 


Ul I 

UJ I _l 

lU 


UJ 

i 

. 1 

UJ _i 

2 

i—i 

2 

rn 


-J 

h- 

IX 

O 


01 

• i 

I/I .- j I j 

01 


i- 

i i 

*_J 

2 1 

H-I 

Ol 

O 

i i 

0' 

i—i 

1- 

i l 

nr 

V, 





T 







O 

IX 

. 1 1 

lY 


h- 

LJ 

•X 





Lx 



in 





U_ 

l;,l 

U. 

H 

h-i 

i_i 

h- 





il 



TT 




Ll 


III 

'X 

fi 

2 


in 

1 ••• 

. 1 

r fi 

III 



in 

i- j 

LL > • 

2 

UJ 

H-I 

LX 




i n 


. 


—i 

••• LU 

l'l 


>1 

LX 

UJ 

H -- 1— 

H-I 

z 


i l 

2 


i 


'X 

LL 


H-1 

, ~~i 

o 


2 

-J 


i 

r- 

i_l 

UJ 

i- 

i—i 

3 



l-l 

01 

'X 

Y 

>X LL >X 


X 

,- 

l l 

± 

f i E 

LJ 

Ol 

til 

t—f 



LU 

3 

h- 













l—l 

Lj 

2 

2 


i_i 

h-i 







Lj 

-J 


_l _J 

_J 

_J 


Ul 

LU 

i i 

lY 

LX 

2 

l—l 

H-I 

'X 

H-, E E 

•X 

H-I 

1 

J 

y-i 

J i-i J 

1 

.J 



H 

>—i 

f 1 


i—i 


~z- 

i— 

> H LL 

h- 


:r 

»T 


>X > 'X 

■X 

'.L 

1- 

h- 

1- 

01 


01 


J 

2 

01 

ZI 01 X 

01 

-J 

0l 

■ 1 

li 

i—i EI CJ 


i_i 

3 


i—i 

LX 

h- 

ill 

H 













LL 

LU 

IX 

ill 


01 

Ul 









2 

h- 



2 

}— 

2 


h- 


01 










LL 



|-| 















i —j 





■t 

-+- 













*-* 






Li. 










UJ 














2 







ill 


iY 

LU 

ill 


ill 

m 

2 



111 











'X 






01 




h-i 

2 


2 


i—i 



2 

in 




C_i 










LL 



fi 




i — i 

l'l 

;— i 

3 

t- 



i — i 

i 




J- 



LX 


LX' 

LU 



LL 

i-J 


3 

— 


X 

2 

h- 


1- 

3 




i- 

3 


X 


2 


0 

*X 


LU 



01 

LU 

3 


LL 




H-I 

i 


i 

! 1 

fi 



i 



1 1 


i—i 


3 

X 


3 

LL 



3 

'X 


i—J 

h- 


ill 


fi 

•X 

fi 


IY 

X 


i i 

i l 


3 





l—l 


Z LX 

l—l 



*_ 



i-i 


rn 

i 

iT 

LL 


LL 



l' 1 

m 

LX 


UJ 

■T 

I/I 

2 


_J 



l-l E 


3 

'X 

H-I 

X 


'X 


ii! 




3 



X 

i- 

Lj 


LX 

1 

3 

l.'l 

H-I 


X 

u 


I 

LL 



I—' 

‘—1 

i_l 



LL 

*x 


T 

fi 

T 

'T 

f j 

'X 

2 

T. 

E 

UJ 


LU 




l—l 

|_j 

LL '_' 


2 

LU 

LL 

3 

•jj 


H-I 


J— 

•X 

i i 

i i 

r j 

J 


2 


1 1 

1 

•X 

0 

IL 

IX 


i_i 




i—i 




X 

LU 

LL 


i j 







■X 


i i 

LX 

i j 

3 

2 


>1 

rn 

3 

IL 

2 

U 3 


Lx 

U_ 

U 




f| 

•i-i 



<T 


'T 


UJ 

Ll 


•r 





X 

in 


3 

i—i 

_' js. 

u 

i-i 

u 

_l 


3 

3 

1— 


2 


ill 


UJ 

rl- 

01 

H-I 

LL 

III 


X 

„ 

IX 

i_i 

LX 

1 J 

3 


LU LU 

l—l 


l—l 

LU 

3 

LL 

3 



•T 

• r 

01 

<T 

01 




«r 

01 


i i 

IL 




UJ 

•X 

LX 

t—i z 


LX 


H-I 

3 

i—i 

LL 


III 




T 


il 

_l 

LL 

r 


ll 

LX 

n 

III 

IL 




LU 


3 


2 


■X 

3 





3 





_J 

2 

11 


i i 

'X 

IL 

:- 

i i 



3 

3 

3 3 

Ol 

LX 

•X 

3 

i—i 

01 

3 

— | 

<T 

fi 

fi 





•X 

3 




UJ 

IX 

*r 


i 1 

3 

UJ 

U 

UJ UJ 

UJ 

LL 

i_i 

UJ 

3 

3 

3 

3 

01 

|_| 

i_i 

Lx 

rf 

Ll 


o 

3> 

3 

u 

4P 

Ol 

UJ 

Ol 

# 

3 

■X 

0 

'X 

i.n 0 

3 

LU 

Ol 

01 

LX 

LL 

01 








in 






hi 

















3 


3 





f j 


X 




i_i 











rH 






LL 


3 

3 

l'l 



rt- 

T 

r j 

X 


LL 


T 

3 

U. 

Ul 



3 


3 


+ 

3 

UJ 

3 

u 


xL. 



2 

, - j 

’t 

T 

2 

01 

3 


rH 

T 

2 

01 

'X 

2 

X 

•X 

0 

2 


2 

2 


'X 

2 

2 

2 





LL 

( -| 


i i 


3 

'X 

3 


i i 


3 

I' 

LU 

i_i 



LL 


LL 



X 

i—i 

LL 

3 



UJ 

& 

n 

'X 

•X 

3 

3 

'3 

3 

2 

'X 

2 

3 



3 

2 


UJ 


3 


'X 



Ol 

H-I 

3 

3 

l—l 

T 



0 




3 

Ll 





3 






ill 


c 




3 

c 

C 



Ul 

H-I 

1 

3 

H-I 

'X 

H-I 

1 

HH 


H-1 

'X 

H-I 

3 

N 

1 

X 

:- 

h-i 

1 


3 


i—i 

l_l 

3 

3 

3 

LL 

h-i 



X 

T 


3 


'T 


N 


3 


'T 


T 

c 

i”i 

:- 

X 

*.l. 

X 

i_i 

LL 

2 

'X 

X 

X 



LL 

3 

3 

01 

2 

i.n 

2 

O 

fl 

3 

2 

01 

2 

i_i 

3 

Ol 

3 

2 

2 

3 

LJ 

i.n 

2 


3 


01 

3 

LL 

3 









lY 






















T 








3 







X 










0 




3 

Cx 








N 







r i 










0 




i—i 
















3 










3 





01 








+ * 

















21 




3 











r- 

rH 

rH 

3 

Ll 

3 

0 

0 

CM 


ri 

3 

'£' 




l'j 


r-- 

■H 









TT 

rH 

rH 

3 

|V| 

3 

3 

0 

fl 


0' 

0 

<JJ 




0 


0' 

* 









ri 

0' 

01 

01 

0' 

0 

M 

0 

0 


0 

0 

01 




0 


0 

3 









0 r- 

i‘\ 

cm r- 

0 

r- 

3 

0 

N 

CM 

'£| 

3 

Ll 

Ll 




3 


3 

fi 









© r- 

3 

3 3 

Ll 

r-- 

Ll 

CM 

'•£' 

01 

r- 

r-- 

rj- 

3 




r-- 


r-- 

3 









CM © 

01 

0 0 

0 

ri 

01 

CM 

CM 

3 

0 

0' 

0 

3 




01 


3 





























C 









H ' £> 

CM 

'-£' CM r- 

CM 

3 

CM 

Ll 

3 

Ll 

'£' 

Ll 

Ll 

Ll 




CM 

Ll 

3 

3 









••£' r-- 

‘•£| 

r - ‘-o li 

3 

■f 

3 

3 

3 

3 

r-- 

3 

3 

3 




i'-'l 

0 

CM 










0 0 

0‘ 

0 0 CM 


0 

0 

l'j 

0' 

l'j 

0 

l'j 

fj 

f-'l 




rl 

l'j 

01 

3 




























iu 




























3 

01 

0 

01 

01 

01 

I.i.1 

0' 

'X' 

0 i "i 

Ll 

0 CM Ll 

'-£• 

3 

3 

r- 

CM 

Ll 

01 

CM 

Ll 

0' 

l'j 

l'j 

|j 

i'-'l 

'•£' 

r-- 


0 

0' 

0 

0 

0 

01 

01 

01 

01 01 

0 

3 3 rH 

3 

CM 

CM 

CM 

rl 

l'j 

3 

3 

3 

Ll 

Ll 

Ll 

Ll 

Ll 

in 

L1 

0i 

•H 

rH 

rH 

rH 

rH 

■H 

rH 

rH 

rH rH 

rH 

3 3 3 

3 

3 

3 

T 

T 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

CO 





0 


















_ 





co 

0 

0 

0 

01 

0 

0 

0 

0 

0 0 

0 

0 0 0 

0 

0 

0 

0 

0 

0 

f! 

© 

0 

0 

0 

0 

© 

0 

0 

0 


0 

01 

01 

01 

0 

01 

'El 

•ii 

'El 01 

01 

0i 0i 0i 

01 

01 

0 

01 

0' 

0 

0i 

01 

01 

0' 

0 

01 

01 


Li' 

1 


3 

3 


3 


•X. 

0 


3 


'•£' 

CM 

3 

3 



3 


3 


CM 

'•D 

3 

3 


0 

3 

3 


3 



0i 


3 


0 

0' 

3 

3 



3 


3 


f 

0' 

3 

3 


0 






01 

0 


0 


01 

0' 

0 

0 



01 


0 


0 

0 

0 

0 


0 

Ll 

l'j 

3 

3 

3 

r}- 

CM 

3 

rf 

3 

3 

0 

r-- 

3 


0 

Ll 


Ll 

3 

0 

Ll 

Ll 

r- 


0 

Ll 

Ll 


rt- 

CM 

0' 

CM 

0 

rj- 

3 

01 

CM 

'•£' 

3 


0 

Ll 


Ll 

3 

CM 

3 

Ll 

'•£> 


3 

0' 

0 

01 

0 

0 

CM 

CM 

0 

0 

0 

CM 

0 

0 

01 


0 

0 


0 

0 

0 

3 

0 

0 


3 

CM 

CM 

'•O 

CM 

'£' 

Ll 

CM 

'X' 

CM 

l D 

Ll 

CM 

CM 

CM 

r- 

'£' 

CM 

3 

CM '•£' 

'•£' 

CM 

Ll 

CM 

CM 

3 

3 


3 

r-- 

Ul 


3 

3 




3 

0 

3 r-- 

3 

0i 

Ll 

3 

3 f- 

r-- 

CM 

3 

3 

Ll' 

0' 

CM 



0 


0 

fj 

I'-'l 

0 

0 

0 

l'j 

l'j 

0 

0 

3 

0 

0 

0 

© 3 

fj 

fj 

i'-'l 

0 

0 

l'j 

0 


CM 

Ll 

0 

CM Ll f -- C M 

CM 

'IJ CM Ll' 

r -- c m 

3 N 

CM Ll © 3 l - l 

'.£' r- cm f j in 

0 I'-'l 

'•£' 

3 

CM 


'-£' 

N 

r -_ r - r- 0 

© 


0| 3 

3 3 

CM CM fj i'-1 fj 

l ' j i' -'l 3 3 3 

Ll Ll 

Ll 

'-£» 

■x' 

3 

3 

3 

3 3 3 CM 

CM 

CM 'IJ CM 

CM CM 

CM C M 

CM C M CM CM CM 

CM C M CM CM CM 

CM CM 

CM 

CM 

CM 


0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 


Page 16 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


June/July, 1976 


164 











X 




LL 

LL 


LL 



Lti 

I 



0 

1—1 


01 



LU 


Cti 













O'l 

X 



X 


LU 










UJ 

0 


0 



UJ 

i_l 

Lti 


_j 

z 


l.i*l 



Hi 


i_i 





1 l'l 

Cti 







O'l 

X 



Ul 


X 

X 






LU LU 



0 

_i 


G 



0 


l_i 


Q 

o 


UJ 



o 







0*1 

UJ 







Ul 

X 


X 

0 


Hi 

X 




Ll 


0 



■r 

Z 01 

O 


o 



z 

0 



LU 

Z 


ui 



z 


Cl 





LU 

0 


LU 





X 

01 

G 

0 

i 1 



X 






z 

Q 



4-4 in 

Ul 





1—1 

_l 

Ll 


G 



ill 


UJ 








Lti 

z 









G 


X 


X 





LU 



ill 


Q 

o cc 

z 

LU 



l_l 

i_l 

z 

LL 

ui 

0 


ill 

UJ 

in 

Ul 

LU 

0 





Cl 

1—1 

0 

0 i 





Cl 

G 


UJ 

X 

O'l 




X 




■—I 



0 

LL _J 

in 

UJ 

z 



LL 

LU 

cc 

>r 


i—i 


*1 

ill 

■X 

in 

z 

i_i 





Cl 

0 

G 

z 





X 

G 

V 

o 

X 

O'l 

0 

0 



X h- 


Cl 




U. 

CC 

UJ 

I —1 


ui 


_i 

_J 

X 

0 

ill 



i_i 

Cl 

cc 

i—i 

z 





X 

X 

X 









X 

X 

LU 


z 

X 

01 


01 


LU 



i'n 

UJ 

LL 

LL 



UJ 

u. 

Lti 

LU 

g 

UJ 

UJ 


Ll 

z 


Cl 

G 








0 

0 

LU 


UJ 


X 

V 

G 

X 

G 

X 

LU 

Ul 

Cl 


i_i 

G 


0 


cc 

z © 


o 



0 

_l 




in 

1 

Zj 

G 


Cti 



Ll 


LU 



Cl 

UJ 

G 

21 

Q 


Ci 




UJ 

O'l 



X 

X 

Cl 

X 



Z 

Z 

UJ 


•—* CO 

o 

O'l 

o 

UJ 

g 

LU 

~z 

u 

_j 


O i 

z 

CD 

z 

i_i 

II 

Ll 

i—i 

■X 

ill 




2 

0 i 

LU 





CD 

G 



G 

Ci 

X 

X 

X 

l~l 

X U 

X 

1—11 

Hi 

Ll 

G © 

0 


0 

z 

cc 

i—i 

UJ 

1 —* 

i_i 


0 

X 

i—i 

LU 

lL 

>—i 

i— i 



i_i 



0 

4-1 


X 

G 


G 


V—1 

LU 


O'l 


X 

G 



X 

1—4 

1—4 


_J 


z 

UJ 

CO 


Cl 


1—1 

LL 


z 


Lti 

ill 


H 


z 




Cti 

Lti 

z 




-J 

Ul 

X 




LU 



IU 

0*1 

X 


0 i 

01 







LL 

1—1 

ill 

LL 

cc 

LL 

0 

IX 

ill 


0 

0 

i—i 

0 : 


ill 


0 

Cl 

0 

i_i 

X 


UJ 

UJ 

Ci 


in 

G 

Ul 


LU 

z 

Hi 


X 

LU 

0 

UJ 



X 

1— 

UJ X 


0 

■G 

0 

Hi 

■I 0 

z 

LU 

El 

_1 

I 

X 

0 

O'l 

z 

_l 

i—i i 

5 

CC 

1— 

01 

z 

O'l 

Cti 

UJ 

j— 



X 

0 

X 

01 

in 



t—i 

X 

0 


G 



0 

0 


O'l 

G 

01 

i i 

UJ 

o 

G 

o 

G Ul 

__l 

G 

G 

o 

g 

i_i 

LU 

LU 

o 

'X 


j 

~i 

LU 

LU 

G 

LU 

Cti 

G 

LU 

o 

1—1 

o 

LU 

X 


X 


i—i 

0 


UJ 

p 


Q 

1—1 

UJ 

UJ 

z 

LU 

O 

iG 

X 

01 

G 

O 

El 

G 01 

0' 

o 

0* 

Lti 


_J 

G 

0 

(J 

I:- 

UJ 


-J 

G 

0 

0i 

0 

LU 

o 

O'l 

Ci 

0 


O'l 


J- 

X 


G 

i 

G 

G 

01 

G 

G 

G 

G 

G 

1—1 

1- 

Ci 

G 

CD 



LL’ 







0 






i 

— 










G 



lii 

X 




0 






















L-j 

_• 






UJ 










0 



01 





X 






0 






f-1 




0 






z 

o 



rH 




A 










Cti 




Cl 







■H 









+ 


Cii 

LL 

IZ 

Ul 

LL 

0 

01 

0 

cc 

CD 

0 


+ 

0 

Q 



0 



Hi 


0 


UJ 



-J 

ui 

UJ 

UJ 

UJ 0 

01 

0 

Cl 

0 


+ 

0 

G 

ui 

X 





h- 


0 

_• 

i—i 

ill 

0 

oi 

Cti 

Q 

z 

_i 

z 

z 


•X 

LU 

iu 

z 

z 


z 


>1 


ill 


Hi 

LL 

0 



Ci O'l 

X 




G 


X 

G 

z 

0 

G 




O'l 




LL 

i_J 

z 

4-i 

_l 

z 

z 

LL 

LL 

.. 


X 

_i 

Hi 

Cl 

- 

LL 

0 

G 

X 


0 


2 


z 

4-4 

1—1 

iG s—i 

G 

z 

X 

X 



X 



2 



l v l 


G 


LL 


LL 

z 

ll cc 

G 

g 

_l 

p 



'X 


z 

Lti 


D 

*-• 

■X 


O'l 


z 

X 

z 


X 

0 

X 

G 

z 

Z X G 


G 



•X 



in 

O'l 

X 

X 

X 

■H 



X 


G 

X 

1— 

X 

G 

X 

N G 

X 

h- Z 

G > *-• X 

I - 

H 

G > n ^ W 

X 

IT- 



G G 

h- 1- 

«T 

x r-j 

1 

l'l 

G 

G > i-i X 


in 

G > X •-« 

X 



Ci 

X 

LL 

Z X 

z 

_1 

X X G !— 

111 

G 

x >_> x r-j x z 

It 

1- 

Ul 

i i 

X X 

Ul 

.-“•i 

X z 

■r 

G 


X >0 X ' 0 

ill 


X '0 Z X 

01 

*-> 

h- 

G 

G 


G i_i 

*-} 

O O'l 

G Z G *-• O'l 

LL 

X 

G Z G G G >-• 


1,11 

X 


G O'l 

X Cl 

G 

G 0 

i 1 

»—■ 

G 

G Z <"• 0* 01 

X 

1— 

G Z i-^ G 



i—1 






in 



f— 







G 





G 



01 




A 

z 





G X 

z 


G 

X 


Hi 



X 

3 O'l 



UJ 


4-4 

0 


G 

0 



X 

>_• 





X Oi 

01 


i_i 

i_i 




H 

X 

0 X 



1 


;y- 

X 


z 

01 




Ul 






X 



O'l 


h- 







LL 



G 



G 


■H rH 

■H 

■H '•£* 

0i 

in 

■H 


C'J 

■H 


0 



0 


C'J 0 


0 0 

0 

CD 

© 

S v l 

0 C'J 

0 


0 


C'J 


tH Q 

■H 

•H O 

’t 

X 1 

■H 


01 

rH 


0 



x* 


X* 0 


0 0 

0 


’t 

Q 

0 Q 

0 


0 


© 


© © 

01 

0i 0i 

i v i 

01 

X' 


Q 

X' 


X' 



X' 


01 01 


0. 0. 

X' 

01 

l v l 


© X* 

X' 


01 


Q 


■H l v l 

0i 

H U0 

Q 

'•£« 

111 

■H 

X' 

r- 


U'l 


X' 

r-- 

T* 

x. 01 


r- 0 

X' 

in 

© 

'•£i 

in 0 © 

l v l 


0 


Ul 'D 


’t 

m 

'•£' 0 

C'J 

■H 

lil 

Tf 

C'J 

0 


in 


C'J 

IU 

0 

C'J pi 


Ll' '•£' 

Ul' 

© 

C'J 

0 

u:« ’t C'j 

T+ 


'■£' 


0 X' 


O C 'J 

Q 

G 0 

C'J 

Q 

X' 

X' 

X' 

X' 


X' 


0 

M 

0 

X' X' 


X* X' 

© 

0 

C'J 

X' 

© © © 

© 


© 


© © 


'.‘ •J M 


C'j r •- c-.j 


M 

C'J '-£• 

'•£' 

C'J 

C'J 

■H 

C'J 

'-£' 

‘•D 

C'J 

'•£' 

C'J N C'J 

0 

C'J C'J 

C'J 

r-- C'j 

Ul 

I'U 

C'J CO '•£' C'J 

C'J 

0 

C'J CD 

in 

'•£< © C'J 

fn 

rf 0, 

r-- 

LO ••£' Q 

■H 

X' 

l-'i r -- 

r- 

in 

■-D 

0 

in 

r-- 

r-- 

0 

r-- 

x> in '•£' 

0 

Ul' , T 

r- 

!.£l © 

0 

01 

un r - r -- i n 

■-D 

0 

ui r - 


r- 0 C'j 

Ul 

0 1-1 

0 

Q C'J i n 

l v l 

M 

© -H 

M 

i-1 

X' 

M 

X' 

0 

i v i 

M 

i v i 

M C'J © 

M 

01 01 

© 

C'J 

l v l 

l' v 'l 

© 0 i - l M 

Q 

M 

X* 0 

© 

i-i r-1 in 

© 


Ul 

x> 

rn 

in 

in 

I'-i 

CD 0 

C'J 

Ul 

Xi 

i-i 

l V l 

fn 

in 

fn 

CD 

r-- 

0 

'T 

r-- 

© © 

© 

© 

fn 

't 

CD 

0 

fn 

•D 

r-- 

C'J 

in 

fn 

fn 

l v l 

CD 

0 

0 

0 

0 

0 

’t 

Ul 

© 

f-1 

•D 

CD 

‘•D 

•D 

0 

C'J 

0 

r-- 

C'J 

f-1 

f-1 

f-1 

f-1 

CD 

r-- 

© 

C'J f-1 

'D 

Ul 

CD 

'•D 

•D 

CD 

'•D 

CD r -- 

N 

r-- 

X* 

X' 

© 

01 

X' 

© 

© 

© 

0 

0 

0 

C'J C'J 

C'J 

C'J 

C'J 

C'J 

C'J 

fn 

f-1 

i v i 

i v i 

't 

’t 


’t 


T 

Ul 

Ul 

Ul 

Ul 

Ul 

Ul 

Ul 

•D 

'D 

•D 

CD 

CD 

'D 

N 

f- 

r- 

r- 

0 

© 

© 

•01 

© 

0 

© 

0 

0 0 

0 

C'J 

C'J 

C'J 

C'J 

C'J 

C'J 

C'J C'J 

C'J 

C'J 

fn 

i v i 

l V l 

fn 

M 

fn 

M 

M 

l V l 

f-1 

l V l 

M fn 

M 

f-1 

M 

M 

fn 

M 

i v i 

i v i 

M 


f-i 

i v i 

M 


l v l 

f-1 

l v l 

fn 

f-1 

f-1 

fn 

f-1 

f-1 

f-1 

f-1 

f-1 

f-1 

f-1 

f-1 

M 

f-i 

f-i 

© 

© 

© 

© 

© 

© 

© 

© 

© © 

© 

0 

0 

0 

0 

0 

0 

0 0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 0 

0 

0 

0 

rl 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

C'J 

C'J 

C'J 

C'J 

C'J 

C'J C'J 

C'J 

C'J C'J 

C'J 

© 

X* 

01 

X' 

© 

X 1 

© © 

© 

X' 

X' 

01 

© 

© 

© 

lTi 

X' 

X' 

iTi 

© 

© 

© © 

X* 

© 

X' 

© 

X 1 

01 

01 

© 

© 

Xi 

Q 

© 

iTl 

0 

X* 

© 

0 

Xl 

© 

© 

01 

©1 

X 

X' 

01 

0 

© 

X' 

© 

X* 

X' 

© 

© 

Xi 

X* 

© 

Xi 

X* 

© 

X' 

X' X' 

X 1 

X’ 

X' 

© 

X' 

© 

Xl 

© © 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

X' 

© © 

© 

© 

© 

© 

© 

X' 

© 

© 

© 

© 

© 

© 

© 

X* 

© 

© 

© 

Xl 

X' 

© 

© 

© 

X' 

X* 

X' 

© 

X' 

© 

© 

X' 

© 

Q 

© 

© 

© 

© 

© 

© 

© 

© 

Q Q 

© 








2 








2 






111 
























3 

X 












01 





i i 





|0 



•;n 

LL 





'.'J 







Ul 


















0 




'-I 








Ol 










X 



4-4 

UJ 

ui 




























1 

01 




LL 





If 



111 





LL 





G 



01 

0 

01 



- 4 - 

z 







1—4 














X 



10 





III 





c 



LL 





Ul 


III 

ill 


U. 



1 

z 

111 



Lti 

•T 

in 






0 












X 


2 

LL 


X 

III 

LL 



N 





■' 1 



Li 





ill 







If 


4-4 

LL 



X 

X 

!> 1 


i .1 




4-4 


X 


If. 

O'l 

11 1 




LL 


X 


4-4 

CL 



z 

X 

X 







X 



Ll 





i: 


4-4 

1—4 


z 


f i 

0 

10 


z 


z 

0 

C'J 




'X 

l/l 

01 




Hi 

X 

11'| 



ll 

O 

1 

0 


G 

X 


If 

4-4 

0 



II 



■H 



X 


IX 





. i 


0 



l'l 


Cil 

oi 

U. 


1—4 


1-4 




'G 



.’1 

10 


10 


Hi 

III 

III 



10 

1— 

X 

z 



G 



G 

z 

1 1 







X 

iG 









•X 

4-4 


4-4 


'X 

'L. 


X 



CD 

oi 



0 


!_l 


X 


0 

Cl 

X 

0 

if 



0 



4-4 

0 

0 


LL 

G 


4-4 

0 



0 


1 

UJ 

2 

X 

ill 

I i 







in 

01 

4 'l 

01 



LL 

ll 


l'l 



O'l 


1 1 



0 

G 




z 


01 

Hi 




0 

1 1 

O 

4-4 

z 

0 



i0 

I© 




4-4 



z 

4-4 


IL 

2 





o 


LU 

0 




LL 


:i 

LL 

O'l 


0 

UJ 

. ] 

Ir'i 

01 



X 

X 


O'l 

X 

0 

4—4 



01 

0 

10 

0 

LL 


IU 

2 

i_i 

G 

0 

LL 

01 

■H 

G 



01 

I_1 

G 

1— 

•X 

Lii 





■■* 


z 

LL 

Lit 

It 


Ul 

0 

Ul 

111 

01 


0 

G 

X 

Ul 

Ul 


in 


4-4 


UJ 

0 

IL 

in 

X 

C'J 

LL’ 

X 

2. 



iii 

LL 

X 


4-4 



Ul 


1—1 

X 

X 

X 

i-1 


X 

0 







!_l 




1 1 

G 

III 

z 

4-4 

111 

LL 








X 

© 



n*- 


X 

Ul 



X 



If 

Ul 


LL 

if. 

IL 

0 

if. 

111 

2 

0 

0 


G 

z 


0 



I- 




G 

u. 

V, 

Ll 

IL 

111 

Ll 

-y. 

z 

LU 


z 

Ll 


0 

X 

X 

111 

1—4 


G 

11 i 

u 


4-4 

z 

0 

X 

0 

LL 

0 

X 

X 

l -1 

z 

!_1 

_ 1 

if 

G 

z 

i 1 


1-4 

i 1 

2 

l_l 

t —1 

4-4 

X 


X 

IG 

•X 





4—1 

LU 

1—4 

1—4 

u;. 


LU 

1 

z 

Ul 

1 



LL 

4-4 

4-4 

IL 

G 

tH 

X 

i'i.1 

“1 

X 

G 

4-4 

0*| 


z 

0 

1 1 

4-4 

4-1 

l' i 

f-1 

0 

G 

0 

X 

G 

i’ '1 

4-1 

G 

X 

_ f 

0 

X 

G 

4-1 

X 

4-1 

0 

i 

01 


UJ 

Ul 





0i 

Ul 



III 

0 

2 

X 


Ul 



i 1 






1 1 




111 

Hi 


■I 



X 

G 



IG 



X 

G 


LL 






2 



ii 

LU 


z 



III 

0 

IL 



III 


LL 

<T 





0 

IL 

0 

ll. 

111 

z 


III 

0 

U 

X 

X 

,-~i 


y 

X 


LL 



LL 

ll 


0 

LL 



ll 

0 

LL 

II 

X 

X 

I.L 


u. 

Ll 

L'l 

•X 


4-4 

0 



01 

z 

01 

0 


0 

4 ,i 


0 

0 

G 

2 

01 

z 

01 

1.1 

1 

10 

0 





G 


X 

1 i 

X 

01 

n~ 

11. 

0 

r 

i_j 

0 

01 

1 1 

0 

0 

i_i 

CD 

i 1 

z 

I_1 

O 

z 

0 

z 

z 

4-4 

0 


0 

LU 

IL 

i.r. 

UJ 

_ 1 

UJ 

III 

ii 

111 

2 

LL 

IU 

UJ 

V. 

1 4 

UJ 

G 

111 


G 

f—4 

Ul 

10 

01 


'[* 

4-4 

10 

71 

'I 

.L 

X 

_ 1 

1. 1 

III 

_ 1 


UJ 

X 

10 

III 

X 


G 

il 

G 



_1 

X 

G 

•X 

i-1 



0 

01 

0 

in 

0 

0 

LL' 

Oi 

Ol 

in 

4-4 

3 

i0 

Ol 

Ul 

4 1 

0 

0 

LL 

4t 

LL 

01 

Ol 

z 

Hi 

# 

01 

X 

0 

i 1 

Ul 

1 1 

0 

0 

0 

Ol 

0 

0 

CD 

0 

G 

Ol 

Ol 

# 

01 

G 

0 

Hi 

& 

*0 

G 

01 



LU 

I 

l_l 
























X 













LL 










2 







_> 

© 

Lti 
























X 













X 



H 







X 







i_i 

05 

























nr 













0 



+ 












i_i 

U 

!- 

+ 

Hi 


IL 







0 


0 

0 





0 






Ll. 

i0 


X 

G 


X 



01 

ivi 


LL 

z 

01 



LL 


LL 

LL 


Y 

2 

01 


z 

0 

z 

LL 

iG 

LU 


z 

C'J 

_.l 





0 


Z 


z 

2 

X 

G 

i, 4 


•T 


G 


UI 


0 

! — 

G 

z 

D 


0 



0 

■ 1 


0 

i_i 


z 


0 


0 

z 


IU 


L-j 


'G 

01 

0 

•X LU 

LL 


ci: 




I 



1 


LL 


LL 

LL 



I.U 


J 









X 

ii 


z 




• 1. 


z 

r i 

l_l 


m 

X 


2 

X 


.X. 

C 

LL 


iG 

G 

!_l 

0 

G 



£ 

LU 

z 

CD 


'G 

LU 

LU 

LU 


X 

*-* 

4-4 

UJ 

'G 

1 —j 

X 

z 

LU 


G 

X 

'X 

A 

X 

X 

0 

0 


LL 

X 

X 

IG 

Z 


LL 

A 

0 

X 

rH 


X 

LL 

0 

X 

2 


X 

G 


-- 

LU 

G 




in 



T 





T 







G 









X 




in 




..I 


in 

Hi 


X 





ill 





10 



G 


. 1 

L'L 



iG 

1—1 


l'l 

4-4 

M 

II 

1-4 

01 

1 

•:* 

1 

...1 



1 

If. 


IL 


If. 


•X 


CD 


X 

J 

X 

1 



1 


J. 

..J 

IL. 

_ 1 


1-4 

N 


J 

X 

LL 

N 

LL 

0 

LL 


G 


•r: 

z 


LU 



G 

~i 

LL 

z 

i — l 


i 

X 

z 

X 

X 

i*i 

i~ 

<r 

1, 1 

X 

10 

10 

2 

i_i 

Cti 

N 


10 

0 

X 

i i 

X 

i 1 

11 

X 

i'_i 

i_i 

X 

z 


G 

LL 

2 

2 

X 

Ci 

'G 


z 


t_J 

N 

X 

n 

G 

0 

lZi 

ill 

0 

G 

0 

LL 

iG 

4-, 

LL 

Z 

LL 

G 

•-I 

LU 

G 

z 

E_ 

•G 

Hi 

0* 

LL 

Z 

|-| 

L- 

G 

0 

X 

Z 

01 

G 


G 

Ll 

ill 

•G 

P 


Ol 

0' 


Z 

'G 

0 

0 

01 

G 

i-1 

*0 


X 

i-i 

0' 

IG 

0 


m 

ll 

0 


0 

CC 


r-- z \ - 
0 c-.j r - 


H 

C'J 

Ul 

© m 


© 

0 

0 


0 

0 

0 



'D 


C'J 



0 

0 

0 

0 

fi 

0 0 

0 



0 

0 

0 


0 

0 

0 

C'J 

Ul 

Z 

X 1 

rH 

0 C'J 


X* 

© 

X' 


0 

0 

0 



© 


Xi 



© 

0 

0 

0 

© 

X’ 0 

© 



© 

0 

0 


© 

© 

X' 

E> 

©1 

M 

Xi 

rH 

X' 0 


© 

© 

© 


X' 

© 

© 



X' 


© 



Xi 

© 

© 

X' 

© 

X* © 

© 



© 

© 

© 


© 

© 

© 

© 

© 

H 

l v l 

Ul 

Ul C'J 


C'J 

in Ul 

0 0 


Ul 

Ul 

Ul 



Ul 


© 



fi 

f- 

N 

0 

f- 

f- 0 

fi 


Ul 

0 

0 

f- 


CD 

fi 

fi 

fi 

CD 

Ul 

X' 

X' 

© © 


Xi 

Z Ul 

z © 


Ul 

Ul 

Ul 



C'J 


C'J 



Tj- 

C£j 

Ul 

*D 

C'J 

0 ‘D 

•D 


0 

X< 

CD 

'£• 


•D 

! D 

■D 

© 

fi 

rH 

C'J 

0 

0 0 


© 

C'J © 

0 X' 


© 

© 

© 



fi 


© 



C'J 


Q 

© 

fi 

C'J © 

C'J 


© 

C'J 

© 

© 


0 

C'J 

C'J 

© 

fi 

Ul 

in 

C'J 

•D 0 

© 

0 

C'J Ul C£| 

C'J 0 C£i 

Ul 

C'J fi 

C'J 

C'J 

z 

Ul 

Ul 

Ul 

C'J 

0 Ul 

z 

© r- C'j 

Ul C'J 

C'J fi 

C'J fi fi 

LO 

C'j fi C'j 

fi 

'£• 

*D 

C'J 

fi C'j 

C'J 

Ul 

C'J 

fi 

Ul C'J 

Ul 

C'J 

rH 

© 

C'J 

C'J © 

z 

© 

fi © r- 

© © © 

© 

Ul z 

z 

Ul 

X' 

0 

0 

z 

CD 

X 1 0 

0 

f- C£i 0 

f- CD 

Ul Ul 

Ul Ul Ul 

0 

fi Ul Z 

© 

r-- 

r- 

© 

z z 

f- 

r-- 

©i 

© 

0 0 

0 

fi 

f'l 

f'l 

H 

0 0 

C'J 

© 

f-1 fi fn 

f 'l f ' l © 

f'l 

Xi © 

© 

© 

0 

0 

fi 

Xi 

fi 

fi 0 

© 

0 C'J fi 

0 Xl 

Q fi 

© © Q 

fi 

fi fi © 

fi 

0 

fi 

fi 

© © 

© 

© 

fi 

fi 

© fi 

fi 

fi 


f- 

C'J 

Ul 

0 

Ul 

0 

C'J 

C'J 

C'J 

C'J 

Ul 

© 

0 

fi 

CD 

f- 

0 

C'J 

Ul 

CD 

0 

z 

Ul 

CD 

0 

C'J 

Ul C£| 

f- 

E‘ 

0 

C'J 

Ul 

Ul 

Ul 

Ul 

CD 

0 

z 

Ul 

© 

0 

C'J 

Ul 

©1 

0 

z 

r - r •- r -- 

r- 

© 

C'J 

Ul 

•D 

0 

z 

Ul 

© 

fi 

fi 

fi 

fi 

z 

f- 

C'J 

CD f- 

r- 

© 

©i 

0 

0 

0 

0 

0 

0 

C'J 

C'J 

C'J 

C'J 

C'J 

fi 

fi 

fi 

fi 

Z 

z 

z 

z 

Ul 

Ul 

Ul Ul 

U! 

CD 

CD 

‘D 

C£> 

CD 

CD 

■D 

CD 

r- 

r-- 

r-- 

© 

© 

© 

© 

0 

•0 

0 

1 

1 

1 

0 

C'J 

C'J 

C'J 

C'J 

fi 

fi 

fi 

z 

z 

z 

Z 

Z 

z 

z 

Ul 

X' 

© 

© 

0 

0 

0 

•0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

C'J 

C'J 

C'J 

C'J 

C'J 

C'J 

C'J 

C'J C'J C'J 

C'J 

CJ 

C'J 

C'J 

C'J 

C'J 

C'J 

C'J 

C'J 

C'J 

C'J 

C'J 

C'J 

C'J 

C'J 

C'J 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 0 

0 

0 

0 

0 

0 0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 0 0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 



© 

© 

© 


© 



© 

© 






© 


© 

© 

©i 

© 

© 

©1 


©1 

©1 ©1 

©1 

© 

X 1 

©1 

© 

© 

© 



© 



©1 


© 

©1 

© 

© 

X 1 

©1 ©i 

© 

© 

© 

© 

© 

©1 

© 

©1 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

X* 

© 

© 

© 

© 

Q 

© 

© 

X' 

© 

X* 

© 

©1 

© 

© 

© 

© © 

©1 

©1 

©i 

© 

© 

© 

© 

Xl 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© © © 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 


June/July, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 17 


165 













































ill 

LL 

















X 































LL 

|3 



m 



iz 

X 









X 




m 























IX 




X 

1- 



Ul 



l_l 

X 





X 



X 

X 


l-l 




m 

UJ 

in 

iLi 3 

X X 

X 






X 

in 


0 

X 

X 










X 

b- 

Ul 

X 



b- 

X 



X 

X 


LL 

X 

X 

X 

X 




in 

1- 

X 

X 


0 1 — 1 

■r 0 m t: 





UJ 

1 







X 


X 









in 

7 

i- 


if 





0 


1- 

X 

z 




2 



b- 

0 0 





b- 

Ul u 






UJ 

rr 

h- 

Ct 

X 










m 

n 

7 

IX 

0 

0 

1 1 

u. 


0 


21 

X 

0 




in 

!—! 



2 

r— X 

X X 

A— 


'X 


m 

rn in 

m 






UJ 

m 

X 

in 

m 









ui 

i i 

n 


f j 

X 

b- 

I__l 

U. 

X 


i—i 


X 


X 


X 


•—i 


i—i 

Z X 

X 0 




z 

H 

■T >T 






_i 




X 










X 

X 

i_i 

0 

X 

X 


X 

i i 



!_l 

i_i 



0 


X 

X 



i_i 

X 

X X 

X 


JL- 


3 

m x 






X 


n 

i3 













LL 




•r 


X 

1- 


LL 


in 


0 


0 


X 

X 

X 

x X 

X 

X 



i! 

III 

m n 







•v" 

m 

m 

n 








X 



III 


IK 

LL 

X 

y 

IK 


z 



IK 

21 


X 


■' i 

X 




X 0 







UJ 1- 

i i 






X 


m 

y 

~i 








X 

X 

7 

Q. 

1.1 

i i 

y 

X 

•X 

X 

111 


ll 

l_l 

i—i 



X 

X 

21 

X X 

X 


CO X 

m 


X 

UJ 


x m 

i- 









m 

y 







1- 

in 


n 

0 

X 

b- 

X 


X 

l—l 

z 


0 

X 

I 


b- 

I'l 


i—i 

0 


i_i 


0 11 



'X 


III 









m 



X 






1 

X 

1- 

X 








III 


X 



X 

0 

X 

b- 

X 

b- 


X 


IJJ 

X 

ui 


l-~, 










ill 


y, 

n 

X 







m 

i 



y 



hi 


X 

LL 

LL 


1— 

X 

7 

X 

Ul 

X 



0 


0 0 

X 

X 

b* 

X 


X X 







X 

X 

X 








b- Ul 




1—1 

• L 



in 

y 

i L 

• • 

l— 

in 

or 

*—i 

b- 

m x 

y 

H 


b- 

Z X 

l— 

X 


l~I 



—i 





y 

n 

o 

0 

~i 

~ 







“l X 


III 

111 

■T 

i3 

III 

n 

X 

3 


ii 

III 

X 

ui 

b- 

_1 

ui 

21 

X 

X 

n 

X 

U U 

X 

X 

n 

X 

_l 

1- 

_j _i 

3 

X 




UJ 

_l 

h- 

_J 

X 


y 





T 

n 

y 

n 

in 

m 

2 

X 

0 

X 

h- 

t—, 

n 

X 

Ul 

b- 

Ul 

0 

0 

0 

H 

Ui 

Ul 

X 

Ul 

X X 

Ul 3 

1_1 

1- 

Ul 





_l 










X 






















0 











_l 




0 i i 









0 

i i 








in 
















X 

m 














in 1 









in 

1 






i 

i 


















77 









m 

X 


Z 



u 

ll. 









ii 

■>r 




i 

• 


X 

7 

X 

X 

Z 

_J 

f-i 



Z 


Z 

7 

21 


0 

0 

X 

7 

X 

X 

2 

z 

X X 

b- 

h- 


X 


UJ Ul 

■, i 

1 1 



T 

■T 

X 


y 

y 


X 




X 


X b- 

n 

i- 

ii 

n 

ll 

LL 

X 


t—i 


t—i 

LL 

Ll 


21 

X 

b- 

i—i 

1- 

X 

X 

X 

y 0 

U'l 

X 

•H 

U 



in 

UJ 









X 





0 1 

— 


i 

1 

7 

0 

1- 

i i 

X 



0 


LL 

li 

U. 


•X 



X 

2! 

u 

X 

X 

Z IX 

n 

X 



UJ 


B 

H 

Ul 


fi '• 

Pi 

03 


X 


m 

X 

X 


Pi 


Pi 

co : 

P 

X 

0 

X 

LL 

b- 

x 

b- 

1- 

L 

rH 

1- 

X 

1- 

X 

X 


£ 

X 

u 

X 

X 

b- 

X 

X 

X z 

X X 


X 

X 


n 







"V 


il 











1 

X 

0 

0 

X 

0 

X 






0 

X 


0 


X 

X 

0 

0 

X 

0 

0 

X N 

X 



1 

r 

i—i n 






X 

_J X 

n 

H_( 






i 

—i 

H 

i 

1 

1 

1 

1 

1 

1 


►—i 



LL 

1 

1 


i i 

i—i 

1 

. 1 

.1 

-J 

X 

X 

X X 

X 

l_l 

n 

X 

■» 

X X 




in 

m 

_l 

X 

i i 

x 



y 

m 


in 

0 


~y~ 

•T 

>T 

T 

T 

X 

X 

X 

ii 

lT 

W 

nr 

y 

X 

X 

X 


_x* 

X 

X 

X 

X 

X 

X 

I 0 

X Z 

X 

X 

J- 

-I 


-I _J 

3 

Cj 

3 3 

3 


X 

_J 

x 

_J 

X 

3 

0 

0 

0 


0 X 

X 

O 

0 

m 

Ul 


X 

u 

x 

■X 

3 

i—i 

3 

Ul 

l_l 

X 

f- 

X 

•X 

•X 

Ul 

Ui 


Ul 

X X 

•x 3 

o 










m 










1 

i 

















t—i 













li. 




0 

■ i 



HH 

y 





in 

i 1 




I. 

IX 







7 






Z 



0 

X 












1 1 




III 

_J 



3 

m 





m 

X 



1 

— 

1 1 







i—i 






H 



X 

O 










X 

3 

UJ 




27 

Q 




n 











h* 







LL 






0 




0 











21 





UJ 

UJ 




■+■ i2i 










-+■ 

★ 







H 






h- 




X 













0 rH 

't id 
0 0 


•3 '3 rH 
’ 1 - \D 
© © >3 


rH 


01 CJ 

CJ 

'•0 

•3 






CJ 

CJ 

CJ 

>3 

Ul 

10 




•H 


•3 '3 

»3 

»3 

rH 






0 

0 

*3 

n 

rH 

rH 




•3 


»3 «3 

•3 

rH 

rH 




0 


0 

0 

0 

H 

rH 

rH 




Pi 


'3 rH 

N 

P- 

’t 






•r« 

l v l 

P-- 


in 

’t 




'•iJ 


• •■J i-i 


rH 

rH 




0 


in 

!'•- 

M 

0 

0 





'3 


*. «J '. ■J 

rH 

rH 

rH 




0 


«:j 

(J 

■H 

•H 

rH 

rH 




CJ 

Pi 

rH rH 

Pi 

U“i 

0 

0 

0 

li"; 

CJ 

i-1 

H 

■H 

i v i 

0 

Ul 

■3 

0 

0 

Ul 

li > 

in 

0 -t 

•3 

3 

li > 

b 

-t 


0 

In 

i'.i 

rt- 

0 



IM 




>3 

in 

•3 '3 

Pi 

rH 

3 

0 

0 

01 

© 

i v i 

0 

0 

M 

■H 

tH 

0 

0 


CJ 


l v l 


r-- 

CJ 

Ul 

© 

■■t 

0' 

rH 

■•t 

Ul 

Q 

rH 

■•H 

■H 

rH 

-t 

Ul 

01 

l v l 

X 

CJ 

X 

CJ 

M 

X 

r-- 

CJ 

l v l 

r - i 

M 

0 

0 

0 

rH 

rH 

CJ 

CJ 

I v l 

M 

M 

l v l 

’t 

-T 

’t 

'T 


’t 


Ul 

Ul 

Ul 

X 

X 

N 

P-- 

N 

p-- 

0 

01 

0 

01 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

0J 

01 

01 

01 

M 

M 

M 

l' v 1 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

OJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

0 

0 

0 

•3 

0 

0' 

0 

0 

0 

0 

0 

0 

0 

0 

0 


0 

01 

0 

0 

0 

0 

0 

0 

0 

0 

0 

01 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 


0 

0 

0 

0 

0 

0 


CJ 

CJ 

X 

rH 

tH 

■J" 

rH 

0 



CJ 


CJ 

rH 

M 


CJ 

CJ 

X 

rH 

•H 

M 

rH 

rH 

rH 


X 

0 


0 

0 

0 

rH 

rH 

0 

rH 

't 



0i 


0i 

rH 

0 


0 

0 

O 

rH 

rH 

0 

rH 

rH 

rH 


0 

’t 


0 

01 

•3 

0 

0 

01 

0 

l v 1 



0 


0 

0 

0' 


0 

0 

0 

0 

0 

0 

01 

0 

0 


0 

r'l 


Ul 

CJ 

X 

rH 

r-- 

Ul 

r- 

l v l 


rH 

Ul 


0 

M 

CJ 


Ul 

CJ 

X 

rH 

N 

CJ 

in 

rH 

0 


Ul 

0 

rH 

r- 

0 

M 

X 

Ul 

't 

lil 

X 


0 

■•t 


M 

X 

0 


P-- 

0 

l v l 

X 

in 

0 

X 

X 

Ul 


0 

CJ 

0 

0 

rH 

CJ 

0 

© 

0 

0 

CJ 


O 

M 


M 

0 

M 


0 

rH 

CJ 

0 

0 

fn 

0 

0 

0 


rH 

CJ 

0 

rH 

Ul 

Ul 

CJ 

CJ 

Ul 

CJ 

Ul 

CJ 

X 

CJ 

l v l 

r'l 

CJ 

Ul 

rH 

rH 

ID 

Ul 

CJ 

CJ 

Ul 

CJ 

CJ 

CJ 

r-- 

CJ 

Ul 

X 

't 

rH 

■H 

rb 

’t 

rH 


rH 

X 

N 

rH 

’t 

0 

"t 

rH 

rH 

f 

rH 

rH 

’t 


rH 

't 

Ul 

r- 

X 

0 

■H 

0 

0 

M 

r-l 

0 

0 

l v l 

r 

M 

■H 

l v l 

l v l 

0 

M 

0 

M 

M 

0 

M 

M 

0 

0 

M 

0 

0 

© 

CJ 

M 

M 

0 


l v l 

X 

rH 

't 

P-- 

CJ 

ID 

0 

Pi’t 

X 

rH 

CJ 

Ul 

0 

Pi 

-t 

’ t 

b N 

CJ 

Ul 

0 

Pi 

X 

rH r f 

r- © 

Pi X 

X X 

X 


0 

rH 

rH 

rH 

CJ 

CJ 

Pi 

Pi 

l V l 

Pi 

■J - 

’t 

-J- 

Ul 

Ul 

Ul Ul 

ID 

ID ID 

X 

X 

P-- 

r-- 

N 

0 0 

0' rH 

rH rH 

rH rH 

rH 

M 

M 

M 

Pi 

Pi 

Pi 

Pi 

Pi 

Pi 

Pi 

Pi 

Pi 

Pi 

Pi 

Pi 

Pi 

Pi Pi 

fi 

Pi Pi 

Pi 

Pi 

Pi 

Pi 

Pi 

0 O 

0i 3 

0 0 

0 0 

0 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

0.1 

CJ CJ 

CJ 

CJ CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

Pi Pi 

Pi Pi 

P i Pi 

Pi Pi 

Pi 

0 

0 

© 

•3 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 0 

0 

0 0 

0 

0 

0 0 

0 

0 0 01 © 

0 © 

0 0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

01 

0 

0 

0 

0 

0 

0 01 

0 

0 © 0 

0 

0 

0 

0 

0 © 

0 0 

0 O 

01 0 

0 


I — 
LxJ 
Z 


Utl' 










L> - ' 








Ul 























Cl 















u: 




i i 






•T 


z 























3 















3 










III 


n 























z 















b- 




'i. 






LL 


y 



















Z 
















LL 

X 


ii 










Z 


3 













Ui 





LL 

Cl 




UJ 

UJ 











Q 

3 


z 




CD 








~i 







n 



z 



Ui 





C 1 

3 


_J 


in 

y 











L—l 

LL 


l_l 




m 



LU 

LL 

LL 

111 


IX 







LL 



UJ 



LU 

UJ 




3 

z 


Z 


z 



m 









'i. 

b- 

Ul 

!- 




E, 

Ul 


y 

UJ 

LU 

1 






LL 



ill 



y 

72 


Lf. 





Z 



y 

z 

Z 

LU 


z 

m 









Ul 

in 






.n 

in 

z 

y 

y 

n 


y 




UJ 



N 



i 1 

0 

0 

C) 

1_1 





LU 

Z 

CJ 


i 1 



UJ 

y 








UJ 


<i 

b- 




Ui 

>1 

Ul 

n 

z 

z 

u. 


3 




y 






ct 

z 


Li 

Ll 


Z 


Ul 

i'l 


3 

1 1 

y 

X 

z y 

3 









b- 

in 

n 




i'l 

Ul 

in 

1 1 

i—i 

i—i 







I - 1 



lii 



LL 


II 

Z 



ill 


Ul 

'J 

o 


y 

Ul 

0 

£ i 

in 

i 








IJ- 

UJ 

Ui 

Ct 




III 

in 

ir 

LL 

~i 

i — i 

z 

LL 





<T 



m 



i.r 

rH 



_J 


y 


Z 

IL 

y 

0 



n 

Cl 

n 

UJ 








Ui 

Ul 

UJ 

UJ 




£l 

m 

£ 1 


Ll 

LL 

n 


n 




if 1 


m 

i*. 

CD 

y 

.L 


CD 

y 

1 




Ul 

i_i 


y uj 

y 

X 

z 

0 

ui 








Ul 

UJ 

L 






y 

i"i 

III 




i i 





>r 


in 


in 

i i 

i i 

LL 


z 

y 


n 


III 

y 

hi 


y 

z 



i'll 

z 








LU 

LL 


0 




Cl 


Z 

z 

li 

LL 

ll 


i — i 



LU 

X 


Z 

z 

y 

z 


o 

Z 

UJ 

2 


l_l 


ill 

m 

y 

y 

_t- 

UJ 

y 

UJ 

Z 











b- 

b- 




'i. 

y 


n 

3 

i’l 

1 1 

y 

b- 



2 

■ i 


_l 

n 



y 


n 

z 

_i 


Z 

UJ 

27 



z 

UJ 

27 

z 

10 


y 










_i 






i 

y 

-J 

LU 

y 

UJ 

i 




n 


CJ 

Z 


Z 

rH 

3 

0 


UJ 






_j 

LU 

ill 


UJ 

IU 

Z -J 

0 


X 





_• 

ill 


LL 

b- 




Ll 

LL 

i 





U. 

1.1. 



y 

Ll 



LL 

Z 


LL 


UJ 

LL 

u 


Cl 

Ll 

3 

z 



X 

Z 


Ui 

X 

z 

y 

3 




3 

LL 

•i. 


b- 

n 




tL 

y 

Ll. 




y 

y 

y 



3 

>1 

ii 


3 

UJ 

il 

y 

II 

z 

1 1 



z 


•T 

i— 

72 

z 

CD 

3 

z 

Ul 


y 

n 





ii 

b- 

3 


3 





Pi 

i 

z 

III 

III 

m 

3 

i 

3 



i~ 

i3 


ill 

Z) 

.J 


:i 


3 

z 

i'.i 


o 

0 

o 

f i 

o 

1 1 

n 

z 

* 1 

UJ 3 

3 






y 

_I 



l_l 

LU 



a 

_J 

■ i 

n 

Ui 

Ui 

m 

LL 

o 

3 



z 

_J 

CD 

Ui 

3 

1 1 

Cu 

3 

Ui 

Li 

n 

_J 

Z 

_J 

y 

_l 

d 

Jj 

1 1 

X 

n 

CJ 

27 

y 

O 

UJ 

Z 




z 



y 



i.'- 


7 











T 













LU 














UJ 




3 


m 

■X. 



y 


»r 

in 











y 












y 



Ui 

■ i 


rH 








y 




3 

LU 


b- 



>Z 


z 

z 









If. 

m 

3 












y 



27 

_j 


+ 












3 


b- 

m 

LL 

b- 

.1. 


z 

Ll 

Ct. 

z 

LL 

7 

i 


u. 


Cl 

+ 

Z 




T. 



i,i 




LL 

n 

z 


y 

y 


T 



X 



Z 


n 





lL 

z 


b- 

LL 

z 

X 

o 

•i. 

y 

n 

y 

LL 

LL 


i 

y 



y 

y 

CJ 


i I 

T 


y 




y 

o 

y 


o 

o 

LU 

z 

i' l 


z 

CD 

i_i 

y 


0 



X 

z 

Ul 


LL 

l 

z 


Cl 

CJ 


i 

.J 

z 

U. 

o 


il' 

z 

z 


3 




y 

0* 


Jr 




_i 

Z 

7 





n 



n 



_i 


z 



3 

0 

Ui 

I 

Ul 

3 

l_l 


Cu 


I 

o 

X 

LL 

UJ 

y 

J- 

i 1 

i—i 



■ i 

Z 

CD 

Z 

i i 

co 

LU 

y 

LU 


X 

3 


z 


LU 

X 

Z 

CD 

z 

X 

Cu 

X 

_j 

3 



|VJ r 

P-i 

«j0 

UJ 

LU 







UJ 











































27 



_i 




_J 


_j 

_l 

Cl 

Cl 



_J 




LU 







_J 






Cl 

0 




-J 



-J 



3 






j- 


n 

n 

-J 

LL 



n 

n 

i 

1 

1 

_] 

-J 

i—i 

1 




in 


n 

•T 


n 

If. 

j 

z 



ll. 

z 

, 1 

i 

n 

n 


3 


V. 

1 

> 

> 

i 

y 





z 

LL 



U- 

z 


3 

Ll 

V 

z 

z 

T 

11 


•T 


y 

CD 

Z 

n 


Z 

z 

3 

CJ 

z 

3 

N 

z 

27 

-1 

X 

o 


*>: 

3 

Z 0 

z 

z 

0 

i j 

i.r. 

ill 

~7 

Ul CD 

Ui 

LU 

3 

l_l 


_l 

3 

y. 

i -i 



_l 

1 I 

1 1 

Ui 

Ui 

Ui 

y 

i i 

3 



Ui 


y 

n 

3 

ui 

Cl 

». i 


z 

n 

3 

z 

_J 


U 

ll 


C ) 

z 

n 

3 

j- 1 


■ ' 

z 

Cl 

i i c i 

Cl 

Cl 

Z 

LL 







3 












Ui 












Ui 


















m 

LL 

b- 




m 


UJ 

ll 









in 


LU 







T 





n 





il 









m 

C i 



n 

UJ 

■r 




z 


2 

y 












y 






CJ 





Cl 

z 




0 









7 

3 



0 


_L 




y 



UJ 









ilji 



3 






y 






o 




LU 









y 

y 




ir 

7- Z 




72 


ir * * 










'J- 


* * ir 

3 






3 





ir ir 

Cl 




UJ 









0 




+■ 



CJ 

r-- 

CJ 

0' 

© 



CJ 

CJ 

X 

rH 

rH 

rH 


0 

Pi 

’t 



CJ 



Pi 



CJ 

rH 


CJ 

CJ 

N 



r-- 



CJ 


rH 

CJ 

0 




01 

■z 

0 

0 

rH 



0' 

0i 

© 

rH 

rH 

rH 


■J- 

©i 

0 



O 



0 



0 

tH 


0 

0 

0 



0' 



0 


rH 

CJ 

rH 




0« 

i v i 

0 

0 

rH 



0 

0 

0 

0 

0 

0 


Pi 

0 

rH 



0 



0 



0 

0 


0 

0 

0 



0 



0 


rH 

rH 

rH 




■X 

0 

CJ 

0 1 

V- 

f-- 


ID 

CJ 

X 

rH 

Pi 

r-- 

rH 

X 

■J- 

y 


0J 

’t 

0 


rH 



CJ 

rH 


X 

Pi 

't 



Pi 



CJ 


N 

L7> 

't 




f v i 

0 

0 

■n- 

CJ 

N 


r-- 

0 

Pi 

X 

X 

in 

0i 

r- 

r- 



0 

rH 

0 


r-- 



0 

X 


Ui 

r- 

X 



X 



0 


rH 

0 

rH 




0 

CJ 

rH 

rH 

rH 

0 


0< 

rH 

CJ 

0 

0 

0 

0 

0 

0 

rH 


0 

rH 

CJ 


01 



■H 

0 


rH 

rH 

0 



0 



rH 


rH 

rH 

rH 



rH 

rH 

rH 

ID 

Pi 

0 

y t 

\il 

rH 

ID 

lii 

CJ 

CJ 

CJ 

X 

Ui 

Pi 

rH 

0 

x x r -- 

CJ 

X 

Ui 

ID 

bO 

0 

Pi Pi 

CJ 

Pi 

rH 

rH Pi 

Ui 

CJ 

Pi 

Ui 

0 

rH 

Ui 

rH 

0 

r}- 

0 0 

0 

Ui 

rH 

T+- 

X 

rH 

0 

■Z 

CJ 

rH 

■X 

rH 

rH 

’t 

T}- 

’t 

X 

rH 

0i 

0 

't 

r- © x 

X 

CJ 

0 

rH 

0 

rH 

rj- Q 

Ui 

ui 

0 

y n 

rH 

r- 

-t 

rH 

rf ID 

rH 

rH 

CJ 

CJ 

Ui rf 

’+ 

rH 

P-i 

0 

0 

pn 

Pi 

0 

rH 

CJ 

0 

Pi 

Pi 

0 

0 

0 

01 

Pi 

Pi 

rH 

CJ 

rH © CJ 

Pi 

Pi 

0 

Pi 

0 

Pi 

0 Pi 

0 

Pi 

0 

0 rH 

Pi 

rH 

0 

Pi 

rH 

rH 

Pi 

Pi 

rH 

rH 

0 0 

0 

CJ 


P-- 0 

0 0 

0 

Pi 

X 

rH 

’t 

0i 

CJ 

Pi Pi Pi Pi 

X 

rH 


N 

CJ 

Ui 

p- 

CJ 

Ui 

rH 

CJ CJ 

CJ 

CJ Pi 

UO 

X 

rH 

Pi 

■J* 

N 

0 

rH 

CJ 

Ui 

Ui 

ui 

Ui 

©I 

rH 

’t 

N 

0 

Pi 

■•t 

UO 

0 ’H 

CJ 

UO 

X 

CJ 

X CJ 

Pi 

X 

r-- 

CJ 

Pi Pi Pi 

rH CJ 

CJ CJ 

CJ 

CJ 

CJ 

Pi 

Pi’t 

z 

’t -’t ■J” ri- 

■•t 

UO 

U3 

Ui 

X 

X 

X 

N 

N 

0 

01 © 

0 

0 © 

0 

0 

rH 

rH 

rH 

rH 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

Pi 

Pi 

Pi 

Pi 

’t 

't 

’t 

■J - 

UO UO 

Ul 

ID 

UO 

X 

x y 

r- 

r- 

r-- 

0 0 0 0 

0 0 

0 0 

0 

0 

0 

0 

0 

0 

0 

0 3 0 0 

0 

0 

0 1 

0 

0 

0 

01 

0 

0 

rH 

rH rH 

■H 

tH rH 

rH 

rH 

tH 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

■H 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

rH rH 

rH 

rH 

rH 

rH 

rH rH 

tH 

rH 

rH CJ 

CJ CJ CJ 

CJ CJ 

CJ CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ CJ CJ CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ CJ 

CJ 

CJ CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ CJ 

CJ 

CJ 

CJ 

CJ 

CJ CJ 

CJ 

CJ 

CJ 

CJ 

CJ CJ CJ 

0 0 

0 0 

0 

0 

0 

0 

0 

0 

0 

01 01 © 0 

0 

0 

0 

0 

0 

0 

01 

0 

0 

0 

01 0 

0 

0‘ 01 

01 

0 

0 

0 

0 

0 

0 

0 

0 

01 

0 

01 

0 

01 

0 

0 

0 

0 

01 

0 

0 

0 0 

0 

0 

0 

0 

0 © 

0 

0 

0 

0 

0. © © 

O 0 

O 0 

0 

0 

0 

0 

0 

0 

0 

0' 01 0 O 

0 

0 

0 

0 

0 

0 

0 

0 

01 

0 

0 0 

0 

01 © 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 0 

0 

0 

0 

0 

0 0 

0 

0 

O 

0 

0 0 0 

Page 18 






Dr. 

Dobb's 

Journal 

of 

Computer 

Calisthenics 

& 

Orthodontia, 

Box 

310, 

Menlo 

Park 

CA 

94025 





June/July, 


1976 


166 












Lti 















0 


•X 

0 





















h 





»x 


b- 

r—*1 













lil 








3 


X 





'X 

1— 













— 1 

3 







X 


0 



1- 



2 








X 






i i 

2 





LX 

HH 


0 



If! 

lli 


3 








0 





>-L 

X 

•J 




1- 

Li 



•X 


X 01 

<X 

z 

01 







IX 


£,j 






X 

_J 





0 


tH 


b- 

0 X 

h- 

i—i 

X 

0*1 




O 




X 






X 

X 

X 


it: 

. J 

X 

X 


XI 

i—i 

0 III 

01 

0 


i«i 




1- 









2 

111 

IX 

l j 

LX 

D 

0 


0 

1 

2 

z 

X I— 



0 

01 





10 

X 


*3 





1*1 

, 

IU 

L_1 

0 

ill 

i J 

X 

0 


X 

l—1 

01 

1- 

2 

lr‘ 

X 




X 

LX 



III 



b- 



U 


X 


X 


0 

X 

1- 


0 

h- ^ 

LX 

111 


0 

0 



L_l 

UJ 

I- 


2 

b- 


Q 

b- 



i_i 


LU 



LU 


2 

IU 


X 0 

111 

2 


0 

•IT 



0 b- 

t—< 



X 

b- 

2 

X 


IX 


X 


X 

IX 


IU 

3 

2 

ill 

u: lu 

01 



X 



o 

X 

01 

2 

•X 

1- 


t—i 



X 

O 

X 

n 


o 

X 

■j 

2 

O 

t—i 


1- X 

Z 

2 

LU 






i—i 

»—i 

1- 

•X 

X 

2 

X 

X 

2 

X 

•-< 

X 

X 

X 

X 

LU 

t-i 

<_» 

0 

n 

0*1 

n 

t-t 

*:■ 

lil 



LU 

111 

0 

0 

•X 


1—1 

i—i 

t—i 

1—1 







u 

2 

_l 




UJ 



0 

0 

0 



u 

LU 


0 

LU 


0 



1 1 

1- 

X 

L-j 

111 





LX 

7" 


III 0 

0 

111 

2 


b- 


III 

If. 

X 

0 


it: 

1- 


X 

b~ 

X 0*1 

2 

X 

~z- 

■r. 

i~. 

b* 

2 

■X 

LX 

l — 

2 

X 



0 


LU 


”l 


x 

1— 

i0 

1.0 

2 

2 

l.o 

O LU 

_1 

o 

i. i 

o 

i - j 

111 

X I 

o 

m 

* * a 

10 

1 


1— 

0 


>1, 

O 

u 

0 

ill 

1— 

UJ 

>0 

0 

IU 

X 

b- 


_l 

!- 

_i 

X 

01 

2 

o 

X 

LO 

0 h 

0 

z 

X 


LU 

i—i 

01 

01 

UJ 

0 

0 

01 

1- 

0 *-> 

1- 
















3 

01 

1- 

01 



























01 

2 




























01 

tii 

1 












I/I 

_l 

2 


2 


2 

1- 



0 

i- 

LX 


1- 

X 

2 

CJ 




0 





b- 


•r: 

1- 

X 

LX 


LX 


IX 




«r 

2 

b- 

o 

X 

0 

III 



X 

0 

•11 



0 


i0 

X 

2 

> 

o 

U 

J- 

Li 


X 

X 




X 

Z 

2 

0 

0 

X 

hH 


- 


, :• 





2 


jr 

u 

2 

X 

LX 

X 

CD 

LU 

*—i 

I' j 

CD 

i-~ 


LX 

0 

H-l 

X 

• ) 


X 

CD '0 

2 

IU 

0 

X 

■0 Qi 

X 
















X 


LU 












Li 

_J 


iLj 

_l 

Lj 


0 

0 



0 

0 0 

0 

0 


0 

L-j 

1.0 

X 



0 







1 

1 

>j 

1 

1 

1 


1 

1 ft' 

L-« 

1 

1 X 

1 

.1 

1- 1 

X 


01 

in 



.1 

•1. 

X 

Jr 

IX 

N 


r 

«r: 

2 

X 

11 

X 

ll" 

:r: 

X ' • 

U* 

:r 

X u 

r 

•i: 

X 


on 

LU 

0 

i 1 

i. • 

X 


i— 

o 

2 

2 

•0 

x 

i "i 


-J 

o 

-J 

Ll 

01 

_l 

0 

0 

01 

0 X 

0 

o 

X > 

2 

t—< 

X 

LX 

2 

2 

0 

0 

01 

2 


*7' 

2 
















0 

i ‘i 


0 


























2 

X 

-J 

0 

J> 




2 









•. i 












X 

X 

X 

•X 

i 1 




it: 









Oi 
















2 




.X. 









z 













•+• 



LX 




z 


















X 


























1- 


0 




























i',,i 


























i 


X 


it: 






LlJ 

















n 

fi 










0 


X 

3 





01 


b- 







2 

•' i 


b- 

X 



X 




0 


l_j 

•0 

0 




0*1 









KH 




X 

X 


X 




X 

X 

0 

0 





X 


2 







X 

X 


X 

b- 


1— 

h- 




Jr 

X 

X 

X 

0 




LL 


i—i 



X 




1- 

X 


b- 


liJ 

1-1 

2 



0 


X 


LL 

X 

LL 


X 0 


0 



T 




01 

X 


01 

t-H 

2 

2 

i-i 




z 

L— 

b- 

LU 

LL 

X 

X 

0 

0 






i j 




1 j 



n 

i—i 

i—i 

i i 

LlJ 


X 

LU 

01 

2 


LU 

h- 

0 

X 

X 

b- 

b- 




•rtf 



n 



ill 

X 

0 

0 

LX 



*7 

X- 

i-i 

IU 

U 


•0 

X 



t—i 

X 

h- 

i'1 

h* 

LU 



2 

1- 


z 





t—i 


X •_• 


0 

IU 


•-J 

X 


X 

b- 

2 


2 

10 




X 




1—1 

u. 


III 

lil 

0 


•0 0 


UJ 

it: 

X 


X 

X 

1-1 

z 

i—i 

X 

IU 

01 

111 

IU 



X 

LlJ 


0 

0 

X 


2 



X X 

X 

X 

0 

•_j 

X 

X 

•_• 


X 

0 



01 




2 

i—i 

2 



UJ 

111 

•J 

i—i 

b- 


X 

2 



X 

t—l 

X 

X 


z 



lli 

ill 


i~i 


O 


111 

lil 


i—i 

z 

2 

0 

X 


01 X 


X 




I-I 


X 

X 

T 




IU 

1- 


o 

ll 

X 

>0 






III 


0 

0 

L-j 

0 

L— 

LL 


L- 

_1 

LL 

0 


>' 1 



01 




i i 

1-1 



b- 

b- 

b- 

0| 


Z LJ 

X 


X 

Ol 

2 

L— 

01 

h- 

<0 

l—l 


III 


n 

III 


h- 

0 

10 

2 


lil 

lil 

LlJ 

Ul 

2 


i-i 

U 

•0 

•0 

X 

_• 

X 

X 

X z 

I 

l—i 


X 




“1 

•—i 

0 

b- 

CM 

01 

0 

01 

01 

i-i 


X > 

0 

b- 

0 

h- 

*-> 

0 

1- 

LL 

1-1 








X 




+ 







X 

















2 




ll 







1 0 

















h-i 




"1 







2 











2 



2 







X 

b- 


0 

X 

1- 


X X 

V 


u: 

01 

0 






n 






X 




i—i 

2 

01 

X 

h- 

2 


Z Z 

•ri 


b- 

b- 

X 

z 












2 




X 

1 


2 

IU 


i-i 

2 




•-J 

-V 




LU 


CD 


2 



1—t 

i—i 

o 

•0 

X 

i—i 

2 

2 

U- 

•_• 


h- X 

2 


LL 

•0 


X 

■H 


X 








0 











0 o 






















0 

1 

0 

0 

0 


•0 X 

0 

0 

i-j 

0 









V 




X 




i—i 

1 

J 

. J 

..J 

0 

b~ 

X 

0 

I 

0 

0 



i—i 


J-. 


N 


i j 


“I 

ill 

1 

O 

>0 

* * 

y: 

7 

X 

i: 

X 

>1. 

111 

01 

X 

•0 

X 

X 

•0 

•0 

LL 

N 

z 

0 




2 


X 

0 

i—i 

0 

0 

0 

01 

CJ 

0l 

01 

•0 

X 

Z b- 

0 

—X. 

0 

>_• 


Z 

U 

LL 

l—l 








2 











X 01 












H 



2 


i—i 

1 










X X 




tH 








l' j 



n 


01 

10 










X b- 

X 



X 








2 






2 











X 



X 








X 



IX 


•it- 

i—i 











: X 



X 








i v i 

2 

tM 

M 

tM 


rH 

■H 



rH 

rH 


rH 

2 











rH 





1-1 



i-1 



i-1 






i-1 



rH 

rH 

CM 

rH 

rH 

i-1 






■H 


rH 

i-1 

-t 





■H 

0 

0 

rH 


tH 


rH 

rH 



rH 

rH 


rH 

0 











■H 





0 



0 



•0 






0 



rH 

rH 

0 

rH 

rH 

0 






rH 


rH 

0 

0 





0 

0 

0 


0 

0 


0 

0 



0 

0 


0 

0 











0 





0 



0 



0 






0 



0 

0 

0 

0 

0 

0 






0 


0 

0 

0 





■H 

r- 

M 

M 

rrl 

fO 


\A 

UJ 



UJ 

UJ 


rH 

CM 











UJ 





M 



0 



N 










UJ 

l v l 

UJ 

rH 

0 






rH 


rH 

r--- 

i-1 


rH 



UJ 

CM 

r-- 

'■D 

CM 

‘•D 


'•D 

UJ 



CD 

UJ 


'•D 

rH 











'•D 





2 



UJ 



CM 






r- 



r-- 

UJ 

0 

VD 

X 

2 






UJ 


*D 

CM 

X 


0 



0 

M 

rM 


CM 

0 


0 

0 



0 

0 


0 

0 











0 





CM 



CM 



CM 






0 



0 

0 

0 

0 

0 

rH 






0 


0 

iO 

rH 


0 



CM 

UJ 

CM 

CM 

UJ 

CM 

tM 

CM 

CM 

UJ 

rH 

CM 

CM 

M 

CM 

UJ 

rH 







UJ 

2 

UJ 

CM 

CM 

CM 

UJ 

rH 

CM 

2 

0 

CM 

i-1 

i-1 

i-1 

rH 

rH 




CM 

UJ 

10 

rH 

CM 

LO 

CM 

CM 

UJ 

rH 





CM 

i-1 

CM 

LO 

CM 

X 

X 

0 

i-1' 

IT' 

rM 

CM 

UJ 

rH 

UJ 

rl 

M" 

UJ 

rH 

rH 

2 

UJ 

UJ 

UJ 

rH 

rH 







0 

0 

rH 

UJ 

rH 

CM 

N 

r-- 

0 

r- 

r- 

rH 

rH 

M 

0 

© 

rH 




i-1 

rH 

rH 

’ t 

-t 

rH 

’t 

’t 

■H 

rH 





UJ 

UJ 

UJ 

rH 

i-1 

r-- 

N 

rH 


0 

ri 

ri 

0 

M 

0 

0 

0 

0 

0 

O 

0 

0 

l v l 

0 

ri 

M 







M 

rH 

rH 

0 

0 

0 

rH 

CM 

ri 

tH 

CM 

i-1 

0 

0 

i-1 

i-1 

i-1 




M 

0 

0 

0 

0 

i-1 

0 

0 

i-1 

i-1 





0 

i-1 

0 

i-1 

M 

rH 

i-1 

M 

0' 

i T j 

ri 

CD 

■•H 

2 

r- 

CM 

I'O 

'•D 

rH 

CM 

M 

CD 

rH 

CM 

UJ 

0 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

CM 

M 

2 

N 

0 

rH 

CM 

M 

'D 

r-- 

0 

i-1 

-t 

UJ 

0 

rH 

CM 

CM 

CM 

CM 

UJ 

'•D 

f-- 

CM 

UJ 

0 

i-1 

X 

rH 

CM 

CM 

CM 

CM 

CM 

UJ 

'D 

rH 

-t 

\- 

0 

CM 


UJ 

10 

UJ 

'•D 

'•D 

'•D 

r- 

N 

r- 

O 

0 

0 

0 

rH 

rH 

rH 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

ri 

i-1 

r-i 

r-i 

i-1 

i-1 

O’ 

••t 

-t 

"t" 

UJ 

10 

UJ 

IT' 

UJ 

L0> 

UJ 

10 

UJ 

'■D 

X 

N 

r-- 

N 

0 

0 

0 

0 

0 

0 

0 

0 

rH 

rH 

rH 

CM 

CM 

CM : 

•H 

•rH 

rH 


tM 

•H 

rM 

rH 

rH 

CM 

CM 

CM 

CM 

CM 

CM 

CM CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

M 

i'O 

i-1 

i-1 

i-1 

i-1 

iO 

I -I I -I 

iO 

i-1 

i-1 

iO 

Mj 

l v l 

i'O 

M 

f0 

ri 

ri 

r0 

i"0 

M 

M 

M 

M 

M 

M 

ri 

M 

ri 

M 

M 

ri 

M 

M 

M 

M 

ri 

M 

M 

10 

i-i 

10 

ri 

i-1 

i-1 

i-1 

i-1 

i-1 

i-1 

i-1 

i-1 

i-1 

iO 

i-1 

i-1 

i-1 

M 

i-1 

i-1 

i'O 

i-1 

i-1 

i0 

i-1 

i-1 

i-1 

0 

i-1 

0 

i-1 

ri 

i-1 

fO 

i-1 

i-1 

fO 

ro 

i-1 

i-1 

m; 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

© 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

•0 

0 

0 

0 

0 

0 

0 

0 

0 

© 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

O 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

CO 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

© 


b- 






1.0 


2 























111 


i 







ill 
















i j 


ijj 





2 


X 
















• 1 


' i 





X 

z 


1-0 













LO 


u 







111 

■1 

LL 

X 




A 

1.0 








0*1 


0*1 


2 

X 




3 

LL 

UJ 

X 




1— 

X 








X 




2 

X 




1—■ 

in 

01 

L— 





X 








X 

•T 

~i 


“*! 

b- 




LlJ 

O 

X 

0*1 



ill 


h* 







ll 

l"l 

\— 

1- 


1 

o 


X 


LU 

it: 

IL 

i—i 



X 


10 






111 Li 

i i 

ill X 




1 1 

u 





LL 

X 

rn 




J- 

1—1 







X 

•X X 

b- 

X 


LJ 

If 

LL 

•-J 


(Lj 



LU 



2 

b- 







>• ' ill 


b- 

n 

•X 



>L. 




LU 

CD 

0*1 

LL 



X 

b- 

X 






•T 

X 

b- 

2 

L— 


b~ 

J 

• ) 

X 


CD 

Z 

X 




X 


X 






X X 

i—i 

Z X 




2 

CJ 


1-1 


2 

t—i 

X 

X 



•X 

LL 

X 






> T •-• 


III >.< 

X 

I- 


ui 


X 



X 

it: 

1- 

X 










X X 

2 

:-** ii 

i—i 

X 


2 

1- 

i—i 

z 


X 

0 

0*1 

•X 



z 


1- X 






Q 

X 

IU 


lil 


III 

0 


it: 


CJ 

i-j 

1—1 




0 

1- 








1 

if ', b- 

ll. 


X 

X 

U. 

b- 

X 

Li 



0 

X 



HH 


X b- 






b- 0*1 

b- 

• 01 

2 

2 

' 1 

Q 

1- 

til 

1— 

' ' 


b- 

X 




L— 

h- 

b- 0*1 





X 

lil ill 

X Z X 

_J 

i 'i 

n 

Z 

D 

X 

III 

•X 


_ i 

LL 

X 



•_i 


3 X 





• J 1- 


H-l h* 

i—. 

i i 

_i 

i—i 

O 

b- 

X 

X 

iii 

LL 


0*1 



_i 


U X 

















IT 

b- 

X 




X 

LJ 






l—l 






CM 





CM 

1—1 


1 




1- 

2 






1- 






+ 





+ 

1- 

1 j 

•X 




I/I 

•1. 






_1 





1- 

b- 


H 



1— 

1 






2 

2 

l_i 






2 


X 

i~i 

to 



•_• 



i0 

o 

i- 




2 

i—i 

i_ 

1— 3 





LL 



X 

2 

X 

2 


1- 

i-1 


z 

LL 

b- 




01 



> 1-0 

X 





•X CM 


X 1- 

_J 

h- 

J 





X 


1- 


X 

Lj LU 

LL 



1— X 

L_! 














b- 


o 
















_J 



X 




\ 


t—l 

X 

H 

H 

X 

i-i 

2 

X 




b- 

X 

i—i 


h-I 

W 

1 



1 

i—i 



o 

2 

b- 

111 

0*1 LO 

to 

3 

t— 

X X 

X 

LL 

LL 

z 


l' j 



•T 



•T 

X 

N 



•X 

3 

0 

Z) D 

3 

u 

i 

X u 


1 _ 1 


X 

1-1 



i—i o 

i—i 


i—i 

t—i 


i 1 

LL 


•I 


•X 

X 

LL LL 

LL 

X 

'_• 

CJ X 

u_ 

LL 

U. 

X 

b- 












h- 

1- 

III 




.J 


















0* 



1- 



0 

j- 

rH 





J- 







o 






H 

X 

•X 



X 

LU 

i_i 





b- 















b- 





1— 












X 







* 

-+- Lj 




* 







X 


X 


h- 

i— 


b* 

z x 

*-* X 


xh- a 

O ill X X 





•X 




i- 

X 



X 

X 



X 





1— 


X 

X 

X 

X 




b- 

h- 


X 





01 


in 

z 

X 

X 



X 

2 

HH 


b- 







X 


1— 

X 

X 


2 

i-i 

2 


l_J 



•r 


b* 


01 

X 

10 

CJ 


X 

i—i 

0 

1—4 

X 

z 



i- 


X 


01 




CJ 

\ 

X 

X 

X 

2 

X 



•r 


1.0 

X 

X 

3 

X 

b- 


o 




t—i 




ill 


X 

0 

2 

X 

—1 

01 

X 


b- 

X 

X 

X 

X 





X 

0 


z 

X 

X 

f~1 

X 

y 

z 

~Jr 


0 



h- 

UJ 


X 

b- 


1—1 

1—1 

X 

1-1 

X 

1—1 

0 

b- 

X 



_i 




0 

h- 


X 



2 

X 

2 

X 




X 

i-i 


0 

X 

0 

0 


b- 

X 




X 

X 

X 

X 

b- 

h- 


01 

i- 

X 

X 

L— 

01 

2 

1— 

H 

b- 

01 

0 

z 


0 

0 


01 

3 

2 

n 

X 

X 

0 

X 

X 

X 

2 

0 

1-1 

t-1 

0 

0 


2 

•-j 

i—i 

X 

0 

b- 

0 

0 

01 

01 

i-i 

X 

b- 

\— 


X 

v 













3 




X 

01 



X 









0 

0 


ill 

b* 

2 



3 









X 

X 


Z 

1-0 

2 

X 

z 

X 



2 

b- 

X 

0 

b- 

X 



b- 

<r 

__ 

1-4 

1- 

1—1 

i—i 

2 


0 

01 

b- 

X 

2 

X 

h- 

H 



X 


_J 

b- 



i0 

0 

X 

2 

> 

X 

2 

X 


i— 

2 

1-0 

X 

0 

0 

X 

X 

rH 

1—1 

z 

X 

2 

o 

1-1 

X 

X 


0 














01 

h- 


O 



-1 

X 





X 

Ci 

0 

X 


z 

0 

h- b- 


1-1 

1—1 

_J 

X 

1—1 

~J- 

t—i 


X 

X 

z 

X 

X 

1-1 

O 

3 X 

H 


X 

X 

X 

X 

0 

X 

N 

X X 

X 

X 

2 



0 X 


li 

-1 

0 

CJ 

X 

2 

0 

^ 0 

01 

01 

CJ 

*-> 

X 

h— 


X 














z 

J* 

i~i 

2 

ill 



X 










1-1 

b- 

P 

i—i 

2 



X 










X 




2 



z 












* P r 

C * 




1—1 










* * 



H 


b- 

z 


z 

"J 


3 

0 

■r"\ 

0 

CJ 

X 

CJ 


0 


X 


X 

X 

Q 

X X 

X 

b-. 

0 X 

CJ 

V 

0 O 



X 

+ 

X 

1 — 


0 

X z 

X 

X 

0 X 

0 


X z 

0 

3 

X 

0 X X 

0 X 


z 

X CJ 

II X 


o z 

0 

01 

X ►-• 

X X 

1-1 


X 

0 



X 




X CJ 

X 

X 


0 



0 

X X 

I—1 

0 X 

X z 

> 

X 

CJ 

X »-« 

z 

0 

X 


b- 

Z 

X 

■£ O 






i v i 

X 

rl 


in 



l v l 








0 

0 

0 


0 



0 








0 

0 

0 


0 



0 





CM 


"t 

0 

CM 

0 


CM 

UJ 


0 





0 


CM 

■•t 

'-D 

CM 


UJ 

■H 


CM 





0 


0 

•0 

M 

0 


0 

0 


0 




'D 

'D 

0 M 

'•D 

CM 

UJ 

ri 

-t 

UJ 

'•D 

0 

i-1 

UJ 

UJ 

\r> 

i- 

r- 

ri 't 

F- 

0 

rH 

0 

0 

rH 

r- 

rH 

0 

■•t 

CM 

0 

rH 

l v l 

l V l 0 

i-'l 

l v l 

r'l 

M 

0 

f0 


ri 

i-1 

i-1 

i-1 

l v l 


Ml 

0 



rH 




0 

0 



r-- 




|T1 

0 



0 




0 

0 


UJ 

UJ rH rH 

rH 

rH 

rH 

i-1 rH 

i-1 

rH 

X 

rH 'D 0 

CM 

't 

rH 

i-1 rH 

CM 

rH 

i-1 

i-1 i-1 i-1 

i-1 

i-1 

Ml 

i-1 i-1 

i-1 

Ml 


0 

rH 

i-1 

"t" 

UJ 

r-- 

CM 

UJ 

0 

rH 

't 

'•D 

i- 

CM 

CM 

CM 

CM 

CM 

CM 

i-1 

-t 

UJ 

'•D 

CM 

CM 

CM 

CM 

CM 

CM 

i-1 

Ml 

M- 

-t 


’t 

-t 

UJ 

UJ 

UJ 

UJ 

UJ 

UJ 

UJ 

UJ 

UJ 

UJ 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

•0 

0 

0 

0 

•0 

•0 

•0 

0 

0 

•0 

0 

0 

0 

ri 

i-1 

Ml 

Ml 

i-1 

Ml 

i-1 

i-1 

i-1 

i-1 

i-1 

i-1 

Ml 

i-1 

i-1 

Ml 

i-1 

Ml 

i-1 

i-1 

Ml 

Ml 

i-1 


0 

O 

0 

0 

0 

0 

0 

•0 

•0 

0 

•0 

0 

0 

0 

0 

© 

•0 

0 

0 

0 

0 

•0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

•0 

0 

0 

0 

0 

0 

0 

0 

•0 

0 

•0 

0 

0 

0 


'D 

'•D 

'•D 

X 

rH 

CM 

i-1 

’ll- 

UJ 


•D 

CD 

CD 

0 

tH 

rH 

rH 

rH 

Ml 

’t 


UJ 

UJ 

U‘. 

UJ 

'•D 

'•D 

CD 

'•D 

'D 

'D 

UJ 

'D 

'•D 

r- 

r-- 

r- 

r-- 

r-- 

F- 

F-- 

r-- 

0 

0 

•0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

© 

0 

0 

0 

0 

0 

0 

0 

i-1 

Ml 

Ml 

Ml 

Ml 

i-1 

i-1 

i-1 

i-1 

Ml 

i-1 

i-1 

Ml 

i-1 

i-i 

i-1 

i-1 

i-1 

i-1 

i-1 

i-1 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 


0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

10 

0 

0 

0 

0 

0 

0 


r-- 

0 

CM 


rH 



0 

CM 

rH 

rH 

Ml 

Ml 

rH 





■M- 

■H 

0 

0 

rH 



0 

0 

rH 

rH 

0 

0 

rH 





Ml 

0 

0 

0 

0 



0 

0 

0 

0 

0 

0 

0 





0 

i-1 

CM 

UJ 

CM 


UJ 

CM 

i-1 

rH 

UJ 

0 

IT!' 

Ml 


0 



0 

0 

0 

-t 

F-- 


rH 

i-1 

0 

CO 

X 

't 

0 

X 


0 



CM 

0 

rH 

0 

0 


0 

•■H 

0 

0 

0 

rH 

rH 

0 


0 



rH 

rH 

UJ 

UJ 

rH 

CO 

'•D 

CM 

UJ 

CM 

CM 

UJ 

i-1 

CM 

-t 

CD 

rH 

Ml 

X 

-t 

rH 

rH 


r- 


r-i 

rH 

't 

’t 

rH 

0 

in 

rH 

0 

rH 

UJ 

0 

0 

i-1 

i-1 

0 

rH 

M 

Ml 

Ml 

0 

0 

i-1 

Ml 

0 

0 

0 

0 

Ml 


’t 

■M- 

N 

CM 

UJ 

0 

i-1 

'D 

CD 

rH 


r- 

CM 

UJ 

0 

0 

0 

0 

i-1 

't 

CD 

i- 

r- 

r- 

r- 

0 

0 

rH 

rH 

rH 

rH 

CM 

CM 

CM 

Ml 

Ml 

■M- 

’t 

r t 

't 

’*■ 

't 

't 

-t 

0 

0 

0 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

■H 

rH 

rH 

rH 

i-i 

Ml 

i-1 

i-1 

i-1 

Ml 

i-1 

i-1 

i-1 

Ml 

i-1 

i-1 

i-1 

Ml 

Ml 

i-1 

i-1 

iO 


Ml 

Ml 

i-1 

0 

© 

0 

0 

0 

0 

0 

0 

0 

© 

0 

0 

0 

0 

0 

0 

O 

© 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

© 

0 

0 

0 

0 

0 


June/July, 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, 


Box 310, Menlo Park CA 94025 


Page 19 


167 
















b- 











1- 



b- 










































H 


3 










H 

3 


X 

3 













z 





X 


CJ 





2 

i i 


X 

0 




LL 








b- 

3 


O 


X X 


X 

b- 




3 

CD 


t- 

CJ 




Ui 








0 

O 




X X 


X 

3 



in 

o 








K 



X 





o 

O X 

21 


J— X 



X 



CQ 

u 

2 


b- 

2 

UI 



Z 



LU 





X 


2> 

21 


o 3 


X 

2 



X 


X 


0 

y 

X 



4—4 

Cl 


H* 


1- 


h- 

3 

X 

4—4 

3 

X 

X X 



1—4 



X 

X 

3 


2 

3 

CD 



o 

UJ 

CL 

O X 


> 


X 

X 

X 

h- 

X 

Cl 

X 



X o 




Ci 

X 

X 



X 

X 

X 


CL 

b- 

LU 

X IU 


b- X 

X o 


X X 

o 

Cl 

X o 

X 

X h- 

V 



c 

X 

0 

X 

X 

O 

X 

X 



(j 

r— 

LL b- 



_1 

X X 

b- 

o 

0 

cj 

X 

I b- 

\ 

CD 

X 

X 

X 

X 

o 

0 

X 

4-4 

CJ 

in 

X 


Ct 

<X 

LQ 

X UI 


X 

4-4 

~ 3 

o 


X 



o 


CJ 

1— 


X 

X 




1- 




CD 


LxJ 

LL 

4-4 

X -• 


o iC 

'X X 

2 

h- 

2 

h- 

b- 


X 


X 2 



I 

b- 

H- 

h- 


X 

b- 




X 

<X 

CD 

o o 


X 




2 


2 

2 

h- X 

X 

4-4 -1 

X 


CD 

21 

2 

2 

X 

X 

2 

CD 

h- 


U- I LU 

UJ 

O X X 

X X 

X 

X 

X 

X 

X 

X b- 

o 

o 

o 

X 


X 

X X 

0 

X 

X 

X 

X 

c 

3 

cj 

CL 

H X 



4—4 

4-4 1-4 

4—4 

X 

4—4 

X 

x 

X o 

X 

2 O 

X 

4—4 

X 

2 

21 

X 

X 

CD 

x 

X 

X 

2 

X 



ZD 

X b- 




X 


X 

X 

2 

X 


X 



X 

X 

X X 



X 


2 i 

I 


X 

LU 

O Cl 


3 

h— 

X 1— 

X 

X 

X 

X 

X 


X 

h- 

3 X 

h- 

X 

X 

X 

X X 

h— 

\— 

X 

0 



I— 

_J 


CQ 

H 

X 

L0 

x in 

X 

o 

X 

o 

o 

H 

X 

ui 

1- X 

in 

o 

CD 

o 

o 

CD 

in 

x 

o 

X 

h- 


Ui 

1—4 

O 

ID O 

X 

2 

X 

3 X 

ZD 

X 

ID 

X 

X 

X 

I 

X 

X I 

X 

o 

X 

2 

2 

2 

X 

X 

X 

o 

X 

0 

UI 

jC 

b- 

X h- 

UI 


t- 

*-> j— 

*-> 

Cl 

*"> 

Cl 

Cl 

0 

u 

h- 

X o 

h 

X 

X 

4-4 

1—4 

4—4 

h- 

2 

c 

X 

0 

0 





X 
























V 





o 
























X 

H 

X 


o 

0 

4—4 


2 

X 


2 



I 




Y 

I 






X 


1“ 

X ' 

n 

Z 

X 

X 

CQ X 

rl 

1- 


4—4 

o 


4-4 



o 

X 


CD 

X 

CD 

2~ 




CQ 

o 


in 

o 


LL 

4—4 

•V 

3 


> 


1— 

h- 


f— 



Of 


CQ 




. 




X 

X 


X 

X 1 

X 


jiL 

UJ 

x a 

X 1- 

X 

O cH 

in 

o 

Cl 

X 

X 

2 


rl 

X 

o 

2 

X 

X 

a 

3 

b- 

2 

X 

b- 

2 


Cl 





_J 





















X 


x 

_J 

•r 

j 

x > 

4-4 

_l 

X 

X 

N 

X 


X 

X 

X 

> 

4-4 

*> 

4-4 



X 

X X 

4-4 

N 

X 

X 

X 1 

X 

I 

o 

O 

Cl o 

X X 

X 

N X 

2 

o 

X 

o 

o 

X 

o 

X 

n o 

X 

W 

b 

2 

2 

2 

X 

2 

o 

X 

2 


UI 


_! X 

_J o 

o 

*-> O 

•"> 

Cl 

*-> 

Cl 

Cl 

0 

X 

o 

X X 

CD 


X 



4—4 

o 

*■> 

c 

o 

0 







X 









X 













X 






o 









o 













in 















f— 




















2 









LQ 













* 

Hr 


I- 





















3 H 
X Z 
























2 3 









h- 






V 









4-1 10 









D - 






CD 









0 









b- 






X 







X 


OJ 


X 


X 











H 


X 







X 


X 

X 



CQ 


0 






CQ 


<3 





0 


Zh X 


0 

o 

0 



in 


b- 





X 



X 





b- 


X X 


0 

X 



X 

X 

2 






C 

l~ 


CQ 







2 0 


X 


0 

x 

0 

X 

UJ 

b- 





C 

X 

1— 

CQ 





b- 


0 



1- 

h* 

X 

X 

c 


3 





X 

CQ 

J.- 

X 





z 


h- 


UJ 

X 


X 

in 

c 


X 






X 

b- 

2 





3 


X 2 


2 


X 


in 

X 

V 

b- 





X 

X 







0 

M 

4-4 LU 


4-4 

X 

0 

b- 

X 


X 

3 




X 

0 


n 

H 

2 

2 



0 


2 


X 

4-4 

0 

3 

2 

h- 

2 

0 




0 

X 


H 

_t 

X 

0 




CQ 

XXX 



X 

X 


3 






X 

in 



X 

3 

X 



X 

3 

O X 

0 

1- 

X 


1- 

2 

X 

h- 

X 




X 

CQ 


X 

h- 

h- 

X 



X 

2 

X 0 

1—4 

x 

2 

1- 


X 

2 

X 





X 

UJ 


\ 

3 

X 

X 



X 

4-4 

X X 

2 

X 

3 

X 

0 


4—4 

CQ 

CD 







i0 

0 

X 

X 



01 

2 

X 0 

1- 

2 

0 

X 







X 

X 

2 
















CQ 






2 

0 

0 

CQ 

X 




0 


0 








c 







QD 

X 

2 

f— 






2 








X 

X 

2 


X 


x 

+ 

X 

X 

CQ 

X 

X 

b- 

2 


X 



h- 


h- 

2 


2 

h- 

4—4 

X 

X 


c 

\ 

X 

0 


X 

1- 

X 

X 

I 

2 

0 


X 


CQ 

h- 



~i 

X 

2 

X 


2 

X 

X 

__ 

X 

X 

3 

2 

2 

10 

2 

.. 


X 


X 

0 


X 

0 

X 

2 

o 



\ 

■J- 

X 

CQ 

CJ 

0 

0 


CO 

0 

X 

M 

2 0 

0 

7»- 

CD 

X 









b 








0 









X 

X 

C 

X 







X 

X 









X 



4-4 

X 

X 

X 

X 

1— 



> 

4—4 

4-4 

X 

X 

X 



0 


1—4 

X X 

X 


X 

X 

X 

X 

X 

X 

X 

2 

X 

X 

X 

X 

X 

X 

2 

2 

X 

T* 

0 

3 

0 0 

(J 

X 

0 

0 

X 

o 

o 

CQ 

0 

X 

C 

c 

0 

X 

X 

CD 

CJ 

y. 

C 

0 

UJ 

2 

CQ 

3 0 

0 

0 


0 









2 








X 








X 






CQ 


X 

X 





CQ 


X 

0 







CD 






C 


2 

X 





2 


X 

2 







2 






X 



0 





X 



X 







X 






X 


t Hr 

Hr X 





0 

HI 

f Hr 

* X 






































0 








0 

CM 

r- 





































■•t 








rt- 

CM 

CM 





































0 








0 

rH 

rH 







tH tH 


■H H M 


’t 


-t 


*fr 



T 






y 





■M" 


'•JD 

y 

’t 

CM 

'•£' 

H 

0 0 



’t 

N 

0 

CM 

0 

HZ' 

in 

r-- 



CM 


0J 

in 

H -H 


■H 0 0 


0 


0 


0 



0 






0 





0 


0 

0 

0 

0 

0 

rH 

rf |Q 



0 

■M- 


0 

0 

rH 

0 

rH 



0 


0 

0 

0 © 


0 0 0 


0 


0 


0 



0 






0 





0 


0 

0 

0 

0 

o 

0 

M rl 



0 

M 

M 

0 

0 

rH 

rH 

rH 



0 


0 

0 

\n m 


r-- 0 '■d 


10 


CM 


UI* 



'•JD 


UD 



0 

'•JD 




't 



CM 

'•JD 

y 

CM 

'•£» 

rH 

'•JD rH 

in 


CM 

0 

'•JD 

CM 

0 

HZ' 

'•£' 

’t 


M 

0 


fQ 

UD 

111 y 


’t 0 '.JD 


y 


■H 





'■jD 


rH 



rH 

'•Q 




CM 



'■D 

'•£' 

<•£) 

0 

l v l 

in 

r- 0 

0 


rH 

0 

N 

0 

-t 

0 

CM 

rH 


0 

CM 


0 

|Q 

0 0 


0 0 0 


0 


rl 


0 



0 


0 



rH 

0 




0 

0 


M 

0 

rH 

tH 

CM 

0 

0 rH 

rH 


CM 

CM 

0 

rH 

rH 

rH 

rH 

rH 


0 

0 


0 

\A 

CM CM 

N 

cm r •- h in 


CM 

CM 

CM 

\n 

CM 

in 

l'Q 

M 

X 

•£| 

0 

rH 

'•JD 

CM 

'•jD 

M 

■M- ’t 

*-Q 

CM 

in 

UD 

M 

rH 

in 

uz« 

CM 

HZ' rH HZ' 

111 

in 

rH 

rH 

in 

liD 

rn 

HZ' 

r-- 

'■£) 111 

rH 

UD 

CM 

liZ' liZ* 

in 

CM l A 

y r- 

r-i 

N CM 0 tH 

r- 

■H 

r-- 

0 

rH 

N 

0 

in 

0 

U) 

N 

rH r-- 

N 

rH 

r- 

y 

rH 0 

r- 

0 

0 

rH 

0 

-t 

rH 

rH 

y 

rH rH rH 

rH 

H 

y 

'-£• 

rH 

rH 

0 

rH 

rH 

0 rH 

N 

CM 

M 

rH rH 

rH 

\ A U"' 

0 o 

■H 

0 rH 0 M 

CM 

IQ 

CM 

n 

0 

f-Q 

0 

0 

M 

rH 


M 

rH 

M 

n 

rl 

0 

0 0 

M 

n 

0 

M 

M 

0 

M 

i'Q 

0 

M l v l rH 

rH 

M 

0 

0 


M 

M 

rl 

rH 

rH CM 

rH 

M 

M 

0 0 

iA 

(A 0 


0 (A 


r- CM \ A '-Q rH 

CM 

in 

'■0 

rH CM 

in 

UJ 

r-- cm 

M 

in «.q 

N 

rH 

•■t 

ID 

ud r-- 

0 

CM 

\n 

'•Q 

rl 

"t 

-t 

’t 1 4' 

r-- 

CM 

in 

0 

M ’t 

0 

CM 

M 

M 

M 

M 

'•£' 

rH 

’t 

r - cm 

'•£• 

CM IQ r •- 

X 

r- 

N 

0 

CM 

UZ' '•D 

N 

CM 


in Hz* 

in 

111 '•iD '■£1 '-£| N 

r- 

r-- 

r- 

0 0 

0 

0 

0 rH 

rH 

rH rH 

rH 

CM 

CM 

CM 

CM CM 

M 

M 

(A 

M 

•tf 

’t 

’t 

y -m- 

-t 

UI 

in 

'•jD 

l£. '.Q 

N 

r-- 

r-- 

N 

r-- 

r- 

r- 

0 © 

0 rH 

rl 

CM CM CM 

CM 

CM 

CM 

(A 

\A 

M M 

r-1 

-t 

’t 

O 0 

0 

0 0 0 0 0 

0 

o 

0 

rH rH 

rH 

rH 

rH rH 

rH 

rH rH 

rH 

rH 

rH 

H 

rH rH 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

rH rH 

rH 

rl 

rH 

rH 

rH rH 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

CM 

CM 

CM CM 

CM 

CM CM CM 

CM 

CM 

CM 

CM 

CM 

CM CM 

CM 

CM 

CM 

’t 

-t 



’t 

’*■ 

y * 

’t 

Tj- 

’t "t 

y 

’t -t 

y 

-t 

’t 

y 

-t y 

"t 

’t 


"t 

't 

y 

’t 

-t 


’* 

Tf- 

't 

"t , t 

■M - 


-t 

’t 

y 


"t 

"t 

't 

rf y 


y -t ’t 

y 

y 

•y 

■■t 

-t 

rf rf 

-t 



0 0 

0 

0 0 0 0 0 

0 

0 

o 

0 0 

0 

0 

0 0 

0 

0 0 

0 

0 

0 

0 

0 0 

0 

0 

0 

0 

0 

0 

0 

0 0 

0 

0 

0 

© 

0 0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 © 

0 

0 © © 

0 

0 

0 

0 

0 

0 0 

0 

O 

0 

© 0 

0 

0 0 0 0 0 

0 

o 

0 

0 0 

0 

0 

0 0 

O 

0 0 

0 

0 

0 

0 

0 0 

0 

0 

0 

0 

0 

O 

0 

0 © 

0 

0 

0 

0 

0 0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 0 

0 

0 0© 

0 

0 

0 

0 

0 

0 0 

0 0 0 



















h- 


















UI 

CJ 





H 






















“ 4 - 





2 


















X 





4—4 




U‘l 














h- 




X 





~1 


















X 





2 




X 














3 




X 





0 






X 








O 






X 



4—4 




UD 














X 


LQ 


2 





0 






0 X 


X 






X 




X 


0 



X 



h- 

LQ 





X 






2 



2 


X 


4-4 








LQ 



0 


0 









X 

X 


Cj 




1- 


4—4 

X 





0 






0 


rH 

4—1 


X 


X 




UZ' 

X 


b- 

X 



u_ 0 0 

2 

0 


X 

X 



0 



0 

X 


X 

b~ 


I- 

4-4 


2 

X 





0 


X 




X 





l- 





'•£« 

UZ' 

2 


X *-< 




0 b- X 

2 

X 


b- 

4-4 

h- 


1- 


X 

0 

0 

X 


4-4 


X 

2 


4—4 

0 





■X 


4-4 




X 


+ 

# 


LQ 


0 



UZ' 

CM 

4-4 

0 

0 2 

LQ 



X 

0 



X h- 

4-4 




0 

X 

X 

X 

2 

r~ 



4—4 


X 

0 











0 




X 

1—4 


h- 

0 


CM 


X 

X 

0 

LQ 



X 2 

0 

X 


0 

2 

2 


X 




X 

h- 

UJ 

4—1 


b- 

X 



X 



0 


X 


1— 


X 


X 


LQ 

0 0 

0 






A 


X 

X X 

X 



b- 0 0 


0 



0 

4—4 


0 


2 

H 


0 


X 


0 



1- 






X 


X 




1 


X 

2 

Cl 

X 



0 


v 


b- 

N 


X 



X 0 4-4 

X 

X 


LQ 


X 


0 


4—4 

4-4 

0 

X 




2 

I 


X 

b- 



X 


X 


IQ 


1 


X 

X 

2 


X 

X 



1- 



X 

2 


X X 

0 



X b- 

X 



X 

X 


O 

X 



2 

h- 

X 

1- 

2 



0 



2 




Ll 




X 


1 

0 

4—4 

X 




l- 



X 

4-4 

X 

X 

0 > 

0 



X X 

1—4 

~7 


j> 

0 

0 

•=o 



X 

4-4 


X 

X 0 


X 

4—4 


X 

LU 



X 


0 


Jr 



T 

X 

4-4 

# 

0 


X 

b- 

rH 

4-4 


2 

4—4 

X 0 

X 



4-4X2 

X 

X 


0 

0 

X 

m 

X 


X 

X 

LQ 

X 


X 


4—4 

I 


4—4 




X 


X 


X 





4—4 




■=« 


X 

X 



X 

X 


2 




(1 4-4 


2 


2 

X 

~z~ 


0 





CD 

X 







LU 



0 



X 

X 


2 


2 

H 

X 

X 

0 

X 



~1 

LQ 

I - 

I~1 

X 

X 

0 

b- 



X X h- 

X 


X 



2 

X 

X 


X 

0 

X 


X 

h* 


X 

h- 


X 

X 


X 

h- 


0 

o 

X X 


X 


X 

3 

0 

2 

X 



2 

LQ 

—1 

LQ 

X 

0 

2 

X h- 

X 

LQ 


2 3 LQ 

> 

1— 

0 


X 



—1 



X 

0 

h - 

0 

LQ 



LQ 



CD 


0 

X 

X 

■X 

0 

CD ill 


0 


0 

0 


3 

0 

I~1 


0 

X 

X 

X 

X 

X 

0 

0 X 

X 

LQ 


3 O X 

0 

X 

'-J 


I 

0 

X 

0 


X 

0 

0 

X 

l~■ 

X 


0 

X 


3 



0 

X 

2 


X 



X 


X 

X 


0 

X 

1- 


0 

X 

X 

b- 

X 

0 

0 

X X 

l~ 

X 


LQ 0 

2 

UD 

X 

ui 


h- 

LQ 

LQ 


\f\ 

X 

X 

0 

LQ 

h- 


0 

l- 


*-) 

1—4 


X 

X 


X 


1 2 



















LQ 

X 







l~1 




















b- 



X 





0 















0 






0 

b- 

0 



















0 

X 


X X 





2 














X 

0 








LU 



















0 

0 

rH 

X 1- 

X 




X 


0 

1- 







h- 



2 0 


X 

1— 

2 X 


2 

0 


X 

b- 





0 






b- 



2 



X 


X 

X 

X 

X 


0 


2 

CM 

l_J 

2 

I 

X 

0 

X 



X 



x X 

4—4 


X 

b- b- 

0 

X 

0 


0 

2 


0 

X 


X 



X 

O 


0 

X 


•0 



X 



X 

X X 



-V 


2 

t 

X 

X 



X 

.. 



X 



x :> 

X 

b- 

X 

2 

2 

X 

X 

2 

0 

LU 











2 



0 





H- 


X 

2 X 

X 

X 

X 

X 

0 

CD 

0 

4-4 

X 

CD 

0 

0 

0 

I 

2 

0 


X 2 


X 

2 

X X 

X 

X 

0 

2 

X 


X 

X 

CD 


2 


LU 

2 

X 

X 

X 

X 

r~-, 

X 

X 

X 

X 

X 

0 

X 


0 h- 





O 














h- 

X 






O 


LU 

















X 



CD X 


X 


X 

h- X 



0 



X 







0 0 

x 

h- 

X 

•3 0 

X 

0 


0 X 

X 

X 



0 

0 

(J 

Y 












2 


X 

X 

D- 

> 

»—4 


X 


I> 

X 

> 

X 

X 


X 


X X 

LU 

LQ 

X 

X X 

X 

X 

X 

V 

0 

O 

in 

”> 

■> 

2 

X 

I 

X 



X 

N 

z> 

X 


X 

X 

X 

X 

1— • 

4—1 

2 

X X 

0 

_J 

UI 

X b- 

> 

0 

I 0 

0 

X 

0 

2 

0 

X 

0 

N 

X X 

2 


X 

0 O X 

X 

X 

2 



2 

3 

b 

0 

O 

I 

0 

0 

0 

0 

2 

2 

0 


f-J 


z 


0 

X 

V 

•"> 

p O 

2 

UI 

£- 


X X 

2 


X 

2 

2 

0 

2 

4-4 

ill 


0 

X 

X LQ 


X 

0 

0 X X 

0 

LQ 

hi 

b- 

2 

4—4 

X 




X 

x 

X 



O 



O 


4-4 

4-4 


X 

X 'Z 

X 







X 














b- 







X 

O 



















h- 



X X 

IQ 




X 

X 










0 



X 

O 






X 

X 

X 

~jr 






X 








b- 



2 

'X 

2 


X X 

h- 




0 

X 










0 



0 

2 






X 

X 

0 

0 






X 








CD 



0 

0 

4-4 


t Hr Hr Hr 

> 




Hr Hr 

X 










X 



















2 











0 

h- 


0 




0 










0 



* 

it $ 






b * 


* i 

b X 






X 








X 



X 

Hr Hb Hr 

0 


(A 





iA rl 

LJ) 


CM 


rl rl 

CM 

UD 

rl 

rt rH (A 




rH 






■■t 


y 


rH 

0 





0 rH 

0 


0 


rl rl 

0 

0' 

rl 

0 rl 0 




rl 





0 

0 


0 


rl 

0 





0 0 

0 


0 


0 0 

0 

0 

0 

0 0 © 




0 





0 

0 


0 


0 

rH 




C.J 

r -- ui 

m 


0 


i A UD 

(A 

X 

rl 

CM rl r- 




in 





X 

iA 


CM 


CM 

rH 




0 

ID' UZ' 

CM 


CM 


'•0 ' jD 

0 

iA 

X 

rl X UZ« 




X 





M 

rt 


CM 


r-_ 

(A 




0 

M 0 

iA 


0 


0 0 

0 

iA 

0 

0 © M 




0 





0 

0 


© 


»0 

\A 

iA 

in cm 

rt rl 

X 

CM CM rf 

UZ' UD UD 

rt 

UD CM 

UD 

0 CM CM 

UD 

CM (A 

CM 

UD CM M 

UD 

CM 

I'Q 

M CM M 

CM 

r-- 

rl 

iA 

CM 0 

CM CM M 

M 

rl rl 

rl 

rH 

0 

r- 

cm r -- 

(A rl 

rl 

i A UI © 

rH rl rl 

rl 

rt X 

rl 

rl UD r}- 

rl 

i A UD 

UD 

rl rf .0 

0 

0 

rl 

UD U“' UD 

rl 

x r -- 

N 

0 r -- 

N rl rt 

0 

0 0 

rl 

rf 

M 

rH 

CM rH 

CM ( A 

0 

(A O rl 

rH (A rl 

0 

0 (A 

0 

iA 0 © 

iA 

rl iA 0 

M © l v l 

(A 

rl 

rl 

iA 0 iA 

0 

rH 

rl 

CM 

iA rl 

CM CQ © 

0 

f Q M 

M 

0 


rt N 

r- 

r - r-- 

r- 

0 rl CM 

CQ rt 

X rt 

rt 

X rl rf 

UD 

X 

rl 

CM 

CQ rf 

r-- 

0 

rl rf r- 

r- 

r- 

r- 

N 

CM UD X 

rl 

rf r- 

CM 

CM CM CM 

CM 

CM 

CQ 

rf 

UD 

X 

rl 

CM 

CQ rf 

UD 

X 

rl 

CM 

CQ 

X 

r-_ 

0 

CQ 

rf UD 

UD UD 

UD 

CM CM 

CM 

CM CM 

CM 

l’Q CQ CQ 

( A CQ 

(A CQ 

CQ 

CQ rf rf 

rf 

rf 

UD 

UD 

UD UD 

UD 

X 

X X X 

X 

X 

X 

X 

r- r - n 

0 

0 0 

rl 

rl 

rl rl 

rl 

rl 

rl 

rl 

rl 

rl 

CM 

CM 

CM CM 

CM 

CM 

CQ 

CQ 

CQ 

CQ 

CQ 

rf 

rf 

rf rf 

rf rf 

rf 

rl IQ 

CQ 

l'Q CQ 

CQ 

CQ CQ l' Q 

CQ CQ 

CQ CQ 

CQ 

CQ CQ CQ 

CQ 

CQ 

CQ 

CQ 

CQ CQ 

CQ 

CQ 

CQ CQ CQ 

CQ 

CQ 

CQ 

CQ 

CQ CQ CQ 

0 

0 © 

0 

0 

0 0 

0 

0 

0 

0 

0 

0 

© 

O 

0 0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 0 

0 0 

0 

M f v l 

CQ 

CQ CQ 

CQ 

CQ CQ CQ 

CQ CQ 

CQ CQ 

CQ 

CQ CQ CQ 

CQ 

CQ 

CQ 

CQ 

CQ CQ 

CQ 

CQ 

CQ CQ CQ 

CQ 

CQ 

CQ 

CQ 

CQ CQ CQ 

rf 

rf rf 

rf 

rf 

rf rf 

rf 

rf 

rf 

rf 

rf 

rf 

rf 

rf 

rf rf 

rf 

rt- 

rf 

rf 

rf 

rf 

rf 

rf 

rf 

rf rf 

rf rf 

rf 

0 0 

0 0 0 

0 

0 0 0 

0 0 

0 0 

0 

0 0 0 

0 

0 

0 

0 

0 0 

0 

0 

0 0 0 

© 

0 

0 

0 

0 0 0 

0 

0 0 

0 

0 

0 0 

0 

0 

0 

0 

0 

0 

0 

0 

0 0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 0 

0 0 

0 

0 0 

0 

0 0 

0 

0 0 0 

0 0 

0 0 

0 

0 0 0 

0 

0 

0 

0 

0 0 

0 

0 

0 0 0 

0 

0 

0 

0 

© 0 0 

0 

0 0 

0 

0 

0 0 

0 

0 

0 

0 

0 

0 

0 

0 

0 0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 0 

0 0 

0 

Page 

20 



Dr. Dobb's Journal 

of 

Computer 

Calisthenics 

& 

Orthodontia, 

Box 

310, 

Menlo 

Park 

CA 

94025 





June/July, 

1976 


168 


1/1 

b- 

X 

X 

b- 

I/I 


in 

x 


ui 

X 

b- 

<D 

Z 

IX X UJ (D 
I Ll J Z 


0 


1-4 

z 


2 

0 

X 

X 

0 


0 

i i 




0 

0 


4-4 


X 


rr 



UJ 

i- 

UJ 


X 

0 

H 


X 

0 




X 

X o 

X 


0 




0 

0 

1-4 

X 0 

0 

X 

0 


X 

X 

X 

X 


X 



z 

b- 


0 

X 

h- 


0 


7* 

0 

h- 

X 

X 

X 

0 

X 

X 

0 

X 

0 

X 

X 

4-4 

Ul 

Ul 

X 


X 


X 


i—i 

0 0 


1—1 


0 

0 


X 

0 

0 

0 

0 


X 


X 


0 

Ul 



rl 

—1 

X z 

LU 

0 

X 

0 

X 

O 


X 


X 

X 

X 

b* 


m 

z 

b- 

in 

z*- 

0 



1-4 

0 


0 

X 

> 


0 


X 




m 

X 

X 

0 


z 

X 

h- 

0 

UJ 

X X 

Z 

m 

X 



X 


X 

0 

X 

y 

3T 


z 

X 

h- 

X 

n 

X 


Z 

> 

0 H 

UJ 

i 


X 

y 


X 

0 

4-4 

01 

X 

X 

X 


X 

X 

0 


X 

X 

i—I 

O 

uj m 

X 

0 

~y 

n 

X 

X 

4-4 

X 

X 

X 

z 

Z 

X 

b- 

o 

z 

0 

UJ 

0 

LU 

X 

Z 


Ul 

X 

X 

X 









0 

X 

X 


X 

X 


X 

b- 


0 UJ 

X 


y 



b- 

X 

0 

X 

0 

z 

X 

i— 

X 

0 

0 


UJ 

0 

z 

m 

b- 

x > 

X 

X 



*.f 

m 

z 

X 


X 

X 


i/i 

m 


X 

3 

X 

Ci 

0 


UJ 

0 X 

1—4 

0 

Ul 

X 

X 

X 

0 

l~l 

0 

0 

0 

X 

X 

z 

X 

0 

n 

z 

X 

z 

i 

l/l 

0 m 

0 

X 

4-4 

z 

z 

i- 


0 

z 

0 

X 

m 

X 

4—1 

w 

0 

0 


0 O 

z z 


LL Z 
I- X 
in o 


o 

I- X 
•X LL 

z x 

►H O 
. b- 
l/l ill 
i LlJ Ci 
L—i 'X 


LU X _l 
.3 

U. U 
Z O > 
hUu 

UJ Cl "~ 
> «X b- 
'X O UJ 
i/i _j m 


m 

D 

_J 

K h 11 I 
Ci IX b- 
Ci 'I LL 0 

x & z 

U1 Cl UJ 
X 'I _J 
O LU 

b- > I rl 

'X 0 U 
Z Z b- 0 
■X Z 

c z z 

'X Cl IX 
Q 0 m b- 
j u. x m 


l— 

m 

UJ IX 
C 0 
II 0 
-J X 
X 

Ll 

O 

LlJ UJ UJ 
0 _l 
£lh3 
0 Ll UJ 
0 Z 
i/I UJ 
I! > b- 
UJ 0 UJ 
0 Z l/l 


UJ 

0 

~y 

X 

X 

0 

z 

D 

UJ 

N 


D 

IX O 

0 0 

0 

X 01 

X X 0 
UJ 0 Z 

b- 0 4-4 

M X X 
Z b- 

*-< 0J 111 
X —1 

0 LU CD b- 

0 0 Z Z 

X *-* 111 

0 X z 
X UJ Z h- UJ 

0 0 0 01 X 

J- 0 0 

X O UJ 0 u 

z i— in b- 0 


m 

UJ 

m 


0 

0 UJ D Z 
0 0 X *-< 







0 

2 





X 

l/l 

0 

z 

z 


y 


0 

X 

X 








Z 0 

X 







-> 

z 

X 

X 


rl 



y 





X 


X 

0 


X 

X 

X 

0 



X 

b- 

X 

X 0 

X 


X 


—1 

0 

y 

0 


X 

X 


X 


X X 

y 

0 


X X 


X 


0 

X 

0 

y 


TT 



0 

z 







. 



X 





7" 


0 

X z 

X 


X 


•3 

1—1 

X 








X > 

X 







y 

X 

4—4 

X 


LU 



o 





X 0 

i 

X 

CO 

e 

X X 

0 

X 

X 


E 

0 

z 

X X 

X 

X 

X 

X 

X 

X 

b- 

X 

0 

0 

R 

0 

H 


X z 

h- 

X 

X 

0X0 

X 


0 

X 

X 

b- 


b- 

X 

0 

0 

X 

0 

X 

0 






0 

0 X 




0 

0 

0 


0 0 

0 


0 



X 

0 







0 

0 0 

0 






rn 

0 

0 

X 

0 

0 

0 





V 



■> 

4-4 

/ 

Z-- 

X 

0 

0 m 


4-4 

0 

X 

0 

0 

o 

0 0 

0 

0 

0 

X 

X 

4-4 

0 


0 


> 

4-4 

z> 

X 0 0 

0 


0 

1r- Z> 

4-4 

> 

X 

0 

0 

4—1 

0 

X 

0 

X 

X 


n- 

X 

X 

X 

0 

0 

0 

0 0 

z 

x z< 

0 


X 

0 

X 

X 


X X 

X 

X 

X 


7 


X 

0 

0 

0 

0 

0 

o 

0 

X X 

X 0 0 

0 0 

0 

0 

0 

X 

X 


X 

0 

X 

z 

o 

z 

0 

1— 

z 

z 


X 

z 

z 

m 

m 

0 X 

z 

Z 

0 


0 

0 

*1 

0 0 

0 

0 

m 

X 

*-> 

X 

0 

z 

X 

Z 

z 

X 

z 

X 

0 l/l 

0 

Z 

X 

z z 

X 

z 

X 

0 

l/l 

X 

0 

X 

0 

4-4 

0 

*-> 

E 

un 

4-4 

4-4 


X 

UJ 

X 


X 

Ul 

X 


X 

0 

0 

UJ 


X 

I- 

m 


X 

X 


m 


0 


b- 

h- 

X 

Zy 

X 


X 

X 

X 


0 

0 

0 

4-4 

0 


X 

0 

0 

m 

X 

X 


b~ 



0 

0 

X 

0 

h- 

h- 

I 

X 

OJ 


0 

X 


X 

D 

0 

H 

lO 


X 

X 


X 

0 

0 

0 

0 

X 

0 

0 


1- 

0 

X 



zz 

z 

z 

4-4 

b- 

X 

0 


X 

X 

LU 


4-1 

X 

Z 

X 

y 

0 0 

0 

0 

X 

X 


X 

J— 


CO 

0 0 


4-4 

h- 

z 

y 

Ul 

h- 

O 

z 

y 

Ul 


m 

4-4 

X 


_• 

00 



0 

X 



X 

X X 

X 


X 

X 

z 


o z h- h- z 0 

O H 0 UJ H ll 

J J O Ul J iL 


X X UJ J— h- 

0 1—0 0 Ul 

•3 Z 0 Z ►- 

UJ LL Z I 0 0 


0 

0 


I 

UJ 


rl 

0 

0 

0 






rl 

rl 





rl 

M 

■■t 

rl M 

rl 


rl 


in 

rl 





rl rl 

rl 








’t 

rl 

rl 


rl 



in 








rl 

rl 





t! 

0 

0 

rl 0 

rl 


rl 


© 

rl 





rl rl 

rl 








0 

rl 

rl 


rl 



0 








0 

0 





0 

0 

O 

0 0 

0 


0 


0 

0 





0 © 

0 








0 

0 

0 


0 



0 




0 




in 

M 


0 



rl 

r-- 

M 

M rl 

M 


M 


OJ 

rv 





0 m in 

r- 





0 



CM 

M 

N 


in 



Ul 




0 




X 

X 


0 



in 

C*J 

N 

X OJ 

'£< 


'•£' 


't 

I-O 





0 X X 

X 





0 



rl 

X 

ID 


■■t 



10 




0 




0 

0 


0 



0 

r'l 

rl 

© oj 

0 


0 


rl 

0 





0 © © 

0 





0 



0 

0 

0 


o 



rl 




rf L£i 

N 

rl 

0 

OJ 

OJ Ul 

N 

X 

rl 

i'0 

w 

Ul 

Oj 

oj in 

OJ 

rl 

01 

rl 

M 

OJ 

Ul 

rl 

N 

rf X r-- M OJ OJ 

OJ 

Ul 

0 

r- 

rf L£i 

r- 

M 

Ul 

CM 

CM 

rl 

CM 

M 

Ul 

CM 

CM 

M 

n 

X rl 

’d' 

r-- 

CM 

’t 

in 0 

rl 

0 

rl 

U0 

Ul 

rl 

01 

Ul rl 

Ul 

rl 


0 

0 

Ul 

r- 

0 Ul 

N 

rl rj- lf< Ul ’t 

in 

r-- 

0 

ui r ■- 

rl 

-t 

in 

rl 

■M" 

IT* 

un 

in 

-t 

rl 

n r- 

CM 

■•t 

CM 

■H M 

•rl 

rl CM 

0 

0 M 

rl 

0 

0 

l v l 

0 

M 

f v 'i 

0 M 

0 

0 

0 

M 

M 

0 

rl 

OJ 

rl 

rl 

M rl M 0 0 

0 

rl 

OJ 

rl 

rl 


rl 

M 

M 

0 

0 

M 

0 

0 

O 

M rl 

0 

0 

0 


-t Ul 

N 

© rl 

CM 

Ul 0 

rl 

CM ’t 

Ul 


rl 

•M* 

N CM 

Ul 

0 

rl 

•M- 

Ul 

0 

0 

© 

O 

M 

■■t 

in 

X 

N 

rl 

CM M ' 0 

1 

4 

un 

id r - © 

CM 

M 


r-- 

CM CM 

CM 

CM 

i n 

W 

rl 

OJ 

M X 

r--- 

0 

rl 

CM CM 

CM 

M l v l 

M 

M ’t 

’t 

’ t "M - 

't 

't 

in 

Ul 

Ul '■£' 

‘•0 

r- 

r-- 

r-- 

r- 

0 

0 

0 

0 

0 

0 0 

0 

0 

rl 

rl rl rl 

CM CM 

CM 

CM CM M 

M 

M 

M 

M 

rf rj- 

*? 

't 

't 


in 

in 

in 

in 

in 

X 

X 

0 0 

0 

0 0 

0 

0 0 

0 

0 0 

0 

0 

0 

0 

0 0 

0 

0 

0 

0 

0 

rl 

rl 

rl 

rl 

rl 

rl 

rl 

rl 

rl 

rl 

rl rl rl 

rl rl 

rl 

rl rl rl 

rl 

rl 

rl 

rl 

rl rl 

rl 

rl 

rl 

rl 

rl 

rl 

rl 

rl 

rl 

rl 

rl 

Ul Ul 

in 

Ul Ul 

Ul 

in ui 

Ul 

ui in 

in 

Ul 

Ul 

Ul 

Ul Ul 

in 

Ul 

Ul 

Ul 

in 

Ul 

in 

Ul 

Ul 

Ul 

Ul 

in 

Ul 

Ul 

Ul 

in Ul Ul 

Ul Ul 

Ul 

in Ul Ul 

Ul 

in 

in 

in 

Ul Ul 

Ul 

in 

Ul 

in 

in 

in 

Ul 

un 

in 

Ul 

Ul 

0 © 

0 

0 O 

0 

0 0 

0 

O 0 

0 

0 

0 

0 

0 0 

0 

0 

0 

0 

0 

0 

0 

O 

0 

0 

0 

0 

0 0 0 

0 0 0 

0 0 0 

0 0 0 

0 

0 

0 

0 

0 0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 0 

0 

0 0 

0 

0 0 

0 

0 0 

0 

0 

0 

0 

0 0 

0 

© 

0 

0 

0 

0 

0 

0 

0 

Q 

0 

0 

0 

0 

0 

0 0 0 

0 0 

0 

0 0 0 

0 

0 

0 

0 

Q 0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 


in 

rl 

rl 

M 

X 

0 

rl 

rl 

0 

0 

o 

0 

0 

0 

0 

CM 

rl 

0 

^0 

in 

Ul 

'■0 

in 

rl 

© 

rl 

0 

0 

0 

rl 

M 

CM 

CM r-- CM 

M 

0 

in 

N X rl 

0 

M 

>0 

0 CM M 

(') 


CM 

in 

0 (A ’t 

r- 

CM 

CM 

'£) 

•-0 

n r - r- 

N 

© 

0 

rl 

rl 

rl rl rl 

rl 

CM 

CM 

in 

Ul 

Ul Ul Ul 

Ul 

in 

Ul 

o 

0 

0 0 0 

© 

0 

0 

0 

0 

0 0 0 

0 0 Q 


LU 


rl Z 



1-4 












b- 

X 1 

X t- 












y 

rn 

n D 


CD 








X 


D 

Z X 

Z 0 


y 



X 

0 




X 

X 

0 

X l3 

X X 


1-4 



X 

"M 




h- 

X 

0 

I a 

I 


X 


X 

1 - 

4-4 




4-4 

h- 


U X 

o x 


h- 

X 

X 

z 

X 

X 



Z 

4-4 

X 


CD 


Ul 

Cl 

J— 

“1 

K 

X 



1-4 

y 

X 

X CD 

X z 



Ci 

4—4 

0 

Ul 

Ul h- 

X 

X 

0 

1-4 

X 

0 Z 

0 X 


0 

X 

y 

0 


U1 0 

\ 

\ 

X 

0 

0 

X 

X X 


y 


4—1 


h- 

X X 

0 

0 

Ci 

X 


X 

o 



X 

X 

X 

l.o 

X X 




Ci 

K 

X H 

rl 


X 

X 

X 

X 

X 

Cl X 

X 

X 

X 


z 

Z Ul 

Z 0 


4-4 

1 - 

Cl 

X 

4-4 

Ci X 

n 

4-4 

0 

X 

X 

X 

X h- 



4-4 


CJ 

X 

X 0 

X 


X 

4-4 

y 

H 

h- 0 


X 

y 

h* 





X 



X 


X 


o 

1—4 

Ul 

o 

z 

X Ci 

H- 

0 

H 

X 

X 

h- 

1 — ll z 


X 

X 

X 

X 

4-4 

X X 

l/l 

X 

Ul 

y 

0 

X 

X X* 


X 

X 

4-4 

X 


X 0 

X 

X 

X 

0 

z 

Ul rl 

Ul CO *-> 


X 

Ci 

X 

N 

Ul 

0 _J 

h- 

X 

b- 


4-4 

+ 







X 







X 


Cl 





X 







“l 


z 





H 







X X 

rl 0 

X 

h- 

h- 



0 



H 


X 


y (—4 

Z 0 CD 

y 

X 

y 

z 

0 

X 

y 


X 


i— 


X 

X z 

y 

X 

X 



X 


M 

X 


Ul 


1 - I 

1- CO o 

n 

-y 

1—4 

Ci 

CO 

X 

X X 

rl 

zz? 

Ci 

0 

X 



O 





X 







Ci 

Cl 



Ci 



0 







X M 

XhX 

X 


X 


4—4 


X !-• 

4—1 


X 


X 

X X 

X > z 

CD 

o 

X 

o 

> 

H 

Z 0 

X 

N 

y 

N 

z 

Ul X 

Ul z »-> 

z 


X 

y 

z 

Z 

4-4 Z 

o 

h 

0 


4-4 



X 





__i 









X 

H- 




0 

rl 








o 

X 




0 

X 









f ^ 





0 







i 

(r * 

* O 




* * 

+ r i 






















X 

















Q 






X 










b- 

X 






Ci 










X 

X 




X 


Ci 










X X 



X 

Cl 

0 

X 







X 


X 

Z Ul 



Ci 

Ci 

•y 








y 


\ 



0 


c 

X 

4-4 

X 


X 


0 



4—4 


0 

0 

X 

y 


X 


X 

0 


Cl 


y 



_1 



X b- 

_« 

4-4 



X 

b- 

4-4 

0 

Ci 


4-4 





X 

0 

z 

X 


X 

X 

U1 

X 


X 


X 



y 


4-4 

X X 

4-4 

K 


X 

1 — 


X 

n 


X 

b- 

Cl 


O 



Cl 

b- 

l/l 


1 - 


n 

> h- 

H 

b* 

Cl 

1.0 

y 


X 

X 

b X Ci 

z 



4—4 

y 

b- 

X z 


•y 

Ci 


0 


X 


4-4 

4-1 X 

0 

Ci 


y 

4-4 


Ul X 

b- 

XXX 

X 

0 



0 ' 

X 


0 

z 


4-4 

0 

H- 

X 

z 

X Ci 


0 X 

X 

X 


X 

Z b- 


0 


0 

X 

y 

Ci X 

“I 

X 

rl 

X 


Q 

X X 


0 Z 

Cl 

0 


X 

Ci 

X 

Z 0 

0 

0 0 



X 

Ci 

h- 

0 0 

b- X 

y 

X 


Ci 



X 0 

0 

0 b- 

0 

X 

4-4 

X 

0 

X 

h- 

1 — z 

X 

Ul 



f— 

X 




y 

0 



X 



0 X 



LL 

LU 

l/l 

X 

X Ci 

X 

X X 

4-4 

X 

X 

X 

X 

b* 

X 

Ul X 

X 

z 



X 

0 

Ci X 

X 

> Cl 

X 

X 

y 

0 

X 1.0 

y 

0 

X 

4-4 

O 

X 

4-4 

2 

Ci 0 

X 

X Cl 

b* 

X 

z« 

4—1 

X X 

~i 

b- Z X 


0 

Ul 

X 

4-4 

X 0 

0 

LU X Ul 

Ul 


X 

0 

4-, 

X 1-4 

0 

Ul 

















X 

















X 

















b- 

rl 

rl 

b- 


b- X 


X 

b* 

X 

b- 

X 



y 

y 

X 

0 

X 

y 

y 


Z 1— 

X 

y 

y 

X 

z 

y 

y 


Ci 

b- 

Ul 

X 

< i 

X 

X 


X z 


X 

X 

X 

b- 

X 


M 

0 

0 

b- 

X 

0 

b- 


X 

1-4 ll 

0 

b- 


Ul 

1.0 

h- 

X 

rl 0 

s 

H 

3 

X 

T* 


Ci 

Ci 


Ci Ci 


Ci 0 


0 


o 






0 

X 

0 

0 


0 0 


0 X 

0 

0 


0 


4-4 


x 

X 



X 

X 

y 

X X 

0 

X 0 

X 

X 

N 

X 

0 

X 

N 

0 Z 

y 

b- 

4-, 

Ul 

0 

4-4 

Ul 0 


1-0 X 

0 

0 


0 

z 

0 n 



z 

















"1 


X 




X 











0 


h- 




Ul 











0 


Ul 




b- 













0 




U1 











* * 









X 







X 




b- 











0 







0 

b- 


X 

z 








Z 


X 

X 



X 


X 


X 

Z3 


X 

0 



f— 

X 

X 


1—4 

o 


0 OJ 




0 

X 

X 



0 



CM 



z 

H 

0 


CM 



X 0 




X X Ul 

X Z X 




X 

X 

0 Z 

0 


Ul 

Ci 0 Ul 

Cl D Ci 

OJ 


0 

X 

X 

4—4 

Z 0 0 

X 

Ci X 

0 0 Ci 


X 

z 

X 

0 

X 

4-4 X 


I.o 

X rl X 

X 0 X 

0 


4-4 

0 


b* 

X 0 A 

X 

Cl 


z 

0 

X 


0 

Ul Ul 

h- 3 


X 

X 0 D 

XXI- 

4—1 


1— 

b- 

4—4 

y 

Ul X X 

X 

0 Z X 

X X z 

X 

X 

Ul 

z 

h- 

4-4 Z 



0 

h- 1-4 

h- X X 

1— 

0 


X 

z 

X 1-4 

XXX 

z 

X X z 


10 

X 

X 

y 

D 

l— 

X X 4-« 

4-4 

4-4 

ZbX 

Z “ X 



0 

X 


z # 

X 



I.o 0 

4-« O X 

0 

b- 


X 

X 

0 

0 X X 

X 

X 

Cl X 

0X0 

X 

U1 

0 

0 

0 

0 Ul 

I— y y 

y 

H- 

X Cl 

X X z 

0 

X 

z 

z 

0 

X 

0 0 

0 

0 

0 D O 

0 N *-< 

0 

b- 

X 


0 

03 X 

LQ U 1 

*-> 

z 

X 

0X1- 







0 



0 


rl 



o 



ui -- 

0 

i/i 

X 

X 

Z 0 

y 


0 


y 

0 rl 

X D 

Ul 

0 

Z X 

X 

. 

n 

z 


H 

y 

. '3 

X 

4—4 

X 

T 

C 

H 

X 

rl 

0 

0 

Ul 

X 0 

x 0 X 

0 

X 

b- 0 0 







X z 





0 






0 4-4 



X 

Ci 

0 41 X 

> 

4—4 


X 

X 

X 

> X 

0 

1-4 

0 Cl > 

X > z 

0 

X 

N 

z 

Z 

Z b- 

O Z N 

z 


X Cl o 

0 Z 1-4 


0 

*-> 

4-4 


4-4 1.0 

Z 0 •“> 


X 

0 X z 







0 



X 


t 3? 






X z 

0 


X 








CO 4-4 

0 


X 


b- l— 







z 




l/l Ul 





•i- 

* * 

* 0 


* * 1 

c 


rl 

rl 

■H 


Ul 

CM 

rl 





CM 


■■t 



rl 

rl 


rl rl 


rl 


rl 

X 

’t' 

rl 

rl 

rl 

rl 


0 

0 

rl 





O 


0 


0 

rl 

rl 


rl rl 


rl 


rl 

0 

0 

rl 

0 

0 

0 


0 

0 

0 





0 


0 


0 

0 

0 


0 © 


0 


0 

0 

0 

0 

V- 

n 

Ul 

0 

N 

© 

Ul 


0 


Ul 

0 


’t 


Ul 

Ul 

in 


Ul rl 


r-- 


Ul 

fO 

N 

r- 

'•0 

F-- 


0 

0 

CM 

Ul 


Q 


rl 

CM 


rl 


N 

-t 

Ul 


Ul '•£< 


'■£' 


IT« 

X 

'•£« 

'•0 

0 

0 

0 

0 

0 

© 

0 


0 


0 

0 


|-0 


OJ 

Q 

0 


0 0 


0 


•0 

rl 

ro 

0 

CM 

rl 

CM 

^0 

M 

CM 

CM 

‘•0 

'■0 

M '0 

'■£« 

CM 

CM 

CM 

't 

lO 

CM 

CM 

l-o 

CM CM 

0 

CM 

l-o 

CM 

Ul 

OJ 

CM 

-t 

■tf 

-t 

0 

0 

H 

IT' 

CM 

0 

’t N 

f- 

rl 

r- 

rl 

0 

0 

’+ 

Ul 


’t in 

rl 

-t' 

Ul 

Ul 

rl 

rl 

Ul 

0 

0 

0 

0 

M 

M 

0 

rl 

0 

0 rl 

10 

M 

CM 

m 

0 

M 

0 

Q 

0 

0 © 

rl 

0 

ro 

0 

i-o 

1-0 

0 


'•0 rl 

-* 

r-- 

rl 

■M- 

-t 't 

N 

CM 

l-o 

Ul 

Ul 

Ul 

in x 

N 

rl 

’t 

Ul 

0 

rl 


N 

cm ro x 

rl 

CM 

Ul 

X 

rl rj- 

N 

’t Ul 

Ul 

Ul 

X 

•0 

•0 > 0 '•£« 

X 

r-- 

N 

N 

r- 

r- 

r- r- 

N 

0 

0 

0 

rl 

rl 

rl 

rl 

CM CM CM 

ro 

ro 

ro 

ro 

rf r}- 

-t 

CM CM 

CM 

CM 

CM 

CM CM CM CM 

CM 

OJ 

CM 

CM 

CM 

CM 

CM CM 

CM 

fO 

1-0 

l-o 

ro 

ro 

ro 

ro 

ro ro ro 

ro 

ro 

ro 

ro 

ro ro 

ro 

-t -M- 


rt 

't 

"O' 

■■t -t 


’t 

’t 


■M- 

■■t 

Tt -t 

■M- 

’t 

■* 

't 

’t 

-t 

■■t 


-t -f 


’t 

't 

, + 

rj- rf 

’t 

0 © 

0 

0 

0 

0 

0 0 0 

0 

0 

0 

0 

0 

0 

0 0 

0 

0 

0 

0 

0 

0 

0 

0 

0 0 0 

0 

0 0 

0 

0 0 0 

0 0 

0 

0 

0 

0 

0 0 0 

0 

0 

0 

0 

0 

0 

0 © 

0 

0 

0 

0 

© 

0 

0 

0 

0 0 0 

0 

0 0 

0 

0 0 

0 


June/July, 1976 Dr. Dobb's Journal of Computer Calisthenics & 


Ul 

Ul 

’t 

rl 


Ul 

rf 


in 

in 

rl 


0 

0 

0 

rl 


0 

0 


© 

0 

rl 


0 

0 

0 

0 


0 

0 


0 

0 

0 


in IT' 

X 

rl 

Ul 

0 

in r -- 

rf 


CM 

0 

f- 


rO X 

ro 

ro 

't 

0 

rl 0 

r-- 


rf 

0 

X 


0 rl 

ro 

ro 

0 

0 

0 0 

ro 


rl 

rl 

0 


X X OJ 

CM 

ro ro 

CM 

x ro 

X X OJ 

r o 

0 

rl CM 

CM 

cm in 

N 

r- r-- ri 

ro 

Tf Q 

in 

rl rf 

N r •- rl 

tH 0 

r-- 

P-- rl 

CM 

ui o 

in 

ri ro ro 

ro 

o ro 

0 

0 0 

ri ro ro 

© ro 

rl 

CM ro 

ro 

0 CM 

rl 


CM ro LT» 0 ro rf 

r-- 

r-- 

N 

r- 

CM ’t 

in 

X 

0 

ro’t r- 

r - r- 

r- 

r- 

0 

rl 

rf 

N r- 

N 

r -- cm ro 

Ul 

in ui 

X 

ro 

X 

X 

X 

X 

X 

X 

n r -- 

r- 

N 

0 

0©0 

0 0 

© 

© 

rl 

rl 

rl 

rl rl 

rl 

rl CM CM 

ro 

ro ro 

ro 

ro 

ro 

ro 

ro 

ro 

ro ro 

ro 

ro 

0 

0 0 0 

0 0 

0 

0 

0 

0 

0 

0 

o 

0 

0 0 0 

rf 

rf rf 


rf 

rf 

rf 

rf 

-t 

rf 

•M- rf 

-t 

■M- 

in 

in ui ui 

Ul Ul 

Ul 

Ul 

Ul 

Ul 

in 

in 

Ul 

Ul 

in in in 

0 

0 © 

0 

O 

0 

0 

0 

0 

0 

0 0 

0 

0 

0 

0 0 0 

0 0 

0 

0 

0 

0 

© 

© 

0 0 0 0 0 

0 0 0 

0 

0 

0 

0 

0 

0 

0 

0 0 

0 

0 

0 

0 0 0 

0 0 

Q 

0 

0 

0 

0 

© 

0 © 

0 0 0 


Orthodontia, Box 310, Menlo Park CA 94025 Page 21 


169 








o 

III 




T 










b 







ui 

—I 

n 



~I 







D 










z 





I 

lil 






iH 














~i 


ui 

IX 



Qi 

If 

1 1 

i_i 



o 







i_i 










4—4 





b 

1' 1 

IX 


IX 


o 





1- 







•X 



if 


i*d 




X 

~l 

X 

X 



•_• 







i_i 















•ID 

L-j 

UJ 


UJ 


1- 

o 




•X X 



UJ 






7 



ill 


III 

b 

(J 




















X 


Ol 






01 

b 

IV 

1- 

U- 


b 




y 

i 1 



b 



n 



4-4 


•X 

in 


in 

7 


u: 

111 


X 

X 







hi 










V 

1—1 



jZ 

LU 


y 

a 

2? 

O X 






X 






1- 






7 


7 r 

~ 

Z 


fj 


Cl 

U. 







z 







HI 

X 


y 

z 


X 

Z 

_l 

•:d 

4-4 

ill 

4—4 

UJ 

b 

X 



Qi 

Lx 

X 



4-4 






H 


n 

•r 

if 

•r 

i"i 

4—1 

1 1 

z 


Cl 

r. 



If 

Z 


X 

4—4 

1 1 




z 


z 



X 

0 

X 

X 

X 



•..• 

u_ 

Q 



UJ 

£>•• 


UJ 

4—4 

iu 



n 



X 






T 


T 

i 1 



>1. 

ll 

<r 

•_• 




Lil 


X 

X 

X 

1- 



X 01 

4—4 

h- 


X 


X 

h- 

-J 


i—< 

U- 


X 

1- 


1- 

i) 


b 


0*1 






1- 



1- 


4—4 

i 1 


O 


lit: 

X 

-L 

' ) 






hi 

b 

H 


X 

X 



X 01 

X 

10 


LU 

X 

H- 

10 

X 

/ 

IX 


111 


•X UJ 

z 

i 1 


Z 

b 







rn 



7 




•j: 


X 

•r. 

4—4 

i, i 

X 

b 

b 



•X 

X 

~i 


H 

N 

X 



X X 






z 

a. 


4-4 

b 

Lx 

2T 

IU 



4-4 

X 


4-4 

Z) 

UJ 


X 

ill 



z 



i 


b 

ui 


ixi 

X 

E 

1- 



z 

z 




i 1 

X 

~i 

-y 


1- 



i 1 

X 

H 



X 

X 

4-4 

X 

X 

u: 

I/I 


4-4 


lx 


Q 



O 

llD UJ 

t-i 

Z 



III 

rn 


i i 

cj 

0*1 

u 

b 

o 

1- 

o 

z 

u 

X 

Ui 

X 



b 

Ol 

h- 

0 

hi 

X 

0 



Ol 

Cj 


X 


X 



X 


b 


UJ 

_l 

4—4 

4—4 

in 

X 

0 

X 

X 

b 

2T 


ill 

4-4 



_J 



i i 



u. 

Z 

U. 

O 


_1 

b 

4—4 

E 

El 



z 


ID 

l_l 

E 

4-4 

10 




Ci 

h- 

4-4 


0 

l_l 

X 

X 

X 

in 


4-4 


_J 


z. 


Z 

u 


i 

4—4 1 


•X 

_l 




in 

If 


0*1 



UI 


•J. 

b 




LU 

Ui 



III 

X 

i i 


hi 





X 

X 







l_.l 





1- 


II. 

4-4 

III 

1—4 

X 

111 

0 b 1 

— 





LlJ 

D 

l — 1 

X 

i 


ill 

if. 

hi 

if. 

17 

III 

ll. 

II. 

ui 

Cti 

X 


X 

a: 


111 

X 

111 

hi 

X 


•r 


X 

IL 


z 

If. 

U. 


H— 

b 


b 

.Jt. 

b 

X 

Cti 

2T 

X 

•j: 

Z 


Z ***• 

li 





7 

IV 

•I 

7 



X 

> 

■n 

1 1 

z 

SI 

y 

i i 


0 


X 

X 

ui 

y 

i 1 

17 

/ 

0 


X 

11. 

1- 

•*• 


X 

I_l 

0 

I— 

01 

111 


LiJ 

Ui 

UI 

_ 1 

b 

4-4 1- 

in 

4—1 

i i 

n o 


III 



4-1 

4—4 


T 

1-4 


•T 

“I 

•r 

T 

n 

4-4 

i 

_4 

z 

z. 

0 


1 

x 


4-4 

lil 

i“> 

4-4 

0 


X 

U 

X 

10 


1 I 


X 

hi 

X 

lT 

C'J 

1.0 

z 

I/I *“> 

01 

-J 

0*1 

01 

_l 

h- «* I Cti 

UJ 

l/l 



_J 

7 " 

UJ 

• y 

y 


0*1 

L) 

0*1 

O 

• • 

X 

1 — 

0 

4-4 

4-4 

X 


u 

• • 

i ) 

X 

i'l 


X 

X 


1 1 

h- 

u 

X 


Ol 

LU 

4-4 

• n 

L— 


+ 






















+ 




























X 





Li. 











O 










ll 



























1 

h- 





~i 
















7 * 






~l 

























+ 







rH 

UJ 

1- 

b 

X 

Z 



1- 

X 

IX 

•H 

rH • 

L 

z 

Ui 





b 



X 


X 

CL 




0 

7 “ 



1- 


X 

0*1 

X 




h- 



01 

J 

h- 

X 


hi 

X 

f~ 




4-4 

z 

i.n b 

1- 

X 


z 

•i. 

1- 

b 

z 


X 

b 



i 1 


•r 



4-4 

p - 

1- 

7 * 

© 

FI 


»D 

I— 



in 

z 

b 

X 

1 




i~i 

o*i : 


X 

u 

0 

J. 


z 

4—4 

z 

7 " 


o 


X 


z 

o 



X 

UJ 

z 

z~ 

4—4 


u. 

~r 

i 

□ 



*r 




X 

7 

X 


. 

ri 


0 



z 

a. 

z 

1 

X 




y 

X i 

I. 

X 

0 


•J 


4—4 


X 



-J 

I 

4-4 

u i 

X 

CD u 


4-4 

0i 

X 

-J 

LL • 

~i 

UJ 

X 



•r 

rn 

~-T 


•_• 

_L 

b 

X 

1- 

X 

•X 

rH 


UI 

X 

LU 

J 


X 


o 

Cl 

Cl 


X 

Z j 


l_l 

1— 

li 

X 


1— 

SET 

*-* 

X 


. 


ill 

. 

- 



in 

_ 


_ 

























n 











Cl 

























































_l 

4-4 



_l 



I 

_J 

-J 

-J 


LL SI 

1 

1 

1- o 


4-4 


X 


4-4 

1 

1 

-1 

4—1 


4—4 




Cti 

LL 

0 

1 

1 

i 

4—4 



1 


0 

1 

1 

i 

i i 


X 


X 


4-4 

•J. 

X 

-L 

•j. 

I CJ o 

i_i 

X 

•i. 

± 

N 

X o 

X 

r 

UJ 1 

X 

i~i 

1 

o 

i • 

i 1 

X 

T 

X 

r 


i"i 

X 

N 

'• 1 


z 



X 

•T 

X 



N 

• r 



•r 

X 

•i 

z 

111 


4- 

z 

• “• 

11. 

<_• 

-J 

01 

>_< 

01 b 

7 " 


_J 

u 

-1 

b b 1 

— 

-J 

0*1 

IX 

. 1 


0*1 

4—i 


ui 

-J 

0*1 

_l 

01 

7* 

7~ 

l_l 

*—.i 

4—, 

4-4 

4-4 


Lii 

X 



7 “ 

Ci 

X 

• ■■ 

l 

— 

■ i 

X 

i0 

•—1 

X 

l/J 

X 

X 

1“ 

i ’l 













1 

— 



1 

Cl 


















•ID 








0*1 






y 

X 




L-j 



tH 










D 

X 


UJ 

IX 










b 







•L 

1- 








—4 

if. 





i i 

• 1 

CD 



Z 



21 









CO 

!- 


1 


o 










•ID 







X 

0*1 




0*1 




J 

X 





01 

i_i 

7 



1—4 



*-* 










+ + 

1- 














z 








•—• 




X 





u 







•_• 
















X 














X 






z n 

r X 









i X 





fr + 

■+• 

z 01 




If) H 

■H 

CJ 

•rl 

If) 


tH 

X 

rH 

LD X 


tH 




CJ 



rH 

rH 

rH 

rH 




if) 

UD 



X 

rH 

0 

0 




rn 

X 

0 

rH 

rn 

X 


*H 



0 rH 

■H 

0 

H 

0 


tH 

0 

tH 

0 0 

rJ 

tJ 




0 



rH 

rH 

rH 

rH 




0 

•0 



•0 

rH 

-T - 

't 




0 


-t 

rH 

0 

0 


rH 



0 0 

0 

0 

0 

0 


0 

0 

0 

0 0 

0 

•0 




•0 



0 

0 

0 

0 




0 

0 



•0 

•0 

rn 

rn 





•0 

rn 

0 

0 



•0 



C<J 

hi 

rn 

■H 

X 


U*) 

rn 

■H 

■H 0 

rn 

H 



rn 

0 



rn 

ID 

rH 

N 

0 


hi 

N 

X 



r-- 

rH 

0 

X 

•0 



X 

•0 

CJ 

0' 

r-- 

X 

X 


UI 


0 

0 f- 

hi 

0 

X 

rn 


If) 

X 

X 

CJ 0 

X 

X 



•0 

CJ 



r- 

’t 

X' 

X 

0' 


rH 

•0 

rn 



X 

X 

w 

r-- 

CJ 



rH 

CJ 

iii 

rH 

rn 


UI 


■•t 

OJ 0 

0 

0 

0 

rn 


0 

tH 

•0 

rn 0 

•0 

•0 



0 

0 



•0 

•0 

0 

0 

•0 


•0 

0 

rn 



0 

•0 

C’J 

0 

0 



•0 

rH 

CJ 

•0 

0 

rH 


0 


0 

If) -H 

CJ 

If) 

•M 

CJ 0 

rn 

IT* 

CJ 

iii* 

CJ 

•x rn 

CJ 

CJ 

rH 

rH 

X 

DJ 

ID 

ID 

rH 

CJ 

CJ 

CJ 

X 

X 

X 

•X 

•*j 

rn 

H- 

rn 

CJ 

lil 

ID 

X 

111 

0 

lil 

M 

111 

CJ 

UI 

CJ 

rH 

C'J 

X 

X 

rH n- 

't 

■H 

T 

rn h 

li*) 

rH 

LD 

rH 0 

ID 

-t 

rH 

r- 

CJ 

rn 

tH 

rH 

H- 

r t 

Lil 


iZi 

r-- 

r- 

rH 

rn 

T 

•0 

0 

to 

rH 

rH 

OJ 

CJ 

rH 

rH 

•0 

rH 

ii 

rJ 

CJ 

rH 

hi 

r-- 

N 

rn o 

0 

rn 

0 

rn h 

rn 

0 

rn 

0 

rn rn 

0 

•0 

rn 

rH 

rn 

rn 

0 

•0 

0 

•0 

i0 

•0 

•0 

rH 

rn 

rn 

rn 

0 

•0 

rn 

•0 

rn 

rn 


10 

rn 

rn 

rn 

rn 


rn 

rn 

rn 


■H 

rn 


r-- 

r- 

C\l 

UI 

•0 

rn 

X 

rH 

C'J 

rn 

X 

rH rf 

r- 

C'J 

C'J 

C'J 

C'J 

Ul 

0 

rH 

rH 

tL 

rH 

C'J 

rt 

N 

0 

rH 

rt 

r-- 

CJ 

Ul 

N 

0 

C'J 

Ul 

•0 

rH 

C'J 

Ul 

Ul 

Ul 

Ul 

•0 

rn 

'■£• 

0 

rH 

C'J 

Ul 

0 

,0 

•0 

0 

rn 

X 

rH 

rt 

Ul 

ID 

Ul 

Ul 

Ul 

iTi 

rH 

X 

X 

N 

r-- 

0 

0 

0 

rH 

rH 

rH 

rH 

CJ CJ 

c-j 

rn 

rn 

rn 

rn 

rn 

zr 

rt 

rt 

rf- 

rt 

rt 

rt 

rj- 

ID 

Ul 

Ul 

U! 

X 

X 

X 

r- 

r-- 

r-- 

•0 

0 

•0 

0i 

•0 

0 

01 

rH 

■H 

rH 

CJ 

CJ 

C'J 

C'J 

rn 

rn 

rn 

rn 

rn 

rn 

rt 

"t 

’* 

rt 

rt 

-t 

-t 

ID 

Ul 

rn 

rn 

rn 

rn 

0 

•0 

0 

0 

0 

0 

0 

•0 0 

o 

o 

0 

0 

•0 

0 

o 

0 

0 

0 

0 

0 

0 

0 

•0 

0 

0 

0 

•0 

0 

•0 

0 

•0 

0 

rH 

tH 

■H 

rH 

rH 

rH 

rH 

rH 

rH 

tH 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

tH 

•H 

rH 

tH 

rH 

rH 

rH 

rH 

rH 

tH 

rH 

ui 

ID 

ui 

LD 

X 

X 

X 

X 

X 

X 

X 

X X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

0 

0 

0 

0 

0 

•0 

•0 

0 

0 

•0 

0 

0 0 

0 

•0 

•0 0 

0 

•0 

0 

•0 

•0 

0 

0 

0' 

0 

•0 

•0 

•0' 

•0 

0 

•0 

01 

•0 

0 

0 

0 

0 

01 

0 

0 


•0 

•0 


0 

0 

•0 

0 

•0 

•0 

•0 

0 

0i 

•0 

•0 

•0 

0 

0 

0 

0 

0 

0 


0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

•0 O 

•0 

•0 

o 

0 

•0 

0 

0 

•0 

0 

0 

0 

0 

•0 

0 

•0 

0 

0 

•0 

•0 

•0 

0 

0 

0 

0 

•0 

•0 

0 

0 

0 

0 

0 

•0 

>0 

•0 

•0 

0 

•0 

0 

0 

•0 

•0 

0 

•0 

•0 

•0 

0 

•0 

0 

•0 

0 

•0 

0 

0 






z 




C'J 

f- 




















i_i 






01 


















z 



~i 





z 


El 







i0 











0 
























0 



o 





3 


o 


X 

X 





















X 








V 










4—1 



0 





•0 


X 


b- 

ill 

X 



n 











X 






7 

X 

0 






CJ 


X 








\— 







0 

0 

I 

X 


0 

0 

LU 



b 










X 

l_J 





X 

4-4 

X 

•X 





Ci 

•X 


X 






X 


•r 



Cti 

Qi 



z 


0 



z 

X 

h- 

X 

X 


X 





X 




i0i 







0 

b 

0 





X 

b 


b 


X 




b 

Ll 

CJ LL 



•X 

Ci 



4—4 

0 

X 



UJ 


z 

ill 

i~i 

X 

ill 



ill 


ill 




X 

b 





0 


y 

X 





X 

01 


z 


ii 




•X 

Z) 

O Lfcl LU 

LL 


I 

Ci 

X 


X 

X 

X 



0 

0 

4-4 

ill 

X 

b- 

ill 



z 

X 

ill 




X 

X 




X 


l — 1 

4-4 




z 


c 1 



4-4 

X 

•X 




0 

CD 

_1 UJ b- 

\ 

ui 

0 

X 



1- 

_1 

LU 

■y 



z 

0 

X 


0 

X 

X 


1 

ill 

X 


X 

X 

X 

X 




x 

b 

b 

10 

X 


b 

X 

b 

•X 

b 

01 

0 

Cl 

01 




1“ 


1 - CJ 

0 




o 


01 

b- 

I/I 

0 


0 

4-4 

X 


b- 

z 

X 

iid 


0 

ill 



0 

“1 

01 

b 

X 



i_i 

0 


X 

Ci 


0 

X 


X 

X 

01 

X 

ill 

01 




0 


L - Z •! 

ui 

0 

h- 

b- 

h- 

01 


0 


4-4 


7 

X 


X 

X 

X 

X .id 

10 


X 

X 

b 

X 

X 

X 


01 

ill 

rH 

X 


z 

b 



01 

X 

X 

X 

X 

01 

X 


•X 

X 





lx 

01 0 LL 


2[ 

Z 


0 

X 

X 

0 

K 


4-4 

b- 

X 

z 


0 

0 

X 




z 

X 



X 


Cl 


X 

X 


z 

X 

y 

0 

b 

i i 

b 


X 

X 

X 


y 




rH 

O 

rH •_• CE 

ii 

Lx 

UJ 

UJ 

LL 

X 

4—4 


z 

4—4 

X 

X 

01 

_1 

1—4 

X 


1—4 Z 



X 

b 

X 

X 

X 

X 

1 

fl 

X 

LL 

X 

n 

X 

X 



•X 

0i 

01 

0 

X 

X 

Cl 


X 






C'J 

CJ I 

Lx 

4-4 

z 

y 

Ul 

0 


0 

4—4 

01 

0 

H 


X 

0 

4-4 

0 

X HH 

0 

X 

1—4 

z 

y 

0 

4—4 

4—4 

z 

b 



0 

X 

4—4 


4—4 

b 

0 

i0i 


101 



Ci 

4-4 

in 

b 

z 



z 

•0 



UJ 

Ul 

b* 

X 

X 

b- 

X 

o 

UJ 

01 


4—4 



7 


z 

101 


X 

X 




4-4 


X 





X 

0 


X 


X 


LU 


•X 

0 

•X 

_i 

X 



y 


LL 

H 

UL 

cc 

ui 

X z 


0 


h- 

X 





h~ 

X 

4—4 

X O 

4-4 

X 

X 

X 

X 

b 

b 

X 

b 

X 

i i 

Ixi 

iid 

b 

X 

X 


X 


X 

•X 

LU 





01 

X 

—t 



“i 

z 

CE h- 

01 

z 

0 

0 

0 0 

1- 

X 

b- 

01 


0 

b 


b" 


y 

X 

> 01 

X 

X 

y 

X 

0 

V 

01 

y 

y 

0 

b 

i i 

X 

01 

4~1 

0 

b 

b 

b 

0 

X 


y 


X 

b 

01 

b 

b 



0 

El 

IE 111 

Ul 

0 

z 

Z 

O 0 

UJ X* 

UJ 


X 

1- 

LU 


X 

ui 

Zi 

b 

X 0 

b 

X 

Zi 

D 

z 

X 

X 

0 

0 


X 

X 

0 

X 

0 

z 

X 

1 

X 

•X 

0 

4—4 

X 


“1 

X 

X 

J 

X 



0 

0 

rH O 0 

1— 

*-> 

1—4 


-J 0 

01 UJ 

IJ 1 

1 

UJ 


0 

C'J 01 

7 


01 

I/I x 

I/I 

01 

b< 

0 

4-4 

z 

b 

b> 

O 

V 

y 

X 

0 

b 

0 

4-4 

01 

0 

01 

X 

101 

0 

X 


X 

01 


0 

X 

\ 


01 

_J 

+ 










b- 

b- 


+ 















i i 














V 






y 



0 

U. 









ill 

10 

X 


X 















X 





rn 









•r 



01 





1 

CJ 

0 









z 

X 

X 


~l 















X 





+ 








LU 

b 






b 




LD C'J 


CJ 



X 


b- 


X 

X 

b- 

rH 

X 

1- 

H - 

y 


X 

b 

X 

X 

X 




y 

X 


X 




X 


X 

LU 


b 

01 

b 


i/i 

y 

X 

b 

X 

b 

b 


X 

T 

t -4 | El 


i i 



•0 CD 


X 


El 

X 

0*1 

01 

4-4 

z 

01 


X 

y 

z 

X 

b 

El 


EI 


b 

0 


EI 


y 


b 


b 

Cj 


01 X 

0 

4-4 


X 

b 

X 

b 

X 

i_i 

X 

z 

4—4 


rn 

0 

LU 


Z 


X 


El 

I 


f~i 


X 

0 

•_• 


X 

X 

X 

El 

X 




0 

y 

ill 

X 


. 

rn 

X 


y 



4—4 

0 


b 

X 

X 

z 

__ 

01 

y 

X 

Cl 

4-4 

•ID 

I CD CE 

rH 

-J 

I 

0 X 

X 

-y 

LU 

0 

0 

UJ 

0 

X 

4—4 

Z 

X 

01 

b 

4-4 

01 

0 

b 

X 

X 

rH 

X 

0 

z 

b 

X 

X 

rH 

0 

X 

X 

y 

•X 

0 

01 

0 


01 

X 

X 

X 

•_• 

O 


•10 

b 










0 


z 

















01 













0 










Z 





'■JT 






I 

1—1 

0 


ill 

0 



iid 0 

ill 

0 


iid 






i — l 

Ci 






ill 




—1 


X 


r~i 

Ci 


0 




101 

4-4 

4—4 4—1 

•-« 

r-j 

ui 

X > 

X 


X 

1 - UJ 

i i 

0 

0 

4—4 

0 

0 


> 

0 X 

0 

0 


0 


Z-- 

4-4 


X 

X 

0 

x 

z> 

4-4 

N 

X 

0 

•I 

•r 

N 

_1 

X 


4—4 

0 

0 

4—4 

0 

X 



X 

h* 

X > Q 

a. 

z 

z 

Z 0 

X 

y 

Z UJ b- 

X 


X 

x 

X 

X 

i0 

0 

X 0 

X 

X 

r-j 

X 

z 

0 

X 

r-j 

y 


X 

0 

0 

X 


z 

X 

Ci 

X 


•X 


X 

X 

X 

X 

V 

•X 


X 

X 


Lti 

JEE 

0 


4—4 

*—4 

z 

o 

b- 

4—4 

X X 

LU 

b- 

0 

0 

01 

0 

b 

El 

01 X 

0 

0 

b> 

0 

4-4 

EI 

0 

bi 

b> 

z 

0 

Cl 

X 

101 

h 

4-4 

I/I 

0 

0 

b> 

CJ 

4 -;, 

0 

0 

0 

01 

0 

CJ 

b< 

Cl 

Cl 

Cl 

•r 










0 


V 

















X 













X 









y 

b- 

rH X 





C'J 




1“ 

b- 

LU 

1- 





X 











X 

X 







rH 





X 

y 






01 


4-4 

Ul 

U 0 





10 




0 

X 

z 

i 1 





101 











~~y 

b 







b 





X 

b 








X 

* * 

0 Z 





n 







0 





z 












y 







ZI 






i0 






b 



_J -J 





0 




-fr 



f 0 





0 











* * 

0 







0 




•i 

i * * 

X 






X 


+ * 


rt 

C-.J 

H 


rH 


LD 



LD 


C'J 



LD 

tH 

rH 

CJ 

LD 


rH 

rH 

X 

LD 

rH 




LD 

ID 

rH 




LD 


rH 

rH 


X 

o 

rn 

r-- 

rH 

rH 

LD 

C'J 

0 

’*■ 


rH 


0 



0 


0 



0 

rH 

rH 

0 

0 


rH 

rH 

0 

0 

rH 




0 

0 

rH 




0 


rH 

rH 


0 

rt 

0 

rt 

rH 

rH 

© 

0 

0 

C'J 


0 


0 



0 


0 



0 

0 

0 

0 

0 


0 

0 

0 

0 

0 




0 

0 

0 




0 


0 

0 


0 

rn 

0 

m 

0 

0 

0 

0 

0 

rH 


rn x 

IT' 

CJ 



r-- 


0 



CJ 

't 

LD 

rn 

X 


r- 

LD 

rn 

rn 

N 



rH 

X 

0 

r- 



ID 

X 


rH 

0 


LD 

0 

X 

© 

rn 

rH 

0 

C'J 

0 

r-- ld 


n r - 

rH 

CJ 



0 


C'J 



0 

r- 

LD 

0 

rn 


X 

LD 

X 

0 

X 



0 

rn 

LD 

X 



rH 

0 


X 

LD 


© 

C'J 

rH 

© 

X 

X 

X 

0 

rt 

rH rH 


o rn 

0 

C'J 



C'J 


0 



C'J 

0 

0 

0 

rn 


0 

0 

rH 

rn 

0 



0 

rn 

C'J 

0 



0* 

rn 


0 

0 


rH 

C'J 

0 

C'J 

0 

0 

rn 

rH 

rH 

rH rH 


rH X X 

X 

C'J 

’1- 

rn 

rn 0 

N 

C'J 

rt 

rH 

LD 

rH 

C'J 

LD 

CJ 

0 

cj rn 

C'J 

LD 

C'J 

C'J 

rn 

X 

X 

C'J 

rn 

C'J 

rn 

X 

X 

C'J 

rn 

C'J 

C'J 

N 

C'J 

LD 

rn 

tH 

C'J 

C'J 

rH 

LD 

rn 

C'J N 

LD 

rt 0 r- 

N 

rH 

0 

rt 

0 r -- 

X 

r-- 

0 

rH 

rH 

rt 

rt 

rH 

rn 

rH 

’t LD 

LD 

rH 

rH 

LD 

rt 

r-- 

r- 

rH 

0 

LD 

LD 

r- 

r-- 

0 

rt 

r}- 

N 

X 

0 

rH 

0 

X 

ID 

rt 

rt 

rH 

0 

0* rH 

rH 

0 0 rH 

rn 

rn 

0 

0 

rn rH 

C'J 

rn 

0 

rn 

rn 

0 

0 

rn 

rn 

rH 

0 rn 

0 

rn 

rn 

0 

0 

rH 

rn 

rn 

rn 

0 

0 

rH 

rn 

rn 

0 

0 

O 

C'J 

rn 

rn 

rn 

0 

0 

© 

0 

rn 

rn 

rH rH 

CJ 


C'J C'J 

C'J ID N 

0 

C'J 

LD 

X 

r-- 

C'J 

rn 

rt 

N 0 

rH rH 

rH 

rH 

rH 

rH 

rt 

N 

C'J 

LD 

0 

rH rt 

LD 

0 

rn 

X 

rH 

C'J 

rn 

LD 

0 

rn 

rn 

rn 

rn 

X 

r-- 

0 

C'J 

LD 

X 

rH 

rf 

LD 

0 

rn 

X 

X 

X 

X 

rH 

rt 

N 

C'J 

LD 

0 

rt 

X 

r- r- 

0 0 

0 0 0 

rH 

rH 

rH 

rH 

rH C'J 

C'J 

C'J 

•DJ rn 

rn rn 

rn 

rn 

rn 

rn 

rn 

rn 

rt 

rt 

LD 

hi LD 

LD 

X 

X 

X 

N 

r-- 

r- 

r- 

0 

0 

0 

0 

0 

0 

0 

rH 

rH 

rH 

rH 

CJ 

CJ 

CJ 

rn 

m 

rn 

rn 

rn 

rn 

-t 

rt 

rt 

LD 

LD 

X 

X 

X 

X X 

C J C'J 

C'J C'J C'J 

CJ 

C'J 

C'J 

C'J 

C'J C'J 

CJ 

C'J 

C'J C J 

C'J C'J 

C'J 

C'J 

C'J 

C'J 

C'J 

C'J 

C'J 

C'J 

C'J 

C'J C'J 

C'J 

C'J 

C'J 

C'J 

C'J 

CJ 

C'J 

C'J 

rn 

rn 

rn 

rn 

rn 

rn 

rn 

rn 

rn 

rn 

rn 

rn 

rn 

rn 

rn 

rn 

rn 

rn 

rn 

rn 

rn 

rn 

rn 

rn 

rn 

rn 

rn 

rn 

rn rn 

LD LD 

LD ID LD 

LD 

LD 

LD 

LD 

ID 

LD 

IT* 

LD 

LD LD 

LD LD 

lD 

LD 

LD 

LD 

LD 

LD 

LD 

LD 

LD 

LD LD 

LD 

LD 

LD 

LD 

LD 

LD 

LD 

LD 

LD 

LD 

if) 

LD 

LD 

LD 

LD 

LD 

IT' 

LD 

LD 

id 

LD 

LD 

LD 

LD 

10 

LD 

in 

in 

LD 

LD 

LD 

LD 

LD 

LD 

LD 

LD 

LD LlD 

0 0 

0 0 0 

0 

0| 

0 

0 

0 

0 

0 

0 

0 0 

0 0 

0 

0 

0 

0 

0 

0 

© 

0 

© 

0 © 

© 

0 

© 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

o 

0 

0 

© 

0 

© 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 0 

0 0 

0 0' 0 

0 

0 

0 

0 

0 

0 

0 

0 

0 © 

© © 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 0 

0 

0 

© 

0 

© 

© 

0 

0 

0 

0 

0 

o 

0 

0 

0 

0 

0 

0 

0 

© 

0 

© 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 0 

Page 22 






Dr. 

Dobb's 

Journal 

of 

Computer 

Calisthenics 

& 

Orthodontia, 

Box 

310, 

Menlo 

Park 

CA 

94025 





June/July, 

1976 


170 





0 

_J 

Ll 


CE 

*r 


LLi 

Q 

0 


IA 

LU 


LU 

ili 

O 


0 

0 

D 


© 

H 

l/l 

LU in 

Cti LU U'l 

2 : >r 

1 — >—• *—• 

lE 0 CD # 
■r i! 

0_I Cl 

<L w w 
J HU 0 


U'l 

LU 


in 

LU 


CE 

Cl 

m 


i— 

m lu 


> m 

_J LL 
Cl _J 
LU O 
CE 0 <0 
X O 
o LU 
I- X 3 
LU O 
0 lE 0 


~i Z 
0 0 
o o 
•0 
z 

Z LU O 
D O X 
0 X LU 
LU O X N 


X 

X 


x 

X 

m 



X 

0 

U*l 

X 

0 

X 


— 1 

X 


X 


2 


X 


0 


i i 

0 

U'l 


X 

X 

1-4 

X 

0 

x 

X 



2; 

0 

X 

> 

~F 



U'l 



X 


0 


X 


z 

X 

X 



0 


z 

0 

X 


0 

X 



1-4 





0 


X 

0 


0 

co 

O 


X 




X 

0 

0 

1-4 

Cl 

0 

X 

X 

X 





0 


0 

X 

X 

0 


X 

z 



H 

0 

0 

> 

X 

n 

0 

in 

2 

z 

0 


2 

X 

21 

0 

X 

0 

CM 

CM 

1-4 

Ci 

O 

0 

>—1 




X 


m 



f 1 

0 

v# 

0 

0 


X 

X 

z 

X 


X 

0 

X 

1-4 

X 



X 


X 

X 


X 

Ci 

0 

2~ 


0 


Z 

X 


Ci 



0 

z 

z 

01 

X 

1-4 


7* 



l-H 

in 

m 

0 

m 

X 


X 

X 


0 

X 


X 

CM 

y 

X 

0 


X 

X 

0 

X 

X 


0 

H-4 

0 


0 

X 

0 

X 

X 


X 

0 

0 

0 

X 

0 


X 

X 

X 

H 

0 

0 

1—1 

X 

11 

f i 

X 

X 

X 

X 

0 

O 

X 

1— 

la 

z 

X 

21 

21 

Cl 

y 

X 

in 

X 

21 

X 

Cl 

0 

n 



0 

X 

0 


X 

X 

0 

0 

0 

l~l 

U'l 

in 

X 

X 

X 

0 

X 

1—1 

1-4 

Cl 

1-4 

0 

X 

X 

0 

X 

Cl 

z 

0 

z 


O 

0 

z 

X 

X 

X 

D 

z 

z 

n 

X 

X 

N 

>0 

i- 

Cl 

X 

0 

0 

X 

0 

U'l 

0 

X 

Z 

N 

X 

1-4 

0 

p 

X 

0 

U'l 

0 

U'l 

U'l 

U'l 

O 

1-4 


0 

X 





















X 

0 



















Cl 

X 









X 









> 

Cl 

in 



2 






2 


n 







1- 

X 




X 



0 



t —1 

X 

X 







h- 


2 



X 






0 

Ci 

0 








X 

0 

X 


X 


X 

X 



0 

O 

X 







O 

2 

1—1 

Cl 

X 

0 


X 

0 


X 

0 

0 








h- 

•—< 

0 

Cl 

X 

Ul 


> 



10 

X 


X 


0 






h- 

X 

X 

X 

v 


0 

in 

X 

Cl 


in 

Cl 


X 

X 




\- 

0 

z 


0 



X 


Cl 

X 

0 

X 

0 



Cl 

X 


0 

0 

i_i 

1—1 

X 


0 


0 

0 

Cl 


0 

X 

y 


0 

Cl 

X 



X 

X 

0 

X 

2 


0 

X 

0 

X 

X 

X 

0 


h- 

h- 

X 

X 


h- 

h- 


la 

0 

0 

0 


0 

2 


2 

0 

0 

~t- 




0 


O 

0 

H 

lu 

2 

1—1 


0 



X 

t—l 

0 

X 

0 

0 

X 

\- 


0 

z 

O 

0 

Ci 

1-4 

0 

X 


X 

X 

0 

0 

O 

0 

L— 0 

Cl 

2 

K 




X 


0 

X 

0 

X 

O 

•-» 

X 

0 





Cl 

X 

X 

X 

X 

X 

h- 


0 
_ 1 

X 

0 


. Z X W X M o z 


0 0 
la la 

LU LU 
Cl 0 


X 0 

z in 

0 LU 
0 0 


X LL ►“< 
Q LU 

CE > > 0 
X X 1- LU 

lu la 0 la 


. ^ . XZliJH!. k . 

O *-« Z> LU Z 0 1 

Cl XXX h- LU 

D h h 3 U h LA Z X I 

X LU Z) LLI Z LU LU Q ■ ! 

ffi m O H H 0 (— C 0 I 




X 

> 

© 



X 

0 







Cl 

2 



M 


-V 





l v l 

r i 

CO 

0 

X 

X 

H 

Cl 

X 

X 

X 

Cl 

X 




0 













1 

l—1 

X 

HH 


> 

Q 

Cl 

Cl 

Cl 

in 

x in 

X 


x 

Cl 

X 

N 0 

•0 

X 

X 

X 

X 

Ci 

Cl Cl 

Cl 

> 

0 

0 

0 

X Z 

z 

Cl 

Cl 

10 

Ci 


X X © I 
I . 1 

3 X Cl Cl X 1 


I— H til 
0 + U 
ua, • • 


X 

0 

X 

in 

X '• 

0 CO 

2 

2 

2 

in '• 

X 

X 

0 

0 

y- 

0 

z 

0 I- 

2 

0 


1 

.. 

h- 1 

X 

X 

. 

in > h- 

X 


1- 


Q 

0 

0 

> -s 

h- 

0 

X 


Ci Cl X 

Ci ill Ci ^ Ci 

z 


X 

••• h- 

2 

X 

Cl 

X 


in 

X X 

h- X 


d x z o 0 : 
la o o 0 z : 


o o 

X X 


X X 
X X 
0 0 


> v-t O U'l > H JllX N X 0 

0 0 Z 0 0 > X Z z z 0 X 

z m 0 x z z o 0 x x 

0 

in 


0 : 
1 ■ 
0 : 


O Cl 

1 ►-< N X 0 

. N X Z O X X 

1 0 O 0 X 0 U'l 


M X 0 X X > »-« N X ^ 

> 0 X CJ Z O X Z Z X 

z m o x h e u x ^ 0 

0 

la 


H 

in 

0 









© 













CM 





X 







X 




rn 



X 






H 



[•- 


CM 


© 

rn 


H 

© 






H 

rn 


























© 







© 




0 



© 






H 



© 


© 


H 

© 


H 

H 






H 

© 








Q 













© 





© 











© 



© 






© 



© 


© 


© 

©• 


© 

© 






© 

© 








© 


in 








© 

nj 


0 


© 



© 






X 

rn 



© 

CJ 



■-t 






no 


rn 

n- 

't 

© 


r-- 

r-- 

r- 

H 

n- 




rn 


© 

H 








0 


H 








X 

H 


CJ 


©' 



rn 






© 

X 



n- 

C 1 



r-- 






no 


CM 

1/1 

CM 

CM 


rn 

no 

rn 

N 

CM 




©i 


©1 

P- 










© 








© 

© 




© 



rn 






© 

rn 



© 




rn 






© 


H 

© 

H 

© 


CM 

© 

H 

© 

CM 




H 


© 

© 


10 


ID 




H 

CJ 

X 

© 

■■t 

in 

in 

H 

H 

H 

H 

X 

X 

r-- 

CM 

p- 

X 

H 

in 

rn 





© 

X 

CM 

no 

r- 

X 

no 

n- 

n- 

CM 

H 

H 




CJ 

X 

X 

CM 

X 

CM 

rn 

H 

CM 

X 

CM 

no 

rn 

no 

rn 

X 

X 

© 

rn 

H 


rj- 


H 




Tf 

H 

r-- 

H 

l v l 

0J 

no 

no 

in 

U0 

r-j 

N 

M 

N 

rn 

in 

M 

CJ 

in 

© 

© 





N 

CM 

CM 

CJ 

CM 

r- 

H 

© 

CJ 

© 

CJ 

H 




IT' 

r- 

r-- 

H 

r-- 

© 

ir> 

’fr 

rt - 

N 

X 

H 

■'t 

N 

r-- 

© 

© 

•■t 


© 


•:*.j 




Q 

0 

i-1 

H 

H 

© 

0 

© 


in 

0 

H 

© 

© 

0 

in 





H 

rn 

rn 

rn 

H 

© 

rn 

© 

© 

rn 

rn 

rn 




© 

H 

rn 

in 

rn 

rn 

rn 

© 

»© 

© 

© 

rn 

rn 

© 

H 

rn 

rn 

rn 

© 

111 

© 

'■•■J 

H 

rj- 

li:' 

0 

no 

in 

© 

H 

l v l 

■■t 

in 

X 

i-- 

in 

© 

H 

CJ 

Tf 

X 

r-- 

CM 

in 

no 

X 

r-- 

CM 

CJ 

0J 

CJ 

CM 

rn 

no 

0 

H 

CJ 

’t 

N 

© 

H 

n- 

no 

X 

X 

X 

X 

H 

CM 

't 

N 

H 


no 

© 

rn 

rn 

no 

© 

rn 

’t 

no 

X 

© 

H 


H 

I'J 

l v l 

C-J 

M 

C*.J 

nj 

C'J 

«:•■] 

ri 

M 

in 

m 

in 

in 


n- 


n- 

’t 

n - 

no 

in 

no 

no 

no 

no 

X 

X 

X 

X 

X 

X 

X 

N 

r- 

r- 

r-- 

N 

© 

© 

© 

10 

© 

© 

© 

© 

H 

H 

H 

H 

CM 

CM 

CM 

rn 

rn 

© 


n- 



-M- 

IT' 

no 

no 

l v l 

M 

i-'l 

M 

l v l 

l v l 

m 

in 

in 

in 

in 

in 

in 

in 

i-i 

rn 

in 

in 

in 

in 

rn 

in 

rn 

rn 

rn 

rn 

rn 

rn 

rn 

rn 

rn 

rn 

rn 

rn 

© 

© 

© 

© 

01 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

x 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

N 

r- 

N 

r-- 

r-- 

r-- 

r- 

N 

r-- 

N 

r- 

r-- 

r-- 

N 

r- 

r-- 

r- 

r-- 

r- 

r- 

f- 

r--- 

N 

P-- 

r- 

N 

© 

© 

© 

© 

0 

© 

© 

© 

© 

© 


© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

0 

© 

0 

0 

© 

© 

0 

© 

© 

© 

© 

© 

© 

© 

0 

© 

© 

© 

© 

© 

© 

© 

© 

© 

Q 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

Q 

© 

© 

© 


© 

© 


© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

Q 

© 

© 

© 

© 

© 

© 

© 

©' 

© 

Q 

© 

© 

© 


x 

0 

X 


X 

►—t 

X 

2 ; 

0 

Ci 


X 


N X 

X 1—1 


-xi 
























T 




















O 

X 















h- 



H 



X 






O 








0 





LL 







0 















2 

X 


Z 



11 






0 








z 



0 


X 







X 












T 



0 

I/I 





CE 






X 








-J 



I/I 


X 















0 





U'l 


•0 

H 

lu 

10 



X 


X 




77 








•J 



X 


0 







z 


X 










i- 

10 


O 

10 O 

1/1 

c :■ 



LU X 


Cl 













O 


0 


10 




0 



0 







2 




■X 

til 



CE 

III 


10 

0 

U'l O 


Cl 




O 






X 



LL 

G 







X 



X 


Cl 






1—4 



T 


CE 



LU lE 


lE 

LL 

X 



X 

I 



2 



X 



10 

CE 

Cl 

111 

X 

z 


J- 




0 

-X. 



Cl 



LU 


X 






n 


*T 

N n 


•T 

III 

..1 

LU CE 



0 

X 





.•■1 



0 

Cl 

z 

N 

0 

1—4 

U'l 

X 




U 

X 

X 


X 



1- 


i ) 

X 



b- 

■0 

n 


T 

U. 


T 

N 

Ll 

0 LU 



0 

LU 


X 



Ci 

U'l 


X 

O 



X 

z 

in 

X 




0 



X 






f— 



■T 

z 

•X 




•r 

O 



CD CD 


2 

z 

0 


i-i 

in 


X 

LA 


2 

X 

10 

0 



X 

X 




X 

2 

CJ 

X X 


X z 





iX 

0 








10 U'l 



0 

10 

X Z 


ll 

LU 

U'l 



m 



III 





• ) 

n 

I 

tr 

10 

LU 



1—4 

Cl 

> Ci 


X H4 



*0 


li! 

2 




Ll 

h 


y- 

Z U'l 

r- 

1- 



1- “• 



0 

l-H 


0 

LiJ 


0 

X 


X 

0 

0 

z 

X 

0 

Cl 


Cl 



Ci 

z 

X 

X Cl 


X z 


X 



U'l 

LU 



fr 


2 


2 

LU 

2 

Z 

y- 

hi 

z 


it. 


0 


z 

LL 

«;o 

2 

Cl 

G 

1—1 

2 



LU 

1—1 

Ci 

X 


X 


Ci 


X 

0 X 

-it 

X > 


0 



0 

T 

•T 

n 


m 


hi 


lu 

hi 

z 

N 

D 


!_J 


hi 


111 

O 

hi 

III 


Ul 


IU 

LU 

X 

N 

3 

X 

1—1 

0 

Ci 

X 

X 

X 

X 

LU 



LU 


0 



X 

U. 

2 









2 


O 

2 

X 

T 

2 

Cl 

X 

2 

X 

LL 

2 

2 

z 

1-4 





0 

Cl 

X 


1-4 

|0 

X z 

X G X 


X 

h- 


2 






m 


hi 


iii 

iu 



X . 



• 1 : 


(1 

IU 

X 


111 



IE 

LU 

111 


X 

0 

0 

X 


X 

X 

0 

X 

X 

3 X 

0 

X 0 


1 r 


|~4 


nr 







Cl © 




<r 

Z LU 



z 


LL 

X 


0 

X 

X 

X 

_) 

X 

X 

CL. 

X 

0 

—J 

10 

X 


X 

_ 1 

U'l 

—> 

X 

LL LL 






hi 



m 


i' 1 


1 ' i 


< 1 


10 

iu 

Z Cl 


X 



X 

l‘ 1 

3 


O 

a 


0 

'J 

0 

'.J 

LU 

X 

X 

X 

Ci 

2 

£- 

X 

M- 

LA 

X 0 


0 X 


X 


n 

H 

ull 


111 

LU 

Hi 

2 


III 

10 U'l 

2 

hi 

n 

. .1 

O 


0 


O 

IU 

2 

O 

O 

2 

1—4 

10 

IU 

2 

111 

n 

0 

z 


X 

Cl 

1-1 


Z 

O 

X 

|_| X 

0 

|— 1-4 


X 

0 

0 

U'l 

Ll 

0 

h- 

lE 

1—1 



0 1- 

H-l 


0 


0 z 


0 

•-j 

0 

U'l 

1—4 

0 

0 

n 

X 

0 

X 

1—4 

Cl 

0 

O 

1-4 

t —1 

X 

X 

Z 


1-4 

Ci 

< 1 . 

X X 

0 

X Ci 


c 




•=■3 








2 



































1-1 



1 








LU 





1 

















LA 




z 




LA 

0 


0 


X 


+ 


0 

h- 





























U'l 




1-1 




C- 

LL 


0 



h- 


III 

X 

111 







CE LU 





LU U'l 


ll'l 

X 


X 










X 


X 


0 


X 

U'l 



X 

Jl. 


X X 



2 

2 



U'l 







<X CE 



>T 


Z LU 

z 

0 

X 

X 

>i 

•I 


X 



X 




LA 


X 


X 


jZ. 

0 



_i 

i —1 


-J 0 

X 



i 1 

,_4 

U'l 







LU O 



2 



1—4 

l~l 

1 1 


hi 

2 









0 


Cl 

0 

-J. 






-v 



LU 

X 

jZ. 


in 


ll'l 

0 


2 


X 


f i 

in z 



1-4 

c 1 

0 Ci 


X 

2 

0 

U'l 

1-1 

Cl 

0 

0 

Cl 

X 


Cl 

CD 

•0 

CD 

Cl 

X 

z 


X 

i-i 



LU 

X X 

X 

X X 

© 

N 



LU 

X 












0 Ci 

in 
















X 


















0 












0 X 


Cl 



0 


x 



*•: 








0 


G 


0 

G 




X 




0 

LL 

LL 


Ll 

>T 


N 




N H 1 



M 




..1 

X 


. i 

N 

X 


X 

<r 

~z• 


x 

X 

N 

X 

0 1 

0 

l_l 

X 

1-1 

0 

X 


1-4 

X i-> 

Ul 

*-4 X 

X 


X 







2 


1 i 

Z LU 

2 

*') 

2 


LU LU 

X 

± 

Cl 

i.J 

'I 

2 

£ j 

Q 

z 

■~i 

0 

N 


I.J 

z 

z 

X 

X 

2 

10 

X 

X 

O 

jL. 


|_| X 

—1 

-C- 

-O. 

m 

t—, 


•X 

n 

0 

U 

CE 

n 

i-i 



i-t 


0 

t-H 

X X 0 

y 

0 

0 

2 


O 

0 

1- 

1—4 

0 


X 

1-4 

Cl 

0’ 

1—4 

X z 


01 

X 

0 

i_' 


X 

0 

0_1 

X 

0 >1 

L-l 

Ci 


>X 









'X 





in cd 

J-. 
















1-4 












LA 




in 

1— 

lil 

CE 







Ci 




0 X 

i_i 

X 















0 

z 














U'l 

>x 

N 

iX 






1—4 

'1 




\UH 

i „i 

Ul 















X 

1-1 











JZ. 





LU 







2 





0 
















0 











C 




+ 


* 

+ Ul 







1—1 




* * * 

-A- 

r*r 



























—* 



© CM © 
't CM -* 
©■HQ 


171 






X 



X 



H 

H 


X 

X 








X 



© 

CM 


H 

rn 


X 


© 


X CM 


x n- 

rn 

H 

©• 





©i 






H 

H 














1 1 

© 


H 

© 


© 


© 


© © 


H ©i 

CM 

© 









© 



© 

© 


Q 

Q 








© 



rn 

© 


Q 

© 


© 


© 


© © 


H H 

H 

in 

© 





rn 



no 



rn 



rn 

no 











rn 

© 


CM 

r-- 


rn 


© 


in r- 


H rt 

rn 

U"I 

no 





X 



r-- 



no 

't 


X 

r-- 








©■ 



© 

CM 


© 

CM 


N 


tJ- 


h rn 


H Q 

CM 

© 

H 





H 



H 



© 

© 


H 

H 








CM 



H 

© 


CM 

rn 


CM 


H 


rn h 


H H 

H 

©1 rn cm 

rn 

CM X 

© 

rn 

rn no 

CM H 

rn 

no 

CM 

■’t 

H 

CM 

CM 

r- 

no 

't 

CM 

r- 

rn 

CM 

r- 

© 

r n no 

CM 

n- 

H 

no 

CM 

rn 

H 

no 

rn © 

H 

H 

H 

no 

h rn 

no 

no h 

in 

©1 T l" ’4" 

©1 

rn r- 

© 

rt- 

CM H 

© H 

CM 

H 

© 

H 

H 

no 

N 

H 

H 


rn 

no 

CM 

rn 

't 

H 

CM © 

© 

© 

H 

H 

CM 

no 

•** 

H 

IT' CM 

© 

't 

’t 

’* 

rf © 

H 

H © 

© 

rn © © 

rn 

© CM 

rn 

© 

© © 

rn rn 

© 


rn 

©1 

rn 

Q 

© 

H 

rn 

rn 

© 

H 

© 

© 

H 

rn 

© © 

rn 

© 

rn 

rn 

rn 

rn 

© 

rn 

rn rn 

Q 

rn 

© 

rn 

© rn 

© 

H H 

H 


rn n- 

no 

Q 

rn 

rn 

rn 

rn 

rn 

rn 

■M- 

no 

X 

N 

© 

h n- 

no 

no 

no 

no 

X 

r-- 

CM 

rn 

■M - 

"t ’t 

■M" 

ri ri 

r--- 

CM 

rn 

X 

H 

CM 

rn 

’* 

no 

X 

pw 

© 

H 


no 

X 

X 

X 

X 

H 

-t 

no 

© 

rn 

ri 

no 

© H 

’* 

no 

© 

rn n- © n- 

no no 

no 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

r-- 

r- r -- 

r- 

r-- 

r- 

r- 

r-- 

r- 

© 

© 

© 

Q © 

©1 

Q © 

©1 

H 

H 

H 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

rn 

rn 

rn 

rn 

rn 

rn 

rn 

rn 

■M- 

rf 

-t 

in 

no 

117' 

no 

X 

X 

X 

x r ■- 

r - r -- © © 

H H 

H 

H 

H 

H 

H 

H 

H 

H 

H 

H 

H 

H 

H 

H H 

H 

H 

H 

H 

H 

H 

CM 

CM 

CM 

CM CM 

CM 

CM CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM CM 

CM 

'.J 

CM 

cm cm rn rn 

X X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X X 

X' 

X X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X X X X 

© © 

© 

©1 

© 


Q 

© 

© 

© 

Q 

© 

©' 

©' 

■Tt 

© © 

© 

©' 

© 

© 

© 

© 

© 

1 T 1 

© 

© © 

© 

©1 © 

©' 

©1 

© 

© 

© 

© 

© 

© 

© 

©i 

©' 

© 

© 

© 

© 

S' 

© 

© 

© 

© 

© 

© 

© 

© 

© 

©' 

© 

© 

© 

© 

© 

Q © © © 

© © 

© 

© 


© 

© 

© 

©' 

© 

© 

© 

Q 

© 

© 

© © 


Q 

© 

© 

Q 

© 

© 

© 

©i 

© © 

©1 

© © 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 


© 

© 

© 

© 

© 

© 

© 

© 

Q 

© 

© 

© 

© 

© 

Q 

© 

© 

Q 

© 

© 

© © © © 

June/July, 


1976 






Dr. 

Dobb's 

Journal 

of 

Computer 

Calisthenics 

& 

Orthodontia, 

Box 

310 


Menlo 

Park 

CA 

94025 





Page 23 


171 








LU 
_ I 


LU 

h- 


-J 

X 


ZXZZXZZZZXZXZZZZXZZXZX 

DQuijaOaLjaLiuQuLjijLiuuaauLj 


LU 

-J 

CD 


LQZLOZLQZCOZiDSffiSaiZ^ 

iJiilliliillCiiljiljiliiljiljiliillClilj 


XluXluXlOXlDX 


tO 

in 

LlJ 


in 

* * * 


LU x 
Ci ill 

Z 

in 

z 

LU 


f— x 

z 

LlJ Ll 

LO z> 

Z LU 


Z _l 

o 


UJ 


51 


Cl 


2 

UJ 


2 : 


h - 

o 











-J 

iTi 



O Ll _J 

H CD 

E 

LL 

LL 

h- 

X 

x 

Cl 

10 

X Cl 

Cl 

h- 

LL 

10 Cl 

•X 

Ci UJ 

_J 

Z H 

0* 

p— 

Z Z Cl 

z 

h- 

10 

z 


+ 

Cl 

I- 

UJ O H 

Z D 

O 

<r 

O 

O 

El 

o 

O 

4-4 

10 0 

C l 

LU 

o 

^ I 

Cl 

Z _J ••• 

1.0 ••• 

o •• o 

•• H 

\ LL '• 

Z '• h- z 

••• 0 

y 

UJ 

z 

I D 


z 

y 

D LU ^ 

_l Z 

CD 

h- 

Z 

CD 

h- 

_j 

h- 

Cl 

*-« z 

LO 

10 

z 

_J O 

X 

ll LL Cl UJ H 

Z UJ 

0_IO 

Z X 

0 O J— 

0 Z Z Z 

Z _J 

O 0 

0 

1—4 

Cl z 


z 

z 

\ Ct N 


Z 


h- 

\ 

CD 


*-• 


0 

Z 


z 

••- _J 

X 

'■ X '• Cl '■ 

4-1 V 

UJ ••• _J 

'• z 

' 0 ••• 

1- N Z •• Z 

v - z 

••• 21 

z 


CO -• 



1—1 


O L_1 

U _1 

I 


z 


0 

•D 

’t 


z 


hi 


in 


M" 


U~« 

in 


m 


rj- 


















UD 



0 ’t 0 

hi 



CM 

0 

rl 


H 


0 


rH 


0 


rH 

0 


rH 


CM 


















CM 


rl 

’t CM -t 

0 



rl 

rl 

rl 


rH 


rl 


rH 


rH 


rH 

rH 


rH 


rl 


















rl 


rl 

© rl 0 

rl 



iA 

r-- 

’t 


CM 


0 


rf 


rH 


M 

't 


7f 


M 


















0 


't 

CM CM rT 

't 


rl 

CM 

■•H 

rl 


0 


CM 


CM 


0 


CM 

0 


CM 


CM 


















CM 


rl 

CM CM rl 

rl 


rl 

rH 

rl 

rH 


H 


rl 


rH 


rH 


rH 

rH 


rH 


rH 


















rl 


rH 

rl rl rl 

rl 


0 

rl CM 

Ul CM 

rl 

rl 

in 

rl 

rH 

0 

r- 

MO 

z 

CM 

rH 

CM Z 

rH 

Ul 

M" 

rl *0 


+ iA 

M 

CM 


in 


rl 

rt 


rl 


N 

10 


l D 

0 

10 


U“* 

N rl rl 

rl 


in 

rl 0i 

0 0 

rl 

0 

CM 

0 

0 

© 

rH 

0 

rH 

0 

rH 

0 rH 

0 

0 

0 

rl 0 


0 0 

0 

0 


0 


0 

0 


0 


0 

0 



Tf 

rl 


CM 

rl 0 *0 

rl 


ui 

rl 0 

rl 0 

rl 

0 

rl 

0 

rH 

0 

rl 

0 

rH 

0 

rH 

0 rH 

0 

rH 

0 

rH O 


0 0 

0 

© 


0 


0 

0 


0 


0 

0 


0 

« 

rl 


rl 

rH rl rl 

rH 


o 

rt 1 n 

rj- f.'i |-^ 

<•0 

CM 

P'1 

rt 

rt 

CM 

CM 

'f 

M 

rt 

rH in 

0 

M 

■■t 

rt Q 

rl 

N ’T M- 

rl CM Ul 

rt 

rt 

rl 

MO 

CM M 

■■t 

-t 

M 

0 

0 ••£) 

N 

CM 

rl 

rl © 

rH 

m- in 

■u 

0 O rl 

'•£« 

r -- © 

CM 

0 CM 

0 0 rl 

U) CM 

0 

CM 

z 

0 

f'l 

rH 

0 

0 

rt rH 

CM 

CM rt 

rl M 

0 

CM 0 M 

rl Ul 0 

111 

rl 

iA 

rl 

rH 0 MO 

CM 

"t 

CM 

CM © 

•u 

CM 

’t 

CM 0 

rl 

CM rl 

0 

’t CM rl 

0 

n m- 

111 

ri rl 

rl CM rl 

m 

rl 

M 

rl 

CM 

rH 

0 

rH 

iA 

rH 

CM rH 

M 

rH 

rH 

rH rl 

rl 

CM rH p'i 

rl CM rH 

iA 

rH 

CM 

rl 

•H rl 

CM 

rl 

M 

rH 

rH rl 

M 

rH 

0 

rH © 

rH 

rl CM 

rH 

0 rl rl 

rl 

0 CM 

O 


in rH 

(A 

r-- 

rl 

IT' f v. 

(A 

111 

rl 

iA 

N 

rl 

in 

N 

iA Ifl 

rl 

m r-'- 

rl in 

N 

N 

r-- 

r-- 

0 CM ri 

in 

L0 

0 

rl 

M 


MO 

N 

rl 

CM 

’ t 111 

r-- 

0 

CM iA in 

uo 

0 rl rl 

iA iA 

M 

P- 

© rl 

Ul 

rl Ul 

rl 

Ul 

in p-_ 

P-- 

r- 

N 

l O "t 

-t 

'T ID 

ui in 

0 

r- 

r-- 

N 

0 

0 

0 

rl rl 

CM 

CM CM 

iA iA 

l v 1 

l v l 

M 

M 

-t -t ’t 

’t 

't 

ll! 

111 

111 

111 

in 

bn 

'•£« '•£' 

' £» '•£. 

'•£i 

r-- 

r--- r -- r - 

f- 

0 © 0 

0 © 

0 

© 

H rl 

rl 

CM CM 

iA 

iA (A iA 

ri 

M 

M 

CM CM 

CM 

CM CM 

CM CM CM 

CM 

CM 

CM 

CM 

M 

iA 

M 

M M 

(A 

iA iA 

iA 

iA 

iA 

M 

(A 

I'O 

M <A iA 

iA 

M M 

M 

iA 

n 

iA 

M 

M M 

M M 

iA iA 

M M (A 

M 

0 0 O 

0 0 

0 

0 

0 0 

0 

0 0 

0 

© © 

0 

© © 

0 

r- n 

r-- 

N 

r- 

N Z 

N 

N 

r-- 

N 

r-- 

r-- 

r- 

r-- 

r-- r •- 

N 

N N 

[■- 

r- 

Pw 

r-- 

r- 

r- 

n n r- 

N 

N 

N 

r- 

r- 

r-- 

r- 

f-- 

r-- 

r- 

n r -- 

f-- 

N 

n r - r -- 

r-- 

0 

0 0 

0 © 

0 

0 0 0 

0 

0 0 

© 

© © 

0 

0 

0 

0 

0 0 

o 

0 0 

0 0 

0 

0 

0 

0 

© 

o 

0 

0 

0 0 

0 

0 0 

0 

0 

0 

0 

0 

0 

0 0 0 

0 

0 0 O 

o 

0 

iTi 

0 

0 

o 

0 0 

0 


0 © 0 

0 

rl 

rl rl 

rl 

rl 

rl 

rl 

rl rl 

rl 

rl rl 

rl 

rl 

rl 

rl 

rl rl 

rl 

0 0 

0 

0 0 

0 0 

0 

0 0 

© 

0 

o 

0 

0 

0 0 

0 

0 © 

0 0 

0 

0 

0 

0 

0 0 0 

0 

0 0 0 

0 

0 

0 

0 

0 0 0 0 

0 0 

<0 0 © 

o 

0 

0 0 

0 

0 © 

0 0 0 

0 © © 

0 

0 © 0 

0 0 

0 

UJ 




l— 







z 

Q 












































z 




1.0 







10 



h- 























H 


















►-4 




Z 







z 



2 









































l- 




1—4 










0 












h- 











5 


















Z) 




z 







z 



0 


Z 










“i 




> 






0 

Z 0 





Ci 













0 




UJ 






z 

0 



0 












Z 




z 






z 

ill 0 

z 




UJ 













z 


_J 







o 

z 





o 




ti*l 






z 




z 




Z h- 


z 

a 

z 



















Z 


Q 






2 

z 

10 


Z 


l- 




h- 

z 




H 

4-4 

z 



y 



Ul 

y 


r-j 

z z 

H 


Z 


0 













H- 


h- 


z 







o 

z 


0 






V—1 

z 




y 


D 



4—4 


bl 

Ul 

0 0 



2 

2 

UJ 

fi 


0 













3 


0 


z > 


z 




z 

h- 

4—4 

H 

I - 1 

0 

z 

to 



z 

Q 





& 

Z 



Z 


Ul 

CM h- 0 


h- 

Zh0 

4-4 


z 


0 













z 


0 


|J1 z 


UJ 





to 

z 

0 

0 

Z 

0 

z 




1 — 

0 



n 


1—4 

0 



0 

CM 


0 


0 

Z 0 z 

0 

1-4 



0 













H- 




H 


H 

H 

L0 

z 

z 



ZJ 


z 

0 h- 

0 


Z 

z 

tn 

■=3 



0 

o 


cPi 


0 



A 

H- 


Z 

i-« Z Z 0 

1 - 


z 













D 


0 


Z Z 


Z 

Z 

Z 

0 

1—4 

1 - 

H-4 

in 

h- 

N 

z z 

z 


0 

z 


z 




z 

y 

Z 


L- 

0 



Z h- 

in 


0 N 



X 















O 


y- 


0 Ul 

0 

0 

Z 0 

0 


~T 

4—4 

z 

Z 


> z 

0 


0 

z 

ili 




UJ 


t—4 




h- 


Z 

0 Z 

0 

z 

z 

Z 

rl 



ill 

















Z 


o 

0 z 

z 

in 

z 

0 

z 

z 

Z 

0 

z 


Z 

X 

y 

z 




z 


0 


1— 


z 

4-4 

0 z 

z 


H UJ Z 

2 


z 















z 


z*~ 


_J 

CO 

0 


0 

X 


El 

to 


21 

1-4 

0 



> 

h- 

Z 

z 



4—1 

4-4 

Z 

h- 


Z 

b- 

4-1 


0 X 

0 



4-4 

H 

4-4 


I 













1—4 


z 


> z 



J- 

Z 


z 

Z 

z 

z 

Z 


0 h- 

z 





0 



0 


iLj 



Z 0 


z 

z 

z 

z 

LU UJ 

0 



















z 


Z X 

LU 

z 

z 


UJ 

I.o 

z 


z 

z 

z 

z z 

z 


z 

y 

z 

f~ 




z 

O 

Z 



0 

h- 

0 z z 


z 

z z z 


Z 

z z 


2 













H 


z 


J— z 

I> 

0 

H-* 

0 

> 

X 

0 

L0 

0 

0 

z 

0 M 

z 


> 

to 

»_l 

to 



l~ 

X 

z 

ill 


z to 

to 

z 

Z 0 

L— 

z 

z 0 z 

1“ 

h- 

X 0 


n 

to 












UJ 


*-* 


Z 0 

z 

0 

X 

~T 

z 


z 

Ci 

h- 

z 

0 

Z X X 


z 

z 

1-1 

z 



z 

Ei 


iU 


0 z z 

z 

4-4 y 

z 

0 

D Z O 

z 

~ 

D 0 


0 

to 












10 


CD 


UJ z 

l/l 

0 

1-0 

H 

in 

CM 

1—4 

z 

to 

10 

0 

Z Z 1- 


to 

X 

0 

z 



Ul 

^7 


Z 


0 

Z 

h- 

z 

0 M 

to 

0 

0 0 0 

to 0 

*-> 0 



z 












rl 


h- 








































1 

z 

Cl 










v 


+ 


z 





















Q 



















Z 

Ci 


h 

2 

to 


2 


Z 


Z 


rl 


LU 




n 









y 






2! 


z 



rl 

h- 



z> 



h* 



to 

Z 

z 

h- 

X CM 


0 

X 


4-4 LL 

h- 

X z 

to 

to 

o 

0 

J— 

y 

Z 

0 


> 






z 




z 


0 

z 



z 


Z 


z 


CM 

Z 

r 

X 

0 

0 

0 


Z 

0 


z 

H 

H 

i~i 

z 


CD 



ul 0 

~i 

f- 0 

Z 

2 

2 

X 

to 

Z 

y 

H 


z 


X X 

z 

-s 



z 

0 


CO 



X 






i— 


X 


.. 

0 

Z 



z 



X 

. 


0 

y 

2 

z 

0 0 


•X 

z 


Z Q 

0 

0 0 

0 

4-4 

Z 

Z 

4-4 

z 

UJ 

LU 


0 

O 


0 



X 



0 

z 

z 



z 

N 

to 

z 



0 

z 

4-4 

Z 0 

0 

0 

X 

2 

Z 0 

z 

0 

Z 0 

Z 

0 

LU Z 


h- 

z 


Z 


0 ••• 

o 


4—4 


0 



Ci 



X X 

X 


















0 




0 



0 







0 

0 

0 



Ci 

h- 












-J H - 


1 


10 

1—4 

0 

0 

> 

Z 

x 

4—1 

■> 

z 


> 0 0 

0 

I-* 

4—4 

z 

Z H 


4-1 


0 

j- 

Zy 

0 


Z 


> z 

z 

N 

0 z 

0 

0 

z 


2 

~i 












I UJ 




z o 

0 

z> 

0 

0 

0 

z 

z 

<0 

0 

o 

N 

0 0 0 

0 

0 

2 

21 

0 Z 1- 



0 

X 

0 

0 

z 

o 

0 

Z 0 z 

z 

y 

X 0 N 

X 

>r 

0 X 


X 

O 


X X 

X 

X X 

y 

y 

y 

y 

y 

X 

X 

10 Z 


X 

z 


1-4 Ci 

z 

X 

z 

z 

X 

z 

*■* 

z 


0 

*-/ 

X z 

z 

z 


z 


z 

z z 


r~ 


0 

X 

X 

0 

X 

0 

*"> 

X 

0 

0 

0 0 Z 

UO 0 



X 

z 


Cl 0 

0 

0 0 

0 

0 

0 

0 

0 

0 

0 





X 







z 











2 

z 


Z 











rl 

CM 





o 



rt 












LU 


z 







z 











Ci 

z 


h- 











Z 

Z 





0 

Cu 


Hi 













it 

S—1 







h- 











X 



Z 











0 

0 








h- 











* 

* 

z 







10 











z 

* * 

* 

z 











z 

Z 




* 

* 



o 

















































’t 


Ul 


P'l 

in 


Ul 

MO 








































CM 


rH 


CM 

rl 


© 

0 








































rl 


rl 


rl 

rl 


rl 

rl 


n 











P- 







P- 



P- 

rl 



'■£• 



CM 



0 

rl 



rl 

PI 

Ul P-- 

rl 


’P 


CM 

PO 


P- 

P-- 


© 











0 







0 



0 

rl 



0 



0 



■•t 

rl 



rl 

0 

0 0 

rl 


CM 


CM 

CM 


0 

CM 


0 











0 







© 



© 

0 



0 



0 



P1 

O 



0 

0 

0 0 

rl 


rl 


rl 

rl 


rl 

rl 


r-- 



iA 





0 



ID 






r-- 

't 



CM Ul 

Ul 



in 



0 



0 

rl 



rl 

ID 

MO PI 

’t 

CM 

Ul 

P-- 

TP 

0 'D 

0 

rl ID 

in 

CM 

in 



0 





'•D 



rl 






0 

P-- 



0 ’t 

in 



CM 



CM 



CM 

MO 



LD 

rl 

PI Ul 

0 

0 

CM 

0 

rl 

^ rl 

rl 

0 0 

0 

0 

0 



0 





0 



rl 






0 

0 



O rl 

0 



rl 



0 



CM 

0 



0 

0 

PI rl 

rl 

0 

rl 

0 

rl 

P'1 rl 

0 

rl 0 

rl 

0 

CM rl 

M l v l 

in 

ID 

N Pw 

N 

rl 

iA 

'D 

r- 

Ul 

CM 

0 

P-- 

r- 

N 

N 

i-D 

M 

rl 

rl 

'■D C M 

CM 

rt- 

in 

Ul 

Ul 

bl 

CM 

rl A- 

pw 

’t 

CM 

Ul 

0 

CM 

in 

CM PI 

Ul 

rf 

Pu 

'•£' 

PO 0 rl 

P-- 

0 Ul 

ID 

M 

’t rl 

Ul 

0 

rl 

0 0 

0 

-t 

■M" 

0 


rl 

rl 

N 

0 

0 0 

0 

rf 

0 

0 

rl 

rl iA 

Ul 

0 rl 

rl 

rl 

Tf 

MO 

P- rl 

'•£' 

0 

bl 

rl 

rl 

rP 

rl 

PI 0 

0 

Ul 

rl 

0 

© CM rH 

P'l 

CM © 

rl 

Tp 

0 M 

0 0 

M 

0 

0 0 

rl 

CM 

© 

M 

rl 

0 

M 

rl 0 0 

0 

rl 

iA 

M 

PO 

M 

© rl 0 

rl 

rl 

rl 

rl 

0 

(A 

rl 0 

CM 

PI 

0 

0 PI 

0 

PI 

PI PI 

rl 

PI 

rl 

0 

rl 

CM rl 

0 

rl rl 

rl 

0 


P-- c-.j 

iA 

iA iA 

iA rt 

in 

ID 

0 rl 

CM 

PO rt 

Ul 

r- © 

rl 

rt 

Ul ID P-- 

0 

rl 

M 

ID Pu S' 

0 

0 0 CM 

bl 

0 rl 

CM 

in id 

Z CM iA 

rt 

i n 

0 

i A rt 

in 

0 

P'1 

■-D 

rl 

rl 

rl rl rl 

Ul 

Pu 

PI 

in 

rl iA 

pu 

rl 

Ul 

Pu 

iA 

Ul LD 

^D 

ID ID 

ID ID 

•D 

ID 

P - P- 

P-- 

P-- N 

N 

p-- o 

0 

0 © 

0 0 

rl 

rl 

rl 

rl rl CM 

CM 

CM CM CM 

CM 

M iA 

P-1 

n 

\A 

PO rt rt 

rt 

rt 

Ul 

Ul Ul 

Ul 

MO 

MO 

ID 

Pu 

z 

Pu pu p-_ 

Pu 

Pu 

0 

© 

rH rl 

rl 

CM 

CM 

CM 

iA 

0 0 

0 

© 0 

0 0 

0 

0 

0 0 

0 

0 0 

0 

0 rl 

rl 

rl 

rl 

rl rl 

rl 

rl 

rl 

rl rl rl 

rl 

rl rl rl 

rl 

rl rl 

rl 

rl 

rl 

rl rl 

rl 

rl 

rl 

rl 

rl rl 

rl 

rl 

rl 

rl 

rl 

rl 

rl rl rl 

rl 

rl 

CM 

CM 

CM CM 

CM 

CM 

CM 

CM 

CM 

pw r- 

ru 

P-- P- 

P- N 

P-- 

N 

P'- P-- 

P-- 

Z N 

pw 

P-- P-- 

P- 

P- 

P-- 

P-- Pu 

P-- 

N 

Pu 

pu pu p- 

Pu 

pu pu P-_ 

pu 

Pu pu 

Z 

Pu 

Pu 

Z Z 

Z 

Pu 

pu 

Pu 

pu pu 

pu 

Pu 

Pu 

Z 

Z 

pu 

Z Pu Pu 

pu 

Z 

Pu 

z 

pu pu 

pu 

pu 

Pu 

z 

Pu 

© © 

0 

0 0 

0 0 

0 

0 

0 0 

0 

© 0 

0 

0 0 

0 

0 0 

0 0 

0 

0 

0 

0 0 0 

0 

0 0 0 0 

0 0 

0 

0 

0 0 0 

0 

0 

0 

0 

0 0 

0 

0 

0 

0 0 

0 

0 O 0 

0 

0 

0 

0 

0 0 

0 

0 

0 

0 

0 

o © 

© 

0 0 

0 0 

© 

0 

0 0 

0 

0 © 

0 

0 0 

0 

0 

0 

0 0 

0 

0 

0 

0 0 0 

0 

0 0 0 

0 

0 0 

0 0 

0 

0 O 

0 

0 

0 

0 

0 0 0 © 

0 

0 

0 

0 

0 0 0 

0 

0 

0 

0 

© 0 

0 

© 

0 

0 

0 

Page 

24 




Dr. 

Dobb's 

Journal 

of 

Computer 

Calisthenics & 

Orthodontia 


Box 

310, 

Menlo 

Park 

CA 

94025 




June/July 


1976 



172 



X 

Z 


oi 

0 : 

UJ 


0 

H 


X 

m 


0 

in 

X 


V LU 

O 

u. x 


u: 

uj x 

o a 2 
O Lil 4-4 
£ 0 £Q 


0 

in 


x 

i 


l/l X LU 
l/l 'I 1/1 
UJ I 



r i 


01 





r; 


X 

X © 

LU 


X 








0 



X 

0 

CO 



















^4- 









X 




X 

X 


X 


*8 




X 

X © 

0 




X 




l/l 

l/l 

X 



0 





















X 









X 




X 

X 

1 - 

(J 




'h 


X 

o 

rH 

0 


oi 

01 

l_l 



X 

X 

X 




0 

p- 

p- 

P- 

X 












0 





0 



01 

01 





0 




01 

X 

0 

X 


Ul 


i- 


o 

7*~ 

© 

Z 


X 





X 

p- 

p- 

X 


X 

X 

0 

1—1 

X X 




X 








0 


LL 



X 

X 


X 




X 

p— 



p- 

X 


o 

z 

X 



X 

H- 



0 

© 



p- 

X 

01 



X 

0 

0 

0 


0 


0 

X 

01 X 


0 








X 


X 





0 



01 

X 



0 

X 

p— 

X 

01 

X 

X 



in 


in 




X 


rl 

2 

ll 

0 

01 




CJ 



X 


0 

X 

D 



i 0 i 


X 


0 






0 

rn 

X 


0 




0 


z 

01 



0 

l/l 

01 

0 

rH 

X 

0 

_l 

X 



h- 

r 

H 


p- 

X 

rH 

X 

X 


0 

X 




X 

X 

X 


X 

X 

X 

X 

X 



X 








0 

X 






0 



X 

0 



X 

X 

X 

0 


o 

X 

0 

t —1 

i- 

l- M 






© 


0 

p- 


01 



0 



p- 



X 

X 

t—( 

U4 

P- 


X 


1 - 

p- 





10 

0 P- 

p- 

p- 

p- 

p~ 


X 

1 - 

P- 

0 





X 


X 

p- 



X 


o 

0 

LQ 


LU 


0 




X =< 

ir< 

0 



0 





X 

0 




0 




l_l 

0 






X 0 

■_! 

_l 

l_l 

_ 1 

0 

01 

© 


X 

Ul 



X 

0 

X 


0 

X 

H 

LL 

Q 

X 


x 

X 

LU 


X 

0 

0 


X 



X 


X 

p— 

X 

01 


0 


0 

.— 

X 

X 


X 


0 

X 



0 


in 

X 

0 

X 

0 

X 



0 

X 

0 - 


LU 


0 



X 

X 

j> 

01 

2 



K 1 - 


X 


0 


X 

X 

p— 

H 

p— 

p— 



o 

01 

y 

0 


X 

0 

X 

01 

21 

p- 


2 


_1 

p- 

X 


0 


0 

P- P- 

_l 

p- 

_• 

H 

p— 

Pd 

_ 1 

P- 

4—4 

p~ 

i : * 


X 

0 

p— 

- : " 

t 

X 

X 

0 

5 

X 

—i 

X 

X 

0 

X 

7»~ 

0 

fi 

© 

X 


X 

X 

X 


X 

X 

0 

t—J 


X 

0 

n 

X 

0 

0 


l —1 


X 

0 



X 


i—i 

X 0 

X 

_ 1 

X 

_ 1 

X 


X 

© 

0 

X 

X 


X 

0 

X 

X 

_ 1 

01 

t- 

o 

h 

LU 

0 0 

01 

0 

in 

X 


0 

X 

in 

0 

01 

0 

01 


X 

p- 


X 


p- 

X 

0 

1 - 


o 


0 


X 

0 

0 


X 


X 

01 0 

X 

10 

X 

© 

01 

© 

X 

i© 

0 

X 

0 

01 


p- 

X 

0 

01 

0 
























l/l 


l/l 









X 






0 


0 


X 



'•D 

X 






> 

















T 











0 


X 









0 






f i 


X 


0 



+ 

0 


X 




© 










o 



>* 



rl rf 


> p- 

rH 






X 

K-( 


p- 




0 P- 




0 

0 


X 



iH 

> p— 

0 

10 

0 

p- 


0 

0 

o 

X 




X 




p- 

X 

X 


Ul 

’t 

rH 

X 

X 

1 - 

X 


0 

’•£» 


\- 

0 

P-1 


X 

Q 

© 


01 

X 

p -1 

0 


21 

co 

X 

0 



Ul 

X 

rH 


10 



X 

p- 0 

X 

rH 

X 

10 

'•£■ 

0 

X 

rH 

p- 

I 

X 

1 © 

X 


z 


0 


3 


+ 


h- 

3 


Cl 



0 



0 

1 ' i 

__ 


. 

__ 


d" 

P- 


+ 




CJ 

0 

1 1 


© 

+ 


1 - 

Pi 





0 0 


p- 


0 


z 


1 - 

01 

X 







X 

Q 

CJ 

6 

** 

X 

0 

X 

CD 


Cl 

X 


X 

0 


01 

>r 

o 

ui 

0 

X 

•D 

0 

X * 

X 

0 

X 

rH 

X 

01 


rH 1# 

X 

0 

rH 

1 - 

r-- 


X 

Z 01 

X 

0 

X 

01 

0 

p- 

X 

0 

X 

rH 

© © 

I 

X 

X 

X 

X 
















0 















0 











0 




0 


0 



X 







X 

0 




PJ 

H -1 

X 



X 


X 

N 

H-* 

X 

X 

0 

n 

X 


j—( 


i—i 

0 

h-4 

LL 

t—( 

0 


»—i 

10 

0 

p~ 

1-4 

w 

4—4 

X 

4—4 


4-1 

r-j 

►-4 

X 0 

1-4 

X 

4-4 

0 

4—4 

0 

4—4 

X 

X 

4-4 

> 

4-4 


0 

z> 

01 

0 

j—, 

X 

o 


'> 


~r 

0 


0 




X 

p- 

X 



0 


0 

X 

z 

X 


■>:" 

X 

0 

X 

y r 

X 

X 

X 

7* 

z> 

21 

X 

N 

X 


> 

P- X 

> 

z 

Z-- 

X 

> 

X 

> 

z 

o 

z 

0 

1 - 

X 

X 

10 

ZD 

X 

2 = 

o 



z 

*-;i 

X 


0 

z 

X 




01 

I - 1 

z 

X 

z 

z 

z 

o 

0 

0 

0 

0 

z 

0 « 


0 

X 

0 



*-> 

0 


0 

X 

21 

01 0 

21 

y. 


101 


0 

rr 


0 

X 

z 


0 

0 

*- 

X 

0 


I 

01 


CD 
* X 


O _J 

rH I— 

S~ Z 

o u 


rH 

Id 


3 © 
rH rH 
*3 '3 


•3 rH ui d- ui <3 
’t d- ui q r-id- 
3 Pd 0J '3 Pd rH 


rH 

r- 

*3 


rH '3 
rH h 
•3 3 


rH ’t 
'3 ’t 
M rH 


P-- X CJ CJ X id X N CJ P-- '3 CJ X CJ CJ lil 

th r- m >3 r- <3d- >3 r- cj d- >3 r- in x th 

tH Pd id id © Pd fd rl Q rl CJ id '3 C'J 3 Pd 


QrlSrl 
d f rl t 
3 Pi 3 id 


pv. 

r-- 

r-- 

3 

CJ 

Ul 

3 

CJ 

Ul 

N 

3 

P-1 

d- 

Ul 3 

CJ 

I'd 

P1 

P-i 

Pd 


’t 

d- 

10 

Ul 

Ul 

Ul 

'■£< 

X 

X 

'•0 r - 

r-- 

N 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

C-J 

CJ C'J 

CJ 

CJ 

© 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 3 

© 

3 

rH rH 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

rH rH 

rH 

rH 

© 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

© © 

3 

3 


r- 



3 


© 

id 

Ul 

'•£' 

Ul 

i'd 



© 


© 

CJ 

rH 

CJ 

Ul 

3 



© 


rH 

Pd 

id 

id 

CJ 

'•£' 

rH 

N 

'■D 

rH 

'■0 

CJ 

rH 

id 

rH 

r- 

d" 

id 

CJ 

r._ 

r-- 

CJ 

d- 

© 

d- 

3 

C'J 

rH 

3 

rH 

Pd 

I'd 

Q 

Pd 

© 

■H 

I'd 

d- 

Ul 

r- 

© 

CJ 

Ul 

© 

Pd 

3 

3 

3 

3 

© 

rH 

rl 

rH 

CJ 

CJ 

rd 

Pd 

rd 

Pd 

I'd 

id 

Pi 

Pd 

I'd 

id 

3 

3 

3 

3 

3 

© 

© 

© 

© 

© 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

3 

3 

3 

© 

3 

© 

© 

© 

© 

© 


rH 3 
rH tH 
3 3 

3 [••- rt 
3 rH C J 
CJ 3 CJ 

rH X X CJ 10 ■ 


■J C'J C'J Id id Pd -t ’t ’t d - li* 



3 


rH 




rH © 


3 




rH 


© 







rH 


rH 




rH rH 


rH 


•H 


-* 


rH 







3 


3 




© © 


© 


3 


Pd 


© 






CJ 

Ul 

Ul 

3 

r- 


P-1 

rH d- 

Ul 

Ul 

© 

-* 

X 

Ul C J 

Ul 




p- 

3 

© 

I'd 

rH 

©' 

© 


P- 

N CJ 

© 

I'd 

rH 

CJ 

© 

H © 

Pd 




I'd 

3 

3 

id 

3 

3 



i© 

© CJ 

© 

Pd 

© 

CJ 

© 

CJ 

© 

Pd 




3 

3 

'-0 

Pd 

X 

CJ 

X 

© 

X 

C J Ul 

X 

id 

X 

Ul 

X 

Ul 

X 

Pd 




X 

r- x 

r-- 

Q 

P-- 

rH 

N 

© 

P-- 

X rH 

r-- 

© 

P-- 

rH 

rH 

rH 

P-- 

© 




d- 

rH 3 

3 

Pd 

Pd 

id 

I'd 

Pd 

© 

© Pd 

© 

id 

© 

Pd 

© 

I'd 

© 

id 




Pd 

-H 3 

'■£' 

3 

P-1 

Ul 

© 

CJ 

Pd 

Ul © 

Pd 

Ul 

3 

CJ 

Ul 

N 

CJ 

d - 

P-- 

P- 

P- 

P-- 

rH CJ 

d - 

Ul 

Ul 

Ul X 

X 

X 

X X 

P-- 

P-- 

3 

3 

© 

© 

H 

rH 

rH 

rH 

rH 

rH 

CJ CJ 

id 

Pd 

id 

id P-1 

P-1 

Pi 

Pd Pd 

Pd 

Pd 

3 

3 

© 

© 

© 

© 

© 

© 

3 

3 

0 

0 

3 

3 

3 

3 

© 

© 

© 

© © 

© 

© 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

rH rH 

rH 

rH 

rH 

rH 

rH 

rH 

■H 

rH H 

rH 

rH 

rH 

rH 

rH rH 

rH 

rH 

rH 

rH 

rH 

rH 

rH rH 

3 

3 

3 

3 3 

© 

© 

© © 

3 

© 

3 

3 

© © 

© 

© 

© 

3 

3 3 

3 3 


3 

rH 


N 

M 

CJ 


rH 

X 

Ul 

Ul 

rH 

r- 

d" rH 

3 

rH 

iA 

I'd 

P-- 

3 

rH 

CJ 

CJ 

I'd I'd Pd 

3 

3 3 

3 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

3 

3 

3 

© 


0 

«3 

QQ 

O 


U1 

UJ 


UJ 

o m 
<E '/I 
l/l UJ 


U1 

l/l 


DDCt 

o 'I x 


i 2 I ill 

x 0 «i 


X 

X 



X 

X 

01 

X 


0 


X 


1- 

0 

X 

X 

ZD 

X 

01 

X 

D 

X 

0 

0 


l— 

0 

01 

4—4 

X 

II 


0 

0 

0 

r-j 

0 

y 

0 

X 

X 

X 


I’d 

CD 


1—4 

X 

X 

X 


X 


X 

X 

X 

01 

zz. 

X 


X 

f'\ 

X 

1- 

X 

0 


> 

f— 



X 


X 

0 

X 

4—4 



0 

X 

X 


0 

h- 

X 

0 


~z. 

X 

4-4 


X 

0 

1— 



40 

X 

X 

0 

0 






l— 

4—4 

l- 

01 

0 

H 

X 


H- 

X 


l~ 


h- 

1— 

0 

01 



X 


X 

X 

X 

0 

2 

0 

X 


X 

X 

X 

X 

jL 


1- 


01 

X 

01 

0 

4—4 

1- 

01 

CJ 

0 

01 

LU 

1- 

0 





1- 



h- 

X 

0 

X 

TT 


CJ 

X 

H 

L 

0 


X 

0 


X 

X 

X 

V- 

4-4 


4-4 

. ^ 

X 


X 



I 

0 


_1 

0 




X 0 

0 

X 

X 

X 

X 

2 

2 

X 

40 

X 


0 X 


0 








0 

0 

0 




0 

LL 


> 

X 


X 

4-4 

0 

0 

X 

4—4 

4-4 

0 0 

X 


X 

10 

X 

N 

l— 

X 

X 

X 

0 

z> 

x 


0 

0 


z 

0 


01 

0 0 

0 

X 

z 

0 


ix x z 

O H ti¬ 
ll. -< LL 

ll >-< 

i— *—< I— 

i/i m 0 


X lx CE U. Pd 'X 

i (E ul h f- h rH LU 


: a. z cl n a. : 


Lx 


z 

I 



1 

h- 



0 

0 

X 


0 


X 

l_l 


X 

H 

1- X 

X 

0 ^ 

7 y 

Z X 

X 

o 

ZD 

0 N 


3 <E 
CD 


O UJ 
I— Z 
UJ 

>X LL 

h- 0 

•X z 


0 z 

UJ 
Ll Z 

HH LU 
LL 
_J o 

o z 

UJ >-« 


X */i 
■I U. > l/l LU 

Z h ll UJ Z 

li: ii H 
X X X 0 0 
O j u u 
lx Z X h- 

H IX IX 

•I h h >1 UJ UJ 

in z uj > 'n 

O LU O J 'I Z 

h* i— u o m h 


H 

LU 


LU 


O H 
O h- 
UJ z > 


O ; 

z ' 

rH 

Lx 
* 4-4 


C'J X Pd -J 

z 0 x z m 

Pd U. Z Lx Z 

I H H |J ll U H ll Li H 

I -J 

: hh ll i> *-* n x i/i _J 

: LX N Z u li Z lii J 'I 

i L! 1 H Z U i—11 lx 0 

CJ 

Lx 


H rl H u. 

_l J w o 

m \— 

0 X X 

IX Z > O Cl 

O w -x O *•••- 

_j z in _j o 


LL LL T Lx 

I X Z 0 

0 0 U_ LL 

iZIZhU 


'X 

X X 0 

ULl _ 
ui t-i 0 
•X X X 
X 

UJ UJ 
0 0 H 
X X 3 
I/I X X 

in o \— 

UJ h- 3 

z m o 


X 

H 

X 


01 0 

Z 3 

D D ll ui 

fflflQOI x 

. . LiJ lii LU 

X X UJ 3 - 


LX X X X N 

ooohzxui x x z x : 

Ll_I ui l/l *-> 0 X J J ui l 


X 

X 


X 

m 

I— 

D 

O 

X 


I/| X 

_j X > 

H X Cl 

X 0 X 

H X 

01 o x 

H X 

h- 0 1- 

X X 0 m X 

X X X H Cl 

X 3 3 Z 

0 li- 1 3 h- 

h- 3 3 

UJ 3 h Q. X d 

> X 01 O 0 h- 

XZZOUJ3 
01 *-* h- 3 X O 


X 

ui 

Pd CO 


01 X 01 X 
Ci Ci Ci Ci 


X H 
X 


01 


0 X > 

0 -v L- 

m x h- 


0 

3 


h- > 0 0 

3 O Z 3 Z 

X ZHdl 
K 

3 K rH 

O 0 O 

0 O 

■ * * in m 


> H 
0 3 
Z 0 



'•D 

CJ 

CJ 

rH 

CJ CJ 

X 


rH 



Q 

3 


3 

© 


© 

3 

3 

rH 

3 3 

3 


rH 



rH 

rH 


rH 

rH 


© 

© 

3 

© 

© 3 

© 


3 



I© 

© 


3 

© 


IT' 

3 

3 

d- 

Ul CJ 

X 


C J d- 



rH 3 X 

d" 

X Ul 

rH 


CJ 

CJ 

CJ 

rf 

r- 3 

Pd 


3 P- 



r- 

d- C J 

CJ 

CJ rH 

P-- 


id 

3 

3 

© 

3 rH 

CJ 


© © 



tH 

© rH 

© 

rH ©« 

rH 

d- ID 

Ul 

Ul CJ 

ui r- cj 

C'J 

rH Ul 

Ul 

Id X rH 

C'J 

P-- 

cj 

X C'J 

X 

CJ X 

CJ 

© rH 

rH 

d- X 

P- X rH 

X 

d- rH 

rH 

Ul 

rH d- 

Id 

X 

P-- 

P-- C-J 

P-- 

rH P-- 

3 

rH rH 

Pd 

© Pd 

rH CJ Id 

© 

3 Id 

Pd 

Pd 

© © 

© 

CJ 

id 

P-1 Id 

Pd 

M Pd 

id 

CJ Pd 

rf 

P-- 3 

id d- ui 

© 

Id X 

rH 

d- 

ui r-- 

CJ 

Id 

d- 

P- rH 

d - 

X rH 

Pd 

rf rf d" 

d- Ul 

Ul Ul Ul 

X 

X X 

N 

P- 

p- r - 

© 

3 

3 

©i rH 

rH 

rH CJ 

CJ 

© © 

© 

© 3 

3 3 3 

© 

3 3 

Q 

3 

© © 

rH 

rH 

rH 

rH rH 

rH 

rH rH 

rH 

Q 3 

© 

3 3 

© © 3 

3 

3 © 

© 

3 

3 3 

© 

3 

© 

© © 

© 

Q 3 

3 

rH rH 

rH 

rH rH 

rH rH rH 

rH 

rH rH 

rH 

rH 

rH rH 

rH 

rH 

rH 

rH rH 

rH 

rH rH 

rH 

© © 

© 

3 3 

© Q © 

3 

©1 3 

3 

3 

3 © 

© 

3 

3 

© © 

© 

3 3 

3 


rH 't 


3 rH 
T t 3 
3 rH 

3 3 C-J rf ’t 

rH rH 3 3 CJ 

3 3 3 rH rH 

CJ 't N rH rH 

3 rH M 3 3 

CJ CJ rH rH rH 

f._ |V| |VJ I.£| CJ rf -H L£| CJ f'- UI IT' rH CJ Ul CJ C'J 111 rl H rl M Ul CJ ’t 3 3 

L£i rf CJ r- rH rH f-- P- 3 X CJ rH CJ P- P- X 3 rH rH © ^ 3 rH 3 3 ^ ^ 

rH 3 3 i v i M 3 rH i "l Pi CJ iA iA i v i 3 3 3 l‘ i M l v l 3 3 P-1 3 rH rH 3 


3 

3 

id 

rH 

rH © 

rH 

rH 


rH 

rH rH 

3 

© 

© 

©' 

© ©• 

IT' Ul 

© CJ 

C'J 

■d 1 

d - Ul 

rH d- 

rH © 

10 

’t 

d- P-- 

© rH 

rH rH 

CJ 

© 

© © 


| ^ d ^ H ^ ^ rl rl rl rl d d rl rl rl rJ rl rH rl rH rH rl rH C'J OJ OJ C'J CJ 

I 0 0 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 ® '3 3 '3 

|^ ddH H HHrir |drlrlrHddddddddddrldrlddddddddddddd 

I 0 0 3 3 3 3 3 3 3 3 3 3 3 © © © © © 3 3 3 3 3 3 3 3 3 3 3 U' 3 3 3 3 3 3 3 © © © 






Ul 

Ul 


d- 





3 

CJ 


3 





3 

CJ 


3 

Ul 



P-- 

id P-- 

C«J 

3 

Pd 

rH 



©' 

Pd 3 

CJ 

r- 

CJ 

CJ 



rH 

id 3 

Pd 

rH Pd 

Id 

d - d - 

d- 

d" 

Ul P - 

3 

id 

d - 

CJ 

CJ CJ 

CJ 

CJ 

CJ CJ 

id 

Pd Pd 

CJ 

CJ CJ 

CJ 

CJ 

CJ CJ 

CJ 

CJ 

CJ 

Q 

© © 

3 

3 

3 3 

3 

3 

3 

rH 

rH rH 

rH 

rH 

rH rH 

rH 

rH 

rH 

© 

© 3 

3 

3 

3 3 

3 

3 

3 


June/July, 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


Page 25 


173 



Pointers to other good stuff 


WE WANTED TO INCLUDE MUCH MORE IN THIS ISSUE THAN WE COULD AFFORD. PART OF IT WILL JUST 
HAVE TO WAIT FOR FUTURE ISSUES. THE REST OF IT (ALONG WITH STILL OTHER USEFUL TIDBITS) HAS BEEN 
PUBLISHED ELSEWHERE: 


Southwest Texas Products Corp., 219 W. Rhapsody, San Antonio TX 78216, has put out the first issue of their Newsletter, a 49-page, 

loose-leaf job. We would like to applaud their work and their approach to hobbyist software. This issue of the SWTPC Newsletter contains 

extensive information on 6800 software, including some “bug" notices and corrections, a list of available 6800 games, some hardware notes and 

schematics, and complete listings of: 

A Black Jack game-playing program (9 pages, full-size, hex-coding only) 

A Memory-Dump program (2 user-documentation pages, 2 pages of unannotated source code) 

A 1.3K Editor (3 user-documentation pages, 6 pages of unannotated source code) 

A 3.15K Micro BASIC (5 user-documentation pages, 15 pages of unannotated source code) 

The Editor was written by Robert Uiterwyk, 4402 Meadowwood Way, Tampa FL 33624. Micro BASIC was done by Uiterwyk and Bill 
Turner. We have spoken with Mr. Uiterwyk several times (we originally planned to publish Micro BASIC in this issue), and think “his head's 

in the right place.” He and his associates are actively pursuing the production of free and very inexpensive systems software for hobbyists. 

We would like to praise their efforts and urge them onward. 

The July issue of People's Computer Company, Box 310, Menlo Park CA 94025, contains its usual load of exciting items, notably 
including: 

Lichen Wang's Star Trek, written for Palo Alto Tiny BASIC [DDJ, Vol. 1, No. 5] (We wanted to publish it in this issue of the 

Journal but didn't have room.) 

An update of the comprehensive list of computer stores in the May issue of PCC. 

An update of the list of computer clubs that was given in the preceding issue of PCC. 


IX 














in 







■I 






































2 



LU 










































n 


LU 

2 

111 

if. 

LK. 

X 








X 


























in 




1— 


12 

i—i 


G 

iTi 

-1 





lil 



X 





X 

ill 



















G 

i_i 

X 



_l 


H-1 

K 

►—I 

L.i 


LU 





iM 


n 

L- 





X 

id 



















X 

z: 

I- 



i—1 

LU 

h- 

_.i 

1 — 

X 

X 

>.r 





X 


'1 

7 

Ill 




1- 

'T 



















El 

X. 



h- 

X 

2 

0 

0 

0 








X 


0 

i—i 

id 




2 

















LX 

X 



i—i 


.-* 


0 


i—i 

l_l 

X 

i._i 

LU 

UJ 






1 1 


X 

n 

x 




i—i 

© 

id 



















LU 


X 

7*- 

1- 

X 


X 

. 1 

1 



IK 



1- 



X 

X 

X 

X 


i~i 

i- 

x 

X 




IU 

x 



'X 



IX 



1— 

l—l 


X 

X _1 


h- 

LU 

_i 


h- 


X 

UJ 

i—i 


f i 



Ui 

id 

111 


10 

X IK. 

X 

X 

X 

Ud 

0 

III 



0 




L— 







.»•_ 

IX 


'-L 

•X 



_i 

LU 

i—i 

_H 

0 

H 

X 

X 

■ 

Y 

| 




X 


b- 

1- 

H 111 

I- 

X 



X 

X 

Ll 


i 

!~l 




X 


IX. 




0 


1- 

X 

X 

h- 


i_i 

X 

X 

LL 

X 

_i 

1— 

l- 

X- 

i -i 

X 

X 

X 

j- 

0 

i_i 

X 

Ud 

2 H 

2 

h- 

X 

V 


X 



X 

10 

© 



0 


l—l 







XI 


X 


O 


_J 

h- 

X 



X 

'T 


X 

‘X 

X 

X 




i—i 2 

i—i 

0 

f ’l 

X 

in 


0 


X 



1- 


ui 


l—l 


i- 


U_ 


(x O 



IX 

a. 

LL 

Ul 

7*~ 

ill 


2L 

i«d 

ui 


h- 

If. 

1 

I 

'1. 



!- 

Ui 

i i i—i 

i i 

i—i 


U 






Ud 

i'd 



X 



L_i 



I/I 

X 

■’t 

■H 

2 

± 



►-< 

Xj 

U 

t-H 

X 

UJ 

X 

i/i 

n 

10 

© 

X' 

h- 

1- 

Ill 

Ud 

X 0 

X 

0i 

X 

IK. 



h- 


h- 

111 



i'd 




— 1 



_ 1 

X 



l —1 

i—i 


X 





UJ 

X 

_I 


h- 



0 

...• 

n 

El 

lil 

X 


X 


i — i 


f- 

ft 

0 



X 


i 

~1 



'— 1 



1 

1— 

LiJ 

lx 

LL 




'i- 

X 

LU 

LU 

UJ 

h- 

■~i 

ill 

© 

i—i 

_l 

u 

X 

I—I 

X 


IK 

X 

Ill 


111 

11. 


1 





h- 





LU 




'I 

'I 

H X 

i_i 

l—l 


LU 

1- 

LU 

l—l 

El 

X 

X 

1- 

0 

i 


2 

_l 

l—l 

V 

111 

1- 

X 

G 

ZD x 

2 

Li- 


E” 

i- 

1.1 

"i 


0 

0 


~y- 

•r 

2 



— 1 


h- 

h- 

> X 



*1 

'i- 


_J 

g 

i—i 

X 

X 

LU 

i—i 

• ' 

© 

0 

V—1 


X 

..1 

1 

>1 


X i i 

i—i 


i “i 

X 

h- 

2 

If 

'T 

cr 


111 

L— 

i- 

i—t 

h- 

*- 




U'l 

I/I 

h- h- 




h- 

1- 


li. 

1- 

H 

1- 

_J 

X 

G 

CD 

2 

dd 

# 

h- 

X 

l-l 


X 

m h- 

0 

X 

2 

h- 

1— 


LU 

X 

X 

X 

0 

h- 

i/i 

2 













X 

X 

X 

X 

T 

T 

T 

T 

T 

T 

T 























X 












LU 

© 

l-l 

lx 

Ui 

Pd 

G 

iT 


© 

© 


































m 

U1 

X 

i.L 1 

'•L' 

LU 

X 

i i 

X 

i ; i 

i'-,i 



































© 

i© 

©1 

rd 

rd 

© 

rd 

rd 


N 

© 


















T 

X 





X 



ui 




[■- 

CM 

CM 

© 

LiJ 

III 

III 

III 

ill 

III 

UJ 

hi 

III 

IM 

ill 














CM 




UJ 

X 





x 

•X 

'•Li 

'•L' 

8 

1 

rd 

rd P-- 

i.M 

© 

© 

© 

© 

© 

© 

© 

© 


© 

© 


rd 

CM 

rd 


CM 

CM 

CM CM 

CM 

CM 

CM 

CM 


N 

CM 

iTi 

lil 

lil 


\r.i 


0., 




Lxl 

_1 





































LU 

2 

6 


LU 

I 



G G 

G 


G 

n 

G 

G 


G 

G 




fi 

r>; 


i'd 

in 

lid 

i'd 

I'd 

I'd 

i «d 

I'd Ud 

I'd 

I'd 

Ud 

Ud 


ud 

0 

_l 



_l 

■=;! 


G 



■*- 


JC 

LlI lxl 

X LU 

LU 

Lxi 

LU 

ill 

LU LU 

LU 

LU 

UJ 

X LU 

ui 

X 

X X 

G 

G 

G 

G 

G 

G 

G 

G G 

G 

G 

G 

G 

G 

G 

iu 

ui 

X 

ui 

ui 

X 

X 

ui 

rC 




•r 



LU 

l/l 

l/l 

'X 


Lx l/i 


_J 

Q 


in 

i/i 

> 



0 

IX 

rd 

O 

LU 

x 

i'd 

1- 0 

X 

7 

G 



li 

X 


1 




h- 







li. 

-i. 

L— LL 


o 

LU 

_J 

X 


Xi 

X 

X 

X 

0 


a 

21 

0 

J. 


ui 

i i 

'1 

I - ‘i 

2 x 

h- 

X 

X 




! 


idd 

© 

i. ' 


cc 

(-4 

+ 





in 

J> X 

-•t 

rd 



X 

_J 

_l 

El 

•X 

'X 1- 

i—i 

LU 

i- 

■ > 

1~H 

i—i 

X 

—i 


E" 

f 

X X 

2 

li 


LU 


LU 




rn 

h- 

h- 

h- 

2 






l-C| 

X 

h- 1- 

u. 

u. 

u 

1- 


i_i 

X 

h- f— 

1- 


X 

X 

I'd 


X 

-i 

1- 

X 

El 

Z_ 

X 

H H 

X 

X 

2 

h- 

2 


X 

X 

X 

X 

0 

h- 

Ud 

2 * 

* 


rd I d 

U' 

I'd 









Et Tf 

P-- 

© 









l -l © 

rd 

id 









lil ' D 

r- 

© i v i 

Pd 

rd rd 

Pd 

l' v i 

M 

Pd 

rd M 

I V 1 

Id id 

l'd 

't 

’t 

rf rj- 

rK 

rr 

•M" 


rf rf 

rp 

© © 

© 

© Q 

© 

'© ©I 

© 

© 

© 

© 

© © 

© 

rd rd 

rd 

rd rd 

rd 

rd rd 

rd 

rd 

rd 

rd 

rd rd 

rd 

rd rd 

rd 

rd rd 

rd 

rd rd 

rd 

rd 

rd 

rd 

rd rd 

rd 

© © 

© 

© © 

© 

© © 

© 

© 

© 

© 

© © 

© 

Page 

26 




Dr. 

Dobb' 

S 


Pd’t lil r-- © H i v i ir> P- • 


l l v l lil P-- rd CM cm 

i ' £i ' li '■£• r- r-- © 

!OQQ © © CM 


C-.J CM f-.J 
© © © 
C-.J CM CM 


IrHrHrl-rlrlrHrlrlrlrlrl'rl 
IrlrlrlrlrlrlTlrlrlrlrld 
’> © © © © © © © © © © © © 


CM CM CM 
© © © 
CM CM CM 

ri rl d 
d d d 
© © © 


:m cm cm 
© © © 
:m cm cm 

d d rl 
d d rl 
© i© © 


Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


June/July, 1976 


174 









48 LINES OF 64 CHARACTERS ON A TV 
Kit Price is $499.95 


by Video Terminal Technology staff 

6108 Elmbridge Dr., San Jose CA 95129 

I ve seen this running on a small Sony teevee, and was very im¬ 
pressed. The characters were clear and sharp. They bypass the 
RF and amp, and go directly to the tube to avoid character 
smear and obtain higher bandwidth. Screen update was fast. 

The company is small, run by good people, and I believe they 
will be quite responsive to their customers. -Jim Warren 


Video Terminal Technology announces a new video com¬ 
puter terminal with all the features of a professional terminal 
at a hobbyist price. The VT-4000 video terminal displays 48 
lines of 64 characters in a 5x7 font. This provides the capa¬ 
bility to display 3076 (3K) characters simultaneously—8 times 
the standard tv typewriter's 16 lines of 32 characters. 

The VT-4000 gives the operator complete control over 
his or her display. The keyboard interface card decodes all 32 
of the standard ASCII control functions. These control func¬ 
tions are user designated and can be strapped to match any 
software operating system. The selected controls can move the 
cursor up, down, right, left, and home. Direct cursor address¬ 
ing uses two control characters to position the cursor anywhere 
on the CRT screen. Other control functions can be used to 
selectively clear the displayed page, clear the entire memory, 
or clear the character positions from the present cursor posi¬ 
tion to the end of the line. Two more control characters al¬ 
low the operator to display individual characters either white 


iei 


101 

10 


DIMENSION IN< 236 > 

TYPE "FILNAME?" 

READC11 * 100 >INAN 
FORMAT<S10> 

CALL 0PEN<8,INAM,2,IERR) 
TYPE "NO. OF BLOCKS?" 

READ<11>NB 
00 10 I-1,NB 
I I - I - 1 

CALL RDBLK<8, I I, IN, 1, IERR> 
NRITE< 10,101 >IN 
FORMAT< 1X,4 17 > 

CONTINUE 

CALL CLOSE< 8,IERR > 

STOP 


R 

TYPE 


END 


SNOOPY 


XXXX 
X XX 
X *** X 
X ***** X 
XXXX ******* XXX 
XX X ****** xxxxxxxxx 
XX X **** X 


xxxxx 

XXX XX 

XXXX XX 


ss 

xxx^ 

X X 
X X 

X X 

X X 
XXX 


XX XX 
//XXXX 
X 
X 
X 
X 
X 
X 
X 

X 
X 

X 


xxxxxxxxxxxxxxxxxxx 


XX XXX 
X** X 

x***x 

XXXX 

XX 


XXX 
X X 


XX 


XX 


XXX 


xxxxxxxxx 

x 

xxxxxxx^ 


XX 

XX 


XXXX 

XX*** 

xxxxxxxxxxxxx * * 

* * X X 

* * * XXX X 

* * XXX 

* *x 

* *X X 

* *X X 

* *XX X 


XX 

X X 
XXXX 
XX X 
X XX 
XXXX 


X 

X 

XXX 

XXX 


Larry Balch photo 

2366 Mossdale V\fay, San Jose CA 95133 


on black or black on white. This leaves 16 control characters 
available for the requirements of the particular software 
operating system. 

The VT-4000 video terminal also offers other standard 
on/off features such as power-on clear, clear to end of line 
with line feed, scroll up, and scroll down. The scroll up/ 
down feature allows up to 16K of RAM to be scrolled 
through before any data is lost. After all of the available RAM 
has been scrolled through, the VT-4000 then starts to over¬ 
write the previous data. The VT-4000 basic configuration comes 
with 4K of RAM, expandable to 16K. 

The VT-4000 has been designed to easily interface to 
any computer and any video monitor or slightly modified 
television receiver. The computer I/O available is either RS232, 
TTL serial, or TTL parallel at any of the standard BAUD 
rates from 110 to 9600. The video monitor input available is 
either composit video/sync, separate video and composit sync, 
or separate video, separate horizontal sync, and separate verti¬ 
cal sync. A television receiver may be used as a video monitor 
if the following modification is made. Break the signal path 
between the IF section and the video section, and insert the 
composit video/sync at this point. However, if a sharper 
display is desired, insert the composit sync at this point and 
apply the video directly to the cathode of the CRT. Any 
questions about this modification will be answered by Video 
Terminal Technology (VTT). 

The VT-4000 is available from VTT primarily in kit 
form in any configuration from single boards to 100% com¬ 
plete kits. Assembled and tested boards or complete models can 
be purchased for a standard assembly fee. All such options 
carry a six-month parts and labor guarantee. 

51 2- CHARACTER VIDEO RAM 

Matrox Electronic Systems [P.O. Box 56, Ahuntsic 
Syn., Montreal, Quebec, Canada, H3L 3N5, (514) 481-6838] 
has announced a most interesting widgit: 

Their MTX-1632 is a single physical component. Its 
input pins can be directly connected to any M-P bus and appear 
to be input to a 512x8 RAM. The output, however, is a video 
signal that directly drives a TV monitor. It displays 1 6 lines of 
32 characters each, interpreting the bytes in its RAM as ASCII 
character codes. It requires only a single 5-volt power supply, 
can drive up to 25 TV monitors, offers character-blink, and has 
an access time under 650 nanoseconds. 

SONOMA COUNTY COMPUTERS HOLD MEETINGS 

(reprinted with permission from Homebrew Computer Club 
Newsletter) 

The SONOMA COUNTY MICRO COMPUTER CLUB in 
Northern California is small but powerful. We are a group of 
several ALTAIll’s, an IMSAI, a JOLT, two PDP-8’s, an APPLE, 
and some others on order. We all have people up and running. 

We meet the first Tuesday in each month at LO*OP CENTER 
in Cotati. Meeting time is 7:30 p.m. Any interested systems are 
invited to attend with their operators. 

BYE BYE BIRDIE LO*OP CENTER 

LO*OP CENTER CLASSIC PDP-8 8099 La Plaza 

Cotati CA 94928 


June/July, 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


Page 27 


175 





VARIABLE CHARACTER SPACING 
IN VIDEO DISPLAYS 

by Jim Day 

17042 Gunther St. 

Granada Hills CA 91344 

Figure 1 shows a typical dual-case TVT alphabet, each 
letter of which is generated via a 7 by 9 dot matrix. If two 
"undots" (using the terminology of Don Lancaster's TV Type¬ 
writer Cookbook) are appended following the seventh dot posi¬ 
tion of each line of each letter, each letter will require 9 dots 
of width on the tv screen. The alphabet could be stored in a 
ROM, the dot pattern of each letter being represented by 9 
bytes. Figure 2 shows 9 bytes representing the letter "A". 
Figure 3 shows how the string "even spacing" would be dis¬ 
played using this alphabet. Notice how much empty space 
appears on both sides of the letter "i ". This is because each 
letter is centered left-to-right in the matrix which is 7 dots 
wide. 

Wouldn't it be an improvement to move the dot pattern 
of each letter as far to the left as possible, within the matrix, 
and display each letter in a variable-width format? This could 
be done conveniently by preceding the first byte of the dot 
code for each letter (in the ROM) by an extra byte indicating 
the width of that character. (Or perhaps the unused low-order 
bits of each code group could be used instead.) Figure 4 shows 
the 10 bytes of ROM that would then represent the letter 
"A". The first byte indicates a width of 5 dots for that let¬ 
ter. Two undots are understood to follow the rightmost dot 
of each letter, but are not included in the width value. Fig¬ 
ure 5 shows how the string "Variable spacing" would be dis¬ 
played using this scheme. 

It can be seen that about 50% more letters can be dis¬ 
played on one line by use of variable spacing. This format is 
also easier to read. There are complications, though. Hardware 
would have to be added to the TVT to latch the width values 
and adjust the character-generation timing accordingly. More¬ 
over, it would be necessary to keep track of cumulative width 
values in the current line, tooontrol line format (e.g., if the 
Basic TAB function were to be used). But this would be a 
small price to pay for the benefits obtained. 


Figure 1. Typical Dual-Case TVT Alphabet 




i a 


« 0 
0 • 

©*•0* 


i * 


1 

00000 


M 


: 

0 & 
*00 


0000 

0 

000 


0 0000 
0 
0 

000 




: 

# 

. ! 

00 

n 


r. 

t ; 


i .* 

0 0 

**. 

0 « 


«*« 

0 00 
000 0 
0 0 
0 0 
0 9 

000 

000 
0 0 
0 

***. 

*000® 


0 0 
I . 


*** 

000 


0 9 


0 0 
9 9 

0 0 


00111000 

00000101 

01000100 

01110000 

01000100 

10001000 

01111100 

10001000 

01000100 

11111000 

01000100 

10001000 

01000100 

10001000 

00000000 

10001000 

00000000 

00000000 


00000000 

Figure 2. 


Nine bytes 

Figure 4. 

representing 

Ten bytes 

an "A". 

including 


width value. 


2 i 
: t 


r* 


0000 

2 


0 0 
0* 9 


0 

9 & 

& 9 

099 


999 

9 99 

999 

9 9 


*** 

9 9 

e ♦ 

9 

9 

9 

9 9 

9 9 

9 9 

9 

9 

9 9 

*9 99 

9 

9 

9 9 

9 9 

9 9 

9 

9 

& 

9 © 

9 

9 

9 

9 

9 9 

9 9 

9 9 

9 

9*99 + 

9 

&&§> 

9 

9 

9® 9 

999 

99 m 

9 9 

9 


Figure 3. Even spacing of display. 




* 

9 


09 • 
• • 

• • 

• • 

099 


9 

9 





9 

§ 










9 

9 



0 


m 







0 




9 

9 


9 99 


9 99 

999 

• 

0 » 

090 

9 90 

099 

00 


900 

09 9 

9 

9 

9 9 

9 

0 

9 9 

9 0 

9 

0 0 

9 

9 9 

0 0 

9 0 

9 

0 

0 

0 0 

9 

9 

9 0 

9 

9 

0 9 

0 9 

• 

• 000 

99 

9 9 

0 9 

9 

9 

0 

0 

9 9 

9 

9 

9 9 

© 

% 

0 9 

9 9 

9 

• 

9 

9 9 

9 9 

© • 

9 

0 

9 

0 ® 


9 

99 9 

9 

9 

® ** 

9 

000 

999 

99 9 

9 

00 0 

00 

0 

0 

9 

909 

9 


Figure 5. Variable spacing of display. 


000 


Page 28 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


June/July, 1976 


176 






TVT-II Mods to get 64 characters per line 


by David 0. Valliere 
Digital Designs 
Box 4241 
Victoria TX 77901 

Dear Editor: May 10, 1976 

If you are using your TVT-II as a computer I/O you 
may iiave found the 32 character/line format somewhat limit¬ 
ing. By making minor modifications to the TVT-II board you 
can lengthen the 32 character line to 64 characters/line, and 
thereby expand your system’s capabilities. 

Here are installation instructions for my 32 to 64 char¬ 
acter/line TVT-II modification board and 2K memory board. 
The modifications can be made easily by wire wrapping or a 
set of boards can be purchased. My TVT-II has been modified 
since early October, and I am using a very old tv with no 
bandpass problems. 

My board manufacturer is tooled up for manufacturing 
the boards and can guarantee shipment within 3 weeks after 
receiving orders. I also have layouts completed for an upper¬ 
case/lowercase auxiliary board for the TVT-II, as well as the 
computer-controlled cursor interface. These boards will also be 
provided if there is enough interest. 

Board prices are $5 for the auxiliary board, $12 for the 
2K memory board, and $16 for the set. Shipping is included 
in these prices. Texas residents add 5% tax. Please make 
checks payable to Digital Designs. 

Sincerely yarns, 

David O. Valliere Box 4241 

Digital Designs Victoria TX 77901 

The TVT-II memory is continuously being addressed 
through nine address lines to generate the video data used by 
the teelvision display. The tenth address line (A9) is used to 
switch from page one to page two. By using the A9 address 
line for continuous addressing, the TVT-II con be modified to 
display 64 characters/line. Since the additional 512 characters 
being displayed are what used to be page two, additional 
memory will have to be added to provide storage of a second 
page. 

HOW IT WORKS 

The basic design of the TVT-II make the modifications 
required to make it display 64 characters/line quite simple. 
IC21 and IC14 on the main TVT-II board normally count up 
32 characters and upon reaching the 33rd count, pin 11, 

IC14 and address AO go high. This disables the "dot clock" 
until the next line is started. Being in the 33rd character posi¬ 
tion also enables the video blanking circuit through IC12C 
and IC5B. The line is blanked until a new line is started. By 
allowing the video generation and the "dot clock" to continue 
operating until the 65th character position is reached, 64 
characters/line will be counted. This can be done by discon¬ 
necting pin 11, IC14 from the video blanking circuit and con¬ 
necting it to address line A9, after having disconnected A9 
from the page 1-2 flip-flop. Pin 11, I Cl 4 is also tied to pin 
14, the input of the unused counter is IC14 whose output 
(pin 12) is then tied to the video blanking circuit. Thus we 
have effectively added an additional 32 counts to the address 
lines through pin 12, IC14 and transferred the video blanking 
function to the 65th character position. Since the RC oscil¬ 
lator network of the "dot clock," IC18B, was originally tuned 
for 32 characters/line, capacitor C4 will have to be replaced 


with an 18 pF unit to provide for 64 characters/line. 

We are now addressing through ten lines/page. The cur¬ 
sor-compare circuitry must be modified to provide comparison 
of the A9 address bit. This modification will require providing 
an additional cursor-position count-bit and a comparator. The 
designer used a 74193 BCD counter to allow preloading the 
additional cursor bit through a computer cursor position inter¬ 
face. The additional 74193 is attached to the carry and borrow 
bits of the original cursor counter, IC35, after disconnecting 
them from the 5th-bit flip-flop, IC27A. Carry and borrow bits 
are generated by the new counter through NAND gates IC4A 
and IC4B, and are sent to the original 5th-bit flip-flop IC27A. 
The cursor bount bit is tied to pin 15, IC42, on the main 
board and compared with the A4 address bit. The output of 
the 5th-bit flip-flop IC27A which was originally compared 
with the A4 address is brought on to the new circuitry and 
compared with address A9 by the comparator. The cascaded 
"=" pulse from 1C 42 on the main board is input to the 
comparator. The output "=" pulse is sent to IC41. This pro¬ 
vides an additional cursor count bit which is compared with 
address A4. The new A9 address is compared to the old 5th- 
bit flip-flop whose output has become the 6th-bit count. IC42 
and IC41 on the main board and the new comparator pro¬ 
vide the pulse required to position the cursor on the 64 char¬ 
acter line. 

An additional six 2102's will be required to store a 
second page of data. By tying the CE pins of each group of 
memories to pins 8 and 9 of the page flip-flop, IC27B, the 
pages will roll over as originally designed. 

[Editor's Note: We have omitted eight pages, containing in¬ 
structions for assembly, memroy modifications, 2K memory, 
piggybacking, early TVT-II mods, start-up, and schematics. 

Those interested should write to Digital Designs for complete 
details.] 

PARTS LIST 

64 Character Board 
one 74193 
one 7485 
one 7404 
one 7400 
one 0.10 mfd disc 
one 18 pf 
Wire, 26 Ga. 

2K Memory Board 

twelve 2102 memories 
fourteen 0.10 mfd capacitors 
two 2102 memories (optional) 
two 15-pin Molex board connectors 

The auxiliary board and 2K memory boards are avail¬ 
able from Digital Design. Both boards are Milspec with tin/ 
lead fused plating and silk-screen component placement. The 
auxiliary board is single-sided whereas the 2K board is double¬ 
sided with plated-through holes. 

Shipment within 3 weeks is guaranteed. 


CENTRAL OKLAHOMA COMPUTER GROUP 

The Central Oklahoma Amateur Computing Association (CENO- 
ACA) organized in January. It now has about 30 members. It meets 
the 2nd Saturday of each month at 10 a.m. in the Oklahoma City 
Warr Acres Branch Library, NW 63d & MacArthur. It has programming 
seminars & workshops in addition to the monthly meetings. For details, 
contact: Lee Lilly, Box 2213, Norman OK 73069. 


June/July, 1976 Dr. Dobb’s Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 29 


177 




HOMEBREW TV DISPLAY WITH GRAPHICS 


by Glendon Smith 

Gentlepersons: May 20, 1976 

This is a short description of a tv display circuit I use in 
my Altair 8800. Although I have made only limited use of 
the graphics capability, it should be useful, as is, for games 
requiring a playing board. With synchronization as discussed, 
fast games should be clearer. 

Others may wish to make changes in the logic design. It 
was sometimes the result of space limitations. If fast data 
selectors are used as specified, the memory probably can run 
without wait states. 

Sincerely, 

Glendon C. Smith 5822 Daffodil 

Dayton OH 45449 
513-435-0214 

The tv display described in this report is intended for 
direct plug-in to the bus of an Altair 8800 or other similar 
microcomputer. The circuits could be adapted to CPU's other 
than the 8080. 

This display differs from the tv typewriter circuit in 
three major areas. 1) The screen refresh memory is connected 
to the bus when it is being loaded or altered. 2) The display 
can produce 128 characters stored in a Motorola ROM (12 
lines of up to 32 characters each) and/or up to 128 graphic 
shapes (8x8 picture elements) stored in RAM (24 lines of 32 
shapes). 3) A crystal-controlled commercial sync generator 1C 
is used to provide vertical interlace and a jitter-free display. 
Other features include the ability to have the 8th bit in the 
byte used to specify a character or a graphic shape, the 



ability to cause that character or shape to blink or to reverse 
itself, the ability to reverse the entire display by software, the 
ability to display a boarder, and the capability of having soft¬ 
ware scrolls, an erasing cursor, or other custom features. 

As presently implemented, switching from refresh opera- 


A A A ■ 1 c; a ; . I?fjjjjjjjj ■ MBM 

Av,:\ : :: > a-a 

•■■A ■ :-a ba myertsd 

' ■ A > A : ; ? 

A a v a ■; t iAs"A t ; 

AA A,,A : . ; 

■ ' ' AA< ' ' A : V.; :: ^ ; Ar US© 

in filing, tor'l*-? ..■!!! b 

•a ttfhol© pogc 
~ ' : '-A - v a un 


tion to the bus is not synchronized with the blanking for 
borders so that an insertion of a character causes the loss of 
about two sweep lines (a white or dark band about 1 mm 
wide provides notice tha.t a letter was written). This is not 
annoying to those who have seen the display. For fast games 
it might be advisable to switch the memories back to the bus 
during FIELD, and dealy the CPU if these memories are 
addressed during FIELD. This would slow the display slightly. 
Without synchronization, a software line feed or scroll up 
(moving 384 characters) takes about 10 milliseconds or about 
one-half of a vertical sweep of the tv screen. 

The construction of the prototype of this display was 
eased by using two commercially available boards (and asso¬ 
ciated components) which were connected together by hinged 
bars the length of the connector spacing on my Altair mother 
board. The memory board (MB-2 from Solid State Music) has 
its copper traces connecting all 8 of the 2102's comprising a 
bank (IK x 8 bits) before connecting the next bank. Before 
mounting the sockets it is necessary to cut many copper 
traces between banks. The bank nearest the bus connector 
will become bank 0 (lowest address). It is not used by the 
tv display. 

The next higher bank (bank 1) stores the 128 graphic 
shapes (8x8 bits each). Bank 2 stores the codes for the 
graphic shapes (24x32 bytes) and has some space which may 
be used for subroutines. If the graphic capabilities are not 
being used all three lower banks may be used as part of main 
memory. The highest, bank 3, stores up to 1024 characters 
which may be arranged as 32 lines (only 12 displayed) of 32 
characters, or as two pages with enough space left over for 
routines which write on either page (page 1 has scrolling, cur¬ 
sor, etc.). The latter system is the one I have used thus far, 
but I can imagine applications such as text editing which might 
use several K of memory for character storage with more 
elaborate scrolling schemes. 

The other board used is a Universal I/O Board (IO-1) 


Page 30 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 June/July, 1976 


178 
















from Solid State Music. It just barely has apaoofo *' all the 
circuits for the tv display plus one INPUT PORT for a key¬ 
board (Clare-Pendar). Eight pieces of 8 or 10 conductor rib¬ 
bon cable handle the interconnections between boards and 
help in keeping the bits in order. 

One of the changes to the memory board which is not 
shown in the diagrams concerns chip enable and R/W inputs 
to the 2102's. Pin 3 of each bank of 2102's was disconnected 
from pin 11 of 7400 A and now receives its input from one 
of the address selectors as shown. Pin 12 on the 74L42A was 
ungrounded and connected to pin 11 of 7400 A. The out¬ 
puts of the 74L42A then became R/W signals feeding the 
address selectors and the pin 13's of the 2102's formerly con¬ 
nected here are all connected to ground so the chip outputs 
are enabled. 

Several other points will come up in preparing the Solid 
State Music boards for this use. The designer of the I/O Uni¬ 
versal board ran +5 and gnd lines to many positions, expec- 
ing you to use 16 or 14 pin 1 C's there. However, he did not 
leave a space between the ends of the 1C positions as their 
length requires, so many of these traces must be cut before 
sockets are installed. Because the output port (200 octal in 
my system) does not need an output connector, traces to this 
14 pin pad are cut and a 1C is installed there. On the mem¬ 
ory board MB-Z, all the data input lines are left intact as are 
all the address lines from the connector to the nearest IK 
bank of memory (which will become bank 0). All the data 
outputs are isolated by cutting the traces at appropriate points, 
as are the address lines to banks 1, 2, and 3. The chip 
enable and R/W lines are discussed above. 

Other arrangements of the 2K of memory used in the 
generation of the graphics portion might be useful. For ex¬ 
ample, a 128x96 display of individually addressable points 
(each point, however, is 4 times the area of a picture element 
of the current display and the blinking and reversing possi¬ 
bilities appear to be out). One might built only the character 
portion or only the graphic portion (and generate the needed 
characters). The display described here may stimulate club 
members to design a special display as a group project and to 


produce p.c. boards to ease the labor for all concerned. 

I use the Hitachi PO-3 12" B&W tv. It is easy to inter¬ 
face, is all solid state with instant on, and is available for 
about $68. Interface information is available. 

OUTPUT PORT - CONTROL BYTE FUNCTIONS 
Port (200 octal in my system) 

Bit 0 High to display page 2 characters 
Bit 1 High to blink preselected characters 

Bit 2 High to blink preselected graphics 

Bit 3 High to invert (reverse) preselected characters 
or graphics 

Bit 4 High to invert (reverse) entire display 
Bit 5 High to display surround (border) 

Bit 6 Low to connect bank 3 (character storage) to 
bus 

Bit 7 Low to connect banks 1 and 2 to bus 

The 8212 output port is cleared by the front panel 
switch so that the 3 banks of memory can be dumped (or 
loaded) without special instructions in existing programs. 

SUPPLIERS 

MB-2, 10-1 boards and kits 
Solid State Music 
2102A Walsh Ave. 

Santa Clara CA 95050 

MIKOS 

419 Protofino Dr. 

San Carlos CA 94070 

6.13635 MHz, 26C Series Crystal @ $5.50 postpaid 
International Crystal Mfg. 

10 N. Lee 

Oklahoma City OK 73102 

The MCM6571C character gen. came from the Digital 
Group but I understand that a new version only requires +5 
volts. The 5320 (National) Sync Generator ($4) came from 
Solid State Music, as did most of the I.C.'s. 



June/July, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Paga 31 


179 











180 








































































































































































































































































































































































































































P/?/# S/^23 r I -jV/j/Vj r 


1 


1 


C ^ N{ 
N5 vN > V 




sX v- 
§ k v 
ss * V 
Sv * 

‘l 


V 




lx 

U | ,. 

" “ I, 

N> Vj x* 

Vj ^5; 


h 


CM 

VO 

o 


■> 



v> 

V, 

> 

$ 


v; 


v> 


-A, 

v> 


Qcs 

\ 

' 


X. 




a 


3S "fW/J 
J?/SV+b 


-4 


k£7 

o 




> 

\ 

s 




k 

Vi 

VS 

v; 


X* 

>r 


V: 

VI 





V 

X 



VC 

Kb 



<v 

'o 

V 


v> 

b 

X 

H 

Vj 

‘ / 

\ 

\ 

\ 

3 

« 


•f 


-:t- 


Q 


r*—I 1 ’ 


$ 

! 

-. 


> =>i^/S‘ 9SM 

PC PTH-, 


<*$ 


s<ye/Sso r s'? ss/sy/yyj 

7/ c tS? v JlV 

{4/ 


t 

T 

$|st 


NV 

'O ^ 
Vj VJ 


V ; 


CM 

'O 

K7 



X 

X 

X 

X 



\ 


v: 






b; 


’i 

^5 

Vb 

X 


2S »¥<Snd 

S?/ S7i?Li 


"a 


X 




* 


^ J 

tA, 

X 






X 

X 


X. 


X 

V 











<A 


4' 

4 

4 

l-x 


x.K s; 

V Xx sj- > 

“- N s A 4 
fx 

V, ‘ 

JT- V 


^ ^ $si' 

yx ^ A x 


1 


V * 

I. ' X v 
?: 


* $ 


X V ^ <x 


x^ 

>S ^ 

•5? <f 

<bl X 

k> i * 


k. J» 

V ^ 

\* 

A t*\ 

r'sl 

« - ^ . v 

^ k 

x tv. . > 


V» \ 
V X 

Xg ^ 

H 


<3, 


k 


/, '• 


tvj X 


k 

Cx -O' 


k 
k 

■Ox 

kk 


4 


1 


k 

lslc§ 


3 (Z-p) zsa 


4 


'k 


k 

kl^S 

4 


k 


xy 

k Xe 
> X- V 


«3l‘SK 


vl 


C5v 


{£-/)£ X7 
~K 


V> 
V 

f" 


V% 

Xl 

X 

s. 


Py 




Q 


,-TV v 


Jl ' 1 


Q, 

414 


& (z-ff) fSO 




FTP : 


xs, 

cSlcSJ c^ 


tS($ 


Uk 




(£-/j£ s:a 

~K 


cj 

^^cS| 




$98.50 GRAPHICS TERMINAL KIT 

By SWTPC 219 W. Rhapsody San Antonio, TX 78216 

Southwest Technical's GT-61 Graphics Terminal is a low 
cost graphics unit designed for hobbyists or budget minded com¬ 
mercial applications. The 9 !4" X 13" PC board contains all of 
the electronics necessary to display an array of cells 64 wide by 
96 high on a standard video monitor or modified television set. 
The graphics terminal contains its own 6144 bit static memory 
and thus may be driven by any computer system having a TTL 
compatible 8 bit parallel interface. The unit is available in kit 
form only and is sold less power supply, chassis, and monitor 
for $98.50 ppd. in the US. Delivery is 30 days. 



£'££tV 


vs 


*L 

<L iV 

;jL 




£-fsy 


N 

A 

N 

$ 

A 

Vi 

Ki 

I 




s 



















n— 


4 

is 

X 

§ 

.-v 

T 

X 

\ 

4 

X. 

-X 


k 





> 

X 

X 







> 




X 


tjx 








Vi 




Vs 



V* 





k 

k 


k 











k 



k 




v > 



Vs 


? 












«N 



X 




*0 

X 

<3§ 

-r 

K 

X 


\ 

V3 





to 


Cx 

\ 


s 

X 





K3 

X 

’ 

\ 

> 

> 


k 

■ 

1- 






X 

V) 


4 






£-££(/ 




r-zsc/ 


Cx 

V. 


ry 


p r-W 


V, 


!-£$(/ 


xS 

H 

■V 


S? 

02 




!'££(/ 


W 


k 


















k 

V> 


k 



CS 





’ . 

r * 

V. y 

k 

' 

r / 


S[ 


t-ny 




% 


V 


x ^ > 

^11 
'Kjfl 
Jijlt 

i, “ 

r« 'S'5 


. V, 

-n 

^^ 

hi 

> > \ 

]«| 

M 

§.^0; 

■y>fc s 


181 


June/July, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 33 






























































































































































































































































































































ERRORS IN 

& IMPROVEMENTS FOR WHIPPLE’S & ARNOLD’S 
TINY BASIC EXTENDED (TBX) 


Dear Sirs: April 15, 1976 

I have noted some errors and possible improvements 
in Arnold's and Whipple's Tiny BASIC Extended (TBX) 
[please see Dr. Dobb’s Journal Vol. 1, Nos. 1 & 2]. 

A minor reduction could be made at the entry point 
of the main program by eliminating a jump. The end of the 
error routine duplicates the initialization, so it could be 
shortened. These two routines follow (in split octal): 


INITIALIZATION: ERROR: 


Address 

Data 

Comments 

Address 

Data 

Comments 

000000 

061 

LXI SP 

026275 

041 

LXI H 

1 

377 

dl 

026276 

002 

dl Entry point of 

2 

000 

d2 

026277 

032 

d2 IL program 

3 

303 

JMP 

026300 

061 

LXI SP 

4 

254 

dl 

026301 

377 

dl 

5 

021 

d2 

026302 

000 

d2 

021254 

041 

LXI H 

026303 

303 

JMP 

021255 

002 

dl Entry point 

026304 

257 

dl to IL 

021256 

032 

d2of IL progrm 

026305 

021 

d2 interpreter 

021257 


IL interpreter 





All of the items in the left column could be eliminated, 
and the entry point could be at the start of the right column, 
at address 026275. Or, the right column could be replaced by 
a JMP to address 000000. Or, the two segments could be 
rearranged as follows: 


(error routine) 


Entry point of main 


This method would 
eliminate 12 bytes. 


program 061 

LXI 

377 

dl 

000 

d2 

041 

LXI 

002 

dl 

032 

d2 


SP 

H Entry point of 
IL Program 


IL Interpreter 


Actually, a lot of extra JMPs and NOPs are to be ex¬ 
pected when programming is done in machine language, like 
TBX was. A primitive assembler, like SPHERE'S mini¬ 
assembler, which just assembles addresses and some data but 
not mnemonics, would be all that would be needed to 
produce a trimmer program. 

I should say that I really appreciate the job Arnold and 
Whipple have done. I'm pointing out a lot of little things, but 
I think they did a great job. 

At a number of places, the character counter advances 
past spaces. Many bytes could be eliminated by making all of 
these segments into a subroutine. Such segments are at: 

021327, 022324, 023351, 022304, 024100, 027214, 030032, 
and probably other places. 

Subroutine 022147 contains a divide routine. Perhaps this 


subroutine could be shortened by calling on the other divide 
subroutine. 

Some error jumps, which should be to message number 
14 (memory depletion) go instead to error message number 
15, which is not defined. This can be corrected by changing 
addresses 027121, 030350, 030372, and maybe others, from 
360 to 355. 

The IL Instruction at 033211 is: '266 355 "(".' This 
means that if the next character isn't "(", address 026355 
will be considered the next Interpretive Language (IL) 
instruction. This will bomb out the program, since 026355 is 
to be treated as a machine language (ML?) instruction, not 
IL X instruction. The instruction at 033211 could be: 

'233335 Address 033335 contains a proper instruction, 
'326352/ which will properly execute the machine language in¬ 
structions starting at 026352. Incidentally, the address 
should be 026352, which outputs error message number 13, 
parentheses error, rather than 026355, which outputs error 
message number 14, memory depletion. The same problem 
exists at 032127, 033223, 033241, 033254, 033266, and 
033275. 

The Random function (RN) should be altered slightly. 
The random number returned is 16 bits. However, the RN 
only shifts in 8 new bits each time it is called. Therefore, the 
upper 8 bits are what the lower 8 bits were the last time RN 
was used. If address 030210 is changed from 010 to 020, RN 
will shift in a full 8 bits each time it is called, hopefully 
making it more random. 

When an instruction is being compared to the possibili¬ 
ties, the first word is 'GO,' but the second is not 'to' or 'sub,' 
the second is compared to '1st,' 'run,' etc., instead of the 
program immediately indicating unrecognizable statement. This 
could be fixed by changing the instruction starting at 032057 
from '232275 "SUB" ' to '232330 "SUB".' Then 'GO' 
without 'To' or 'Sub' would go to 'unrecognizable statement' 
error message. 

Thank you for your consideration. 

Yours truly, 

Charles Skeldon 2320 Co. Rd. 1-3 

New Brighton MN 55112 


1980 CENSUS: HAVE ANY SUGGESTIONS? 

The Census Bureau is now actively working on plans for 
the 1980 census, and important decisions have to be made in the 
relatively near future. 

Although there are many constraints on the census in terms 
of what and how much information can be collected and tabulated, 
the Bureau believes that it is very important to obtain and review 
the recommendations of as wide a range of users and potential 
users of decennial census data as possible. The Census Bureau is 
therefore anxious to have the ideas from leaders in mathematics 
education. 

Send suggestions, questions, or comments on the 1980 
census to Director, U.S. Bureau of the Census, Washington DC 
20233. 


Page 34 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


June/July, 1976 







Errata/additions to Palo Alto Tiny BASIC 


by Lichen Wang 

Dear Jim: 23 June 1976 

I have a few miscellaneous items related to the “Palo 
Alto Tiny BASIC” published in Dr. Dobb's Journal, Vol 1, 
No. 5. First of all, there are a few misprints (my fault). On 
page 13, right column, second line from the bottom, the 
minus sign should have been a back arrow The same 

misprint appeared on page 14, left column, lines 15 and 16. 

Secondly, I forgot to mention that this interpreter 
actually takes 1.77K bytes. In the list published, I padded it 
up to 2K bytes, and it can be either in ROM or in RAM. 
There are 30K bytes unused at the end of the “command 
table” (Hex 0183-01A0), another 30 unused bytes at the end 
of the “function table” (Hex 01B3-01D0), and 177 bytes at 
the end of the I/O routines (Hex 074F-07FF). These unused 
bytes can be patched to add more commands, and/or more 
functions, and/or to modify the I/O routines without re¬ 
assembly of the whole interpreter. An example follows which 


adds a video display (VDM by Processor Technology as an 
alternate output device. When the control-0 key is used to 
turn off the TTY echo and output, the VDM becomes the 
echo and output device. When the control-0 is typed again, 
echo and output goes back to the TTY, etc. Control-P 
key is used to clear the VDM screen and text always scrolls 
up from the bottom of the screen. 

The interpreter also needs RAM to store variables, stack, 
and the Tiny BASIC program. In the published list, 6K of 
RAM is assumed. You can change this in increments of 256 
bytes by changing 9 bytes in the interpreter. These 9 bytes 
are marked by “@@@@” in the listing. 

Last and also least, I have a STARTREK game program 
coded in Tiny BASIC. It will barely fit in this 6K of RAM. 

It is probably a very bad example for Tiny BASIC (or any 
language). In order to squeeze in as much salty stuff as possi¬ 
ble, I have abbreviated every command and put as many com¬ 
mands as possible in each line. As a result, the code is al¬ 
most unreadable. (But it is fun to play!) 


Sincerely, 
Lichen Wang 


NOTE: Wang's StarTrek is 
being published in the July 
issue of People’s Computer 



2 



CH 

Y 






Company. 



b- 

Ui 



uj a 




y 





— 

UJ 



2_J C 



S 






a 

b- CCV) 


>- 

~»0 2 

UJ 


o 






h- 

tr w 

*- 

k- 

_J _JQC UJ 

z 


_l 

IL 





— 

<b- iruj v 

Hr 

01-2 

2 k £ a 

a ** 


u. 

o 





C 

b- o. cr «-* 

c>- 

*-* C 

S Z UJ 

o _J 


a 


UJ 





v. i re uj 

Cl2 

iC c> 

<Z UJC 5 k 

« 


UI 

o 

z 




T 

C ti. COtt- 

zz cr 

11- 

*- zu o z 

a ** 


> 

z 

M 




O 

1 a c > < y 

U—i uj • 

V o 

z >-. 

CUJ 

X 

a o 

UJ 

O 




> 

_i a u_ x 

U (_ O 

oo 

- cr D. cr uj o 

u. z > 


UJ 


z 





c »i-za)-> 

vc z u.' * 

C’O 

w o uj cr z a 

W CD 

o 

k UJ 

zx 

X k 




cr 

a u z c < cr c uj 

O' cr 

1- * 

IO*- 

tU-l 

k 

22 

cu 

o x 

a 



c 

i- i r Z u_‘ G C T 

OO.CC b- 

*U- 

ui z cr f -1 - z a 

C UJ 

z 


X UJ 

a uj 

o 

5- 


u. 

2jUkJ5<C 

s uj uj cl s cr 

XZ u 

k'-’UUJOOkS 

Ui 2 (0 


o_j 

kl 

a z 


o: 



VC U' U L_ 

L. L ICC 

uoc 

VC (f. hCj 

I o < 


a 

u o 

< 

_j 

o 


I 

vj a a Ety 

s; x to c > a 

< 

< a i- y a c 

> UJ 

> 

X 

a 

y 

_i 

Q. 


u 

*- *“ » 0 2 


CSS 

cr *- »u • 

uj a 

cr 

UJU 

* 

a x 

o 



h- 

i-z *cns < 

2 *2.1-0 I 

ip i r 

<2 cn uj co * c 

5kU 

a 

>E- 

*t/5 

< < 

t£ 

2 


< 

CGi/)CiL'C“ J 

C O — U. 1 Z c 

cuu 

XCl/UUIUJCZ 

CUlZ 

< 

<X 

D UJ 

y a _i 

C 

Q 


Cl 

2o k -2>->XCC 

>zu_tn< > 

hoc 

o > - >- V > z < 

UJ o *-* 

V 

ITU 

2k 

c s a 

C/1 

> 



c 

» 

c 












q- 

u 













<vu.a 


a 



a * 

k 

<c * a 

<o 


® 

< 

C s Oo 

2 G 2 (T 

r 

2 k 



5L 

2 

2UZ 

Z tT' to 


o 


■tf D • ® G • 

C - C 5 . 

CO 

0 1-2 

SB S> 


O ro 

O * 

Cue* 

•C5*•I 

<» 

u • 

^ r 

N > C X • 

> X > C a 

- c 

> CoC IT 

OC 


> * 

> C 

> - > 

U > C — u c cc 

IL C 

c 

v- • + X • 

* • * > u 

y • 

* cr > tv > < 2 Ju<f < 

* X 

*x c 

* X .. 

_in »>ct >u 

o o 

• c 

» K. : » KJ 1 * » • ^ 

v _J -j * - J I K.: L_ 

_ia_Jc’ • ■> * *_jc 

9 • « 

9 9 9 

J * 

K 1 * • 

M • t ® 


* U J 


x>yzKxzii<niz:i«xiuz< 

r> 

I<l(f^xu5i><yxj<iil<jz<yznc 

I<XZ<XX<V<X 

XX 


< 



II M - 


9-« 



k-i *-« 

*— MM 



(T C. 

cci-ck',ococC[lc k b- a a c. a v. tr ctcacucccccouc 

ccacaac oc’Ccr c c 



Q Z' 

cr cr 2 il 2 r r C 2 

2 ?c*-c»“Dr 

22000C2222CZ2C ZCCCCCKOZ 

2 C 2 2 C k C 

ZCZZCCZk 

O C C Li! X <E 

CTCituac 

■nacc JUivn 

“5 _l Cl _J V _| 

COD 


<M 

V 

C 


2 

o 

> 


tv 

2 

c 

> 


n 

2 

O 

> 


< 

Ifi 

<c 

k 

a to 

2 

2 

2 

2 

2 2 

O 

O 

O 

O 

OO 

> 

> 

> 


? > 


k 

C 

N 

r 

Ci 


V 

c ■ 

,cr. 


*- au o ec tv a. o u < w cl r c c < o a’ tvi r, < v ; c <j o u 

tv — in in < uj < r-, r- q >c <c il ui u k tv ic to pj v lu tv ie o. c m c c tv < c x tv r~ ^ =- o c o 

ULLU.rJlLULOb«UMiiUCrx'tfjn<UMlUNC,r,NMLvrOA^CLUJUOC 


N 

o 

IL U. 
cl r 


k k 

o c 


N N k 

CO C 

ll.rHrB.wj; 

r. < kj c <j o 


IL 

V 


k G k N k N k h k p. 

C sjr~ c <TO OCO C 

< < L. — u tv u. U- o a O o r; 

— wCf. it v c v- r — x o ec tv a. o 
r - M 1 . ITr-Lt"lu tv — r. l p, r r tv 

v. u u. V Li tv r r tv ~ v <x tv < r c IL v v 

C - — < IT CL< , vJCi--<Nr'ClL-<}B'iifr <ULL-^<fCrvL0 <Ua.U.wNr r ,\CecUClLfO<JNC « c c - rr sr. P < <J C UJ IL -» 
c E V IT tf IT- IT l', L r tT U’. <C £ < «L V. \C k k k k k k k k CL CC CC CC OC C? OC E X CT' O' Q C (7 a C7 <? V < < < < < < < CL CL' CL X £L C £L X X V 


n fhrrsrsM-rr hhsNhNNrshrr srsr k k skkkkkkk 

<- c C- r- - c. C C C - O O V C <- C O is C C C C c C t~ C C O c CC C C C w O C C C O E O C c C C O C C C C C O c C L» O c c o 

June/July, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


Page 35 


183 



ADAPTER MAKES LSI-ll’s AND 11 /03’s INTO REAL 
PDP-ll’s 

Able Computer Technology [1538-E East Chestnut St., Santa 
Ana, CA 92705, (714) 547-6236] is manufacturing a "10001 Uni- 
verter". It converts an LSI-11 bus into a DEC Univus, and permits 
full bidirectional communication between the two. It provides 
the user with control of all four interrupt levels. It also provides 
an extended memory map allowing addressing of up to 512K 
words. The Univerter is a standard quad-width board that can 
be installed in a PDP-11/03 or an LSI-11 card cage. It is avail¬ 
able from stock. 


$450 DOT-MATRIX PRINTER FOR 6800’s & 8080’s 
40 Characters/Line, 80 Characters/Second 

by Electronic Product Associates, Inc. staff 

Electronic Product Associates, Inc., 1157 Vega Street, 
San Diego CA 92110; 714 276-8911, has announced the 
availability of a new, low-cost, 40-column, dot-matrix impact 
printer. The printer complete with drive electrincs, character 
decoding and software driver proms, power supply and attrac¬ 
tive hardware and plastic cabinet interfaces directly with the 
6800 and 8080 microprocessors. The printer is capable of 
printing a surprising 80 character per second bi-directiomlly. 
Single quantity pricing is $450, delivered from stock. 

The model 40C utilizes a serially-driven printing element 
consisting of 7 print solenoids and print wires. The print 
wires are arranged vertically; the printing element is driven 
from either direction at constant speed. A synchronous motor 
driving a spirally grooved drum accomplishes this motion. 

Ribbon feed is a simple by-product of printing element 
motion. Ribbons are inexpensive and easily replaced. 

All electronics for driving, decoding and program storage 
are powered by the self-contained D.C. power supply 



MinErrata for MINOL 
plusTiny TREK 

by Erik Mueller 

36 Homestead Lane, Roosevelt NJ 08555 

June 13,1976 

Here are several errors in the listing of MINOL [please see 
Dr. Dobb’s Journal, Vol. 1, No. 5] which should be corrected: 

Locations: 

001 350 should be 242 
002 050 should be 273 

004 060 should he 107 (omitted from listing) 

Pressing Cf destroys the system (if held down long enough). 

Fix this by changing the following locations: 

002 375 303 

002 376 111 

002 377 hhh 
003 000 000 

hhh 111 321 

hhh 111+1 321 
hhh 111+2 321 
hhh 111+3 321 
hhh 111+4 317 
(etc.) 021 
112 
003 
303 
001 
003 

hhh 111 is the first address of 11 free locations in user’s system. 

In my description of the I/O subroutines I meant that the 
parity bit (8th bit) must equal one. When I said A 0 ,1 meant 
control c; X s means S°, means L c . 

The following is an extremely simplified version of STAR 
TR E K. (Text and storage fits in 1.5K.) 

Open Reel IMSAI/HIT tapes of MINOL 2.1 (along with 
appropriate read software) are available for $4 from me. 

If I find any more errors, I will write. 

Sincerely, 

Erik Mueller 

ICE-NINE IS ALIVE & WELL IN ILLINOIS 

Dear Editor, 

Why haven’t you listed our club and monthly publication in your 
fine issues????? Probably because none of our 25 or so members 
bothered to tell you about us. We are called ICE-NINE INC. A not- 
for-profit organization formed a year or so ago for mutual computer 
oriented interests. We have pooled our resources and purchased a Sphere 
System 40 with floppy discs, line printers, etc. We have our own tele¬ 
phone number for time-share callers and have even set up a radio re¬ 
peater station (licensed through our amateur radio members) to allow 
computer use from distances up to 60 miles through amateur tran- 
ceivers and remote TTY units. 

We are looking for prospective members in the Chicago area and 
have a huge amount of programs in BASIC and FORTRAN for ex¬ 
change with other organizations. 

C. Cassiouceous Box 291 

ICE-NINE INC. Western Springs IL 60558 


Page 36 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 June/July, 1976 


184 









Tiny TREK 

7 X=X+1:IF X<8;G0T04:X=1 

8 J=1 

9 IP K150; GOTO10:(l2,X-1*8+J+200)= 1/155+1 :IP( 12,X-1*8+J+200)=2;A=A+1 

10 J=J+1 :IFJC8; G0T09 

11 X=X+1:IFX<8;G0T08 

12 E=!/38+1:F=1/38+1 

13 (12,E-1*8+F+200)=3:IF 150<I;GOTOI6 

14 3=1/38+1:T=1/38+1 

15 ( 12,S-1«8+T+200)=:4 

16 IP W<A;IF W<?11 ; GOT03 

17 IP S<E;C-E-S:IF T<F;G=F-T:EfcD+1 

18 IP E'TS; C=S-E:IP.' F<T; G=T-F 

19 IP C<2;IF G<2:L=255 

20 PR" 1234567' 

21 X=t : K=0 

22 J=1 

23 C=(12,X-1*8+J+200) 

24 IP C=0;PR" 

25 IP C=1;PR". 

26 IP '0=2; PR"K"; 

27 ip c=3;PR"e"; 

28 IP C=4;PR"B"; 

29 IF C=2;K=K + 1 

30 J=J+1:IF J<8;G0T023:PR n 

31 IP X=2;PR"SECT0R ";E;F 

32 IP X=3;PK"STARDATE ";D 

33 IP X=4;PR"ENER GY ";L 

34 IP X=5;PR"KLING0NS ";W 

35 IP X=6;PR"CONDITION"; 

36 IP X=6;-rp K=0; PR" GREEN" 

37 IPX=6;IP 0<K;PR" *RED*" 


1) This game is not perfect. 

2) It is super-simple. 

3) There are three commands: 

1. Move to different sector within quadrant. 

2. Move to different quadrant. 

3. Fire at a specified sector. 

4) Energy is refuelled upon diagonal docking with a starbase. 

5) E = Enterprise 
K = Klingon 

B = Starbase 
. = Star 

6) Yes, you can fire phasers and go through stars. 

5 7) Don't get upset if the quadrant you're in doesn't have a star- 

base (there aren't starbases in every quadrant). 

8) Don't get upset if your energy is refuelled even if you aren't 
docked with a starbasa. 

9) Don't get upset if anything weird happens. 


1 PRTINY TRSC*" 

2 D=1/3:W=!/10+9:L=255 

3 X=1:A=0 

4 J=1 

5 ( 12,X-1*8+Jj+2OO)=0 

6 J=J+1:IF J<8;G0T05 


38 IP X=1;PR:IFX=7;PR 

39 X=X+1:IFX<8;G0T022:PR 

40 IF K=0; GOTO 42 

41 H=!/25+1 :L=L-H:PRH; "UNIT HIT PROM KLINCJONS": GOTO 50 

42 PR" " (Because I have a TVT) 

50 IP W=0; GOTO 170 

51 IP D=0; GOTO 180 

52 IP L<60 ; GOTO 180 

53 PR"COMMAND";IN A 
60 IP A=3;GOTO 1 50 
70 IP A=2;GOT0140 

100 PR"WHAT SECTOR DO YOU WANT TO GO TO?" 

101 R=104:GOTO 201 

104 IF ( 12,M-!*8+N+200) // 0; GOT0120 

105 (12,E-1*8+F+200;=0:(12,M-1*8+N+200)=3 

106 E=IT:F=N: G=G*3:L=L-G:G0T0 17 

120 X=0 (Restores position on TVT when incorrect data is entered) 

121 PR:X=X+1:IF X<13;GOTOI21:GOTO 100 
140 l=L-6':PR:PR:PR: GOTO 3 

150 Pk"WHAT SECTOR TO FIRE AT?" 

151 R=155:GOTO 201 

155 IP !<30; GOTO 160 (Random miss) 

156 IF( 12,M-1*8+N+200’)=0:W=W-1 

157 IP (12,M-1*8+N+200)=0 
160 G=G»4:L=L-G: GOTO 17 
170 PR"YOU WIN III" 

180 PR"YOU LOSE I I" 

201 IN M,N:IF E<M;C=M-E:IF M<E;C=E-M 

203 IP P<N;G=N-P:IP N<F;G=F-N 

204 0=0*0: Cb:G»G:0=C+G: G=0 

205 G=G+1!IP Gff G<0; GOTO 205 J G=G-1 J GOTOR 


June/July, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


Page 37 


185 



Button , Button in 8080 machine code 


by Ron Santore 

Here's the game of BUTTON, BUTTON written in 
8080 machine language for computer and terminal. (Altair & 
TVT or TTY, etc.) 

NOTES: 

1. Just load the programming instructions in locations 
000,000 through 000,377. 

2. Then load the text in locations 001,000 through 
004,377. Be sure that after each paragraph of text, you type 


the asterisk as I've shown because it's used as a return queue. 

3. The program as is takes a little over 1 K of memory 
but it will easily fit into IK by just shortening the text. You 
might want to change the text anyway to fit your own 
(computers') personality. 

4. If you have any questions, write or call me (person- 
to-person): Ron Santore 

1957 Huasna Dr. 

San Luis Obispo CA 93401 

(805) 544-1956 


oooooo 

001 

002 

003 

004 

005 

006 

007 

010 

Oil 

012 

013 

014 

015 

016 

017 

020 

021 

022 

023 

024 

025 

026 

027 

030 

031 

032 

033 

034 


035 


036 


037 

040 

04l 

042 

043 

044 

045 

046 

047 

050 

051 

052 


053 

054 


055 

056 

057 

060 

061 

062 

063 

064 


Page 38 


06l 

XXX 

XXX 

021 

000 

001 

315 

347 

000 

315 

103 

000 

016 

060 

315 

210 

000 

107 

021 

020 

002 

315 

347 

000 

014 

171 

062 

354 

003 


312 

330 

000 

315 

103 

000 

270 

312 

300 

000 

074 

346 

007 

270 

312 

151 

000 

075 

675 

346 

007 

270 


Dr. 


LXI SP 065 

your highest memory 066 

067 

LXI D/E 070 

instructions 071 

072 

CALL 073 

print subr. 074 

075 

CALL 076 

input subr. Q77 


312 JZ 

151 "neighbor has it" 
000 

021 LXI D/E 
360 "who me" 

002 

315 CALL 
347 print 
000 

000 NOP 

000 NOP 


MVIC 

•zero (ASCII) 

CALL 

rnd. subr. 

MOV A to B 
LX I D/E 

"whos got the button" 

CALL 

print 

INR C 

MOV C to A 
STA 

store turn # in text 
CPI A 

six (ASCII) 

J Z 

"you lost" 

CALL 

input 

CMP A to B 
J Z 

"right you are" 

INR A 
AN I 

CMP A to B 
JZ 

"neighbor has it" 

DCR A 
DCR A 
AN I 

CMP A to B 


000100 

303 

JMP 

101 

030 


102 

000 


000103 

333 

IN 

104 

000 

status word 

105 

017 

RRC 

106 

332 

JC 

107 

103 


110 

000 


111 

333 

IN 

112 

001 


113 

376 

CPI 

114 

107 

"g" (ASCII) 

115 

310 

RZ 

116 

376 

CPI 

117 

131 

"y" (ASCII) 

120 

312 

JZ. 

121 

014 


122 

000 


123 

376 

CPI 

124 

116 

"n" (ASCII) 

125 

312 

JZ 

126 

367 

end subr. 

127 

000 


130- 

376 

CPI 

131 

070 

"8" (ASCII) 

132 

372 

JM 

133 

146 


134 

000 


135 

021 

LXI D/E 

136 

072 

"no such number 

137 

003 


l4o 

315 

CALL 

141 

347 

print 

142 

000 


143 

303 

JMP 

144 

103 

input 

145 

000 


000146 

346 

AN I 

147 

007 


150 

311 

RET 


Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Men 


000151 

021 

LX I D/E 

152 

240 

"neighbor has it" 

153 

002 


154 

315 

CALL 

155 

347 

print 

156 

000 


157 

315 

CALL 

160 

210 

rnd subr. 

161 

000 


162 

376 

CPI 

163 

003 

"3" (Binary) 

164 

372 

JM 

165 

200 

pass higher 

166 

000 


167 

005 

DCR B 

170 

170 

MOV B to A 

171 

346 

AN I 

172 

007 


173 

107 

MOV A to B 

174 

303 

JMP 

175 

030 


176 

000 


ITT 

000 

NOP 

000200 

004 

INR B 

201 

170 

MOV B to A 

202 

346 

AN I 

203 

007 


204 

107 

MOV A to B 

205 

303 

JMP 

206 

030 


207 

000 


210 

04l 

LXI H/L 

211 

265 


212 

000 


213 

026 

MV ID 

214 

010 

"8" (Binary) 

215 

176 

MOV M to A 

216 

007 

RLC 

217 

007 

RLC 

220 

007 

RLC 

221 

256 

XRA M 

222 

027 

RAL 

223 

027 

RAL 

224 

055 

DCR L 

225 

055 

DCR L 

226 

055 

DCR L 

227 

176 

MOV M to A 

230 

027 

RAL 

23! 

167 

MOV A to M 

232 

054 

INR L 

233 

176 

MOV M to A 

234 

027 

RAL 

0 Park CA 

94025 

June/July, 1976 


186 



235 

167 

MOV 

A 

to 

M 

342 

347 

print 

36l 

323 

OUT 

236 

054 

INR 

L 



343 

000 


362 

001 


237 

176 

MOV 

M 

to 

A 

344 

315 

CALL 

363 

023 

INX D/E 

240 

027 

RAL 




345 

103 

input 

364 

303 

JMP 

241 

167 

MOV 

A 

to 

M 

346 

000 


365 

347 


242 

054 

INR 

L 



000347 

333 

IN 

366 

000 


243 

176 

MOV 

M 

to 

A 

350 

000 

status word 

000367 

021 

LXI D/E 

244 

027 

RAL 




351 

007 

RLC 

370 

220 

"thanks 

245 

167 

MOV 

A 

to 

M 

352 

332 

JC 

371 

004 


246 

025 

INR 

L 



353 

347 


R72 

315 

CALL 

247 

302 

JNZ 




354 

000 


373 

347 

print 

250 

216 





355 

032 

LDAX D/E 

374 

000 


251 

000 





356 

376 

CPI 

375 

303 

JMF 

252 

346 

AN I 




357 

052 

* (ASCII) 

376 

103 

input 

253 

007 





360 

310 

RZ 

377 

000 



254 

255 

256 
257 
260 
261 
262 

263 

264 

265 

266 
267 

270 

271 

272 

273 

274 

275 

276 
271 

000300 

301 

302 

303 

304 

305 

306 

307 
310 

311 

312 

313 

314 

315 

316 
000317 

320 

321 

322 

323 

324 

325 

326 
327 

000330 

331 

332 

333 

334 

335 

336 

337 

340 

341 


376 

010 

370 

303 

210 

000 

XXX 

XXX 

XXX 

XXX 

000 

000 

000 

000 

000 

000 

000 

000 

000 

000 

171 

376 

063 

372 

317 

000 

021 

320 

003 

315 

347 

000 

303 

103 

000 

021 

205 

003 

315 

347 

000 

303 

103 
000 
170 
366 
. 060 
/062 

104 

004 

021 

o4o 

004 

315 


CPI 

"8" (Binary) 

RM 

JMP 


any # 
any # 
any # 
any # 

NOP 

NOP 

NOP 

NOP 

NOP 

NOP 

NOP 

NOP 

NOP 

HOP 

MOV C to A 
CPI 

"3" (ASCII) 
JM 


LXI D/E 
"you found it" 

CALL 

print 

JMP 

input 

LX I D/E 
right you are 

CALL 

print 

JMP 

input 

MOV B to A 
ORI 

prefix for ASCII 
STA 

store button in text 


ADDRESS 


LXI D/E 
"you lost" 

CALL 


(003,205) 

( 003 , 320 ) 

(004,040) 

(004,220) 


ASCII DATA TO BE STORED IN MEMORY 


TEXT 


(001,000) CR BUTTON, BUTTON CR LF LF 

EIGHT PEOPLE ARE SITTING IN A CR LF 
CIRCLE, WITH YOU IN THE CENTER. CR LF LF 
ONE OF THEM HAS THE BUTTON AND CR LF 
YOU HAVE TO GUESS WHO. CR LF LF 
THE PERSON WITH THE BUTTON CAN GR LF 
PASS IT, SO BE CAREFUL. CR LF LF 
YOU HAVE FIVE GUESSES. CR LF LF 
WHEN YOU'RE READY, TYPE _Tr G T T * 


(002,020) CR LF 


0 


BUTTON, BUTTON 

WHO’S GOT 
THE BUTTON? 


CR LF 
1 CR LF 

2 CR LF 
3 CR LF 

CR LF * 


(002,240) CR 

I DON’T HAVE IT, CR LF 

MY NEIGHBOR DOES. CR LF 

BUT WHOEVER HAS IT PASSES IT! CR LF , 

(002,360) CR 

WHO, ME?? CR LF 

I DON’T HAVE IT! CR LF 

WHOEVER HAS IT, KEEPS IT. CR LF » 

(003,072) CR 

SILLY, CR LF 

THERE’S NO ONE HERE CR LF 
WITH THAT NUMBER....TRY AGAIN: £R LF * 

CR 

RIGHT YOU ARE; LUCKY! CR LF 
PLAY AGAIN? (Y OR N) * 

CR CR LF LF 

YOU FOUND THE BUTTON IN _ TRIES. CR LF 
ANOTHER GAME? (Y OR N) * 

CR 

SORRY. THAT WAS YOUR LAST GUESS. CR LF 
" " HAD THE BUTTON! TRY AGAIN? CR LF * 


CR 

THANKS FOR PLAYING.CR LF 

ANYONE ELSE WANT TO PLAY?? CR LF 
(Y OR N) CR LF * 


June/July, 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


Page 39 


187 






DON’T UNDERESTIMATE BASIC 

Dear Editor, June 9, 1976 

I think anyone who underestimates BASIC in its more sophis¬ 
ticated forms is making a mistake. It is powerful, it can be well or¬ 
ganized, and yet a novice can get going very easily. Most important 
for micros—the time for an amateur or part-time programmer to get a 
working program is V 2 that of other languages. 

C.D. Johnson 2801 SW Patton Lane 

Forest Products Engineering Portland OR 97201 


BASIC COMPLAINT & MACRO MESSAGE 

Dear Sir, 5 May 1976 

I am very curious about the motivation for including the article 
"A Critical Look at BASIC" by Dennis Allison in Dr. Dobb’s Journal 
Vol. 1, No. 2. This article is the first one I have encountered in the 
computer hobbyist press that talks about modular and structured pro¬ 
gramming. This may be because, as your editorial says, that most 
other magazines are hardware oriented. In any event, Allison's article 
confirms what I have long suspected, namely, that BASIC is not the 
language of choice for state of the art programming. However, the 
inclusion of Allison's article in a magazine whose raison d’etre is to 
promote a subset of BASIC does seem a bit odd, to say the least. 

Allison's article raises some questions that neither Dr. Dobb’s 
Journal nor PCC seem to answer, namely, if BASIC is bad for you, 
why encourage people to be BASIC junkies? 

Let me note that I am not a rabid BASIC hater; just troubled 
by the difference between what we are supposed to do, and what we 
actually do. 

Those who advocate structured programming seem also to advo¬ 
cate language with lots of control structures. Lots of control struc¬ 
tures sounds like a big language to me. Big languages are OK if you 
have megabytes of core, but obviously aren't very good if you're a 
hobbyist with 2K. Structured programming seems precluded by the 
limitations of a minimal hobbyist system. Is the hobbyist with a 
modest system limited to assembler or a language with not much more 
than GOTO's and a conditional branch? Or, is there some kind of a 
happy compromise between Tiny BASIC and, say, PL/I? I would 
certainly like to see DDJ address some of these issues. 

A final suggestion. The assembler I use at work doesn't have 
any macro facilities. The other day, I decided to see what I could do 
about this. The macro generator GPM described by Wegener in his 
book, Programming Languages, Information Structures, and Machine 
Organization, looked interesting. I looked up the original article on the 
language (Strachev. "A General Purpose Macrogenerator," The Com¬ 
puter Journal, Oct., 1965, Vol. 8, No. 3, pp. 225-241) and discovered 
a listing for a GPM processor written in CPL. Strachey says the orig¬ 
inal implementation of GPM was 250 "orders" long. This is one hell 
of a lot of macrogenerator per word of core. Thus GPM might be of 
interest to people with home brew assemblers. Sounds like the sort of 
thing DDJ might be interested in. My implementation was a "quick 
and dirty" FORTRAN job done on the sly. As you might expect, 
Strachey's program has bugs in it. Some are real boo-boos. 

Yours, 

Fred J. Dickey 3420 Granville Rd 

Westerville OH 43081 


There is a lot wrong with BASIC; it is not the language of 
choice when the program is going to be long or complex. Unfortun¬ 
ately, there is a substantial group of people who do not understand 
that; hence, the publication of my "Critical Look At BASIC." I had 
hoped that it would help our audience (many of whom have only 
recently encountered any programming language) attain a bit of per¬ 
spective on what BASIC is and where it belongs in the spectrum of 
things. 

There is a lot right with BASIC, too. For small programs its 
interactive capabilities outweight the cumbersome control structures. 

Its "text editor" orientation makes it easy to implement interactively 
with an interpreter. Given the spectrum of available language models, 
it is difficult to see how any other language could have been a better 
model for a super-minimal implementation. Tiny BASIC is about right— 
and an one is going to write a giant tiny BASIC program (I hope!). 

Macro processors are magnificent tools with frightening powers 
and capability. The problem is how to make sure that a macro, partic¬ 
ularly one in Strachey's GPM, does what you think it does. I would 
hazard a guess that some of the "bugs" you have found in the pub¬ 
lished version are, in fact, simply unexpected macro expansions which 


COMPUTERS FOR STUDENTS’ HOME STUDIES 

Dear Mr. Warren; 8 May 1976 

We are organizing a research project whose aim is to 
investigate how small "Home Computers" might be used in 
education—helping students to study at home. To keep up 
informed about new developments related to home computers, 
please enter our subscription to Dr. Dobb’s Journal. 

Do you know of other publications related to home 
computers? 

Sincerely, 

Jerry Felson, Ph.D. 

President 84-13 168 St 

Cybernetic Decision Systems, Inc. Jamaica NY 11432 


COMPUTERS-IN-EDUCATION BIBLIOGRAPHY 

The National Council of Teachers of Mathematics (NCTM) 
bibliography. Computers in Education, has replaced the old list. 
Computers in the Mathematics Classroom. This new listing is 
separated into seven sections, including one on mathematics texts 
series. 

Single copies of this 41-page bibliography are available free 
on request from the NCTM Headquarters Office, 1906 Association 
Dr., Reston VA 22091. 


SUMMER MEETING OF THE ASSN. FOR DEVELOP¬ 
MENT OF COMPUTER-BASED INSTRUCTIONAL 
SYSTEMS 

The 1976 Summer Meeting of the Association for the 
Development of Computer-Based Instructional Systems (ADCIS) 
will be sponsored by Control Data Corporation at Minneapolis, 
Minnesota, August 10-12, 1976. For further information about 
the conference, contact the General Program Chairperson: Dr. 
Karen Duncan, Director, Office of Computer Resources, College 
of Dental Medicine, 80 Barre Street, Charleston, South Carolina 
29401, (803) 792-3211. 


HAND-HELD CALCULATORS IN CLASSROOMS 

The Iowa Council of Teachers of Mathematics (ICTM) 
has recently published the Monograph-1976, The Hand-Held 
Calculator. The ideas and activities included were suggested by 
ICTM members from their classroom experiences. 

Copies of this monograph are available for $1.50 (ICTM 
member), or $2 (nonmember) from Ann Robinson, 509 W 20 
St., Cedar Falls IA 50613. Make all checks payable to ICTM. 


are performed according to the rules. I'd suggest that you look at 
another MACRO system—the TRAC system. There is a good descrip¬ 
tion in Nelson's Computer Lib. The FORTH language and Logical 
Machine Corporation's ADAM are also macro-like systems, but they 
defer expansion to run-time. We'd be pleased to publish macro sys¬ 
tems implementations should anyone be willing to prepare them. 

Incidentally, macro systems can perform many of the same func¬ 
tions as compliers, but the underlying model is quite different. A com¬ 
piler decomposes the input text into a phrase structure and then as¬ 
signs meaning based upon that decomposition. A macro processor 
matches a template and then transforms the text accordingly. Macro 
systems are inherently more powerful than compilers modeled on con¬ 
text-free languages since they are (inherently) context-sensitive. A.S. 
Tenenbaum describes using such a system in IEEE Transacting on Soft¬ 
ware Engineering, SE-2,2, June, 1976, p. 121. —Dennis Allison 


Page 40 Dr. Dobb’s Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 June/July, 1976 


188 








TINY TIME SHARING??? 


IVERSONS INITIATE APL NEWSLETTER 


Dear Editor, 6/2/76 

I would like to get readers to start thinking about the 
possibilities of contructing multiple-user or time-shared sys¬ 
tems using table-top hardware. 

The development which 1 think makes this possible is 
the Video Display Module VDM-1 from Processor Technology 
Corp. (6200 Hollis St., Emeryville CA 94608). I happen to 
have designed it, in part for the money, but also so that peo¬ 
ple more skilled in software than I (and that's almost anyone) 
could put together multi-user systems. 

The VDM-1 is a memory module (1024 bytes) with a 
window (the video monitor screen). It has an upper/lower 
case character set which includes control characters (128 char¬ 
acters). There is a video inversion cursor which can be set at 
each character by setting the high-order bit of that character. 
This effectively doubles the character set to 256. Display for¬ 
mat is 64 characters by 16 lines. 

Since it is memory, the processor can read from the 
VDM as well as write to it. This means that information spe¬ 
cific to a given user can be stored in that user's VDM, and 
pulled out for use when desired, modified, and put back in. 
This can happen in a memory area which is masked from the 
view of the user by the "window shade." As its name implies, 
this is a blanked area of the screen which can be "pulled 
down" from the top to blank a maximum of 15 text lines. 

The CPU determines the length of the shade through a status 
byte which it outputs to the VDM through an OUT 
instruction. 

Suppose that Tiny BASIC (or Tiny ALGOL or Tiny 
FORTRAN or whatever) is set up in the CPU's main memory 
area. Several users with VDM's could be building programs, 
the object code of which is stored in the first few lines of 
their screens. (Here my ignorance of systems software will 
probably become laughably apparent. It's the vision that 
counts.) The CPU runs through a schedule in which it pulls 
out the object code and tables of parameters in a user's 
in a user's screen, runs the program until a convenient point is 
reached, stuffs the code and new parameters back under the 
window shade, and goes on to the next user. One of the 
parameters would obviously be the location on the screen of 
the cursor. If the total number of bytes used for this storage 
were 512 per user, that would still leave 8 lines of 64 charac¬ 
ters. These could be configures as two columns of 32 charac¬ 
ters, having a total length of 16 lines. 

The more ambitious a user got, the lower the window 
shade would go as the hidden area filled up with stuff. This 
would provide a "negative feedback" effect which might serve 
to keep the user reminded of the limited nature of the 
machine resources. Users of incredible .Big Monster machines 
will throw tantrums at the thought of this, but they will have 
to be brought into the real world somehow, whether they 
like it or not. 

I have been talking about a multi-user operation, in 
which several people use the same program. True time-sharing 
requires (I think) that each time the CPU steps to the next 
user, it be able to call up the program (meaning Tiny BASIC 
or Tiny ALGOL) that that user wants. Clearly these programs 
cannot be kept under the window shade, but, if they are tiny 
enough, there should be enough RAM available on a full-blown 
65K system (providing the power supply holds out). 

Incidentally, it might be a tickle to keep object code 
and parameters on the screen without pulling the window 
shade down over them. They would appear to flicker, sparkle 
and otherwise rearrange themselves in operation. This would 


Dear Editor: 5/24/76 

APL Press is a new publishing house devoted exclusively 
to APL. Its first book, to appear this summer, is a high 
school text on elementary analysis by Ken Iverson, the inven¬ 
tor or APL. Several other titles are planned for publication 
this year, and further manuscripts are being sought. 

A newsletter is also planned, to present brief articles, 
problems, definitions of functions, reports on conferences, 
correspondence, and others items of interest to the APL com¬ 
munity. The first issue, which is scheduled for July, will in¬ 
clude a report by Professor Jenkins on a recent APL Imple¬ 
mentors' Workshop, an article on magic cubes by Professor 
Mauldon, and material on a new form of function definition 
excerpted from a forthcoming book. 

Readers interested in receiving the newsletter and infor¬ 
mation on other publications, or in submitting material for 
publication, should write to APL Press, Box 27, Swarthmore 
PA 19081. 

Jean Iverson 

[Jean Iverson is in charge of the APL Press. She is "closely 
associated" with Ken Iverson. —JCW] 


A SOFTWARE EXCHANGE FOR 6800’s 

Dear Sirs: 5-15-76 

I am sponsoring a SOFTWARE EXCHANGE for those 
interested. Anyone interested in receiving software for any of 
the microcomputers, send your name, address, and any soft¬ 
ware you have available. I have some software for the 6800 
for immediate distribution. When I receive software from 
other individuals, I will distribute the material to those inter¬ 
ested. Please include $3 to cover the cost of mailing and 
photocopying. You need not submit software to benefit. 

Very truly yours, 

Howard Berenbon 2681 Peterboro 

W. Bloomfield Ml 48033 
313 851-7966 

We would be happy to save you the cost of photocopying 
listings and documentation by publishing your 6800 programs 
in Dr. Dobb’s Journal. Also, if you don't wnat to spend the 
time and energy running your software exchange operation, 
you could submit your programs to Community Computer 
Center for their non-profit Program Repository & Tape Dupli¬ 
cation Facility (please see Dr. Dobb’s Journal Vol. 1, No. 3). 


IMS ASSOCIATES, Inc. recently moved into new facilities which more 
than quadruple the company's manufacturing space. The company's 
new address in San Leandro, California, is 14860 Wicks Blvd, 94577; 
(415) 483-2093. The rapid growth of IMSAI has been attributed to the 
demand for the new IMSAI 8080 Microcomputer which was 
introduced earlier this year. 

be a much better show than black screen, and might serve as 
a debugging aid, together with a chart of the binary equiva¬ 
lent of the character set. 

That's about as much as I can offer, except for help in 
interpreting the VDM-1 manual, which is available for $4 from 
PTCO. It's a pretty good manual, so I don't think there will 
be too much call on that score. 

Do it! 

Lee Felsenstein 1807 Delaware St. 

LGC Engineering Berkeley CA 94703 

415 845-4736 


June/July, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 41 


189 






FCC PETITION ON 

ANSCII TRANSMISSIONS BY HAMS 


by Bruce J. Brown, WB4YTU April 19, 1976 

4801 Kenmore Ave., no. 1022 
Alexandria VA 22304 
703 370-1431, home; 202 697-9654, work 


This is a petition foi“,r.ulemaking in the matter of revi¬ 
sions of Federal Communications Commission Rules, Sections 
97.69 and 97.117 to permit use of the American National 
Standard Code for Information Interchange (ANSCII), former¬ 
ly ASCII. 

The American National Standard Code for Information 
Interchange (ANSCII), formerly ASCII, was developed by the 
American National Standards Institute (ANSI, formerly Amer¬ 
ican Standards Association 'ASI') as the standard code for 
information interchange in the United States. 

The 7-bit-plus-parity ANSCII code provides 128 possible 
characters (Figure 1) versus the 58 characters of the Baudot 
code. In addition to figures, numbers, and punctuation, the 
code set has provisions for special symbols and control char¬ 
acters which is vital to automated data exchange and com¬ 
puter control. 

Its purpose is to establish uniformity and compatibility 
in the interchange of information among domestic and foreign 
manufacturers of data processing and communications systems. 

In March 1968, President Johnson approved a recom¬ 
mendation by the Secretary of Commerce that ASCII be 
adopted as a federal standard.^ 

Sections 97.69 and 97.117 are ambiguous and contradic¬ 
tory with regards to codes presently allowed. 97.69(a) states 
"A single channel five-unit (start-stop) teleprinter code shall 
be used . . ."; however, Section 97.117 states "The transmis¬ 
sion by radio of messages in codes or ciphers ... is prohib¬ 
ited." These sections are in clear conflict. Furthermore, Sec¬ 
tion 97.69(a) also states "In general, this code shall conform 
as nearly as possible to the teleprinter code or codes in com¬ 
mon commercial usage in the United States."—which is 
ANSCII! 


There are several arguments to support the use of 
ANSCII by amateur radio operators. 

a. Large quantites of surplus ASCII terminal equipment 
are available at very low cost on the surplus market. Inexpen¬ 
sive Baudot devices are becoming increasingly difficult to find. 

b. Government and industry have only recently begun to 
explore the use of recently developed microprocessor circuits 
to solve complex teleprocessing problems. Hobbyists, many 
who are amateur radio experimenters, have also shown con¬ 
siderable interest in these devices as evidenced by the high- 
volume microprocessor sales to non-commerical buyers, and the 
emergence of numerous amateur computer journals. Hams, 
using microprocessors in concert with presently allocated com¬ 
munications channels, have the opportunity to make serious 
contributions to the infant teleprocessing field while greatly 
enhancing current amateur modus operandi. It is not unlikely 
that hams will some day use microprocessors in communica¬ 
tions networks (e.g., packet switching) to permit faster and 
more reliable traffic handling for emergency and routine mes¬ 
sages. Fruition of many of these concepts, however, is directly 
dependent upon the approval by the FCC of a coding scheme 
with a large-character set, such as ANSCII, for compatibility 


with microprocessors and automatic communications systems. 
Failure to approve such a code will greatly stifle the advance¬ 
ment of non-commercial communications and would be in 
direct conflict with the purpose from the amateur radio ser¬ 
vice as expressed in Section 97.1(b) and (c). 

c. ANSCII, by virtue of its diversified character set, is 
highly compatible with amateur telemetry systems; e.g., 
remotely monitoring the status of repeater control circuits.^ 

Using asynchronous ANSCII transmission with one start, 
two stop, one parity, and seven data bits per character, speeds 
of 10, 30, and 60 characters per second will equate to rates 
of 110, 330, and 660 bits per second (bps), respectively. 

Through simple Fourier analysis to the 5th harmonic, it 
can be shown that the signaling bandwidth for data at speeds 
of 110, 330, and 660 bps is 220, 660, and 1320 hertz, re¬ 
spectively. Furthermore, it can be shown that the AFSK band¬ 
width for a 660 bps signal is less than that required for SSTV 
transmission. 

Based upon the technical and operational benefits that 
the use of ANSCII could provide, and considering that no 
detrimental effect to the amateur community would result, it 
is requested that applicable sections to Part 97 be revised to 
permit the use of ANSCII. 

1 

Data Communications Systems, Control Data Corporation, 
April, 1974, page 47. 

2 

Introduction to Computer Data Communications, Honeywell 
Corporation, July, 1973, pages 2-19. 

^QST, March 1976, page 73. 


A CLUB SURVEY FOR A CLUB CLUB 

Dear Editor, 

I am doing a survey of hobbyist computer clubs. It 
should be interesting to find out how many hobbyist club 
members there are, what kinds of things they're doing, etc. 
Hopefully the tabulated results can be printed in DDJ after 
I've compiled them. One of the reasons for the survey is to 
evaluate interest in an organization of hobbyist clubs (tenta¬ 
tively called 'Your Club of Clubs' or 'The Metaclub'). Any 
club not on the following list should get in touch with me 
for more information. 

Amateur Computer Club of N.J., Atlanta Area Micro¬ 
computer Hobbyist Club, Bay Area Microprocessor Users 
Group, Bit Users Association, Cache (Chicago area), Cleveland 
Digital Group, The Computer Hobbyist Group (N. Texas), 
Denver Amateur Computer Society, El Paso Computer Group, 
Homebrew Computer Club, LLLRA Hobbyist Computer Group, 
Long Island Computer Association, Miami Area Computer Club, 
CPU (Monterey), Northwest Computer Club (Seattle), Nashau 
Area Computer Club, New York City Micro Hobbyist Group, 
Pittsburgh Area Computer Club, Santa Barabra Nameless Com¬ 
puter Club, Southern California Computer Society, Tallahas¬ 
see Amateur Computer Society. 

I also invite comments and questions from anyone in¬ 
terested. 

Sincerely, 

Dave Caulkins 437 Mundel 

Los Altos CA 94022 
415 948-5753 


Page 42 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 June/July, 1976 


190 




WESTERN DATA’S 6502-BASED DATA HANDLER 
Complete Kit far $169.95, 

Plug-Compatible to Altair Peripherals 

by Western Data Systems staff 

The Data Handler is Western Data Systems new product. 
It's a microcomputer using the MOS Technology 6502 micro¬ 
processor with the latest state of the art technology producing 
a high performance microcomputer at a low price. 

The high speed operating capabilities of the Data Handler 
are enabled by the use of an easy-to-use full-function, hard- 
ware-controlled, front panel. A large ground plane area (to 
minimize noise at high operating speed) is on the P.C.B. and 
2102-type RAMS. 

Slower accessing memories (EPROMS and ROMS) may 
be used, although this will reduce the cycle speed to within 
the limits of other microcomputer kits. The single 13.75” x 
10.5" P.C.B. can directly address 65K of memory and con¬ 
tains 1 K bytes of static RAM on the board with complete 
address decoding. 

It also consists of all circuitry needed to be a stand¬ 
alone microcomputer for even such high-speed devices as disk 
peripherals. 

The Data Handler is designed with identical drive 
capabilities around the 8800 Altair, 100-pin, tri-state bus. It's 
plug-in compatible with the long list of Altair peripherals. 
Expandability can be accomplished in a manner identical to 
the 8800 Altair by using the mother board. 

The Data Handier also has dual interrupt lines (one 
maskable), slow-down circuitry for slow memories, DMA 
(direct memory access) circuitry, and DMA acknowledge con¬ 
trol. One 8-bit parallel input port, one 8-bit parallel output 
port, separate 10 address control, and memory control lines. 
Single voltage (+5 volts) and cycle times to 250ns. It has 
full front panel control with the use of keyboard switches to 
provide the following hardware: 

Single-cycle operation. 



Single-instruction operation. 

Memory examine (left incremental). 

Memory deposit (left incremental). 

Initialization. 

Halt. 

Run. 

Hex data and address entry. 

For an introductory offer the Data Handler Bare Bones 
Kit is being offered for $79.95, which includes the Data 
Handler P.C.B., 26 keyboard switches, P.C. B. stand, and 
complete documentation. 

The complete kit costs $169.95. This includes the Data 
Handler P.C.B., 26 keyboard switches, P.C.B. stand, complete 
set of I.C.'s, IK static RAM, 500ns memory, resistors, 
capacitors, L.E.D.'s, 1 mhz 6502, and complete documentation. 
This microcomputer is ideal for the hobbyist and industrial 
user alike. 

For complete information on ordering, write to: 

Western Data Systems 

3650 Charles St, No. Z 

Santa Clara CA 95050 

atn: Cindy & Mike Indihar 

Office: 408-984-7804 

Home: 408-378-3569 

The Introductory Offer expires August 31, 1976. 


RCA COSMAC & ySCOPE 

Dear Bob, 4/12/76 

RCA has formally announced the 1802 chip for COS- 
MAC, and it looks even better than the 1801. It seems 
strange that so few hobbyists are using COSMAC, since it was 
originally intended for the personal computer market (partly) 
and has a remarkably adaptable instruction set. Now that the 
new, improved version is available maybe some enterprising 
OEM will jump into the hobby market with a COSMAC-based 
machine. The RCA COSMAC Microkit (not to be confused 
with the RCA COSMAC Microtutor) is a beautifully engin¬ 
eered computer, but probably too expensive for most hobby¬ 
ists. I don't know what the price tag is, but it doesn't look 
cheap (is it true that the jewels in the panel lamps are syn¬ 
thetic rubies?). 

In the March-April, 1976 issue of PCC I predicted that 
the 1980 hobbyist would have a breadbox-size computer con¬ 
taining an integral ASCII keyboard, CRT display, tape cassette, 
hardcopy printer, and floppy disc. Well, it isn't quite 1980 
but the newly-announced ]jScope 8000 (see the April 1 issue 
of Electronics) is a breadbox-size computer containing an in¬ 
tegral ASCII keyboard, CRT display, tape cassette, harccopy 
printer, and a price of $6995. No floppy disc, but it does 
have a novel incremental assembler. 

Tempus Digits, 

Jim Day 


LED REPLACEMENTS FOR BURN-OUTABLE PDP-8/E LAMPS 

A conversion kit is available to enable replacement of standard 
incandescent lamps used in the PDP8/e minicomputer with light-emitting 
diodes, to eliminate the problem of burned-out bulbs. The kit is com¬ 
plete with a set of direct-replacement LED's and instructions for modi¬ 
fication of the Front Panel Control Board circuitry. $39.95. Delivery, 
stock to 30 days. Scientific Test Systems, Box 741, Wallingford CT 
06492; 203 265-5028 


June/July, 1976 Or. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 43 


191 





dr dobbs journal of 


$ 1.50 


COMPUTER 


C 


alisthenics 


60 


rthodontia 


Running Light Without Overbyte 

August, 1976 Box 310, Menlo Park CA 94025 Volume 1, Number 7 

A REFERENCE JOURNAL FOR USERS OF HOME COMPUTERS 


Personal Computing ’76 — Looks like it’s going to be a great show! Jim C. Warren, Jr. 3 

details of seminars, exhibits, door prizes, etc. planned for the Aug. 28-29 Atlantic City hobby exposition 

1977 NCC Includes Significant Personal Computing Events 4 

The Time for Floppy’s is Just About Now! by the Editor 5 

details of a number of floppy disc subsystems, including one for $995 (in 10-quantity) 

Design Contest Offers Head-Per-Track Hard Discs as Prizes E. Mike Engel 7 

Proposed Hobbyist-Standard* Bus Structure D. Denny & J. Broom 8 

proposal for allocation of the 100 leads on the standard bus (*previously called the Altair/IMSAI bus) 

First Rumors of a West Coast Home Computing Faire 9 

The PCM-12: A PDP-8 Look-Alike Well Worth Looking At 10 

Z-80 . . . Coming on Strong 11 

Three kits Under $300 — One includes 2K bytes, Another runs at 4 megahertz 

Remember Those Secret Codes You Played With as a Kid? Well . . . Mai Stiefel 12 

details of the National Bureau of Standards encripting/deciphering computer algorithms 

8080 TECO and a Floating Point Specification William E. Severence, Jr. 16 

6502 SOFTWARE - 

FLOATING POINT ROUTINES FOR THE 6502 R. Rankin & S. Wozniak 17 

Monitor for the 6502 Jack Bradshaw 20 

Lunar Lander for the 6502 (Assembler-level Game) Mark Garetz 21 

6800 “APPLICATIONS SOFTWARE” - Games 

Games in Pittman’s 6800 Tiny BASIC Carl Kelb 26 

Low-Cost 6800 Systems Software & Games Technical Systems Consultants 28 

Shooting Stars for Uiterwyk’s 6800 Micro-BASIC Mark J. Borgerson 29 

BUGS & FIXES 

MINOL: Tiny Trek — More Details & A Correction Erik Mueller 31 

MINOL Errata & Praise Erik T. Mueller , Phillip L. Hansford 32 

COMPUTER MUSIC BIBLIOGRAPHY John Snell, PCC Research Engineer 33 

SMRT Will Hurt Leroy Finkel 36 

Lou Field’s Response to the Editor’s Note to the SCCS Lou Fields 38 

- AND - 

43 other hardware & software tidbits, consumer notes, suggestions, questions, etc. 


192 








Personal Computing ’76 

Looks Like It’s G oing to be a Great Show 


by Jim C. Warren, Jr., Editor, DDJ 

Up until July 23rd, I wasn’t really all that enthusiastic 
about Personal Computing ’76, the hobby convention and 
exposition being held in Atlantic City on August 28th and 
29th. I was unexcited, partially because it was way back 
there on the East Coast, and mostly because I had received 
no information about explicit programs or events, other than 
an exhibition of vendors’ goodies. Well, after one lengthy 
conversation with the Chairman of the convention, John Dilks, 
all of that has changed. It sounds like it’s going to be great! 

There are going to be a multitude of seminars. To 
mention a few: 

Hal Chamberlin will be discussing computer music. 

A Rockwell-type will be talking about computers in 
outer space and the space shuttle. 

Dave Ahl will offer a seminar on computer games. 

Lloyd Rice will be discussing computer speech, and 
demonstrating his talking computer. 

DEC will be presenting a computer-controlled train 
system. 

There will be three Z-80 seminars. 

Carl Helmers will be running a session on hobby 
standards. 

I will be discussing the immediate and foreseeable 
future of home computing. 

Dan Falystra is coming in from Holland to give a soft¬ 
ware seminar. 

Ted Nelson will be running a seminar of unknown (to 
me) content. 

There will be a medical computing seminar. 

A special session will be offered for officers of compu¬ 
ter clubs to exchange ideas. 

The ham crowd will be there discussing such things as 
the ham satellite, a microprocessor-controlled ham radio 
repeater station, hamateur uses for micros, etc. 

And, a whole mess of product-specific seminars will be 
offered by vendors. 

There will be a mass of give-aways 
including: a Lear-Siegler ADM-3 kit, a Sphere 310 kit, a MITS 
680 kit, a SWTPC 6800 kit, a MOS Technology KIM-1, an 
E&L MMD-1 kit, an F-8 evaluation kit from Mostek, a TV 
Dazzler from CroMemCo, a Z-80 kit from TDL, and 8800V 
board from Vector, several floppy disc systems, a MCEM8080 
from Hal, a 6502 Familiarizer from Ebka, a software self¬ 
teaching course from Logical Services, . . . and on and on and 
on. There will also be thousands of copies of Dr. Dobb’s 
Journal, and Byte being given away. 

As Tar as the vendor exhibition is concerned, there will 
be over eighty exhibitors including such unknowns as IBM, 
and DEC, as well as the many better-known vendors whose 
names have been dropped in the preceeding paragraph, and 
many others. Among other things, over 25 computer stores 
will be present to tell you about their offerings. 

If you are a West Coaster, even if you are not in 
Southern California, you can probably get in on the travel- 
package deal that is being offered to SCCS members. It’s 
$390 for round-trip air fare, 4-day/3-night hotel accommoda¬ 


tions, Phily-Atlantic City transportation, admission to the 
exposition, Sunday night banquet, and other nickel and dime 
items. Furthermore, you don’t have to come right back—you 
can hang around the East Coast for a while before you 
return. For instance, you could run down to COMPCON Fall 
*76 in Washington, DC, Sept. 7th-10th. Phone Leda Alpert 
(an SCCS member who also happens to be a travel agent) at 
(213) 655-0650. 

Admission to the whole thing is $5, if paid in advance, 
or $7.50 at the door. Incidentally, the profit (if any) doesn’t 
go into someone’s private pocket. It will go to a nonprofit 
amateur radio club that is sponsoring the whole thing, the 
Southern Counties Radio Association of New Jersey. The folks 
who are doing most of the organizing, John Dilks, (609 927- 
3873; Davey Jones, (609) 927-6950; and James Main, are 
club members and computer phreaques who are entirely 
unpaid volunteers. 



HAMATEURS TO 
HOLD A COMPUTERFEST 


The AMRAD COMPUTERFEST will be an exposition of micro¬ 
computers for computer amateurs, radio amateurs, and the general 
public. It is being sponsored by the Amateur Radio Research and 
Development Corporation (AMRAD), a non-profit scientific and edu¬ 
cational organization. 

The AMRAD COMPUTERFEST will be held on October 24, 
1976 at the Vienna Community Center, 120 Cherry St., Vienna, 
Virginia, near Exit IIS of the Washington, DC, Beltway. 

The exposition will be almost entirely devoted to small com¬ 
puters of the type suitable for home use. There will be displays of 
microcomputer systems by various manufacturers' representatives as 
well as tables for used or surplus equipment, circuit boards, and parts. 
Peripheral devices including video terminals, teletypewriters, and RTTY 
equipment will be shown. Forums will run throughout the day on 
subjects of interest to the serious hobbyist, students, and the general 
public. There will also be an opportunity to talk to representatives of 
various computer clubs and magazines. 

Admission will be $4 at the door ($3.50 advance registration by 
mail for pickup at the door). Make checks payable to AMRAD. Write: 
COMPUTERFEST, Box 682, McLean VA 22101. 

For reservations, contact any of these nearby motels directly: 
Vienna Wolf Trap Motel, 430 Maple Ave. E., Vienna VA 22180, 

(703) 281-2330; Tysons Corner Holiday Inn, 1960 Chain Bridge Rd, 
McLean VA 22101, (703) 893-2100; or Tysons Corner Ramada Inn, 
7801 Leesburg Pike, Falls Church VA 22043, (703) 893-1340. 


PATENT LIBRARIES ORGANIZED BY SUBJECT AREA 


Wondering whether your hot hardware homebrew is patent- 
able? Looking for homebrewing ideas? 

If you live in the San Francisco or Washington, D.C. areas, 
you can go check a local Patent Library. It is our understanding 
that there are only two such patent libraries where the infor¬ 
mation is organized by subject area. The one in the San Fran¬ 
cisco Bay Area is in the Sunnyvale City Library. We understand 
it is sponsored by local industries. (If some Washingtonite will 
give us more details about the location of their subject-organized 
patent library, we will be pleased to publish it.) 


August, 1976 


Dr. Dobb’s Journal of Computer Calisthenics 8t Orthodontia, Box 310, Menlo Park CA 94025 


Page 3 

193 






1977 NCC Includes 
Significant Personal 
Computing Events 

The National Computer Conference (NCC) is the largest 
yearly computer conference and exposition in the U.S. (and 
probably in the world). It is sponsored by the American 
Federation of Information Processing Societies (AFIPS), a 
group group that includes all of the major organizations of 
U.S. computer professionals. The 1977 NCC will be held in 
Dallas, June 13-16, 1977. 

Mr. Mauch (below) states, "A Milestone for personal 
computing! Personal computing is being seriously recognized 
by the computing industry." An alternative viewpoint is that 
this recognition is a milestone for the computing industry. 
Either way, it is absolutely certain that the '77 NCC will be 
an exciting and enlightening event, for pro and amateur alike. 
We urge you to join the fun. 


The 1977 National Computer Conference will feature 
several events for personal computing enthusiasts including the 
Personal Computing Fair, exhibits of personal computing 
equipment by manufacturers, seminars, and social events in 
addition to paper presentation. 

Two days of Personal Computing paper and panel pre¬ 
sentations are being planned. Papers and panels in any subject 
of interest to personal computing enthusiasts are sought 
including: 

t personal computer software 

t hardware designs and trends for personal computing 
t innovative applications of personal computing systems 
t the influence of the personal computing movement on 
the computer industry and computer science education 
t standards for personal computing products 
t predictions of trends in personal computing 

The '77 NCC will be the year's largest gathering of data 
processing users and computer professionals. Approximately 
30,000 people are expected to gather for the conference 
program of over 100 sessions plus the year's largest display of 
computer hardware, software, systems, and services featuring 
over 250 exhibitors. 


The '77 NCC Steering Committee welcomes your com¬ 
ments and suggestions and participation in this event. Please 
contact: 


Dr. Portia Isaacson 
Conference Chairperson 
Mathematical Sciences 
University of Texas 
Richardson TX 75080 
(214) 690-2172 


Dr. Robert Korfhage 
Program Chairperson 
Computer Science Dept. 
Southern Methodist Univ. 
Dallas TX 75275 
(214) 692-3082 


Dear Mr. Albrecht: July 26, 1976 

A Milestone for personal computing! Personal computing is 
being seriously recognized by the computing industry. 

It is important that we take maximum advantage of this oppor¬ 
tunity to present the worth and purpose of personal computing to the 
computing industry. As the leading publication serving the personal 
computing enthusiast. People’s Computer Company can do much to 
inform the enthusiast of the importance of his or her participation and 
involvement in this event. 

I would like to enlist your support in promoting the personal 
computing events in NCC '77, and invite any comments or suggestions 
you may have. 

One of the features of NCC '77 will be presentation of papers 
pertaining to persona! computing. Enclosed is a copy of the tall for 
tuch papers. Since the submittal deadline is December 1, 1976, this 


CONSULTANTS REFERRAL SERVICE 

There is now a national consultant's referal group in op¬ 
eration. It is operated by J. Hugo Gottlich and is called the 
National Software Consultants Referal Service, 8 Gates St., 
Danvers, MA 01923. 


SOFTWARE EXCHANGE FOR $$$ 

You may be able to peddle well documented, commer¬ 
cially useful software by registering it (for a fee) with the 
Computer Software Exchange, P.O. Box 27193, San Francis¬ 
co, CA 94127. [Of course, placing your software in this ex¬ 
change need not preclude your sharing it with hobbyists via 
publication in Dr. Dobb's Journal.] 


EVIDENTLY OIL AND COMPUTERS DO MIX 

Quick notes: Exxon already has a major interest in Zilog. 
Now, Sun Oil is negotiating to buy DATRAN, one of the 
largest special carriers in the nation, expecially set up for high¬ 
speed, high-reliability digital data communications. The figure 
involved in the negotiations is $30 million. 


COBOL FOR THE 8080 

RRC Consulting, Los Altos, CA, has a COBOL Cross Com¬ 
piler for the Data Point 2200 (which is almost an 8008). They 
only want a one-time use fee in the neighborhood of $50,000 
(yes...$50K!) 



announcement should appear in the earliest possible issue to permit 
contributors time to prepare their work. 

Plans for the conference are still being formalized. We are plan¬ 
ning many interesting and, I feel, innovative events for personal com¬ 
puting enthusiasts. We will keep you advised of developments. 

Very truly yours, 

Harold A. Mauch PerCom Data Company 

Personal Computing Chairperson 4021 Windsor 

1977 National Computer Conference Garland TX 75042 

1977 NCC Paper Guidelines 

Previously unpublished papers are solicited. Papers submitted for 
consideration must be in final form with all figures and tables, ready 
for typesetting. All papers will be refereed. Refereed and approved 
papers will be sent immediately to the printer, with no opportunity 
for author changes. The Conference Proceedings Editors reserve the 
right to edit all papers prior to publication, or to request that the 
authors change them to meet AFIPS publication requirements. 

The material submitted should include: 

1) Six copies of the paper. The paper should be a maximum of 
5,000 words. The submitted paper should be the final version—cleanly 
types, double spaced on one side of the paper, ready for typesetting. 
Each page should be numbered and have the principal author's name on 
it. Submission of a paper implies guarantee by the author that all 
necessary approvals and clearances have been obtained. 

2) Six copies of a page containing a 150-word abstract, the 
Computing Reviews Classification, and four to six keywords descrip¬ 
tive of the content of the paper. 

3) Three copies of a short biography of the presentor to be 
used in conference publicity and for introductions by the session 
chairperson. 

Deadline for all submissions is December 1, 1976. Authors will 
be notified before March 1, 1977 regarding the acceptance of their 
papers. 

Please send all submissions to the '77 NCC Program 
Chairperson, Dr. Robert Korfhage. 


Page 4 

194 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


August, 1976 









The Time for Floppy’s is Just About Now! 


by the Editor 

Things—most notably, prices—are coming down, fast, in 
the world of rotating mass storage appropriate for home com¬ 
puters. Prior to this, floppy disc subsystems have either been 
unavailable for hobby machines, or they have been priced for 
the industrial consumer (e.g., around $3,000 for a dual-drive 
system). Things have changed: A hobbyist can now reasonably 
expect to obtain a complete, assembled, single-drive subsystem 
for a price in the neighborhood of $1K. Here is the latest 
information we have: 

The best system we know of—and the least expensive—is 
available from Digital Systems, 1154 Dunsmuir PI., Livermore 
CA 94550; (415) 443-4078 (ask for Dr. John Torode). This 
is the same crowd that built Gary Kildall's original floppy inter¬ 
face over two years ago [see "First Word on a Floppy-Disc 
Operating System," in the April issue of the Journal ]. Gary 
has yet to have problems with the system. Digital Systems also 
is marketing a low-cost, floppy-based development system to the 
industrial market. They know what they are doing. What is 
much more important is that Dr. Kildall's fancy, DECSystem- 
10-like operating system—called CP/M—will run on DS's hard¬ 
ware. CP/M has been in use for over two years in a produc¬ 
tion and instructional environment. It is well debugged, well 
documented, and has some significant software subsystems 
available with it. 

Back to DS's floppy subsystem: The controller is already- 
assembled, burned-in, and tested, and has been on the market 
for some time. The controller can handle up to four drives. 

The drive is a Shugart 800, a highly reliable drive of excellent 
reputation. The single-system price is $1095, and drops to 
$995 in quantities of only 10. This price includes the con¬ 
troller, the drive, all cabling between controller and drive, a 
manual, shipping within the continental U.S., and a 90-day 
warranty. The manual includes a reproduction of the Shugart 
tech manual on the drive, a complete manual on the controll¬ 
er, and complete design details for a 20-chip interface from 
the controller to a hobbyist-standard (Altair/IMSAI) bus. The 
manual, alone, is available for $5, creditable towards purchase 
of any system. 

Though the controller is not available in kit form (too 
much potential for subtle, hairy problems), the interface is. 

If you wish to buy your own parts and build the interface, 
you can. If you want the parts from DS, they will ship them 
to you for $50 (Vector PC board, sockets, chips, connectors, 
cabling . . . the works). If a dual-drive system is desired, 
the second drive is $600, unit quantity. 

As with most of the floppy systems being offered to 
hobbyists, the power supply (if you don't already have one) is 
extra. In this case, it costs about $150, and the manual gives 
complete details if you wish to homebrew your own. 

Final notes: DS is a relatively small company. We know 
Dr. Torode both personally and by reputation, and have been 
very impressed by everything we have seen and heard. He 
maintains quite high standards for his product, technically, and 
for his operations, businesswise. We have complete faith in his 
competence and in his integrity and recommend him without 
restriction. He builds a good product, and he backs his work. 
Incidentally, the controllers, drives, and parts are in-stock, off- 
the-shelf items. 

If you have technical questions, Dr. Torode is the person 
with whom to talk. Unfortunately, he will be in Europe 


(teaching microprocessor courses for Phillips) from August 15th 
to September 15th. Thereafter, however, he will be happy to 
answer any questions you may have. 

Dr. Kildall's CP/M is available from Digital Research, 

Box 579, Pacific Grove CA 93950; (408) 373-3403, for $35- 
$70 depending on the level of documentation desired. The 
'software comes in the form of a "loaded" disc, including an 
editor or two, an assembler or two, a PIP (DECese for a file- 
transfer program), a debugger, and who knows what else (it 
grows from month to month). 

A second, interesting tidbit is a letter we received, dated 
June 30th, offering brand new CalComp 110 drives for $395; 
that's just about half their list price. The letter states that the 
drives carry CalComp's 90-day unconditional warranty. The 
drive does not use the IBM format (a poor format, but the 
only "industry standard" available for the time being), and 
could not be easily interfaced to CP/M. Also, CalComp drives 
appear to have a mixed reputation; some are good, and some 
are very poorly regarded. 

The company making this offer is Martin J. O'Boyle & 
Associates, Box 9094, Pittsburgh PA 15224; (412) 361-1602. 

We know nothing about them, but the offer appears to be 
well worth checking out. Incidentally, their letter indicates 
they are also offering IMSAI computers at $100 below list; 
mentions two designers of very low-cost floppy interfaces 
(Dr. Ken Welles, and Hal Chamberlin); and notes that they 
have only 95 of their CalComp 110 drives available for the 
price indicated. 

Financially, the next most interesting floppy system for 
hobbyists appears to be the one available from iCOM, 6741 
Variel Ave., Canoga Park CA 91303; (213) 348-1391. It's 
single-unit price is $1195. The price doesn't drop to $995 
(which appears in all their bold-face advertising) until one 
purchases them in 100-unit quantities. If you get in on an 
$CC$ group buy, however, you can get them for about $1100 
which includes tax, handling, and the FD05-II operating system. 
As we understand it, for these prices, one gets a Pertec drive, 
a controller capable of handling more than one drive, and 
cabling from the drive to the controller, and the controller to 
an interface board. The interface board is not included, but 
we have been told that a 3P+S will do the necessary job. 

The FD03-II was done by Art Childs, the recent editor 
of Interface, and a great hobbyist supporter. It requires about 
IK for the resident I/O drivers, IK for the monitor, and 4K 
for the Executive. To be really useful, it requires about an 
8 kilobyte system. This is noticeably less than is required by 
Kildall's CP/M, which needs at least 12K and prefers to dine 
on about 16K. However, FD03-II was completed only last 
Spring (1976), and thus may be assumed to have significantly 
more bugs than the more mature CP/M. (No criticism of Art's 
work; it's just an inherent characteristic of large systems 
software.) Also, CP/M has a comparatively extensive library of 
systems software that runs under it. 

Unanswered questions: We don't know how reliable the 
Pertec drives are. They generally have a much poorer reputation 
than the $hugart drives. We have an estimate that the power 
supply for the system will cost in the neighborhood of $210, 
but that estimate is 3 months old. We don't know if the 
indicated prices include shipping or manuals, and we don't 
know how well-done the manuals may be (the hobby move- 


August, 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 31 0, Menlo Park CA 94025 


Page 5 

195 


ment has a widespread characteristic of awful documentation). 

We also don't know what warranties are offered, and have no 
information on how well iCOM treats its customers. 

Since it is noticeably overpriced in comparison to the 
preceeding excellent alternatives, we hesitate to even bother 
mentioning the IMSAi floppy system . . . but, we will, since 
they are trying to market it to hobbyists. The controller has 
its own processor and is being touted as being "intelligent." It 
will handle up to four drives. It interfaces to a hobbyist- 
standard bus, of course, and the interface is included. In kit 
form with a single drive, it costs $1,449, and goes for $1649 
in assembled form. Extra drives cost $925. The Disk Operating 
System is available for $40. 12K Extended BASIC, including 
disc access, is supposed to be available by now. Ho hum. 

We think IMS manufacturers some excellent microcom¬ 
puters and m-c kits. However, we find their floppy offerings to 
be badly out-of-line—at least for the hobbyist—with some 
other products, at least as far as price is concerned. Incident¬ 
ally, we hear that Kildall's CP/M was made to run on the IM¬ 
SAI floppy system . . . and run very, very slowly. 

Finally, some immediate-future thoughts concerning 
floppies: 

PerSci is now offering a dual -drive floppy box for $1 K. 

To our knowledge, no one has yet built a controller and inter¬ 
faced it to a hobbyist-standard bus, but we are certain that it 
will happen very soon. This is deserving of attention, not only 
due to the low price for two drives, but also because PerSci 
drives use a voice-coil head positioner that really wails; its 
track access time is something like 10 times as fast as most of 
the other drives. Also, the feedback we have from industrial 
users of PerSci products implies that they manufacture excellent, 
solid, reliable floppy disc drives. 

Don't discard the idea of moving to floppies because 
you can't afford a dual drive system, and you think you can't 
back up your discs if you have only a single drive system. 

It's slow (and also cheap), but you can back up (save for 
safety's sake) discs, and even copy disc contents from one to 
another without a second drive . . . by using the cassette 
tape storage that you probably already have. Not what one 
would do in an industrial or business environment where $500 
or $1,000 is trivia, but at home . . . 

Watch for prices for controllers to drop even lower. We 
are all waiting for Hal Chamberlin to publish the rest of his 
series of articles on the super-inexpensive floppy controller/ 
interface in The Computer Hobbyist. The first article was 
published last Spring. Someone in Kansas told us of designing 
a very simple disc interface that he recently sold to a com¬ 
pany, back there. Presumably, they will be announcing a 
product, shortly. The Palo Alto Byte Shop has mentioned a 
very inexpensive floppy subsystem that they expect to place 
on the market, shortly. Shugart has announced its mini-floppy 
drive, which stores less than a "standard" floppy, but is 
priced significantly less than their "standard" drive. Gary Kil- 
dall is still hoping to be able to offer an interface/controller 
for somewhere in the neighborhood of $350, and presumably 
a single-drive system for about $800. 

But, there's a problem with watching for prices to come 
down. We all know they will. (We predict that floppy prices 
will probably bottom out at around $600 for a single drive, 
ready to plug in to your hobbyist-standard bus. We think that 
cost of manufacture will keep the price from dropping much 
below that ... at least, for reliable units.) The question is, 
how long do you want to wait until you have high-speed, mass 
storage . . . and can do really interesting things with your 
home computer? 


HEATHKIT TO INTRODUCE A COMPUTER KIT 

We have information from a source we consider to be reliable 
(but not from Heathkit) that Heathkit will present its first com¬ 
puter kit at the Personal Computing'76 Consumer Trade Fair in 
Atlantic City, August 28th-29th. The kit is rumored to be using 
the Signetics 2650 microprocessor. No other information at the 
moment, but...watch out McDonald's! 


DESIGN FOR BINARY INPUT TO HEX DISPLAYS 

The July 8th issue of ELECTRONICS Magazine has two 
quickie design articles detailing how to convert binary input 
to a HEX-coded, 7-segment display output. One method uses 
a PROM; the other uses some decoders and diodes. 


300 NANOSECOND 16x16 MULTIPLIER 

TRW Electronics Systems Division has a TTL-compatible, 
monolithic-bipolar multiplier that can perform 16-bit by 16-bit 
multiplication in half a microsecond. Designated the MPY-16, 
sample quantities can be delivered in under 30 days. 


A FLASHY EXTENDER BOARD 
WITH LOGIC PROBE 

This new extender board/logic probe kit is designed to fit 
either the Altair or IMSAI. It features Logic Level Lights: 
red > 2.4 volts, green < 0.8 volts, and yellow —0.2 second pulse 
HI/LO transition. A phono-needle probe is provided to ensure good 
and non-skid contact. Eyelets and jumpers in the power circuits 
allow convenient current measurement. The leads of the dual 50 
read-out edge connector are specially formed to allow convenient 
access to bus signals. The PC board material is 1 oz. Cu on 0.0625- 
inch, black FR4 board, which is solder-plated and has 50j>inch gold 
on the connector edge. The holes are plated through with 0.0015- 
inch Cu. 

This product is available now for $35, from Mullen Computer 
Boards, BlastMasters Inc., Box 31, Loma Mar CA 94021. Or check 
your local computer store. 



Page 6 

1 % 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


August, 1976 



Design Contest Offers 
Head-Per-Track 
Hard Discs as Prizes 



Gentlepersons: July, 1976 

At the request of many computer hobbyists, unhappy with the 
availability of low-cost, mass memory for permanent program and data 
storage, we are considering the design of a fast-access, memory kit. 

In order to offer you the type of storage that serves your needs, 
we give you the opportunity to participate in the design. So, open 
your mind and let us know your ideas. 

The major cost item is the engineering time required to design 
the controller which interfaces the memory and the microprocessor. In 
order to keep the cost down and to make it interesting and rewarding, 
v\s decided to have two contests. One, incorporating hardware, and 
one for software. 

To keep the contest proper we propose that the various com¬ 
puter clubs submit proposals on the rules, and judges (i.e., editors of 
stated computer hobbyist magazines.). 

The start up time for the memory is about 120 days. The 
interface controller requires approximately 60 days from the closing 
of the contest. 

It would be helpful for us to know how many of these fast- 
access memory kits will be sold. This is because we need to buy parts 
for the kits. The more parts we buy the lesser the cost to you. So 
please, if you are seriously considering the purchase of our memory, let 
us know—the bigger the response, the lower the production costs and 
selling price. 

The following is what we think you need. Take an close look 
and see if it is OK, if not, speak up. Let's make it right the first time. 

The proposed memory is designed for optimum performance 
and reliability at the lowest possible production cost. 

It features high rotational disc speed and head-per-track opera¬ 
tion, thus it sports a ten-times-faster access time as compared to a 
floppy disc system. The head-per-track design eliminates the time- 
consuming, mechanical positioning of one head on every track as well 
as simplifying the interface controller. 

A large, 14-inch-diameter disc is chosen to store as many bits 
with as few heads as possible. The disc is permanently mounted and 
rotates at 1725 rpm. 

A nine-head (Track) per comb-bar assembly is utilized. Eight 
heads are active, accessing 125,000 unformatted bits per track at a 
data rate of 3.6MHz. The ninth track is a spare. Therefore each comb- 
bar assembly (8 Tracks) can store 1 million gross bits or at least 
100,000 8-bit words. The memory can be expanded to 12 comb-bar 
assemblies or 96 active tracks storing 12 million bits or 10 million 
8-bit words. 

For systems unable to handle the 3.6MHz data rate, the fre¬ 
quency can be reduced, however fewer bits per track can be stored, 
or more heads must be used for the same data capacity. 

A delay modulation recording system is featured. It requires an 
8-bit preamble containing a 101 code to synchronize the phase-locked, 
read decoder. (10101011 at the beginning of each sector.) 

Preliminary specifications: Disc memory models 

HTM 8-1 kit to HTM 96-12 kit 
Minimum Maximum 

Data capacity, bits 1,000,000 12,000,000 

Data per track 125,000 

Data transfer rate 3.6 MHz 

Data access time average 17.4 milliseconds 

Size 17"W x 17"D x 10"H 

Power 115V 60Hz 200VA 

Electronics: One read-write amplifier, one index amplifier, and one 
sector amplifier for 64 sectors. 

Interface: TTL twisted pair 

Preliminary pricing based on a 100-unit production run: 


HYING SURfACI 


HTM 8-1 kit with interface controller $600 
Each additional 9-track, comb-bar assy., 
or 1 million bits $50 

HTM 8-1 kit without interlace controller $450 

First Prize: a) The best controller (price-performance) gets the grand 
prize of a memory with 300,000 8-bit words free, b) So does the best 
software for the controller, hopefully a program which makes the 
memory transparent (virtual) to the microprocessor. 

Second Prize: One each, 200,000 8-bit word memory for the second 
best controller and software design. 

Third Prize: One each, 100,000 8-bit word memory for the third best 
hardware and software design. 

Fourth Prize: $200 credit each, for the purchase of our memory for 
the fourth best controller and software design. 

Fifth Prize: $100 credit each, for the purchase of our memory for the 
fifth runner-up for hardware and software design. 

THE LOW-COST COMB-HEAD* 

Consisting of three basic parts—C-CORE, COMB-CORE, and 
COIL—the assemblies may have from 1 t> 12 heads. Assembly of a 
typical 9-track COMB-HEAD requires very little time and is accom¬ 
plished by simply slipping the self-supporting coils over the legs of the 
COMB-CORE and then pressing C-CORE and COMB-CORE together 
and applying adhesive. A conductive gap shim is vacuum-deposited 
(sputtered) over the entire inside of the C-CORE to minimize cross¬ 
talk. 

That's it! Let's get started, and good luck to you. 

Sincerely yours, 

E. Mike Engel 1719 S. Carmelina Ave. 

E. & U. Engel Consulting Los Angeles CA 90025 

(213) 820-4231 

•Developed and licensed by E. & U. Engel Consulting 


Editor's note: We hope that the contest judges will be chosen, 
announced, and publicized, prior to this company soliciting/receiving 
contest entries. 



COMPUTER COMPONENTS 
OPENS VAN NUYS STORE 


Computer Components opened its first retail store to 
the general public on June 17th. The address is 5848 
Sepulveda Blvd., Van Nuys CA 91411. They are currently 
authorized IMSAI dealers and expect to expand their micro¬ 
processor line to other manufacturers as they demonstrate 
viability. They also carry a complete line of interface and 
memory kits, hobbyist supplies, etc. 


SAN DIEGO COMPUTER STORE 

The Computer Center (8205 Ronson Rd., San Diego 
CA 92111, (714) 292-5302) opened its doors on May 22nd. 
It carries a variety of computer hobbyist equipment and 
publications. 


August, 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


Page 7 

197 
























Proposed Hobbyist-Standard* Bus Structure 


by D. Denney, & J. Broom 
BISI 

Box 1197, Station A 
Vancouver, British Columbia 
Canada 

(604) 683-5246 

The most important and often overlooked part of an 
Altair/IMSAI computer is the 100 wire bus structure. This 
bus structure as defined by MITS has become a "de facto" 
standard that has encouraged numerous companies to build 
and market Altair/IMSAI compatible boards, knowing that 
there are thousands of machines in which to use them. The 
bus standard has stimulated competition and allowed product 
specialization; and the result has been to raise the Altair/ 

IMSAI from just a'hobbyist'tag to a full-fledged computer 
that is rapidly finding its way into industrial, commercial, and 
educational applications. For what other computer on the 
market has such a broad base of hardware manufacturers? 

To date, most of the second sources have been of RAMs, 
TV typewriters, etc., but there is a second generation of 
products just beginning to surface, which will vastly increase 

Altair/IMSAI Bus 

0 * letter 0 
0 = zero 


the power and longevity of the 100 wire bus. These products 
are of two basic types: 

1. NEW CPU BOARDS using different 8 and 16 bit 
microprocessor chips that will plug into the bus. (You can 
already buy an M6800 CPU board for your Altair and work 
is in progress with CPU chips from Data General, and Texas 
Instruments 8800 series.) 

2. MASS STORAGE-memory capacity inside the Altair 
chassis in excess of the 65K directly addressable bytes, made 
possible by the new CCD (charge coupled device), and mag¬ 
netic bubble technologies. Mass storage will typically be con¬ 
figures as a set of storage boards (from 1 to 20) and con¬ 
troller board. The controller board must furnish to the storage 
boards several critical timing and control signals (all TTL 
levels), and because of the number of boards involved, these 
lines should be placed on the 100-line Altair bus for storage 
board simplicity, lessened cost, and ease of trouble-shooting. 

While opening up the future of the Altair to many new 
applications, these boards are putting a strain on the bus 
structure—they use more bus wires than so far have been 
defined, so the time has come to define more of the unused 
bus lines. 

25. 01 Phase one clock TTL levels 

26. PHLDA Hold acknowledge, buffered 8080 output 

27. PWAIT Wait acknowledge, buffered 8080 output 


1. +8V 

Unregulated input to +5V regulators 



28. 

PINTE 

Interrupt enable, buffered 8080 output 

2. +16V 

Unregulated input to +12V regulators 



29. 

A5 

Buffered address line 5 (32) 

3. XRDY 

Anded with PRDY and 

1 goes to 8080 RDY 



30. 

A4 

Buffered address line 4 (16) 

4. VI? 

Vectored 

interrupt 

request 0 



31. 

A3 

Buffered address line 3 (8) 

5. VII 

Vectored 

interrupt 

request 1 



32. 

A15 

Buffered address line 15 (32768) 

6. VI 2 

Vectored 

interrupt 

request 2 



33. 

AI2 

Buffered address line 12 (4096) 

7. V13 

Vectored 

interrupt 

request 3 



34. 

A9 

Buffered address line 1 (2) 

8. VI4 

Vectored 

interrupt 

request 4 



35. 

DOI 

Buffered data out line 1 

9. VI5 

Vectored 

interrupt 

request 5 



36. 

DO? 

Buffered data out line 0 

10. VI6 

Vectored 

interrupt 

request 6 



37. 

Al? 

Buffered address line 10 (1024) 

11. VI7 

Vectored 

interrupt 

request 7 



38. 

004 

Buffered data out line 4 

12. XRDY2 

CCDS 

B0RAMS (TENTATIVE) 


BUBBLES (TENTATIVE) 

39. 

005 

Buffered data out line 5 

13. CK3 

Phase 3 shift clock 13. 

13. 

CK2 Phase 2 clock for 

40. 

D06 

Buffered data out 1 i ne 6 






coil drivers. 










41. 

Dl 2 

Data input 11ne 2 

14. CK1 

Phase 1 shift clock 

; 14. ADRSEL Address 

14. 

0UTEN Data output buffer 







multipi ex signal 


enable signal 

42. 

013 

Data input line 3 

15. BWE 

Write erable-anded 

15. LDL Load to address 

15. 

XFER Transfer gate 

43. 

017 

Data input line 7 


with WRITE 

byte 


signal 










44. 

SMI 

Latched 8080 Ml status 

16. LDM 

Load medium address 

16. LDM Load med address 

16. 

ADI NX Increment signal 





byte 


byte 


for board address 

45. 

S0UT 

Latched 8080 OUT status 


17. 

18. 

19. 

20 . 
21 . 
22 . 
25. 
24 . 


BDSEL Acknowledge signal 17. BD SEL Acknowledge 17. 
from addressed storage bd. signal 


B0SEL Acknowledge signal 
from addr. storage bd. 


STA DSB Status buffer disable 


C/C DSB Command/control buffer disable 

UNPR0T Input to memory protect circuitry on memory bd. 

SS Indicates machine is in single step mode 


ADD DSB Address buffer disable 


DO DSB Data out (from CPU) buffer disable 
02 Phase two clock TTL levels 


46. SINP Latched 8080 INP status 

47. SMEMR Latched 8080 MEMR status 

48. SHLTA Latched 8080 HLTA status 

49. CLOCK 2 mhz clock, crystal controlled 

50. GN0 Logic and power ground return 

(A) 51. +8V Unregulated input to +5V regulators 

(B) 52. — 16V Unregulated input to negative regulators 

(C) 53. SSW DSB Sense switch disable 


Page 8 

198 


Or. Oobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Manlo Park CA 94025 


August, 1976 










(o) 54. 

(E) 55. 


(F) 

(H) 

(J) 

(K) 

(L) 

(M) 


(T) 

(U) 

(V) 

(W) 

(X) 
(V) 
(Z) 

(a) 

(b) 

(c) 

(d) 

(e) 

(f) 
(h) 
(j) 


56. 

57. 

58. 

59. 

60. 
61, 


EXT CLR Clear signal for I/O devices 
RTC Real time clock 

■5T5TJ Strobe signal ( by 8224 clock chip 8800B d/c board) 

DIG1 Enable signal for CPU 01 drivers 8800B 
FRDY 8800B Front panel ready signal 


CCDS 

CK4 Phase b shift clock 


(N) 62. 

(P) 63. CK2 Phase 2 shift clock 

(R) 64. BCE Chip enable 


(S) 65. WRITE Write signal 


66 . 

67. 

68 . 

69. 

70 . 

71. 

72. 

73. 


LDH Load high address 
byte 


BORAMS (tentative) BUBBLES (tentative) 

62. RAS Row address select 62. CK1 Phase 1 clock 

for coi1 drivers 

63 . CAS Column address select 63 . R/A Replicate/ 

annihi 1 ate gate 
signa1 

64. READ Signal for 
bubble defect 
circuitry 

65 . Gen Generate gate 
signal for writing 

66. LD HI Load hi 
address byte 


64. REF Refresh signal 


65 . WRITE Write signal 


66. LDH Load high address 
byte 


see below 

MWRT Write enable signal for memory 

PS Indicates if addressed memory is protected 

PROT Input to memory protect circuitry on memory bd. 

RUN Indicates machine is in run mode 

PRDY Anded with XRDY and goes to 8080 RDY 

PINT Input to 8080 interrupt request 


74. PH0LD Input to 8080 hold request 

75. PRESET Clear signal for CPU 

76. PSYNC Buffered 8080 SYNC signal 

77. PWR Buffered 8080 write enable signal 

78. PDBIN Buffered 8080 BDIN signal 

79. A0 Buffered address line 0 (1) 

80. A1 Buffered address line 1 (2) 


FIRST RUMORS OF A 
WEST COAST COMPUTER 
COMPUTER FAIRE 

There are some tentative ru¬ 
mors being passed about con¬ 
cerning a hobbyist Computer 
Faire on the San Francisco 
peninsula. It is envisioned to 
be a two-day orgy, including 
a multitude of seminars, and 
a massive exhibition of hobby 
goodies. There is some vacil¬ 
lation about whether to 
schedule it just before or 
after Thanksgiving, or wait 
until after the first of next 
year. 

Let us know if the pros¬ 
pect of such a Faire interests 
you, and indicate your pref¬ 
erences and dislikes of the 
proposed dates. Send 
responses to: 


Bob Railing or Jim C. Warren, Jr. 

(Editor, Homebrew Computer (Editor, Dr. Dobb's Journal) j 
Club Newsletter) PCC 

193 Thompson Square Box 310 

Mountain View CA 94043 Menlo Park CA 94025 

(415) 967-6754 (415) 323-3111 851-7664 


(k) 

81. 

A2 

Buffered 

address 

1ine 2 (4) 

(AA) 95. 010 Data input 1ine 0 

(1) 

82. 

A6 

Buffered 

address 

1ine 6 (64) 

(AB) 96. SINTA Latched 8080 1NTA status 

(m) 

83. 

A7 

Buffered 

address 

line 7 (128) 

(AC) 97. SWO Latched 8080 WO status 

(n) 

84. 

A8 

Buffered 

address 

1ine 8 (256) 

(AD) 98. SSTACK Latched 8080 STACK status 

(p) 

85. 

A13 

Buffered 

address 

line 13 (8192) 

(AE) 99. P0C Clear signal during power up 

(r) 

86. 

A14 

Buffered 

address 

line 14 (16384) 

(AF) 100. GN0 Logic and power ground return 

(s) 

87. 

Al 1 

Buffered 

address 

line 11 (2048) 

+ A conflict already exists on line 67. Processor Tech¬ 

(t) 

88. 

D02 

Buffered 

data out 

line 2 

nology Inc., has defined this line as PHANTOM to disable 
RAM boards when ROM is addressed. Cromenco Inc., has 

(u) 

89. 

D03 

Buffered 

data out 

line 3 

defined line 67 as REFR DSBL which prevents dynamic RAM 

(v) 

90. 

D07 

Buffered 

data out 

1 i ne 7 

refresh cycles during the Dazzler DMA (direct memory access). 


(w) 91. D14 Data input line 4 

(x) 92. DI5 Data input line 5 

(y) 93. 016 Data input line 6 

( 2 ) 94. Dll Data input line 1 


•Editor's Note: Up to this point, this bus has been referred to 
as the "Altair/IMSAI bus." Given the number of manufacturers 
now making the bus, or making products for it, we think it's 
time to start calling it what it has become—'The Hobbyist- 
Standard" bus. 


August, 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


Page 9 

199 

















The PCM-12: 

A PDP-8 Look-Alike 
Well Worth Looking At 

by Jim Warren, Jr., Editor 

PCM, Box 215, San Ramon CA 94583; (415) 837-5400, is 
marketing a microcomputer kit based on the Intersil 6100 
microprocessor. It is a system well worth giving serious con¬ 
sideration. It’s only selling point is that there is a massive 
amount of systems and applications software in existence for 
it. And, if you want to use it, instead of simply tinker with 
it, that’s a major point. The 6100 executes all of the Digital 
Equipment Corp. PDP-8/E instruction set, except the I/O 
instructions. Since the “8” has been around for about fifteen 
years, and is still one of the most popular minicomputers 
(due almost totally to its software)—there are around 70,000 
of them in use—anything that executes a PDP-8 instruction 
set should be given serious attention. 

If you are a hardware builder type, the system should 
satisfy your desires. It comes in a kit form and can adequate¬ 
ly pacify those who love to fondly caress a soldering iron and 
dikes. 

If you are a software type, with some nominal scrounging, 
you can come up with all sorts of glorious software, including 
several editors, assemblers with macro capabilities, BASIC’s, 
FOCAL, several FORTRAN’S, a number of debuggers, 
business software, and on and on. 

If you are a computer architecture type . . . forget it. The 
PDP-8 was designed in the early 1960’s. It is a single accu¬ 
mulator CPU with no index registers, fixed-block addressing, 
a 12-bit word length, and doesn’t even have a SUBTRACT 
instruction (you have to do a 2’s Complement, then Add). 
Architecturally, there are far more exciting microprocessors/ 
microcomputers on the market. 

And, if you are financially frugal concerning your com¬ 
puter hardware (regardless of the potential expense for the 
software), then you should also forget the PCM-12. The 
system with only IK words is priced at $799 (kit), or $1224 
(assembled). To expand it to 4K words costs another $139 
(kit form), and to add memory beyond that costs $135 
(memory extender kit), plus $245 per 4K memory module. 
This means that a complete system in kit form, including 8K 
12-bit words of memory would cost $1415. 

Incidentally, Digital Systems Design in Berkeley has a com¬ 
plete, assembled floppy disc system including two Shugart 
drives that plug into the PCM-12. It costs $2998. We under¬ 
stand that DEC’s great PDP-8 Operating System, OS-8, is up 
and running on the PCM/DSD floppy system, however its 
direct availability to a purchaser is unclear. 

To sum it up, if you have access to PDP-8 software that 
you find significantly useful, you should investigate the PCM- 
12. (You should also investigate the PDP-8/A from DEC; it’s 
more expensive, but avoids any bootleggery problems con¬ 
cerning software). If you just want to play, or you want to 
learn about current computer architecture, you should look 
elsewhere. 

Some personal notes: For much of a decade, I made most 
of a very comfortable living, programming PDP-8’s. Their 
architecture was infuriating, but their systems software and 
documentation was significantly better than any other mini 
around at the time. Even now, DEC software for the “8” 
remains better than most systems software for most other 


VRAM-VIDEO DISPLAY RAM 


Matrox Electronic Systems, P.O. Box 56, Ahontsic Stn. 
Montreal, Quebec H3L 3N5, (514) 481-6838 has a number of 
very interesting "Black Boxes" available for 4-12 week deli¬ 
very. To the computer, those appear to be "write only" RAM. 
Their output, however, is a standard (American or European) 
video signal (75 ohm, crystal controlled). This will drive video 
monitors up to 3000 feet away. Quick tidbits: 

Model Function Price (single unit) 


MTX-816 8 by 16 large-character;, no 

lower-case character display $194 

MTX-1632 16 by 32 caps 8t lower-case 

character display $285 

MTX-1632 SL Externally synchronized 16 by 32 

display ? 

MTX-1664* 16 by 64 character display $364 

MTX-3264* 32 by 64 display $440 

MTX-2480* 24 by 80 display $480 

MTX-256**2 a 256 by 256 point arbitrary 

graphics display $630 


*1he 1664 and 3264 require a 5.2 Mhz bandwidth monitor. The 
2480 requires 6.5 Mhz. 


Whoops! There's a ringer: They say a minimum order is 100 
units, and there is a setup charge. Just goes to show—you 
gotta read all the small print. 


machines, and is generally better documented. Even when 
there is functionally equivalent software for other machines, 
it usually requires more memory than it does on the PDP-8. 
For example, OS/8 requires only 8K 12-bit words on the 
PDP-8. It’s PDP-11 counterpart, RT-11, requires a minimum of 
16K 8-bit bytes. Operating systems for Data General’s Nova 
machines exhibit a similar hunger for memory, and the devel¬ 
opment systems from the micro manufacturers absolutely 
gobble memory-though the comparison is only partially 
valid. If I didn’t already have my own PDP-8/I (elderly, but 
definitely “burned in” and reliable), I would probably get a 
PCM-12—even though I consider them somewhat overpriced. 
Incidentally, I consider DSD’s floppy system to be grossly 
overpriced by about $1300. 



Paga 10 

200 


Dr. Dobb's Journal of Computar Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


August, 1976 






Z-80 . . . Coming on Strong 

Three Kits Under $300--One Includes 
2K Bytes, Another Runs at 4 MegaHertz 


by Jim C. Warren, Jr., Editor 

Three groups are (or will be) offering processor boards 
or microcomputers to hobbyists, based on Zilog’s hot, new 
]>p, the Z-80. They are the Digital Group, TDL, and Cro- 
MemCo. The Z-80 has an exciting instruction set that is al¬ 
most completely upwards compatible with the Intel 8080 
(which is, of course, upwards compatible with the Intel 8008). 
Note: the Z-80 is not pin-for-pin compatible with the 8080; 
the almost-compatibility only concerns instruction sets. Also 
note: The Z-80 is being second-sourced by Mostek. 

The one instruction incompatibility we have heard 
about, so far, concerns the handling of the parity flag. As 
explained to us, the Z-80 sets the parity flag only on logical 
operations, as one would expect, whereas the 8080 sets the 
parity flag on both logical and arithmetic operations. Inciden¬ 
tally, since Bill Gate’s Altair BASIC uses this 8080 eccentri¬ 
city in three or four places, Altair BASIC will not rim on a 
Z-80 unless a few minor modifications are first made to the 
code. We understand that listings of those mods are floating 
about. If someone will send us a good, clear, documented 
copy, we will be happy to publish them (with or without an 
author’s credit line). Note: We consider publishing such mods 
to be roughly analogous to an auto magazine publshing de¬ 
tails about modifying a patented Ford engine design for the 
purpose of obtaining more useful or efficient operation; 
patent infringement is not involved. 

The Digital Group, Box 6528, Denver CO 80206; (303) 
861-1686, is offering a Z-80 CPU board for $295 (kit), or 
$395 (assembled). The last we heard, they were planning on 
initial deliveries around the middle of July. The CPU board 
includes 2K bytes of half-microsecond static RAM, a 256- 
byte EPROM bootstrap, two DMA channels, a 400ns-rated 
Z-80, and some other interesting goodies. The board is inter¬ 
changeable with previous Digital Group CPU boards, but is 
not plug-compatible to a “hobbyist-standard” (Altair/IMSAI) 
bus. 

Also, the Digital Group is doing something that we 
broadly applaud: They are offering a Z-80 CPU upgrade kit 
for $185 to those who have previously purchased systems from 
them based on some less exciting microprocessor, and wish to 
upgrade to the Z-80. We have consistently been very favor¬ 
ably impressed by Digital Group’s “up front” stance, candid¬ 
ness, apparent integrity, and consistent, soft-sell approach to 
marketing their goods. A comment, however: We have been 
getting an increasing number of letters, here at People’s Com¬ 
puter Company, complaining about poor service or responsive¬ 
ness from the Digital Group. We have published such com¬ 
plaints, as well as some compliments, and will continue to do 
so. Our assumptions are: 1. Customer interest in Digital Group 
products has exceeded their initial capacity to respond in the 
manner they would like. 2. They 'are aware that they have a 
problem and are doing everything they can to expand their 
customer service department and procedures. 3. It is their 
wish to maintain an operation of unusually high integrity and 
responsiveness to their customers. 

TDL (Technical Design Laboratories), 342 Columbus 
Ave., Trenton NJ 08629; (609) 392-7070, is the second 


company offering a Z-80 CPU board to the hobbyist com¬ 
munity. Their kit price is $269, and includes IC sockets, but 
excludes the two ldlobytes of static RAM found in the 
Digital Group’s subsystem. As of the middle of July, their 
prototype had been running for about a month, and their PC 
version (production version) had been running, glitch-free for 
about half a month. The system has been demonstrated to 
members of the Amateur Computer Group of New Jersey, 
several of whom have commented very favorably about it, to 
us. 

TDL is a new entry into the rapidly growing mob of 
computer hobbyist companies. We have received several favor¬ 
able comments about them, however, from people who are 
independent of TDL, and whose judgement we trust. The com¬ 
ments we hear are that the TDL principals are technically 
competent, and are dedicated to turning out an excellent 
product, and backing it with first-rate customer service. We 
are most interested in receiving comments, positive or nega¬ 
tive, from their customers. 

They are also offering one other rather flashy item: 

Their Z8K RAM board is an 8 kilobyte static RAM for 
$295 with 215ns access time. Furthermore, it only draws 
about 150ms from a 5V power supply. We are particularly 
interested in hearing customer comments regarding this RAM. 
The rumor we hear is that this system uses RAM made by 
EMM, the same as is in MITS 16K boards . . . and EMM is 
the only semiconductor house that has been able to make 
them. We want to spread the word, if they are reliable. And, 
we have no reason to question their reliability, other than the 
fact that none of the larger chip houses are marketing a com¬ 
petitor. Presumably, they will, soon. 

CroMemCo, 2432 Charleston, Mountain View CA 
94043; (415) 964-7400, is the third company to jump onto 
the Z-80 bandwagon. [This is pre-announcement information, 
obtained from Dr. Harry Garland, one of the principals in 
CroMemCo.] They are planning a Z-80/4 CPU card that will 
plug into a hobbyist-standard bus that sounds like a super 
subsystem. For a starter, the Z-80/4 is a 4 megahertz proces¬ 
sor :; that’s a 250ns cycle time. The board can be switched, at 
any time, back and forth between 2MHz and 4MHz. It has a 
power-on JUMP to any 4K memory blank, jumper selectable. 
There is a wait-state generator on-board that can place wait- 
states on M-l cycles if desired, or on any other cycle. A 
jumper can be used to select between 8080-mode I/O and 
Z-80 mode. The subsystem price is expected to be $295 (kit), 
or $395 (built and burned-in). Dr Garland specified October 
1st as being a firm availability date. 

CroMemCo is another of those companies that we feel 
is really “doing right” by its hobbyist customers. As well as 
this writer can remember, PCC has yet to receive a single 
complaint about CroMemCo products or service. We know 
several of the principals in the company, and believe that they 
act with first-rate integrity; a level of honesty that one 
would more expefct from a close friend than from an “un¬ 
known businessman.” Their technical competence is also top- 
notch. Minor tidbit: Aside from being a principal in CroMem¬ 
Co, Dr. Garland is also Assistant Chairman of the Department 
of Electrical Engineering at Stanford University. 


Page 11 


August, 1976 


Dr. Dobb’s Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


201 


Remember those secret codes 
you played with as a kid? Well . . . 

By Mai Stiefel 

(reprinted with permission from, and copyright by, Computerworld , Newton MA 02160) 

The National Bureau of Stan¬ 
dards (NBS) published a pro¬ 
posed standard in the Federal 
Register of Aug. 1, 1975 specify¬ 
ing “a mathematical algorithm 
for encrypting (enciphering) and 
decrypting (deciphering) binary- 
coded information” for federal 
use. 


The process is intended to be 
implemented “in a special-pur¬ 
pose electronic device. . .de¬ 
signed in such a way that it may 
be embedded in a computer 
system or network and provide 
cryptographic protection to bi¬ 
nary-coded data. 

“The method of implementa¬ 


tion, the control of the crypto¬ 
graphic device and the interface 
of the device to its associated 
equipment will depend on the 
application and environment. . . 
Certification of compliance with 
this standard is the responsibility 
of the designer and manufac¬ 
turer of the device.” 


Basic Principles 

Figures 1 and 2 illustrate the 
various data manipulation func¬ 
tions found in the algorithm. 
The permutations in Figure 1 
involve rearrangements of bits 
without changing their value, 
while the substitutions (also call¬ 
ed ciphers) do not generally pre- 


83 a? ai a 0 



(a) BALANCED - SAME NUMBER OF BITS 
IN INPUT AND OUTPUT. THIS PERMU¬ 
TATION IS INVERTIBLE, BECAUSE 
EACH INPUT BIT IS TIED TO ONE OUT¬ 
PUT BIT. 


a 3 a 2 a ( a 0 



(b) CYCLIC-CYCLE LEFT 1 BIT IS IL¬ 
LUSTRATED 


a 3 32 a i 3o 



(c) EXPANDED - OUTPUT HAS MORE BITS 
THAN INPUT 


a 2 a, a 0 



(d) CONTRACTED - OUTPUT HAS FEWER 
BITS THAN INPUT 
FIGURE 1 

PERMUTATIONS WITH 4 -BIT INPUTS 


a 3 a 2 a i ao 



a 3 a 2 ai 3 q 



(b) EXCLUSIVE OR (MODULO 2 BIT-BY- 
BIT ADDITION) 

a 3 a 2 ai ao 



(c> EXPANDED 


83 a 2 a 1 ao 



FIGURE 2 

SUBSTITUTIONS WITH 4 -BIT INPUTS 


serve bit values between input and out¬ 
put. 

In fact, an invertible balanced permuta¬ 
tion (Figure la) may be regarded as a 
balanced substitution (Figure 2a) in 
which the number of output Is is equal 
to the number of input Is and the num¬ 
ber of output Os is equal to the number 
of input Os for every input bit combina¬ 
tion. 

The distinction between an invertible 
process and a noninvertible process may 
be seen in figures 3a, 3b and 3c. In Figure 
3a, every output bit combination (000, 
001 ... Ill) occurs only once, and every 
input bit configuration has a correspond¬ 
ing output. 

With these characteristics, the inverse of 
the process can be constructed, as shown 
in Figure 3b. 

By contrast, the process shown in Fig¬ 
ure 3c is not invertible because the out¬ 
put configurations 110 and 101 occur 
twice and the configurations 000 and 010- 
do not occur at all. 

Thus, if an attempt were made to con¬ 
struct the inverse of Figure 3c, the out¬ 
puts would be undefined for input values 
of 000,010, 101 and 110. 

The invertibility property may also be 
applied to permutations. A permutation 
is invertible if each input bit is tied to one 
and only one output bit. 

The cyclic permutation. Figure lc, is a 
special case of an invertible balanced per¬ 
mutation. The inverse of Figure lc would 
be a “cycle right 1 bit” process. 

As indicated in Figure 2, substitution 
may be regarded as a table lookup pro¬ 
cedure which could be used if the func¬ 
tion were performed by a microprocessor 
or could be realized by a network of logic 
gates. 

As indicated in the standard, the meth¬ 
od of implementation is up to the in¬ 
dividual hardware designer. 

Taking this one step further, there’s no 


Page 12 

202 


Dr. Dobh's Journal of Computer Calisthenics & Orthodontia, Sox 310, Menlo Park CA 9402S 


August, 1976 
































reason why such a function can’t be 
executed by software on a general-pur¬ 
pose computer, although dedicated cus¬ 
tom-tailored hardware will accomplish 
the task most efficiently. 

The most intriguing class of substitu¬ 
tion, the exclusive OR process, is shown 
in Figure 2b; a typical truth table is given 
in Figure 3d. 

The process is not only invertible but 
self-invertible. Suppose an input bit se¬ 
quence of: 

a n> a n-1> • - ■ ' a 1> a 0 

produces a given output sequence of: 

b n. b n-1. b l. b 0 

If, instead, 

b n , ■ • ■ b o 

is applied as the input, the output will be 


The process may be generated by a 
circuit which has two inputs — data and a 
key with equal numbers of bits. Then the 
output is obtained by a bit-by-bit modu¬ 
lo-2 addition (exclusive OR) of the key 
bits and data bits. 

The bit-by-bit transfer functions is given 
by: 


0 ' 
o i 
i < 
and 
1 c 


0=0 
1 = 1 
0 = 1 

1 = 0, 


where the * sign symbolizes the exclusive 
OR operation. 

In the encryption algorithm, as we shall 
see, the remarkable properties of the ex¬ 
clusive OR circuit permit a common logic 
to be used for encryption at one end of a 
transmission line and decryption at the 
other end. 


a 2 a l a 0 

0 

1 

2 

3 

4 

5 

6 

L 7 

t>2 bj bo 

6 

5 

1 

4 

7 

0 

a 

2 


(a) BALANCED, INVERTIBLE 


a 2 3i ao | 

L°JU 

|2| 3 |4| 

I 5 1 

l 6 l 

I 7 

b2 bi bo 1 

<N 

U) 

ItTbTII 

111 

ol 

u 


(b) INVERSE OF (a) ABOVE 


a 2 a i ao | 

I 0 ! 1 ! 

I 2 | 

I 3 | 

ITI 

1 6 1 

I 7 

t>2 bi bo 1 

1 6 |5 1 

111 

Ul 

I 7 Is | 

1 3 1 

|5 


(c) BALANCED, NOT INVERTIBLE 


a 2 a i ao | 

|°| 

H 

l 2 l 

! 3 ! 4 I 

I 5 i 

! 6 I 

L 7 

t>2 bi bo 1 

1 si 

4 

1?! 

| 6 1 1 1 

lol 

13 

2 


(d) EXCLUSIVE OR, USING A KEY VALUE 

OFk 2 k, k 0 =(101) 2 = <5) s 
(NOTE SYMMETRY OF INPUT-OUTPUT 
PAIRS. THE INVERSE OF THIS TRUTH 
TABLE IS EQUAL TO THE ORIGINAL.) 


a 2 a 1 ao 1 

1 °l 

I 1 ! 

I 2 I 

l 3 l 

H 

I 5 ! 

I 6 I 

11 

b2 bi bol 

1 cl 

5 ! 

2 

1 4 1 

IeI 

6! 

1 aI 

1 0 


(e) EXPANDED (4-BIT OUTPUT VALUES 
SHOWN IN HEXIDECIMAL NOTATION) 


a 2 3i ao | 

|°| 

PI 

2 

31 

4 1 

ID 

111 

7 

bi bo 1 

1 3 

hi 

1 ! 

01 

31 

2 I 

1 3 1 

1 


(f) CONTRACTED (2-BIT OUTPUT) 


FIGURE 3 

TYPICAL TRUTH TABLES FOR THE CLASS¬ 
ES OF SUBSTITUTIONS ILLUSTRATED IN 
FIGURE 2, WITH 3-BIT INPUTS. INPUT AND 
OUTPUT VALUES ARE GIVEN OCTAL 
NOTATION UNLESS OTHERWISE NOTED. 


To look at the exclusive OR process in 
another light, it may be noted that, if 
Figure 3a represented the truth table of 
an exclusive OR function, then Figures 3a 
and 3b would have been identical. 

The expansion and contraction opera¬ 
tions, where the number of output bits is 
not equal to the number of input bits, are 
used in several stages in the algorithm, 
along with balanced operations. 

Two-Part Algorithm 

The algorithm is composed of two dis¬ 
tinct subfunctions: key generation and 
encryption/decryption. 

Key generation (Figure 4) is the process 
of transforming a user-defined 64-bit key 
into a set of 16 different 48-bit keys, 
each to be used in a different iteration of 
the encryption/decryption procedure. 

The proposed standard defines the in¬ 
put/output relationships of all the con- 



August, 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


Page 13 

203 


























































Page 14 

204 


Dr. Dobb'e Journal of Computer Calitthenic* & Orthodontia, Box 310, Menlo Park CA 9402S 


August, 1976 































































































































































traded permutations given in Figure 4, as 
well as all of the other permutations and 
substitutions of the algorithm. The substi¬ 
tutions (other than exclusive OR) are 
defined in truth tables, as in Figure 3, and 
the permutations are delineated by show¬ 
ing tables of input/output bit ‘-‘connec¬ 
tions,” illustrated symbolically in Figure 
1 . 

Each contracted permutation in Figure 
4 is actually composed of a balanced 
permutation followed by a cycle left op¬ 
eration and a contracted permutation. 
The result is logically equivalent to a 
series of contracted permutations, as indi¬ 
cated in the figure. 

Strictly speaking, a user could supply 
(KEY)! through (KEY)i 6 directly, with¬ 
out building the hardware to perform the 
permutations, since all of the 48-bit keys 
can be predicted for any given 64-bit 
master key. 

For example, an off-line program could 
easily print a series of keys that could be 
loaded simultaneously into the 48-bit 
registers, for each of a limited number of 
master keys. 

Such an approach may be reasonable 
because the intent of the algorithm ap¬ 
pears to be to use a given master key over 
a long period of time - a matter of hours, 
days or weeks, for instance. 

This conclusion is inferred from the 


language of the proposed standard, which 
states, “Data may be protected against 
unauthorized disclosure by generating a 
random key and issuing it to the autho¬ 
rized users of the data.” 

This indicates it isn’t necessary to sup¬ 
ply a new 64-bit key for every 64-bit data 
block. That would require synchroniza- 
ation of the encrypting and decrypting 
key generators so the same key could be 
used to encipher and decipher each data 
block. 

Instead, a federal agency with a time¬ 
sharing system or a remote batch opera¬ 
tion can select, for example, a daily key 
to be used at each transmitting site and 
the central processing facility. Obviously, 
any private organization choosing to ad¬ 
here to the standard can use the same 
technique for its own operations. 

The encryption/decryption process it¬ 
self is shown in Figure 5. It consists of 
several steps to be performed on each 
64-bit input data block: an initial bal¬ 
anced permutation; a series of 16 itera¬ 
tions of a complex cipher, each iteration 
using a separate 48-bit key; a cycle left 32 
bits (nothing more than an interchange of 
the left and right half-word); and a final 
balanced permutation which is chosen to 
be the inverse of the initial balanced 
permutation. 

The decryption process uses precisely 


the same bit manipulation stages as the 
encryption algorithm. The only dif¬ 
ference is that the keys are used in the 
reverse order, beginning with (KEY) 16 
and ending with (KEY)i. 

Figure 6 shows the n‘ h iteration in the 
encryption process, a complex function 
that encompasses permutation, substitu¬ 
tion, expansion and contraction. 

If the same process is used for decryp¬ 
tion, it can be shown that' 

L(j D (decryption) = Rise (encryption) 

Rod = L i6E. l id = r ise 

and so on. Thus, following the final ex¬ 
change of left and right half-words and 
the final permutation, the output of the 
decryption process is equal to the input 
to the encryption process, where it all 
began. 

It is worth noting the nature of the 
contracted substitution in Figure 6, 
which is composed of a set of eight 
so-called “primitive functions,” each with 
a 6-bit input and a 4-bit output. 

These functions are recommended for 
inclusion in the algorithm, so there’s an 
implication the user can choose his own 
primitive functions or his own contracted 
substitution if he wishes. 

This contrasts with the practice (in the 
proposed standard) of dictating all of the 
other bit manipulation functions, without 
any hint of freedom of choice for the 
user. 



FIGURE 6 - DETAILS OF N'» ITERATION IN ENCRYPTION PROCESS 


August, 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


Page 15 

205 






















































RANDOM DATA 

by Robert Reiling 

(reprinted with permission from 

Homebrew Computer Club Newsletter, Vol. 2, No. 5) 

Kenneth Young wrote in with a report of the last 
Southern California Computer Society (SCCS) meeting 
and inlcuded his observations about the Altair 8800B. 
The following exerpt is from Ken's letter: "Pat Ward 
and David Bunnell of MITs were one of the vendors at 
the meeting and they were showing off the Altair 
8800B. I liked it. They cleaned up their computer a lot. 
/ feel that this machine is comparable to the I MSA I 
8080 with a 22-slot motherboard and fan. Unfortun¬ 
ately, the Altair 8800B will cost about $840 in kit 
form. The IMS AI 8080 with a 28-Amp power supply, 
22-slot motherboard and fan costs $680 (IMSA I does 
not charge that insulting 5% handling fee anymore, so 
/ have been told). The two computers are a little differ¬ 
ent, but / do feel they are comparable to one another. 
However, / do not feel that the Altair 8800B should 
cost more than the IMSAI. My conclusion is that the 
I MSA I is still a better deal than the Altair ." 


Jef Raskin's discussion of FLOW, an instructional 
computer programming language, at the May 26th 
meeting of the Homebrew Computer Club interested 
quite a few members. For a brief discussion of the 
language, have your librarian get a copy of Computers 
And The Humanities, Vol. 8, pp 231-237, Pergamon 
Press, 1974. 


8080 TECO and 
FLOATING POINT PACK 

Dear Jim, June 23, 1976 

Congratulations on the Journal J This approach to software 
development and to Tiny BASIC in particular is most 
stimulating. 

I would, however, be interested in seeing more support of 
the 8008-based systems. Presently, I'm running a modified 
Mark 8 with 15K RAM, IK ROM operating system, 256 level 
hardware stack, TVT-I, Suding Calculator interface, ASCII 
keyboard, National Multiplex Digital Data Recorder (2400 
baud) driven by serial-parallel interface of my own design. 

Recently, I've been working on and have nearly debugged a 
4K emulation of most of the commands of DEC'S TECO, a 
powerful text editor. Unfortunately, I have neither an assem¬ 
bler or hardcopy printer, and hand documentation for publi¬ 
cation is too time consuming. Any suggestions as to methods 
of placing TEXTED (as I call it) before the public eye would 
be appreciated. [Suggestions, anyone?] 

Tiny BASIC is intriguing, but a bit too tiny. Floating point 
capabilities are a must. Hence, for the last week. I’ve been 
working on a software package for the Suding Calculator. Up 
and running (with only one or two known bugs) are routines 
to read/write from/to the Calculator, input to RAM storage 
a floating point number from keyboard, output from RAM 
storage a floating point number to TVT. 

To assist anyone working with the Calculator and to invite 
comments from readers, I offer these notes: 

1) Storage format for FP numbers. After long consideration, 
I have decided upon a 5 (8-bit) word convention as follows: 


7 6 © 


n 

S 

E YP 


D. 


M 2 . 

Dj 

T>h 

M3 


Du 

M 4 

D-j 

!_ 


7 13 o 


In the format above, the 8 significant digits from the Cal¬ 
culator are stored two BCD (0-9) digits per word as repre¬ 
sented by D^-Dg with the sign of the entire number indicated 

by the sign bit "S" (1 if negative). The exponent or scale 
factor "EXP" is stored in 7 bit, two's complement binary 
with the assumed decimal point falling after the last digit, Dg. 

Thus, the useful range is from ±1. x 10 -84 to 

199999999. x 10 Although this format is not as compact 
as a signed magnitude or two's complement binary, it results 
in considerable savings of time and programming effort in 
reading/writing from/to the Calculator. 

2) Output printing format for FP numbers. Numbers are 
printed with a leading negative sign (if appropriate) as floating 
point in the range of ±0.00000001 to 199999999, and as 
scientific notation in the range of +9.9999999E- 09 to 

+E- 64 and of ±1E+08 to ±9.9999999E+70. 

3) FP Package calling sequences. It is planned to have 
Register A contain an operation code (i.e., output, input, 
multiply, divide, etc.), Registers H and L a pointer to the 


5 word FP accumulator in which the result is formed on 
return, and Registers D and E a pointer to the 5 word FP 
operand (where applicable). This use of two word address 
pointers would simplify linkage of the FP package to existing 
Tiny BASICS now using two word integer arithmetic and 
operation stacks. Other planned operations (besides the 
functions provided by the Calculator) would include FP com¬ 
pare, clear, move, and scale. 

4) Bugs. Suding's suggested procedure of outputting a 
Digit 9 request and waiting for the Data Available MSB line 
to gotrue to indicate that the Calculator's internal calculations 
are completed does not allow sufficient time for long calcula¬ 
tions such as y x or Nl. Any suggestions would be appreciated. 
Calculator functions DGR/RAD and E do not seem to work 
or else I'm using them incorrectly. 

I'll keep plugging away at a Calculator FP package and if 
time permits, write up the results for DDJ. [Do! Do!] I've 
also had considerable experience developing expression handlers 
using Polish notation and operation stacks. So I'll also be 
thinking of developing multi-parameter function call and 
return sequences. Meanwhile, keep those Journals coming!!!! 

Sincerely, 

William E. Severence, Jr. Center Lovell ME 04016 

William E. Severance Realtors (207) 925-2271 

P.S. Our DEC Datasystem 310W should be arriving in another 
V/i months. If I decide to purchase the scientific operating 
system with assembler. I'll hopefully be able to write an 
8008 cross-assembler. 


Page IS 

206 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


August, 1976 













Floating Point Routines for the 6502 


by Roy Rankin, Department of Mechanical Engineering, 

Stanford University, Stanford, CA 94305 
(415) 497-1822 

and 

Steve Wozniak, Apple Computer Company 
770 Welch Road, Suite 154 
Palo Alto, CA 94304 
(415) 326-4248 

Editor’s Note: Although these routines are for the 6502, it 
would appear that one could generate equivalent routines for 
most of the “traditional” microprocessors, relatively easily, 
by following the flow of the algorithms given in the excellent 
comments included in the program listing. This is particularly 
true of the transcendental functions which were directly modeled 
after well-known and proven algorithms, and for which, the 
comments are relatively machine-independent. 

These floating point routines allow 6502 users to perform 
most of the more popular and desired floating point and 
transcendental functions, namely: 

Natural Log - LOG 
Common Log - LOG 10 
Exponential - EXP 
Floating Add - FADD 
Floating Subtract - FSUB 
Floating Multiply - FMUL 
Floating Divide - FDIV 
Convert Floating to Fixed - FIX 
Convert Fixed to Floating - FLOAT 

They presume a four-byte floating point operand consisting of 
a one-byte exponent ranging from -218 through +127, and a 
24-bit two’s complement mantissa between 1.0 and 2.0. 

The floating point routines were done by Steve Wozniak, 
one of the principals in Apple Computer Company. The 
transcendental functions were patterned after those offered by 
Hewlett-Packard for their HP2100 minicomputer (with some 
modifications), and were done by Roy Rankin, a Ph.D. student 
at Stanford University. 

There are three error traps; two for overflow, and one for 
prohibited logarithm argument. ERROR (1D06) is the error 
exit used in event of a non-positive log argument. OVFLW 
(1E3B) is the error exit for overflow occuring during calcula¬ 
tion of e to some power. OVFL (1FE4) is the error exit for 
overflow in all of the floating point routines. There is no 
trap for underflow; in such cases, the result is set to 0.0. 

All routines are called and exited in a uniform manner: 

The argument(s) are placed in the specified floating point 
storage locations (for specifics, see documentation pro¬ 
ceeding each routine in the listing), then a JSR is used to 
enter the desired routine. Upon normal completion, the 
called routine is exited via a subroutine return instruction (RTS). 


Note: The proceeding documentation was written by the Editor, based 
on phone conversations with Roy and studying the listing. There is a 
high probability that it is correct. However, since it was not written 
nor reviewed by the authors of these routines, the proceeding documen¬ 
tation may contain errors in concept or in detail. 

- JCW, Jr. 


O is - 



In the Exponent: 
00 Represents -128 

7F Represents -1 

80 Represents 0 

81 Represents +1 


FF Represents +127 


EXPONENT 

Two's con 

PlEMENT M 

q A ITISSA 

7t> 

f 


7U+2 

71 + 3 


M.SlG-^SYit OF mantissa'' 


SMf 


_i_i_ 


76 5 4 3 2 1 O 

If PRESUMED DlCiMAL. POINT 

O /s + 

1 IS - 


* JULY 5* 1976 

* BASIC FLOATING POINT ROUTINES 

* FOR 6502 MICROPROCESSOR 

* BY R. RANKIN AND S. U0ZNIAK 

* 

* CONSISTING OF: 

* NATURAL LOG 

* COMMON LOG 

* EXPONENTIAL (E**X) 

* FLOAT FIX 

* FADD FSUB 

* FMUL FDIV 

* 

* 

* FLOATING POINT REPRESENTATION (4-BYTES) 

* EXPONENT BYTE 1 

* MANTISSA BYTES 2-4 

* MANTISSA: TWO'S COMPLIMENT REPRESENTATION UITH SIGN IN 

* MSB OF HIGH-ORDER BYTE. MANTISSA IS NORMALIZED UITH AN 

* ASSUMED DECIMAL POINT BETUEEN BITS 5 AND 6 OF THE HIGH-ORDER 

* BYTE. THUS THE MANTISSA IS IN THE RANGE 1. TO 2. EXCEPT 

* UHEN THE NUMBER IS LESS THAN 2**(-128). 

* 

* EXPONENT: THE EXPONENT REPRESENTS POWERS OF TU0. THE 

* REPRESENTATION IS 2'S COMPLIMENT EXCEPT THAT THE SIGN 

* BIT (BIT 7) IS COMPLIMENTED. THIS ALLOWS DIRECT COMPARISON 

* OF EXPONENTS FOR SIZE SINCE THEY ARE STORED IN INCREASING 

* NUMERICAL SEQUENCE RANGING FROM $00 (-128) TO $FF (+127) 

* ($ MEANS NUMBER IS HEXADECIMAL). 

* 

* REPRESENTATION OF DECIMAL NUMBERS: THE PRESENT FLOATING 

* POINT REPRESENTATION ALLOWS DECIMAL NUMBERS IN THE APPROXIMATE 

* RANGE OF 10**(-33) THROUGH 10**(38) WITH 6 TO 7 SIGNIFICANT 

* DIGITS. 


0003 





0RG 3 

SET BASE 

PAGE ADRESS 

0003 

EA 



SIGN 

NOP 



0004 

EA 



X2 

NOP 

EXPONENT 

2 

0005 

00 

00 

00 

M2 

BSS 3 

MANTISSA 

*5 

0008 

EA 



XI 

NOP 

EXPONENT 

'l 

0009 

00 

00 

00 

Ml 

BSS 3 

MANTISSA 

1 

000C 




E 

BSS 4 

SCRATCH 


0010 




z 

BSS 4 



0014 




T 

BSS 4 




ES 


August, 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


Page 17 

207 















8018 
8® 1C 08 

itm 


ID00 A5 09 
1D02 F0 82 
1904 18 01 

1D06 00 

1D07 20 1C 
1D8A AS 04 
1D8C A0 80 
1D0E 84 04 
ID 10 49 80 

ID 12 85 0A 

ID 14 A9 00 
ID 16 85 09 
ID 18 20 2C 
ID 18 A2 03 
1D1D B5 04 
ID1F 95 10 
1D21 B5 08 
1D23 95 18 
1D25 BD D1 
1D28 95 08 

1D2A CA 
1D2B 10 F0 
1D2D 20 4A 
1D30 A2 03 
1D32 B5 08 
1D34 95 14 

1D36 85 10 

1D38 95 08 

1D3A BD D1 
1D3D 95 04 
1D3F CA 
1D40 10 F0 

1D42 20 50 
1D45 A2 03 
1D47 B5 14 
1D49 95 04 

1D48 CA 
1D4C 10 F9 
1D4E 20 9D 
1D51 A2 03 
1D53 85 08 
1D55 95 14 

1D57 95 04 

1D59 CA 
1D5A 10 F7 
1D5C 20 77 
1D5F 20 1C 
1D62 A2 03 
1D64 BD El 
1D67 95 08 
1D69 CA 
1D6A 10 F8 
1DGC 20 4A 
1D6F A2 03 
1D71 BD DD 
1D74 95 04 
1D76 CA 
ID77 18 F8 

1D79 20 9D 

1D7C A2 03 
1D7E BD D9 
1D81 95 04 

1D83 CA 
1D84 10 F8 

1D86 20 50 

1D89 A2 03 
1D8B B5 14 
1D8D 95 04 
1D8F CA 
1D90 10 F9 

1D92 20 77 

1D95 A2 03 
1D97 BD E5 
1D9A 95 04 
1D9C CA 
1D9D 10 F8 
1D9F 20 50 
1DA2 A2 03 
1DA4 B5 18 
1DA6 95 04 
1DA8 CA 
1DA9 10 F9 
1DAB 20 50 
1DAE A2 03 
1DB0 BD D5 
1DB3 95 04 
1D85 CA 
1DB6 10 F8 
1DB8 20 77 
1DBB 60 


1D8C 20 00 
1DBF A2 03 


Page 18 

208 



SEXP 

BSS 4 



1DC1 

BD 

CD 

ID 

L10 

LDA LN10.X 



INT 

BSS 1 



1DC4 

95 

04 



STA X2.X 

LOAD EXP/MAN T2 UITH 1/LNU0) 






1DC6 

CA 




DEX 




ORG S1D88 

STARTING LOCATION FOR LOG 


1DC7 

10 

F8 



BPL L10 



* 




1DC9 

28 

77 

IF 


JSR FMUL 

LOG1B(X)-LNCX)/LN(10) 


* 

NATURAL LOG 

OF MANT/EXPl UITH RESULT IN MANT/EXPl 

1DCC 

60 



at 

RTS 



♦ 

LOG 

LDA Ml 



1DCD 

7E 

6F 


LN10 

DCM 0.4342945 



BED ERROR 




2D 

ED 







BPL CONT 

IF ARG>0 OK 


1DD1 

80 

5A 


R22 

DCM 1.4142136 SORT(2) 


ERROR 

BRK 

ERROR ARG<-0 



82 

7A 






* 




1DD5 

7F 

58 


LE2 

DCM 0.69314718 LOG BASE E OF 2 

IF 

CONT 

JSR SUAP 

MOVE ARG TO EXP/MAN T2 ^ rr, 

LDy a d 


B9 

0C 






ftz. 

LDA X2 

HOLD EXPONENT 


1DD9 

88 

52 


A1 

DCM 1.2920074 



LDY -S80 




B0 

40 







STY X2 

SET EXPONENT 2 TO 0 (*80> 


1DDD 

81 

AB 


f© 

DCM -2.6398577 



EOR -S80 

COMPLIMENT SIGN BIT OF ORIGINAL EXPONENT 


86 

49 







STA Ml + 1 

SET EXPONENT INTO MANTISSA 1 FOR 

FLOAT 

IDE 1 

88 

6A 


C 

DCM 1.6567626 

1 P 01 

LDA -0 

e pu** ;s 



06 

66 





c 


STA Ml 

CLEAR MSB OF MANTISSA 1 X , or ,, 

1DE5 

7F 

40 


MHLF 

DCM 0.5 


IF 


JSR FLOAT 

CONVERT TO FLOATING POINT 



00 

00 







LDX -3 

4 BYTE TRANSFERS 






* 




SEXP 1 

LDA X2.X 



1E00 





ORG S1E00 

STARTING LOCATION FOR EXP 



STA Z.X 

COPY MANTISSA TO Z 






* 





LDA XI.X 







* 

EXP OF MANT/EXP1 RESULT IN MANT/EXP1 



STA SEXP.X 

SAVE Etf’ONENT IN SEXP 






* 



ID 


LDA R22.X 

LOAD EXP/MANT1 UITH SQRTC2) 


1E00 

A2 

03 


EXP 

LDX -3 

4 BYTE TRANSFER 



STA XI.X 



1E02 

BD 

D8 

IE 


LDA L2E.X 




DEX 



1E05 

95 

04 



STA X2.X 

LOAD EXP/MANT2 UITH LOG BASE 2 OF E 



BPL SEXP1 



1E07 

CA 




DEX 


IF 


JSR FSUB 

Z-SQRT(2) 


1E08 

10 

F8 



BPL EXP+2 




LDX -3 

4 BYTE TRANSFER 


1E0A 

20 

77 

IF 


JSR FMUL 

L0G2(E)*X 


SAVET 

LDA XI.X 

SAVE EXP/MANT1 AS T 


1E0D 

A2 

03 



LDX -3 

4 BYTE TRANSFER 



STA T.X 



1E0F 

B5 

08 


FSA 

LDA XI.X 




LDA 2.X 

LOAD EXP/MANT1 UITH Z 


IE 11 

95 

10 



STA Z.X 

STORE EXP/MANT1 IN Z 



STA XI.X 



IE 13 

CA 




DEX 


ID 


LDA R22.X 

LOAD EXP/MANT2 UITH SQRT(2) 


IE 14 

10 

F9 



BPL FSA 

SAVE Z-LN(2)#X 



STA X2.X 



IE 16 

20 

E8 

IF 


JSR FIX 

CONVERT CONTENTS OF EXP/MANT1 TO AN INTEGER 



DEX 



IE 19 

A5 

0A 



LDA Ml+1 




BPL SAVET 



IE IB 

85 

1C 



STA INT 

SAVE RESULT AS INT 

IF 


JSR FADD 

Z+SQRTC2) 


IE ID 

38 




SEC 

SET CARRY FOR SUBTRACTION 



LDX -3 

4 BYTE TRANSFER 


1E1E 

E9 

7C 



SBC -124 

INT-124 


TM2 

LDA T.X 



1E20 

A5 

09 



LDA Ml 




STA X2.X 

LOAD T INTO EXP/MANT2 


1E22 

E9 

00 



SBC -0 




DEX 



1E24 

10 

15 



BPL OVFLU 

OVERFLOU INT>-124 



BPL TM2 



1E26 

18 




CLC 

CLEAR CARRY FOR ADD 

IF 


JSR FDIV 

T-(Z-SQRTC2))/(Z+SQRT(2)T 


1E27 

A5 

0A 



LDA Ml+1 




LDX -3 

4 BYTE TRANSFER 


1E29 

69 

78 



ADC -120 

ADD 120 TO INT 


MIT 

LDA XI.X 



1E2B 

A5 

09 



LDA Ml 




STA T.X 

COPY EXP/MANT1 TO T AND 


1E2D 

69 

00 



ADC -0 




STA X2.X 

LOAD EXP/MANT2 UITH T 


1E2F 

10 

08 



BPL CONTIN 

IF RESULT POSITIVE CONTINUE 



DEX 



1E31 

A9 

90 



LDA -0 

INT<-120 SET RESULT TO ZERO AND RETURN 



BPL MIT 



1E33 

A2 

83 



LDX -3 

4 BYTE MOVE 

IF 


JSR FMUL T*T 


1E35 

95 

08 


ZERO 

STA XI.X 

SET EXP/MANT1 TO ZERO 

IF 


JSR SWAP 

MOVE T*T TO EXP/MANT2 


1E37 

CA 




DEX 




LDX -3 

4 BYTE TRANSFER 


1E38 

10 

FB 



BPL ZERO 


ID 

MIC 

LDA C.X 



1E3A 

60 




RTS 

RETURN 



STA XI.X 

LOAD EXP/MANT1 UITH C 






* 





DEX 



1E3B 

00 



OVFLU 

BRK 

OVERFLOU 



BPL MIC 







# 



IF 


JSR FSUB 

T*T-C 


1E3C 

20 

2C 

IF 

CONTIN JSR FLOAT 

FLOAT INT 



LDX -3 

4 BYTE TRANSFER 


1E3F 

A2 

03 



LDX -3 


ID 

M2MB 

LDA MB.X 



1E41 

B5 

10 


ENTD 

LDA Z.X 




STA X2.X 

LOAD EXP/MANT2 UITH MB 


1E43 

95 04 



STA X2.X 

LOAD EXP/MANT2 UITH Z 



DEX 



1E45 

CA 




DEX 




BPL M2 MB 



1E46 

10 

F9 



BPL ENTD 


IF 


JSR FDIV 

ra/(T*T-C) 


1E48 

20 

4A 

IF 


JSR FSUB 

Z-Z-FLOATCINT) 



LDX -3 

4 BYTE TRANSFER 


1E4B 

A2 

03 



LDX -3 

4 BYTE MOVE 

ID 

M2A1 

LDA Al.X 



1E4D 

85 

08 


ZSAV 

LDA XI.X 




STA X2.X 

LOAD EXP/MANT2 UITH A1 


1E4F 

95 

10 



STA Z.X 

SAVE EXP/MANT1 IN Z 



DEX 



1E51 

95 

04 



STA X2.X 

COPY EXP/MANT1 TO EXP/MANT2 



BPL M2A1 



1E53 

CA 




DEX 


IF 


JSR FADD 

MB/(T*T-C)+A1 


1E54 

10 

F7 



BPL ZSAV 




LDX -3 

4 BYTE TRANSFER 


1E56 

20 

77 

IF 


JSR FMUL 

Z*Z 


M2T 

LDA T.X 



1E59 

A2 

03 



LDX -3 

4 BYTE MOVE 



STA X2.X 

LOAD EXP/MANT2 UITH T 


1E5B 

BD 

DC 

IE 

LA2 

LDA A2.X 




DEX 



1E5E 

95 

04 



STA X2.X 

LOAD EXP/MANT2 UITH A2 



BPL M2T 



1E60 

B5 

08 



LDA XI,X 


IF 


JSR FMUL 

(MB/CT*T-C)+A1)*T 


1E62 

95 

18 



STA SEXP.X 

SAVE EXP/MANT1 AS SEXP 



LDX -3 

4 BYTE TRANSFER 


1E64 

CA 




DEX 


ID 

M2MHL 

LDA MHLF.X 



1E65 

10 

F4 



BPL LA2 




STA X2.X 

LOAD EXP/MANT2 UITH fWLF (.5) 


1E67 

20 

50 

IF 


JSR FADD 

Z*Z+A2 



DEX 



1E6A 

A2 

03 



LDX -3 

4 BYTE MOVE 



BPL M2MHL 



1E6C 

BD 

E0 

IE 

LB2 

LDA B2.X 


IF 


JSR FADD 

+ .5 


1E6F 

95 

04 



STA X2.X 

LOAD EXP/MANT2 UITH B2 



LDX -3 

4 BYTE TRANSFER 


1E71 

CA 




DEX 



LDEXP 

LDA SEXP.X 



1E72 

10 

F8 



BPL LB2 




STA X2.X 

LOAD EXP/MANT2 UITH ORIGINAL EXPONENT 

1E74 

20 

9D 

IF 


JSR FDIV 

T«B2/(Z*Z+A2) 



DEX 



1E77 

A2 

03 



LDX -3 

4 BYTE MOVE 



BPL LDEXP 



1E79 

B5 

08 


DLOAD 

LDA XI.X 


IF 


JSR FADD 

+EXPN 


1E7B 

95 

14 



STA T.X 

SAVE EXP/MANT1 AS T 



LDX -3 

4 BYTE TRANSFER 


1E7D 

BD 

E4 

IE 


LDA C2.X 


ID 

M_E2 

LDA LE2.X 



1E80 

95 

08 



STA XI,X 

LOAD EXP/MANT1 UITH C2 



STA X2.X 

LOAD EXP/MANT2 UITH LN(2) 


1E82 

B5 

18 



LDA SEXP.X 




DEX 



1E84 

95 

04 



STA X2.X 

LOAD EXP/MANT2 UITH SEXP 



BPL MLE2 



1E86 

CA 




DEX 


IF 


JSR FMUL 

*LN(2) 


1E87 

10 

F0 



BPL DLOAD 




RTS 

RETURN RESULT IN MANT/EXP1 


1E89 

20 

77 

IF 


JSR FMUL 

Z*Z*C2 


* 




1E8C 

20 

1C 

IF 


JSR SUAP 

MOVE EXP/MANT1 TO EXP/MANT2 


* l 

COMMON LOG 

OF MANT/EXP1 RESULT IN MANT/EXP1 


1E8F 

A2 

03 



LDX -3 

4 BYTE TRANSFER 


* 




1E91 

85 

14 


LTMP 

LDA T.X 


ID 

LOG 10 

JSR LOG 

COMPUTE NATURAL LOG 


1E93 

95 

08 



STA XI,X 

LOAD EXP/MANT1 UITH T 



LDX -3 



1E95 

CA 




DEX 



Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 August, 1976 


1E96 

10 

F9 



BPL LTMP 












1E98 

20 

4A 

IF 


JSR FSUB 

C2*Z*Z-B2/(Z*Z+A2) 






* 

ADD 

EXP/MANT1 

AND EXP/MANT2 RESULT IN EXP/MANT1 

1E9B 

A2 

03 



LDX =3 

4 BYTE TRANSFER 






* 





1E9D 

BD 

E 8 

IE 

LDD 

LDA D,X 



1F50 

A5 

04 


FADD 

LDA 

X2 



1EA0 

95 

04 



STA X2,X 

LOAD EXP/MANT2 UITH D 


1F52 

C5 

08 



CMP 

XI 


COMPARE EXP 1 UITH EXP2 

1EA2 

CA 




DEX 



IF 34 

D0 

F7 



BNE 

SUPALG 


IF UNEQUAL, SUAP ADDENDS OR ALIGN MANTISSAS 

1EA3 

*10 

F 8 



BPL LDD 



1F56 

20 

00 

IF 


JSR 

ADD 


ADD ALIGNED MANTISSAS 

1EA5 

20 

50 

IF 


JSR FADD 

D+C2*Z*Z-82/(Z*Z+A2) 


1F59 

50 

E3 


ADDEND 

BVC 

NORM 


NO OVERFLOU, NOMALIZE RESULTS 

1EA8 

20 

1C 

IF 


JSR SUAP 

MOVE EXP/MANT1 TO EXP/MANT2 


1F5B 

70 

05 



BVS 

RTLOG 


OV: SHIFT MANT1 RIGHT. NOTE CARRY IS CORRECT SIGN 

1EAB 

A2 

03 



LDX =3 

4 BYTE TRANSFER 


1F5D 

90 

BD 


ALGNSU BCC 

SUAP 


SUAP IF CARRY CLEAR, ELSE SHIFT RIGHT ARITH. 

1EAD 

B5 

10 


LFA 

LDA Z.X 



1F5F 

A5 

09 


RTAR 

LDA 

Ml 


SIGN OF MANT1 INTO CARRY FOR 

1EAF 

95 

08 



STA XI,X 

LOAD EXP/MANT1 UITH Z 


1F61 

0A 




ASL 

A 


RIGHT ARITH SHIFT 

1EB1 

CA 




DEX 



1F62 

E 6 

08 


RTLOG 

INC 

XI 


INCR EXP 1 TO COMPENSATE FOR RT SHIFT 

1EB2 

10 

F9 



BPL LFA 



1F64 

F0 

7E 



BEQ 

OVFL 


EXP1 OUT OF RANGE 

1EB4 

20 

4A 

IF 


JSR FSUB 

-Z+D+C2*Z*Z-B2/(Z*Z+A2) 


1F66 

A2 

FA 


RTL0G1 

LDX 

=$FA 


INDEX FOR 6 BYTE RIGHT SHIFT 

1EB7 

A2 

03 



LDX *=3 

4 BYTE TRANSFER 


1F68 

A9 

80 


ROR1 

LDA 

=$80 

r..~ 


1EB9 

B5 

10 


LF3 

LDA Z,X 



1F6A 

B0 

01 



BCS 

ROR 2 



1EBB 

95 

04 



STA X2,X 

LOAD EXP/MANT2 UITH Z 


1F6C 

0A 




ASL 

A 



1EBD 

CA 




DEX 



1F6D 

56 

0F 


R0R2 

LSR 

E+3,X 


SIMULATE ROR E+3,X 

1EBE 

10 

F9 



BPL LF3 



1F6F 

15 

0F 



ORA 

E+3,X 



1EC0 

20 

9D 

IF 


JSR FDIV 

Z/(*#** ) 


1F71 

95 

0F 



STA 

E+3, X 



1EC3 

A2 

03 



LDX =3 

4 BYTE TRANSFER 


1F73 

E8 




INX 



NEXT BYTE OF SHIFT 

1EC5 

BD 

E5 

ID 

LD12 

LDA MHLF,X 



1F74 

D0 

F2 



BNE 

ROR 1 


LOOP UNTIL DONE 

1EC8 

95 

04 



STA X2,X 

LOAD EXP/MANT2 UITH .5 


1F76 

60 




RTS 



RETURN 

1ECA 

CA 




DEX 







Jk 





1ECB 

10 

F8 



BPL LD12 







5k 





1ECD 

20 

50 

IF 


JSR FADD 

+Z/(***)+.5 






5k 

EXP/MANT1 X 

EXP/MANT2 RESULT IN EXP/MANT1 

1ED0 

38 




SEC 

ADD INT TO EXPONENT UITH CARRY SET 





5k 





1ED1 

A5 

1C 



LDA INT 

TO MULTIPLY BY 


1F77 

20 

0D 

IF 

FMUL 

JSR 

MD1 


ABS. VAL OF THE MANT1, MANT2 

1ED3 

65 

08 



ADC XI 

2**(INT+1) 


1F7A 

65 

08 



ADC 

XI 


ADD EXP 1 TO EXP‘2 FOR PRODUCT EXPONENT 

1ED5 

85 

08 



STA XI 

RETURN RESULT TO EXPONENT 


1F7C 

20 

CD 

IF 


JSR 

MD2 


CHECK PRODUCT EXP AND PREPARE FOR. MUL 

1ED7 

60 




RTS 

RETURN ANS-(.5+Z/(-Z+D+C2*Z*Z-B2/(Z*i» 

1F7F 

18 




CLC 



CLEAR CARRY 

1ED8 

80 

5C 


L2E 

DCM 1.4426950409 LOG BASE 2 OF E ^ 


1F80 

20 

66 

IF 

MUL1 

JSR 

RTLOG1 


MANT1 AND E RIGHT.(PRODUCT AND MPLIER) 


55 

IE 






1F83 

90 

03 



BCC 

MUL2 


IF CARRY CLEAR, SKIP PARTIAL PRODUCT 

1EDC 

86 

57 


A2 

DCM 87.417497202 


1F85 

20 

00 

IF 


JSR 

ADD 


ADD MULTIPL ICAN TO PRODUCT 


6A 

El 






1F88 

88 



MUL2 

DEY 



NEXT MUL ITERATION 

1EE0 

89 

4D 


B2 

DCM 617.9722695 

1F89 

10 

F5 



BPL 

MUL1 


LOOP UNTIL DONE 


3F 

ID 





1F8B 

46 

03 


MDEND 

LSR 

SIGN 


TEST SIGN (EVEN/ODD) 

1EE4 

7B 

46 


C2 

DCM .03465735903 


1F8D 

90 

AF 


NOR MX 

BCC 

NORM 


IF EXEN, NORMALIZE PRODUCT. ELSE COMPLEMENT 


FA 

70 






1F8F 

38 



FCOMPL 

SEC 



SET CARRY FOR SUBTRACT 

1EE8 

83 

4F 


D 

DCM 9.9545957821 


1F90 

A2 

03 



LDX 

=$83 


INDEX FOR 3-BYTE SUBTRACTION 


A3 

03 






1F92 

A9 

00 


COMPL1 

LDA 

=$00 


CLEAR A 





* 




1F94 

F5 

08 



SBC 

XI,X 


SUBTRACT BYTE OF EXP1 





* 




1F96 

95 

08 



STA 

XI,X 


RESTORE IT 





5k 

BASIC FLOATING POINT ROUTINES 


1F98 

CA 




DEX 



NEXT MORE SIGNFICANT BYTE 





* 




1F99 

D0 

F7 



BNE 

COMPL1 


LOOP UNTIL DONE 

1F00 





ORG S1F00 

START OF BASIC FLOATING POINT ROUTINES 

1F9B 

F0 

BC 



BEQ 

ADDEND 


NORMALIZE (OR SHIFT RIGHT IF OVERFLOU) 

1F00 

18 



ADD 

CLC 

CLEAR CARRY 






5k 





1F01 

A2 

02 



LDX *$02 

INDEX FOR 3-BYTE ADD 






5k 





1F03 

B5 

09 


ADD 1 

LDA Ml ,X 







sk 

EXP/MANT2 / 

EXP/MANT1 RESULT IN EXP/MANT1 

1F05 

75 

05 



ADC M2,X 

ADD A BYTE OF MANT2 TO MANT1 






* 





1F07 

95 

09 



STA Ml, X 



1F9D 

20 

0D 

IF 

FDIV 

JSR 

MD1 


TAKE ABS VAL OF MANT1, MANT2 

1F09 

CA 




DEX 

ADVANCE INDEX TO NEXT MORE SIGN IF 

BYTE 

1FA0 

E5 

08 



SBC 

XI 


SUBTRACT EXP1 FROM EXP2 

1F0A 

10 

F7 



BPL ADD 1 

LOOP UNTIL DONE 


1FA2 

20 

CD 

IF 


JSR 

MD2 


SAVE AS QUOTIENT EXP 

1F0C 

60 




RTS 

RETURN 


1FA5 

38 



DIV1 

SEC 



SET CARRY FOR SUBTRACT 

1F0D 

06 

03 


MD1 

ASL SIGN 

CLEAR LSB OF SIGN 


1FA6 

A2 

02 



LDX 

=$02 


INDEX FOR 3-BYTE INSTRUCTION 

1F0F 

20 

12 

IF 


JSR ABSUAP 

ABS VAL OF MANT1, THEN SUAP MANT2 


1FA8 

85 

05 


DIV2 

LDA 

M2, X 



IF 12 

24 

09 


ABSUAP BIT Ml 

MANT1 NEG? 


1FAA 

F5 

0C 



SBC 

E,X 


SUBTRACT A BYTE OF E FROM MANT2 

IF 14 

10 

05 



BPL ABSUP1 

NO,SUAP UITH MANT2 AND RETURN 


1FAC 

48 




PHA 



SAVE ON STACK 

IF 16 

20 

8F 

IF 


JSR FCOMPL 

YES, COMPLIMENT IT. 


IFAD 

CA 




DEX 



NEXT MORE SIGN IF BYTE 

IF 19 

E6 

03 



INC SIGN 

1NCR SIGN, COMPLEMENTING LSB 


1FAE 

10 

F8 



BPL 

DIV2 


LOOP UNTIL DONE 

IF IB 

38 



ABSUP 

SEC 

SET CARRY FOR RETURN TO MUL/DIV 


1FB0 

A2 

FD 



LDX 

*$FD 


INDEX FOR 3-BYTE CONDITIONAL MOVE 





* 




1FB2 

68 



DIV3 

PLA 



PULL A BYTE OF DIFFERENCE OFF STACK 





* 

SUAP EXP/MANT1 UITH EXP/MANT2 


1FB3 

90 

02 



BCC 

DIV4 


IF MANT2XE THEN DONT RESTURE MANT2 





5k 




1FB5 

95 

08 



STA 

M2+3,X 



IF 1C 

A2 

04 


SUAP 

LDX =$04 

INDEX FOR 4-BYTE SUAP 


1FB7 

E8 



DIV4 

INX 



NEXT LESS SIGN IF BYJE 

1F1E 

94 

0B 


SUAP1 

STY E-1,X 



1FB8 

D0 

F8 



BNE 

DIV3 


LOOP UNTIL DONE 

1F20 

B5 

07 



LDA X1-1,X 

SUAP A BYTE OF EXP/MANT1 UITH 


1FBA 

26 

0B 



ROL 

Ml+2 



1F22 

B4 

03 



LDY X2-1,X 

EXP/MANT2 AND LEAVEA COPY OF 


1FBC 

26 

0A 



ROL 

Ml + 1 


ROLL QUOTIENT LEFT. CARRY INTO LSB 

1F24 

94 

07 



STY Xl-l.X 

MANT1 IN E(3BYTES). E+3 USED. 


1FBE 

26 

09 



ROL 

Ml 



1F26 

95 

03 



STA X2-1.X 



1FC0 

06 

07 



ASL 

M2+2 



1F28 

CA 




DEX 

ADVANCE INDEX TO NEXT BYTE 


1FC2 

26 

06 



ROL 

M2+1 


SHIFT DIVIDEND LEFT 

1F29 

D0 

F3 



BNE SUAP1 

LOOP UNTIL DONE. 











1F2B 

60 




RTS 
















* 




1FC4 

26 

05 



ROL 

M2 







* 




1FC6 

B0 

1C 



BtS 

OVFL 


OVERFLOU IS DUE TO UNNORMALIZED DIVISOR 





* 




1FCB 

88 




DEY 



NEXT DIVIDE ITERATION 





* 

CONVERT 16 

BIT INTEGER IN Ml(HIGH) AND Ml+1(LOU) TO 

1FC9 

D0 

DA 



BNE 

DIV1 


LOOP UNTIL DONE 23 ITERATIONS 





* 

RESULT IN EXP/MANT1. EXP/MANT2 UNEFFECTED 

F.P. 

1FCB 

F0 

BE 



BEQ 

MDEND 


NORMALIZE QUOTIENT AND CORRECT SIGN 





* 




1FCD 

86 

08 


MD2 

STX 

Ml+2 







•5*4 




1FCF 

86 

0A 



STX 

Ml + I 


CLR MANT1 (3 BYTES) FOR MUL/DIV 

1F2C 

A9 

8E 


FLOAT 

LDA *$8E 



1FD1 

86 

09 



STX 

Ml 



1F2E 

85 

08 



STA XI 

SET EXPN TO 14 DEC 


1FD3 

B0 

0D 



BCS 

OVCHK 


IF EXP CALC SET CARRY, CHECK FOR OVFL 

1F30 

A9 

00 



LDA =0 

CLEAR LOU ORDER BYTE 


1FD5 

30 

04 



BMI 

MD3 


IF NEG NO UNDERFLOU 

1F32 

85 

0B 



STA Ml+2 



1FD7 

68 




PLA 



POP ONE 

1F34 

F0 

08 



BEQ NORM 

NORMALIZE RESULT 


1FD8 

68 




PLA 



RETURN LEVEL 

1F36 

C6 

08 


N0RM1 

DEC XI 

DECREMENT EXP1 


1FD9 

90 

B2 



BCC 

NORMX 


CLEAR XI AND RETURN 

1F38 

06 

0B 



ASL Ml+2 



1FDB 

49 

80 


MD3 

EOR 

*$80 


COMPLIMENT SIGN BIT OF EXP 

1F3A 

26 

0A 



ROL Ml + 1 

SHIFT MANT1 (3 BYTES) LEFT 


1FDD 

85 

08 



STA 

XI 


STORE IT 

1F3C 

26 

09 



ROL Ml, 



1FDF 

A0 

17 



LDY 

*$17 


COUNT FOR 24 MUL OR 23 DIV ITERATIONS 

1F3E 

A5 

09 


NORM 

LDA Ml* 

HIGH ORDER MANT1 BYTE 


1FE1 

60 




RTS 



RETURN 

1F40 

0A 




ASL A 

UPPER TUO BITS UNEQUAL*? 


IFE2 

10 

F7 


QVCHK 

BPL 

MD3 


IF POS EXP THEN NO OVERFLOU 

1F41 

45 

09 



EOR Ml 



1FE4 

00 



OVFL 

BRK 




1F43 

30 

04 



BMI RTS 1 

YES,RETURN UITH MANT1 NORMALIZED 






* 





1F45 

A5 

08 



LDA XI 

EXP1 ZERO? 






5k 





IF 47 

D0 

ED 



BNE N0RM1 

NO, CONTINUE NORMALIZING 






5k 

CONVERT EXP/MANT1 TO INTEGER IN Ml (HIGH) AND Ml+1(LOU) 

1F49 

60 



RTS 1 

RTS 

RETURN 






* 

EXP/MANT2 UNEFFECTED 





* 




1FE5 

20 

5F 

IF 


JSR 

RTAR 


SHIFT MANT1 RT AND INCREMENT EXPNT 





* 

EXP/MANT2-EXP/MANI RESULT IN EXP/MANT1 


1FE8 

A 5 

08 


FIX 

LDA 

XI 


CHECK EXPONENT 





5k 




iFEA 

C9 

BE 



CMP 

»$8E 


IS EXPONENT 14? 

1F4A 

20 

8F 

IF 

FSU6 

JSR FCOMPL 

COMPL MANT1 CLEARS CARRY UNLESS ZERO 

1FEC 

D0 

F7 



BNE 

FIX-3 


NO,SHIFT 

1F4D 

20 

5D 

IF 

SUPALG JSR ALGNSU 

RIGHT SHIFT MANT1 OR SUAP UITH 


1FEE 

60 



RTRN 

RTS 



RETURN 





* 


MANT2 ON CARRY 






END 





August, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 19 

209 



Tinniini fur ifta BSE3 


Jack Bradshaw 
18 Harbor View Dr. 

Hingham, MA 02043 

This listing is a Monitor for the 6502, a-la the Ohio 
Scientific Model 420. The interrupt vector has been set to 
use John Zeiglers breakpoint routine. [DDJ, Vol.1, No.3]. 

His program needs to have a few addresses changed to use 
this Monitor, but they should be obvious from the subroutine 
names. 

Ohio Scientific [11679 Hayden St., P.O. Box 269, Hiram, 
OH 44234] seems to be the cheapest way to go if you roll 
your own equipment. They sell [albeit slowly] a variety of 
bare boards at very reasonable prices and good quality. So 


far I have assembled the CPU board and 4K board, am finishing 
a homebrew panel, and wrote the Monitor to check things 
on a borrowed ASR33. The next step calls for revising the 
Monitor to take the Viatron keyboard and translate to ASCII 
with a look-up table. 

The Viatron keyboard is optically encoded, has parallel 
output, and is a fantastic bargain at $20.00 from John Meshna 
[P.O. Box 62, E. Lynn MA 01904] These are new surplus 
with 73 (I think) keys. Anyway, I will pass along an updated 
version. 

Eventually hope to get TB for the 6502 (if you publish 
a 6800 version someone will translate it overnight or vice- 
versa). 

Note: I would like to hear from other 6502's in the area. 


$ 


ADDR/ 

XX 

XX 

XX 

LABEL 

OP 

(mode: 

• 0PER 

FF4A/ 

B0 

BE 



BCS 

(REL) 

FF0A 






— 

( -> 

*■ • • • 

* 








FF00/ 

A9 

03 


MAIN 

LDA 

( IMM) 

03 

FF4C/ 

20 

88 

FF 

MEML 

JSR 

(ABS) 

EMTY 

FF02/ 

8D 

00 

FC 


STA 

(ABS) 

FC00 

* 








FF0 5/ 

A9 

B 1 



LDA 

( IMM) 

B1 

FF4F/ 

A9 

20 


SPAC 

LDA 

(IMM) 

20 

FF0 7/ 

8D 

00 

FC 


STA 

(ABS) 

FC00 

* 








FF0A/ 

A2 

FF 



LDX 

( IMMF) 

FF 

FF52 / 

48 



0UTP 

PHA 

( IMP) 


FF0C/ 

9A 




TXS 

( IMP ) 


FF52/ 

AD 

00 

FC 


LDA 

(ABS) 

FC00 

FF0D/ 

20 

5E 

FF 


JSR 

(ABS) 

CRLF 

FF55/ 

4A 




LSR 

(ACC) 


FF1 0/ 

20 

C6 

FF 


JSR 

(ABS) 

INPT 

FF56/ 

4A 




LSR 

(ACC) 


FF 1 3/ 

AA 




TAX 

(IMP) 


FF5 7/ 

90 

F9 



BCC 

(REL) 

FF52 

FF 1 4/ 

20 

4F 

FF 


JSR 

(ABS) 

SPAC 

FF59/ 

68 




PLA 

( IMP ) 


FF i 7/ 

E0 

4C 



CPX 

( IMM) 

4C 

FF5A/ 

8D 

01 

FC 


STA 

(ABS) 

FC0 1 

FF 1 9/ 

F0 

09 



BEU 

(REL) 

LOAD 

FF5D/ 

60 




RTS 

( IMP) 


FF1B/ 

E0 

50 



CPX 

( IMM) 

50 

* 








FF 1 D/ 

F0 

1 4 



BEQ 

(REL) 

PRNT 

* 








FF 1 F/ 

E0 

47 



CPX 

(IMM) 

47 

FF5E/ 

A 9 

0D 


CRLF 

LDA 

( IMM) 

0D 

FF2 1 / 

00 

E 7 



BNE 

(REL) 

FF0A 

FF60/ 

20 

51 

FF 


JSR 

(ABS) 

0UTP 

FF23/ 

40 




RTI 

( IMP) 


FF63/ 

A9 

0A 



LDA 

( IMM 

) 0A 

* 








FF65/ 

20 

51 

FF 


JSR 

(ABS) 

0UTP 

FF24/ 

20 

69 

FF 

LOAD 

JSR 

(ABS) 

ADDR 

FF68/ 

60 




RTS 

( IMP) 


FF2 7/ 

20 

77 

FF 


JSR 

(ABS) 

FILL 

* 








FF2A/ 

91 

FE 



STA 

(IND j Y) FE 

FF 69/ 

20 

7 7 

FF 

ADDR 

JSR 

(ABS) 

FILL 

FF2C/ 

C8 




INY 

( IMP) 


*$ 








FF2D/ 

00 

F8 



BNE 

(REL) 

FF2D 

* 








FF2F/ 

E6 

FF 



INC 

(ZER) 

00FF 

FF 69/ 

20 

77 

FF 

ADDR 

JSR 

(ABS) 

FILL 

FF3 1 / 

D0 

F 4 



BNE 

(REL) 

FF2 7 

FF6C/ 

85 

FF 



STA 

(ZER) 

00FF 

* 








FF6E/ 

20 

7 7 

FF 


JSR 

(ABS) 

FILL 

FF33/ 

20 

69 

FF 

PRNI 

jSrt 

(ABS) 

ADDR 

FF 71 / 

A8 




TAY 

( IMP) 


FF36/ 

20 

5 E 

FF 


JSR 

(ABS) 

CRLF 

FF 72/ 

A9 

00 



LDA 

( IMM) 

00 

FF3 9/ 

A9 

F8 



LDA 

( IMM ) 

F8 

FF76/ 

60 




RTS 

(IMP) 


FF3B/ 

85 

FD 



STA 

(ZER) 

00FD 

*$ 








FF3D/ 

20 

4C 

FF 


JSR 

(ABS) 

MEML 

* 








FF40 / 

E6 

FD 



INC 

(ZER) 

00FD 

FF 7 7/ 

20 

98 

FF 

FILL 

JSR 

(ABS) 

READ 

FF 42/ 

D0 

F9 



BNE 

(REL) 

FF3D 

FF7A/ 

0 A 




ASL 

(ACC) 


FF44/ 

AD 

00 

FC 


LDA 

(ABS) 

FC00 

FF7B/ 

0A 




ASL 

(ACC) 


FF 4 7/ 

4A 




LSR 

(ACC) 


FF7C/ 

0 A 




ASL 

(ACC) 


FF 4 8/ 

90 

EC 



see 

(REL) 

FF3 6 

FF 70/ 

0 A 




ASL 

(ACC) 



Page 20 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 August, 1976 

210 



FF7E/ 

85 

FC 



STA 

(ZER) 

00FC 

FF80/ 

20 

98 

FF 


JSR 

(ABS) 

READ 

FF83/ 

29 

0 F 



AND 

< IMM) 

0F 

FF74/ 

85 

FE 



STA 

(ZER) 

00FE 

FF83/ 

29 

0 F 



AND 

( IMM) 

0F 

FF85/ 

65 

FC 



ADC 

(ZER) 

00FC 

FF8 7/ 

* 

60 




RTS 

( IMP) 


FF88/ 

B1 

FE 


EMTY 

LDA 

(INDaY) FE 

FF8A/ 

20 

B 5 

FF 


JSR 

(ABS) 

UNPK 

FF8D/ 

81 

FE 



LDA 

(INDeY) FE 

FF8F/ 

20 

89 

FF 


JSR 

(ABS) 

UNPI 

FF92/ 

C8 




INY 

(IMP) 


FF93/ 

D0 

02 



BNE 

(REL) 

FF9 7 

FF95/ 

E6 

FF 



INC 

(ZER) 


FF9 7/ 

* 

60 




RTS 

( IMP ) 


T 

FF98/ 

20 

C6 

FF 

READ 

JSR 

(ABS) 

INPT 

FF9B/ 

C9 

52 



CMP 

( IMM) 

52 

FF9D/ 

00 

03 



BNE 

(REL) 

FFA2 

FF9F/ 

4C 

00 

FF 


JMP 

(ABS) 

MAIN 

FFA2/ 

C9 

30 



CMP 

( IMM) 

30 

FFA4/ 

30 

F2 



BM1 

(REL) 

FF4A 

FFA6/ 

C9 

3A 



CMP 

(IMM) 

3A 

FFA8/ 

30 

08 



BMI 

(REL) 

FFB 5 

FFAA/ 

C9 

41 



CMP 

(IMM) 

41 

FFAC/ 

30 

EA 



BMI 

(REL) 

FF4A 

FFAE/ 

C9 

46 



CMP 

( IMM) 

46 

FF 80/ 

10 

E6 



BPL 

(REL) 

FF4A 

FF82/ 

E9 

07 



SBC 

( IMM) 

07 

FF BA/ 

60 




RTI 

(IMP) 


FF85/ 

4A 



UNPK 

LSR 

(ACC) 


FF86/ 

4A 




LSR 

(ACC) 


FF8 7/ 

4A 




LSR 

(ACC) 


FFB8/ 

■4a 

4A 




LSR 

(ACC) 


* 

FF89/ 

29 

0 F 


UhP I 

AND 

(IMM) 

0F 

FFBB/ 

69 

30 



ADC 

( IMM) 

30 

FF 80/ 

C9 

3A 



CMP 

( IMM) 

3A 

FFBF/ 

30 

02 



BMI 

(REL) 

FFC3 

FFC1 / 

69 

07 



ADC 

( IMM) 

07 

FFC3/ 

20 

51 

FF 


JSR 

(ABS) 

0UTP 

FFC6/ 

AD 

00 

FC 

INPT 

LDA 

(ABS) 

FC00 

FFC9/ 

4A 




LSR 

(ACC) 


FFCA/ 

90 

FA 



8CC 

(REL) 

FFC6 

FFCC/ 

AD 

01 

FC 


LDA 

(ABS) 

FC0 1 

FFCF/ 

29 

7 F 



AND 

( IMM) 

7F 

FFD1 / 

C9 

7 F 



CMP 

( IMM) 

7F 

FFD3/ 

F0 

FI 



BEQ 

(REL) 

FFC6 

FFD5/ 

4C 

51 

FF 


JMP 

(ABS) 

0UTP 

♦ 

FFFC/ 

00 

FF 



RES 

(RESET) VEC 

FFFE/ 

64 

02 



IRQ 

(INTERRUPT) 


iTINY TIM 
[SEEKS TINY BASIC 

[Dear Doctor, June 22, 1976 

I am an electronics instructor and at school where I teach I 
[have a friend named TIM. Now when I first met TIM he was just a 
[little fella', you know, a chip off the block of silicon. Well, he has 
Iput on some pounds with all the bytes he has been consuming. Now 
(there's almost nothing left to feed him. What we need for him is some 
'BASIC nutrition. If you know of even a Tiny BASIC meal for him 
[we would appreciate it. 

Thanks, and thanks for TIM. 

[John Bottoms 423 Knobloch Ave. 

(United Electronics Inst. Keffersonville IN 47130 

(Note: 'TIM' is a Monitor for the 6502. 


[A GOOD 

[ASSEMBLER PROPOSAL 

iDear Mr. Warren: June 27, 1976 

All of the implementations of Tiny BASIC have been 
[excellent, and the authors of each version deserve to be con¬ 
gratulated on a job well done. I agree that it may be time to 
lease up on Tiny for a bit, and devote more space to other 
[equally useful items. 

It seems to me that a really good assembler would be of 
(great value to hobbyists. I am thinking primarily of an 8080 
[assembler, but any machine would benefit from a good 
[assembler. By "good" I mean one with most or all of the 
(following features: 

1. Free-form source coding. 

2. Symbols up to 15 characters long. 

3. Symbol table assignable to tape cassette or floppy 

(disc. 

4. Provision for both local and global symbols. 

5. Sophisticated macro expansion capability. 

6. Operation in either absolute or relocatable mode, 
(assuming use of a suitable link editor for relocation. 

7. Optional output of object listing and/or diagnostics. 

8. Optional retention of symbol table for use in 
(debugging. 

9. Automatic separation of procedural and data areas, 

|to facilitate memory protection. 

10. Optional concordance and/or memory map listing. 

11. Provision for symbolic patching. 

12. Optional inclusion of kitchen sink (for bit bucket 
(overflow). 

Sincerely, 

[Jim Day 17042 Gunther St. 

Granada Hills CA 91344 


SUBSCRIBERS TO JOURNAL 
JUNE/JULY ISSUE 


SENT A SECOND COPY OF 


Our printers botched the first press run on DDJ, Vol.1 
Number 6. They used the wrong paper (poorer quality), and 
they had a bad print blanket on one of the pages. 

Before Picky Jim noticed it. Fast Tom (our super-duper 
mailer male) had processed the subscription issues and given 
them to the post office. 

So, when we received the properly printed copies, we 
OR sent our subscribers a second copy. It involved 

VECTOR some extra expense and effort for us, but 

that's the way we do things. 


August, 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


Page 21 

211 






Lunar Lander for the 6502 


by Mark Garetz 


Editor's Note: Normally, we don't like to publish software 
listings that have no accompanying user documentation. In 
this case, however, we feel that (1) the program is simple, 

(2) the listing is very clearly annotated, (3) it's use is self- 
documenting during execution, and (4) it's presumption of a 
TIM or DEMON monitor simplifies I/O problems. Please let us 
know how you feel about it. 

Mark assures me that use of this program is super-simple, 
and fool-proof. He sez: 

"It requires a TIM or DEMON monitor starting at 7000H. 
TIM is available from MOS Technology. DEMON comes with 
the JOLT from Microcomputer Associates, Box 1167, 
Cupertino CA 95014; (408) 247-8940. 

After placing the program in memory, simply start 
execution at 0300H. 


ZERO PAGE LOCATIONS 


00 

BYTE THAT CONTAINS TIME 


01 

BYTE THAT CONTAINS HEIGHT LO VALUE 


02 

BYTE THAT CONTAINS HEIGHT HI VALUE 


03 

NOT USED 


04 

BYTE CONTAINS VELOCITY 


05 

OIT OF FUEL PRINTED FLAG - TELLS PROGRAM O.O.F. HAS BEEN PRINTED 

06 

FUEL REMAINING LO BYTE 


07 

FUEL REMAINING HI BYTE 


08 

OUT OF FUEL FUG, IF-00, MEANS FUEL LEFT 

, -FF-OUT 

09 

SIGN FUG, -00 IF VELOCITY IS NEGATIVE, 

FF IF POSITIVE 

OA 

CONTAINS AMOUNT OF BURN, SET TO 00 WHEN 

FUEL OUT 

OB 

SCRATCH 1 


OC 

SCRATCH 2 




“I see that you have quite a lot of experience with microcomputer 
design. Dr. Featherstone ." 


LUNAR LANDER 



LOC 





0300 

JSR 

20 

8A 


0303 

JSR 

20 

8A 


0306 

JSR 

20 

71 

RESTART 

0309 

JSR 

20 

8A 


030C 

LDA 

A9 

00 


030E 

STA 

85 

00 


0310 

STA 

85 

01 


0312 

STA 

85 

05 


0314 

STA 

85 

08 


0316 

STA 

85 

09 


0318 

LDA 

A9 

05 


031A 

STA 

85 

02 


031C 

LDA 

A9 

50 


031E 

STA 

85 

04 


0320 

LDA 

A9 

20 


0322 

STA 

85 

06 


0324 

LDA 

A9 

01 


0326 

STA 

85 

07 


0328 

JSR 

20 

8A 


032B 

JSR 

20 

72 

PRINT NEXT 

032E 

JSR 

20 

8A 


0331 

JSR 

20 

12 


0334 

BIT 

24 

08 


0336 

BPL 

10 

10 


0338 

BIT 

24 

05 


033A 

BMI 

30 

OF 


033C 

JSR 

20 

8A 


033F 

JSR 

20 

31 


0342 

LDA 

A9 

00 


0344 

STA 

85 

OA 


0346 

BEQ 

FO 

03 

INPUT BURN 

0348 

JSR 

20 

00 

FUEL SUB 

034B 

JSR 

20 

2E 


034E 

JSR 

20 

58 


0351 

LDA 

AS 

04 


0353 

BNE 

DO 

04 


0355 

LDA 

A9 

00 


0357 

STA 

85 

09 

HEIGHT 

0359 

JSR 

20 

B7 


035C 

JSR 

20 

F7 


035F 

LDA 

AS 

02 


0361 

BEQ 

FO 

03 


0363 

JMP 

4C 

2E 

CHECKLO 

0366 

LDA 

AS 

01 


0368 

BEQ 

FO 

03 


036A 

JMP 

4C 

2E 

DOWN 

036D 

JSR 

20 

8A 


0370 

JSR 

20 

53 


0373 

JSR 

20 

8A 


0376 

JSR 

20 

12 


0379 

JSR 

20 

8A 


037C 

JSR 

20 

8A 


037F 

LDA 

AS 

04 


0381 

BEQ 

FO 

14 


0383 

CMP 

C9 

03 


0385 

BCC 

90 

10 


0387 

CMP 

C9 

07 


0389 

BCC 

90 

06 


038B 

JSR 

20 

06 


038E 

JMP 

4C 

9A 

STRANDED 

0391 

JSR 

20 

A9 


0394 

JMP 

4C 

9A 

PERFECT 

0397 

JSR 

20 

71 

TRY AGAIN 

039A 

JSR 

20 

8A 


039D 

JSR 

20 

8A 


03A0 

JSR 

20 

43 


03 A3 

JSR 

20 

E9 


03 A 6 

CMP 

C9 

59 


03A8 

BEQ 

FO 

OC 


03AA 

JSR 

20 

8A 


03AD 

JSR 

20 

8A 


03B0 

JSR 

20 

9A 


03B3 

JMP 

4C 

86 

JMPBACK 

03 B6 

JMP 

4C 

09 


72 CRLF SUBROUTINE IN TIM 
72 AGAIN 

06 PRINT INSTRUCTIONS 
72 CRLF 

LDA tf/00 

INITIALIZE TIME BYTE 
INITIALIZE HEIGHT LO BYTE 
INITIALIZE O.O.F. PRINTED FUG 
INITIALIZE OUT OF FUEL FUG 
INITIALIZE SIGN FUG 
LDA W/05 

INITIALIZE HEISTT HI BYTE 
LDA W/50 

INITIALIZE VELOCITY 
LDA N/20 

INITIALIZE FUEL LO BYTE 
LDA M/01 

INITIALIZE FUEL HI BYTE 
72 CRLF 

07 PRINT HEADINGS 

72 CRLF 

06 PRINT DATA LINE 

CHECK OUT OF FUEL FLAG 
IF NOT OUT OF FUEL THEN INPUT BURN 
CHECK IF O.O.F. HAS BEEN PRINTED 
YES BRANCH TO FUEL SUB 
72 CRLF 

08 PRINT OUT OF FUEL 

LDA W/00 

SET BURN BYTE TO 00 
BRANCH TO FUEL SUB, SKIP INPUT BURN 
05 INPUT AMOUNT TO BURN 

05 FIGURE FUEL REMAINING 

05 FIGURE NEW VELOCITY 

GET NEW VELOCITY 

VELOCITY-00? NO, BRANCH TO HEIGHT 
YES, 

CLEAR SIGN FUG 
05 FIGURE NEW HEIGHT 

05 INCREMENT TIME BYTE 

GET HEIGHT HI BYTE 
IF-00 GO TO CHECKLO 
03 IF NOT THEN GO TO PRINT NEXT 

GET HEIGHT LO BYTE 
IF-00 GO TO DOWN 

03 IF NOT THEN GO TO PRINT NEXT 

72 CRLF 

08 PRINT ON THE MOON 

72 CRLF 

06 PRINT FINAL DATA 

72 CRLF 

72 CRLF 

GET VELOCITY BYTE 
IF-00 BRANCH TO PERFECT 
IF NOT, COMPARE TO 3 
IF VLO < 3, BRANCH TO PERFECT 
IF VLO >.3, COMPARE TO 7 
IF VLO <7, BRANCH TO STRANDED 
09 IF VLO X7, PRINT "CREAMED" 

03 JMP TO TRY AGAIN 

08 PRINT "STRANDED" 

03 JUMP TO TRY AGAIN 

08 PRINT "PERFECT" 

72 CRLF 

72 CRLF 

09 PRINT TRY AGAIN 

72 INPUT CHARACTER 

CHECK FOR "Y" 

IF "Y" GO TO JMPBACK 
72 CRLF 

72 CRLF 

09 IF NOT THEN PRINT CONTROL OUT 

70 RETURN CONTROL TO TIM 

03 JUMP TO RESTART 


Reprinted with permission of Digital Equipment Corporation. 


Page 22 

212 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


August, 1976 













SSSSiSSSSSESSSiSSSSSSSSSSSSSSSSSSSgSRSSSSiSSSSgSSSgS 


>C4tn<uiao<u.uao* 


< £ 


<U«<U. 


aB838e3gS§833SES35SS3ES38638ff3888358E3E3ES3E3S3E 


sasssasgs'ais&gs'gisgs' 

NBOlUl Qtt.HKlWNOiaill| ON 


lOOOOOOOOOS 


r««o< 

__ IOQQ 

lAtAM>niAU)AiAiAiAAA^MUlMU)U1U) 
OOOOOOOOOOOOOOOOOOO 


S cnaQUHWinhCiaiuONt' 
aosaauyyyyuuflOQi 
(AlAiAiAiniAijniAiAtAiAiAUUniAl 



3 

S 


IN 

§ 


H 

a 


< 

o 

£ 


B 


Sc 
• o 
dc r 


§ 5 


B 

ill ! 


;sa z 


3 o: hH 

inSo&Si- 

2 z z z o ri 


Ego t 

P I 

a 


J 


:§i 

’Si 


§“fc 

hcCu) 

a u > 

S«.S 

U *1 o 


ssilgls 1 

|§Efcgit| l -5i 

53w3b£o.Dh«( 


55°S 


U. U 
W — r- o Z 

S O »-« *-1 

U B< > rz —. . 

H h? t? r3 < _ S **: ® & r ^ Xi < 

T 5 >< g w i t o * w § 


Ot to CQ O) Q< 00 u t 

u u o u O*” 4 ui o c 


ootnooiooi/>tfi<<<<‘ , >® | 2 in< 5 0 ^ , i!l29 

NNCONUU.N«0<OOOOOU«IO«N»<«'0 


OKl>0««QU.N*'0M0a<yUONM'fi0>fflQ 

ooooooooooooooooooooooo 



! o o © o o o 


U.tO<UJ60<UJ«0<tJ 


sgg; 

o in m ( 
u. < u t 


. fi a $ 
. © © © 

un in in 

: «o < «o 


Q U 
Ul U1 _ 

W w 2 w w 


38E38E38S388B3E3E3EE 

u.ON<»>o«<yii> rt Minf'Oi a q u. h m in 

nMMinnMKiMM^^'CNNNv^inininin 

oooooooooooooooooOoooo 


s 

e: 

is 


i § 26 

gees 


JC >• Ifl w 

I o £ z 

!S3i§| < 

Ju.a2gh 


S >- 6 uj « 

MtfNlflk cu 

uSu) in S 

a^ssi 


ssss 


gasgsas 

to u a a j m In 


sssasss 

ggggggg 


5 

cu 

DC 

o 

§ fc 

in 

8 a 
5 P 

z 

i S 

U. U9 


August, 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


Page 23 

213 






:g pj 


St: 6 - 

x U. 

o 


OhB. 

3 a 

*** O W 

p re u. < 

B.UHO. 


sbjs 

satse 


■ a, 


zm 

U CQ CO 0 03 

issss 


I U! H O ► 


w IS >- >• 

2 h W JO W 

_ z uu O U • 

<H <H U f- < < U 

S atfQo'SB.iaofi.w 

J&,JD.UH'OJWQ 




g££ 

5 £h 

S<2 

o 3 os 


*£ 

32 


5- a 

>- >• 

gu • 
< < o 
0 6.111 
JWQ 


gat 

§?£ 

X X CL. 


>ino<-oooOooomomoooc 

!<;NNrt.O<NOOQ<N<N<lN( 


o'<c*< 2 HJw>* 2 >«ua< 2 <os>«QS>-uj<osw 

lUQWDtflHfi.hOWHZQWDWQWMZOWh 


W W « W 
V^'O'fl'O'O'U'S'O'OvO'O'O 

oooooooooooo 


ON«NCiUUOHM'ON®iaUOMin 

^ A .J ij ^ ifl vj) ^ •* 

oooooooooo 


a i 


y V MA 

S £ T3'H 

“"■J* 

C 

x O M-H 
t-> C U 

WX-H 3 

< o o 


o o 

uj r 

M M2 

13 S.-H 3 

o m h 

•H *J *1 W 

W (N *1 

3 3-<5 
°2 
•H © X O. 

«£ p: • 
U u oo in 
e coo 
o M © X c 
O ® •-* H 
> ti 
«J © • 3 

e3 2 • • O 

£ O 9 111 h 
U X • Z 

•h h ta 

© H C 

« • b -h 
O w U O M 
X 4J *H OS *J 
*j c a « 
•H 0 3 
« h «J W h 

m a. ® 

at e : u 
6 *h o o 
> « « z « 

O h W H ^ 
h M M a 9 
x O © H -H 
o u o«w O 

P. 

V H ® 
U ® © 2 X 
© X X x ** 
X M *j e£ 

«-> a. »m 

(j «; o 

w © ® 

© X 3 ® X 

e +j x x y 
•h a u d 
u w > © 

3 © C> 

O 00 w u >» 

£ a 3>.s •“ 

3 « rH -3 

CO © P.^ ® 
S O 0 x 
" M CH 
© © -H © 

X C MO 

*-» -H *J 
U « C 
M3. ® 

O O «M x 

»W M O U 


H X 


r m u) 

> os o 

> H O 

> co o 


o 

e 

£ 

O 

X 

£■ 

< 

is 


O S 

> 2 O 

;S5 

> to 


: os o: 


X 2 

p- 


OS U1 

i < 3 
: x o 
! U P 


H H 

CO x 

^•gs 

< o - 

SIS! 


P 

b S 


II 

!u.e 

;°s 

c CO 

=°g 


* H p 111 


5 1 

o 

£5 

to tu 


p*. . 3- - 9. • - 

ui h bn a oLo. t bui 
2 co: : to: : w: : : 


-»roocn<<xtt.in 

oooooou-o 


QOiDOiQoaaou.wffOii.'OO'OWiny 

«<co<oor'»<oo'0^cniorMTrT»cN^riOTrTr 


< <<<<<OS<<W 

Q HOHOt-WQHH 

X COXCOXtO'-jXCOOS 


|QOMUINOOi<fflUQlUft<3HN 

igggggggr 


r •< - 

, JMC.--.; 

> O O O O O c 


O U 

U X *H S 

P< M © 
© (AM 

o w S c 
K -h o © 
« C os 
e j« . 

• O <M 
X -H B O 
© U rt 

O P. R u 
•h « M 3 
*J u o o 

© © a c 

x © © 3 
CXO 
©our 

« u © 
• © x 
M 44 x u 


o i 
U © I 


xu u 
3 9 0 0. 
W *3 U © 
O 

06 00 W X 
C C O © 
•H -H O 
M M o M 
U U « 
co in C x 
o u 
m « -h o 

©XU 
V u « © 
u ox 

© T3 O U 

© © ^ -3 
X W C 
u »u fl 
© « 

© 3 in X 


cn *j © u 

© -H C 3 

m e -h o 

•H *J 

© 3 *5 

x v o © 

U X M U 

. ♦* 5 

Cm x *h 

O M © M 
O 3 O. 
x <M U. 
x X 

< © «M T3 
WO© 
M © 
3 U M 

O S © 


s 

t- 

W 

x Q 

S 


UJ 

Q 

s s 

5 S 

3 2 

U] O 

e % 

i 


SS: 

x x : 

3C » l 
B1B1 1 
Z 2 £ 

< O l 

q t- . 



3 2 cc < 

< Q O < O O OJ 
O O H o q H x 
u x < co x < co u 


lOlOOOOOOIOWWlOOllOaOOlOlOooO 

< OODOH <<OCO<XOOQX<COQX 


2 tu H 2 x 

XX X H ^ 

H < H o W U 

UUhhZD 
X N. 

a os 2 x w os 
< cc < 
hui<OOui 
lu x o a h x 

co U X < CO u 



□ 

iQ 


ID 


a S 1 


IS 


p a 

u G3 >• >- o. 

X g CQ CQ CO 

X x x Q O 

o X x 3 q ** 


S o 

a 


to o 


jSSSfeu 

2 2 x x O X 
O W Ul U « c£ 
< M 2 W X X X W 

< >- x \ X >« 

Hua h wo i 

Z U D 2 q u a >. 2 111 Q ( 

£ < < X < < 2 < X < o. < . 


2 !S 


• O 
uuOH^ 


•mOwh 
; W < x 

5 H \ 
^U2H 
. U W ^ 2 

§ < x 

u. q o: 

x x o. 


o. u.oasqy.qi 

(fl>.HX6.Xh Jl 


( x < r 

» cq o r 


q o m oooc90iooiooooeoo<«'00>o 

MM< N<N»Q<N<N<N»DNK)<N 


<<QWO<U<<U<QW<<QW 

qhxhxqShqqhxhqhxh 

XWU2UX<WX<COUOSXWUBS 


Q U < 
UJ X Q 
W U X 


u < o t 
Q H m t 

< W U c 


S3 

X X 


OS >* 

W Ou 

•-> u 


rs§=p 

I M >-) c£ 


os os < os>-o:>-uj<c£<os>-o:>-ujhcj<qs 
wwq wowuazowQwqwuJ2Hj2qw 
*->»3X •->x*-aQ3x»-aX*-iX>-iQ55cQcnx'-s 


yiaoxNwiflNOifflDii.OHrtirt'O 

QQU1U1IUIUU1U1U1U1U1U1U.U.U.U.B. 

loioiniomioioininmioininwininto 

ooooooooooooooooo 


MSO Ol a Q u. o 

a, u. u. u. u. u. o 

in in in m m m \o 

o o o o o o o 


o o 
o 8 


sss g; 


> o o o o o < 


i ki ki w w to w «n 

) vp vO >ZJ so ip vp 'O 

>0000000 


si 


1 


Page 24 

214 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


August, 1976 






c /1 

LU 


I— 

3 

o 

aL 

O 

z 

U- &- 

_ UJ 

c/i (J 

li < 

O' 
X < 
UJ x 
X <J 



o 

Q © 


O 

O 

fa. 

© 


'•* oa 

« 

* 

to 

•45 

ffl 

©o 

«n 

© 

O 

o 

O 

S33 

o 

p» 

o 

m < u 

O © * Q 

o 

o © w o 

© 

* 

m * o © id 

o © * 


01 

o CO 



0) 

<9 

< 

cA 

<? 

o 

m 


m 


O V 


<r 

© 

© 

© 

© 

9 

© 

mo* 

© * m © 

© 

* © * © 

< 

m 

* o o © o * 

ca © m 


© 

ss 

u 

9 

a 

O 

m 

CN 

© in 

© 


3 


© 

< o 

© 

fa. 

o 

«r 

o 

O © 

SO 

© 

u 

to 

m Q fa. 

© * — » 

u 

m. © <c m 

© 

3 

Q P*. Q fa. © <» 

* o © n * m 

o © id 


o 



01 




o o 

o 


<r 


o © 


■«r 

© 

in 

© 

© «r 

* 

« 

* 

o 

9 to 9 

0**0 

* 

* * o m 

o 

© * * 


< 

m 

Ch 

0- 

< 

00 

© 

Q 

Id 

o 

Oi 


© 

09 

m 

© fa. 


© 

m 

to 

o 

« m 

m 

Cl 

© 

< 

o< fa. 

< » « © 
o * m * 

o 

© P- Q fa. 

m 

m 

o «* o w © m 

a © fa. 


o 

* 


m 

o 

08 

CO 


c? 

« Cf 

03 

* 


« 

m 


o 

m 

or 

9 

© 

m 4? 

9 

9 

9 

o 

© o * 

* 

© * O * 

o 

m 

© © «« * o m 

© © * 


Q 

* 

« 

fa. 

© 

O 

* 


m 

H n 

o 

in 

m 

P» 

u 

33 

© 

8 

Q 

t- 

© 

S3 

9 

m 

Id 

o 

aO © © 

Q -* © 

m 

Id -. * © 

Q 

* 

©©©©*© 

m * co 


m 

* 

* 


© 

« 

* 


m 

* « 

© 

an 

m 



o 

* 

9 

m 

9 

* 

9 

to 

* < * 

© * * © 

* 

* * m m 

© 

* 

« m< * o* 

* © * 


q 

u 

fa. 



* 

3 

CO 

o 

S3 

© 

© 

—« 

o 

o 

© o 

< 

O 

© 

© 

9 

© CD 

to 

<•> 

© 

< 

fa. a0 © 

* O Id * 

r*> 

P*> Q © © 

© 

o 

© m © - q © 
«*©*»© 

p- © © 


a 

* 



m 

m 


01 

© 

© 

m 

© 

« 

< © 

© 

© 

<r 

9 

m 

9 © 

© 

m 

* 

o 

* O « 

© * * © 

tet 

m* * © 

o 

© 

* © © 


© 


o 

© 

fd 

If 

«> 

Ml 

© 

tf> M 

o 

m 

m 

© 

<r 

d O 

m 

«- 

<9 

m 

© 

w < 

O 

b. 

•« 

© 

© m in 

© O fa. Q 

o 

fa. «a -• * 

© 

m 

© * m p» a © 

HQ© 


< 



CQ 

* 


* 

* 

n 

CO <T 

C8 

© 


* 


O 



in 


9 

9 O 

« 

© 

9 

< 

© © * 

* © * © 

© 

* * * * 

< 

m 

© * o * P» o 

* * © 


© 

o 

60 

rt 

m 

c^ 

?- 

o 

«D 

01 0» 

fa. 

o 

©3 

m 

fa. 

m k. 

o 

<d 

o 

» 

© 

m Q 

© 

<? 

O 

to 

* Q to 

© * n p 

© 

* * © m 

© 

fa. 

wHa«o« 

« © 


o 

«r 


n 



CO 

* 

O 

* 

<r 

© 

tO 

< 

ar 

o * 


<r 

© 


9 

ut o 

© 

in 

«r 

o 

m © * 

© m * oi 

o 

* * m *-© 

* 

* * © * * o 

* * © 


m 

o 

10 

bl 

© 

<*> 

s 

< 

o 

CO o 


aO 

o 

« 

fa. 

S 3 

m 

© 

<e 

o 

fa. 

o Id 

© 

«o 

m 

an 

m © * 

m © * © 

Ml 

00P}0 

* 

3 

O «4 © o © o 

© fa. o 
mm© 


o 

CM 

m 

«r 

<r 


© 

01 

01 © 

to 

* 

© 



m 

•* 

o 

© 

9 

© ^ 

© 

<r 

cr 

o 

mom 

0*0* 

o 

© © * * 

o 

© * O © 1* © 


Q 

01 

o 



fa. 

60 

< 

© 

O 0* 

o 

fa. 

© 

Id 

p*- 

p» «r 



< 

o 

O 

O Cf 

© 

CO 

© 

© 

fa. © o 

Q an Q C0 

© 

* * O « 

Q 

0*0©©*© 
© * * * m © © 

o o © 


00 

m 

©a 

<r 




o 

IA 

oi m 

© 


m 



o «n 



o 

© 

o 

9 © 

© 

© 

m 

to 

* * © 

© * o m 

« 

m © © * 

to 

© © o 


© 


« 

m 

o 

o 

o 

Q 

Cb 

o (d 

o 

O 

© 


< 

©id 

fa. 

Id 

< 

© 

in 

in m 

o 

o 

o 

to 

q m u 

© © p* Id 

© 

u. in « — 

© 

© 

m © © q o < 
* © o m « o 

© H * * 


o 

* 

m 


10 


01 

O 


« ^ 

© 

© 



o 

< o 


* 

o 

© 

9 

<0* m 

© 

M 

© 

o 

© © 

0*0* 

o 

* m m * 


o 

* * © m 


© 

ta] 

m 

Q 

fa. 

tf> 

o 


o 

Id -< 

o 

Id 

o 

© 

< 

«o fa. 

© 

oa 

o 

o 


tn © 

© 

o 

o 

© 

m * h. 

© « p* fa. 

* 

p- © m © 

© 

_ 

a m* * ©a 

fa. © Q m 
* m © m 


* 


m 

<r 

Cf 


60 

m 

01 

01 «¥ 

© 


© 


o 

o ^ 


«r 

o 

© 

in 

m ^ 

© 

© 

© 


o o * 

* m o * 

o 

* * m m 

* 

o 

* * o m © » 


© 

m 

u 

o 

o 

© 

u 

w 

(d 

© O 

Q 

3 

© 

o 

© 

o © 

o 

o 

m 

o 

o 

« o 

o 

o 

o 

aO 

mo© 

© m p» © 

Q 

o o fa. * 

M. 

© 

-COQQWO 

on « h. 


o 

in 


01 


m 




•9 a 


* 

01 

© 

O «T 

© 

<r 


© 

« 

^ © 

© 

© 

© 

o 

© © © 

0*0* 

© 

© n * m 

© 

© 

* * ® © * M. 

©mo* 


* 


Di 


o 



m 

3 

m m 

fa. 

an 

m 

fa. 

(d 

© O 

© 

o 

3 

o 

o 

o o 

o 

o 

o 

«r 

fa. © © 

* p r» * 

© 

m u © e> 

m 

© 

m m © © kb © 

* © ©o 


o 



01 

a 

01 



o o 


in 



© 

to « 

m 

© 

© 

© 

© © 

© 

© 

© 

o 

fa. © © 

©mom 

* 

m © m m 

* 

o 

* m m o © < 

m * < « 

r«- q 


O 

o 


© 

in 

© 

m 

© ca 

33 

© 

■O’ 

© 

m « 


M 

m 

o 

o 

o © 

o 

© 

© 

Q 

© © - 

Q Q.** »a 
© © © * 

© 

fa.« o © 

© 

* 

« a o. — »» 

eft © © O 

a to 


<T 

01 


01 



m 

m 

CO 


m 

to o 


<r 

© 

© 

M 

© © 

© 

© 

© 

so 

< < o 

< 

* * © © 

m 

o 

m* * ©mo 

mao* 


tO 

< 



2 

© 

m 


fa. o 


fa. 

o 


© -• 

H 

© 

9 

o 

o 

© o 

o 

o 

o 

© 

© © © 

* © *- O 

© 

© © fa. o 
m m * m 

m 

Q 

co <*« p» o © m 

fa. © m k. 


CO 

o 

O 

01 

in 

cr 


# 

01 08 

ca 

© 

© 

» 

< o 


<9 

9 

« 

© 

M © 

« 

© 

© 

43f 

o * © 

© O * * 

o 

* 

© 

* * o © © o 

* «©* 



< 



m 


•o 

o 

© » 

o 

33 

© 

o 

m 

P» 

m 

o 

o 

O O 

© 

© 

o 

© 

« m © 

©-.um 

m 

o © * «-> 

© 

© 

o p- e* © o a 

0004 

© * 
o 

o 

o 

CM 

43- 

to 

© 

m 

03 

in m 

03 « 


© © 

m 

cr 


© 

© 

© © 

« 

© 

© 

« 

0 9 0 

< o * m 

o 

© * m * 

* 

© 

© * o o © © 

© © © m 



38 8 

Q Cd fa, O — 


<T tf) d> C* 10 © 

< 

n 

o © id fa. o — 

©«o<?in«p»co©<£© 

UOCdbiO 

Ml 

©m*m©p»©©*n 

H 

to <0 


to <o <o r» t«- r» 

r- <*■ r* p- f 

!»■ 

t* 


toeoootoeooocoeococD 

© © « to © 

©©©©©©©©©©© 


joooooooooooooooooooooooooooooooooooooooooooooooooooo© 


vt 

CD 


a. 


as 

.ti 00^ 
O o 
O c £ 

<D CD UJ 
> ■£ t 


n w 

O m 


< 

cc 


„ Sj.E 

I O £ 

.t; ■ 

cn ti 

g ® 5 

Q. g O 

o) aj c 

.£ > o 

<2 p-i= 
C P <0 
® p 
“ »= ^ 
c 3 o 

.E C 

1"S 

ID W 9J 

l_ CQ -5 

CD j-* CJ 

ti © 

C »_ 
CD 

a) -c 2 

D 

o 

> E 3 

s#i 


O oo 

id S 

oo <° 
in u. 
r o 

Q- T— 

O oo 

tf) CD 

.Eco 

— CO 

o 

O CO 

ICN 


O' 

>» 
-n Q 


■g 


CD 


00 
o 
o> 

Be 
!° 
i-g 

CD CD 
C CD 

C CD 


cn 

c 

o 


■g' 


*b 

c 


•g o 

rt _ 


a 

E 


T> 

*D 


*8 

•8 

8 


si 


r-iNHtoHOi'Om r-~ < 

NNMulh .<03 vDCJ 
vONOOttCOCOOlffl Ol O' 

oooooooooo 


ti 

o ° 




X 

1 


— OSfiS 
onfioMv 
13! > X >* 

C § 8 tt 

§S33ni o:: 

C x 5o<- 

„ gEir 

sfis.sia: 

> Un°i fco ' 


0 

a 


,E _ 

4_j </) 

3 Z 

o O 

DC © 


.c 

i 

a 

£ 


£ 



“ g 

sf 


3 

H 

CO 

>■ 

H 

a: 

3 

O 

ui 

co 


co 

2 

CC 

< 


• <o 

CD k. * 

0 ) ■ 

C ° 

fe o 

Sifg 

c 4-- agg 

cn ti c/5 n 

® CD 

C 3 E® 

o 2 **• S 

2 tS — 

L- O CD (O 

i**s 

5 3 cin 
“ O to » 

£ > c N 

o>*J 2 < 

|g° 


si ^ .5 

S.a | | 
E s 2 p 


E 3 


j. 2 w - a: 

1-1 

c S-Jj 


2= is 


> O)^ 

w > o 

c .2 ™ iS 

S g 8^ 


August, 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


Page 25 

215 





“Applications Software”-- 
Games in Pittman’s 6800 Tiny BASIC 


by Carl Kelb 

These games—Stars, Acey-Deucy, Trap, and Slot—were 


adapted from older versions to Tom Pittman's Tiny BASIC 
for the 6800. Note: A bell (control-G) was imbedded in the 
print statements for each *. 


I 

U 

3 


h- Ci 

3 

a - 


sc 

3 

O 

>- CM 


© CJ O C © O © © < 


o o o © o 


Hi >- 

SC -I 
3 Z 

o 


o o o o o o 



4 - 

ON+OONO 

Cl 

-o 

00 


m c- 

■> T-I 




>- 


a? 

n 

>- 

-h 

© ro t-i 

w in 

rN 

O' 

O 

IN — 

o o 



3 — 

N n « O N N T 

«r 

T T 

*«r 


in 

m 

in >o 

■c 





NO 

N 

Z 3 


W IN © 

00 CD 

00 

CD 

ro 

O' — 

>- <r 



SC — 

CJ 

ci ~ n ci cj cj 

CJ 

CJ CJ 

Cl 


CJ 

CJ 

CJ CJ 

CJ 



cn 


CJ 

Z CJ 

3 


rs cj cj 

CJ CJ 

CJ 

Cl 

O' 

CJ z 

CJ 



<E iT 

Cl 

cj 











»-i 



3 

- « 


CM 




■ CJ 

tH 

- CJ 



iH 


OH OOO 

o 

o o 

o 

z 

• o 

o 

o o 

o 

z 

• 



o 

3 O 

>-1 

ri 

o o 

o o 

o 

O 

■ z 

O 3 

>- 



UJ — 

CD 

h-'-'Oh-h-h- 

h- 

h- h- 

K Z 

3 

O • h- 

H 

h- h- 

h- S£ 

3 

CD 

h- 


h- 

U K 

3 

V 

O h- h- 

h- h- 

h- 

K 

3 CD ■ O 

s— 

3 O 



SC o 

r- 

O O K O O O 

o 

o o 

o u 

3 

Z 3 0 

o 

o o 

O CJ 

3 

Z 3 

c 


o 

M O 

3 3 

Cl 

h- O O 

o o 

o 

O 

U 3 Z 3 h- 

O D 

3 h- 


O X O X 

O 3 Z 

O 

O Z O o o o 

o 

CD O 

o o« 

O 3 

© i-* © f 3 O 

o 

O CD 

CD O <1 

0 3 0 

•H o CJ 

X 


CD 

X O CD 

OOO 

z 

O CD CD 

ID CD 

CD 

CD O 

C 030 h 0 U 0 

O CD O 

o o o 


<S -h O 1 

O' X cc 

O 

cc o 



O 3 

o a 

o * o <r 



in 3 

in cs in 

’ 3 C m « 

3 



a >o 

cn >- in 

3 

CD 



T-i 

-ST-iCST-ij^riiXCD 

rN >- 

tH © CD 


CJ Ci T-I CS 



<r ~ ^ cq T-i 

H 

CJ M 

<r <i in » 

in ■ 

in ■ in ■ t-i 

H 

ci n 

«T * >0 ■ 

«o ■ «c 



X 

C 

■ CJ cs 



«r t-i 

t-i CJ 

M 

TOO- 

■ O' ■ O' ■ O' ■ 

0 « Ci • 

CJ ■ 


Cl II C-J II 

CJ 11 

Cl 

T-I 1 ! CJ Ti II ri 

T-i 

ri t-i 

t-i ci 

CJ 

CJ Cl T 4 

r-i 

T-I rl 

Tt CJ 

CJ CJ 

CJ 



A 

Cl II 

CJ 

II 

CJ T-i T-I 

r-i ri 

tH 

T-i CJ 

CJ CJ CJ <X CM II 

CJ o 


CS Ci 

h- <E 


A Ci V A A V 

li 

U II 

II h- S- 

h- 

H- h- V 

1! 

II II 

11 h- h- 

h- 

h- f— 

h- 

K 

V 

h- V 

h- h- 

(J 

V A V 

II II 

II 

II h- 

1 - h- h- h- A 

A t- 

h- V 


o o 

O Z 

<L 

<r o o <r <r 

<r 

« « 

<L z O Z 

o z 

o z o z » 

a 

Ci cc 

« Z O Z 

O Z O 

z o z 

z 

3 

z 

Z O £ 

z z o 


U CJ CJ 

c 

c 

CJ 

u z o 

ZOZOZOZUOCJZ 

O Z Z 


hhhh 

HKh 


h- 



H h H 

h- k-l 

h- w K M 



HhH 

K m K 

t-i 1— t-i 

t-i 

3 


►H h- 

HHh 

h- 



tH h- 

H h H h H h H 

h- Hi 

h- Hi 


{£0303033 

3333333 

3 

3 3 

3 £K O SC 

o cc 

0 3 0 3 3 

3 

3 3 

3 3 0 3 

0 3 0 

3 0 3 3 3 

Z 

3 

3 3 0 3 

3 3 0 

3 

3 3 3 

3 3 

3 

3 3 0 

30303033 

0 3 3 

0 3 3 

3 

Q- O 3 0 3 

O CL 3 

*-« 

l-l 3 »-l ►-! l-i l-l 

*-* 

l-i M 

w 3 O 3 

CD 3 

O 3 O 3 w 

*-l 

t-l k -4 

s-i 3 CD 3 

CD 3 O 

3 CD 3 3 3 

t-i 

t-i 

3 3 CD w 

3 3 CD 

_! 

t—i t—i t—i 

t-i t-i 

t-i 

tn 3 CD 

3 CD 3 CD 3 CD 3 tH 

CD Hi 3 

CD 3 hi 

3 

in O O o O 

OOO 

O 

O O O O o o 

O 

o o 

O O O o 

o o 

OOOOO 

o 

o o 

O O o o 

OOO 

OOOOO 

in 

O 

in M3 C- O O O O 

O 

OOO 

o o 

O 

OOO 

OOOOOOOOOOO 

OOO 

o 

O o C-Mf 

LD -0 rv 

CD 

O' o h cm m 

'C 

rv co 

O' O Ti Ci 

n t 

in >o C' od o 

rl 

Cl W 

*■ ud *o rv 

CD O' O 

rf cj m in o 

"O 

rv 

n in n co O' o *-• 

to 

^ UD M 3 

rN © 

O' 

O Ti CJ 

M^-UD>OrN©OvrM 

cm r «3 m 

md rN © 

O 

t 4 CJ CJ CJ Cl 

ci n cj 

CJ 

cm M M M M 

m 


M ^ * <T 

■r v 

4f 4T <*■ in 

in 

in in 

in in m in 

in in mj 

-o NO -o >0 -C 

MS 

M> 

M) *0 MJ M) >0 fN fs 

!N 

rv rv rs 

IN IN 

IN 

CO 03 00 

©©©©©©©O'O'O'Ch 

O' O' O' 

O 

Cl CJ CJ CJ Cl 

C-J CJ Cl 

CJ 

Cl Cl Cl CJ CJ Ci 

CJ 

CJ Cl 

CJ CJ CJ Ci 

CJ Cl 

Cl CM CJ CJ Cl 

CJ 

CJ CJ 

CJ CJ CJ CJ 

CJ CJ CJ 

CJ CJ Cl 

CI CJ 

CJ 

CJ 

Cl CJ CJ CJ 

CJ CJ CJ 

CM 

CJ CJ CM 

CJ CJ 

CJ 

CJ CJ CJ 

CJ CM CJ CJ CJ Cl CJ CJ 

Cl CJ CJ 

CJ CJ CJ 

fn 


cd cn 

z ui 

Hi 0 ) 

co in 

■ ■ cn ui 

• — 3 3 

3 3 3 3 

DC _1 O 

3 3 • a 

x cn • - k 

k ui >- 3 z 

CO 3 ft- 3 « - 

3 0* >* UI I- • Ui 

«>- • h 3 cn z 

h o • • z <r 

cn 3 ©• 3 _J >- UJ - w CD 

o ^HIUJIK 3 

UJ u. cn m « UI 3 cc 

X O »01Z A UJ UJ 

k © km j 03 z * x 

ce cn u m fie o 3 z s- 

u. « *■« UJ 3 > Z 30 

□ H* 3 UI cn z z 

a € <E 

8 V iD-fis. u. a > 

i: u.o « 0 lui<- o z<z 

«o >- ~ z — cn _i 

zn k »u« - o «- a 3 

o w 3 ~ 3 « ~ 3 z - u 

K §3 03.« 3 hi • ° o 

xwxkwzwSx *>-►•!- 

**© pu.es, ui»s: * ** z 

■ S««33»3»h « ZN 

s© kxc»z x * a w 

%ZUJ*WK«K ■» * 3 <E 3 

t * cn CD o 

* > ousbJ^Qvt £ * cn <r 

J u •» x@33>- « • ** u z 

3 U $» W 3 CQU 1 wo * 3 >- W 

_ 3 K eg 9 £ ca ® k h w cn * cd <£ <r 

2“®- € « 1 a: as cn * * — J cd 

o CO I ■ CO Jh 3 3 « I- 3 * 3 «• 3 3 <Z 

^ J- «wu.>ozuiwcno:3 « o 

3 ©• ©WOXZOUICDO »$* >- o >- 

uj >- z-J ^ in ooo a s- <r 

ocn«i-cn >-ug:&©xx~wu uj 3 in © O' co o o o * - 3 

. . _ X 2£ W Q 3> Ui 3 *•« I s * W <f <T IN O in * * - I- 3 

£ £ £_ « w iiS Ovu>-H (I) o rN * - z 

zpppo OOOOO© OO ZDUH- CD 3 -4- 3 >- O M tI t-i ri « h- <X O OO 

<X 3 3 3 3 OOOOO© h- hO& AC <t K th OOO * hi 3 h- h n 

a OOthOO© >- 3 « • © © K COO — f-Kt-OOO * 'OH 

tM-CM-M HrinNfft II JOhShK © CO hi CD O t-i O O O h- S— h- # CD O ri th tH 

x o j»- «cn uj * i— 1 cn cd 0 0 o o ** - o 

o UJ UJ UJ UJ OOOOO© ©>• M _J &>-•»> ■> 1 - z O ~ CD CD CD «•>«-«•> * > h- >-UJ OO 

0- £ K S- h- S- K -J « 3>>J3U£® « UJ CD *<«-CM'C ••■■■■» * — « 3 Kh- 

x >*>->- > OOOOO© 3 -J SMOZDIlIB * X XX Oa'C«HCD’rC-JfMMMHn(* T-IO * * — x o> ooo 

3 h- h- »- h- CD ID O CD CD © 3 S» «»-Z>-OZ3Z O 3 h I O CO + MD * — h- OK OOO 

• ■ ■ • ■ N o« •a.s.o.flC - ^ -CD O n H II 11 II U II II.. Z CM .... > - »-< O 

H ^ H N M f [j H X II V H A A A A A A II r* Ohh 

t t t t t t V A 11 11 11 I *“►“ HKKHKKKX KZ hi- II O Q h h h h h i- h Z hhhh hhh li 11 

ZZZZZ3MNNNNIN ZZ ZZZZZZZ Z Z30 OO OOOOOOZZZZZZZ O ZZZZ ZZ3hhO 

HHHHHiL MW MMMMMMMH M h- Mft, h" KK HHHHHHH »—»— ZI »-<>-<>—< >—< H *-H U. KO 

flcacftiQCflczu.u.ii.ii.u.k.liK frz oc9cecscocccocutocccuioccc3:u-UiiuouiLLU.ii.ii.ii.u.iccccccca:cccccc:u}Oiiicccccccccccccc2:iL.u.az. 
(LlULlHHHHHHNttfcttfl.fllltlLtJfl.iJfl.O.WHjWpjWHWHHHQ.iLlfl.lLCLiu_IOQCu.Q.u.liIu.ii.HHHOliJ 

?2^«^I 0 ?S O0o P2PS o ® 00 ©® 00O0 ®° o0000|n ' <)rs,0OOOO000000O0O00OI, ' )00000000000 

a *2222S^ r4W<r,n>0 ^^ w ” <r,rt, ®^*®®*©^ww^‘i0'0rv®0'rsr'.fvf^CD0‘O^CNM^uT'CrN.00ChO^cNf0inii‘)'0a)0'O-frjm^iiTrvQ0 

©ooooooooooO*if«»«rtHHrtHHPiNNNNNNNNNMnnnMn.»»»^»»wwiniflioininiiTininin'0'0'0'0'0'0'0'0 


O Ui 
Z 3 

1-* <r 
■ ox 
• z 

* Cl. Ui -1 


a 


cn 3 i _ 

Ui UJ t-i 
Z uiu 3 
Z U 

€ <Xh u 
Z U. UJ iC 
» C 

o cn 

ZuC 
w x h- (- 

3 <r x 

O U K Ui 
3 O Z 
3 O Z 
0 3 UJ 
U. V- SC X 
O h- 

uj cn 

X 3 K 3 
h CUIlll 
UJ £0 Ui 
Z O U. 
►H O 
— h- 3 
Ct iC O 
UJ Ul z >- 
>- K O 
<1 3 M K 
3 U. K O 
CL X 0 . Z 
O O 

cn cj sc 

i—i V Ui O 
X 

>- SC h- sc 

UJ 3 3 

CJ 3 3 X 
3 <X 3 h- 
O 3 C 3 
I O X X 
>• 3 

3 3 3 
CJ X O Z 
C h- >- O 


• 3 

♦ CL 
O Z 


h- h- 

cn 3 
cc ta 

H4 

3 O 
K 
3 

X h- 


3 O 
h- Z 
3 

Ci O 


3 3 
3 O 

<r >- 


cn 

cc 

<r 


O C K 

O O z 


z z z z z z 

: |X iz CC CC CC CC CC II I! cc 
. Ci. iiu-u.iii.iZCil 


. ri r-j m in -o o o 0 o 

■ COOOOOH-CNO- 


o o 

o o « 

cj re cjcjcjrjrjrjcjrjrjcj 


Page 26 

216 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


August, 1976 








c 

h- 

O 


gui 

£z 

do 


a 

:> 

<£ 

X 


UJ 

:> 

<1 

X 


O in 

<3- < 

in m 

in in 


> 0 aH 

in -*- 
■ in ® 
in II 
h ® 
x o 

w h- I- 
CL O UJ 
A CD 3 


h- ■ 

o 

A Z 

* M 

o cj <x 

O « CD 


o o 
m n 
in 

in m 


A 

X iL 

3 o o u u 

O hhO« © <x_ 

>OOONTOmOHT« 

inoo-4- m+ in + uj 

■ in n>intt a inn>«iH 

in cm >o ii in ii in ii ^ *-t 

I- II II ffl h- © h- CO h I- H A II 
ZOQQ ZO ZO ZZ3«-«n 
H h hW|-|-M|-l-HH(L 


o o 
I— h- 
O O 
CD o 


© 

© 

o 


>— 1 r- r- *-» r- p— pi i— >— « m a. *-» t— 

aoaaaaoaaoaaazaaaxa o z 
LLOHwjiiojQ.oja.iLMHHa.ia. o ui 

ifiooiiiooHfi'ONOHNifi'OooHwinoH in o 

0‘O^HMMnf<mnt^<rtTin-fl>0'0'0NN n cd 

^inmininmminmmmmmmminmmmminin in m 
w in in ut iii m m in in in n in w m in m « io bi n ui iii in in 


<r 

h- 

O 


CD CD CD CD CD CD ro f*5 

. r-i • r-i ■ 

m <a- in -o p-*. co in in 


a a a a a a : 


)ZCzazczo: 

jaoaoaoxoc 
) a. 0 a. e o. a. cd ■: 


< <r 

cm r-j 
in U~ 


iii Ui 

: ui a a 


m 

N 5- r- n <» 

.a. 


... 

aa. 

.a 

o K5 

lO M> h M <» «- «■ 

«. 

- «a «. 

<000* 

© © O © 

o 








N N 

NNNfflCD*' « ■ 



< K3 >0 < 


V 




>- 



>- 

cm rj 

CM “I CM CM CM > 


> 

mm < m 

m m m m 

a 

j, 



CL 

A 

Z 

A 

m m 

ud in in in m 3 a 

A 

Z A 

tn m 

m w m m 

• 


3 

A 

iL 

3 

o 

A 


3 A A 

3 

O A 

o © 


o 


O O i_» 3 A 

<£ 

UJ 

A 

X 

<#■ A 

o o 

OOOOOA « A 

A 

Z * A 

*- O O h- 

o o o o 

, r 


*- *- !- f- A 



A 

A 

X 

h- h- 

h- h- K 1- h- A A I 

A 

A X 

Oh h O 

i- h-1- h- 

A 


3 O 3 C 

H tH 

3 

t-t <1 

o 3 o 

o A 

O O 

000.00 © © U © « © 3 © OU 

000150 

o o o o m 

L 


. JOll JHW- 


' CD CD ( 

) «r in - 
ii i< 

i ui UJ i 

U. A U_ Ll a cl t 


. CD 


Z O 

ri h- 

x o 

A CD 


zozczozoz 


■ Ui 1 


CD CD CD CD CD CD CD t* 


a 

h- 

UJ A 


cm ro < in -o r* m in 

II II II II II II H K 

AAAAAAZOZO 

HhHl- 

u. Il U. Ii. Ii. Ij. K O K O 


■ t . t • t • 

m m m m 
»— *— i— *— i— 

zozozozoz 

*—* I— ►—< |— 6—« *— »—I b— »-4 
AOAQAOXOX 
A CD A CD .a. CD 


oo h o o o o + mi 

nui u.m » • m <n 

« MtiuAnHwnMi m« 
ll» V I I V M II I! H CQ fr— ffl 
©AOQOQ©©© ZO 
h- h- i- ►-< h- h- 

AAAAAOAAAAAAOA 


M<rb1'CNCDHNKCin-CM]3^OrtrJW^bT'CNHrJMtin'CNHrJW^iil'0M3D&-OHnM<'HW|»)^in>0NHNntinH)N80>OHNMtOOOOOOwNmOinOO 
OOOOOOwHHHrtHHHHMCJl'iCIflWCIfJNinfOMfOrOM^fr^fl-^^’ftrbTinininin'O'O'O'O'C'O'ONNNNNNNNMDOBCDBHMntin'O'O'O'flNNfflD- 
r-i r-j cm r-i r-j r-j r-i r-i r-j cm cm cm cm cm cj cm r-i cm cj cj cj cj a cj cj r-j cm r-j cj cm cm cj cj cj cm cm r-j cm cm cm cm cm cm cm cm cm cm cm cm cm cm cmcm cm cm cm cm cm cm cm cm cm cm cm cm < < < < <e «r < < < < < < < 
in in in in mmmmmmmmmmmmmmmminininininininininmminmminminmmmminminmminmmminminminmjininminininininininininininmminmmminm 


Z Ci 

M z 

<X C 


>- <r 

CL CD 
I- <X 


05 

■ ■ A 
>- CL UJ 

z o © 
z 

A 05 3 
h flCZ 
UJ 

CL ffl £L 

o r <r 

3 A 
CL Z h- 
UJ 

no cl o 

3 CL h- 
Z h- 


Hh-HV03 


- 05 
05 A 
CL UJ 
* UJ A 

> A Z 

> Z 3 
< 3 Z 


cl a 

UJ 3 
h- h- 

z 

UJ CL 
3 

♦ o 

CL >- 
UJ 

A >- 
X A 
3 

Z fiC 
UJ 


UJ CL Z 
£L 3 «t 
CL O X 
C >- I- 
oc 

*- Z AC 
« UJ 
UJ z CD 
D h QC 
« <C 
X K J 


o o © o 
< h o 
O O o 

M 1*1 fJ h 

0 0 3 0 
H ►- t- *- 
O O O O 
CD CD 'CD CD 


OOOOOOOOOO 

-.nm«?-in-ONGOt>o 

OOOOOOOOOO 


.3 
: cn z 
: cn 
I UJ >- 
: 3 r 
■ CD 

<L 

I O € 
I I— QC 


UJ 

3 -I 05 
OJH 
>- « 

Z CL 
U. (OUl 
M A 

05 Z 
3 0 3 
O Z 

CL 
UI 


CD - 

° CL CL 
w UJ 3 
A O 
- Z >- 
CL 3 
U Z Ll. 
A O 
Z CL 
3 <X UJ 
Z CL Z 
I- O 

>- 

ZCC05 
3 <r 
A O 
UI >- UI 
Cl Z 
CL « <C 
<X Z 05 
A UI 
f— UI UJ 
3 X 
UJ H- O 
3 UJ 
<r A CD 
X * o 


V A 
A Z 
KUI3 
<L A Z 
X z 
I- 3 >- 

z z • 

3 

O >- 05 05 
5-ZQ.QC 
<£ UJ 
JHIfli 
3 « AC Z 
UJ X UJ 3 
hhfl.Z 


3 A 
O Z 
Z 3 

jC z 

3 CL 
O <1 
>- CL 


o t-_JAXoZICL 
3> JI « « 

CL OC O UJ 3 U. Ii. U K £ 
«Hhh|-ZHWZO|- 

lY o a a b a ■ ■ 1 a • 

I— 

HI—(-hi—hi— hHH 

••zzzzzzzzzz 

IHHHHHHHHHH 

UiCLCLAflCCLACLCLAflCC 

CLGlCLCLCLCLCLCLCLCLCLC 


05 

■ 05 

■ UI 

■ 3 


CD 
o 2 
-4- M 
^ iL 
o 2 
O o 
O I 
O h- 

A Z 
Z ' 
flC o 


A 

<L 

CL 


a 

u 

UJ 


I o I o 


A X 

I! O 


O O 

M o O O O O u 

<r o o in x u 

it 

N f T3 

o o : 

Z h-h-OOOC2 

UJ OOh-KH-h- 

IMCDCDOOO 0> 
t- + CD CD CD CD 3 

> CM o 

O o CM A 


<E t- 
3 Z 
A <X 


h- 3 
O 
h- >- 


Z Z 3 Z 
h H h o A o 
: UJ CL UJ CL CL Z CL 
.30_I A A o Q_ 


11 II II 


II II 1 


h- h* I— h- h- C Z 


h- >• \ 

3 

A h- 

ZUIAAU1AAUJAAU.AA A 
O3o 


ii-43ot-*3i-i»-i»-ii-ii 


o h- 
CL O 
A a 


O K o I- h- o 


0.000 
o o o 
in m cm o 

^ O 


O CM o CM 
O h- *- II A II 11 
Z Z 3 o i—i ih *-i 
o l-i A A 

aaazaaaaz 

AAAowwmmUJ 


vD 

<r 






X 

A >- 





h* 

A <L 





O 

I- 3 





z 

3 A 





<X 

A 






Z O 





A 

O h- - » 





z 

O p • 





<c 

X O > 





3 

<r CD Z 4E 






t-t 3 



• 


3 

CD 3 A A 


05 

• 


O 

z o 


A 

CD 


> 

M 3 A X 


A 

A 



05 O U 


© 

A 


A 

3 >- ' « 


Z 

A 


►H 

© A 


3 

Z 



A A ' 


Z 

3 


r*i 

Z w A 

05 


Z 



*H «0 

A 

A 



A 

X 3 A 

A 

C 

A 


o 

CJ O © 

tt 

CL 

«£ 



« >- Z 3 

Z* 

1- 

A 


z 

Z « A 

3 


h- 


t-l 

’iL a 

Z 

A 



« 

h- CD 05 


3 

A 


CD 

O « A V 

A 

O 

3 


• « 

3 >- Z 

3 

>- 

O 

05 


CD 3 

O 


>- 

A 

>- 

3 A Z 

> 

z 


CD 

z <c 

<C n O O 


« 

z 

05 

►f 3 

3 A 

> 

X 

<x 

A 

« A 

A 05 

m 

h- 

X 

3 

CD 

O m ' A 



h- 

CD 

« O 

^4 A 

© 

A 



♦- 

Z ' ' H 

A 

A 

A 

■ 

>- 

0 3 A 


3 3 
O 

V A 
UJ 
UJ 3 
Z A 


)Ih- 
* CJ 05 l 
: <r 3 . 
■ u 3 i 


~ ~ ~ CM CM 

-- m in 

fflNN 
~ ~ ~ O O 
AAAh-h- 
Z Z Z O O 
A A A CD CD 


■ O 


ooooooooooeooooooooooooocMw^rin'Oooor-im ooooooooomoooooooo 

0 -ONCO&-O^NMfin'OMO(>-OH(MM^in'ONNNNNNMDM>.(M>- Ch O'HC'IMM'bl'ONCDOOO'O^NM^Sn'C 

ownHriCMNtNNNtNrKMWCMnNrmnnnnfiroMMMMnwMMN m in'in in m m m m 


O CM 

I- h- h- t- A A UI A II Ii 
•• Z Z Z Z A A 

z »H O »H M ►— h- I— h- 

Ui A A C 
A A A C 

OOOOOOOOOo CM o W 

oonntn'OMsaiaioo 

OHHHrlrtHH rt rt rt N PI 

minmininminmmmmmin 


August, 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


Page 27 

217 







Low-Cost 6800 Systems Software & Games 


by Technical Systems Consultants' staff 
Box 2574, W. Lafayette IN 47906 

TSC is presently involved in the creation of products which 
are currently in high demand among computer hobbyists and 
other micro computer users. Up to this time there has been 
little or no software available for Motorola 6800 based systems 
other than Monitor programs in ROM. We have developed many 
programs both useful and fun which allow the system builder 
to utilize his creation to its fullest extent. The software list¬ 
ings which we offer implement a variety of user and system 
type functions. The programs have been written in 6800 
assembly language and assembled to run on Motorola and AMI 
6800 based systems and utilize I/O routines contained in the 
MIKBUG* monitor ROM. All references to these external 
routines are clearly marked, however, facilitating conversion to 
other I/O routines. The software listings include a fully com¬ 
mented source listing, a hexadecimal machine code dump, sample 
output, and complete instructions for use. Because software 
"bugs" are bound to occur regardless of the degree of testing 
we offer a limited warranty. This 90-day warranty is limited 
to replacement of the original software listing or providing a 
patch at the discretion of TSC. 

For those requiring the service, all of our routines can be 
assembled at a custom address or with user supplied I/O rou¬ 
tines for an extra charge. 

New products are constantly being developed by TSC. 

These include a Micro BASIC interpreter, a scientific floating 
point package, a business and accounting system, graphics 
games, and an 8080 emulator, among others. We also plan 
to offer some of our programs on "Kansas City" standard 
cassettes. Hardware items being developed and tested for 
the 6800 based system include a cassette interface system, 

A/D and D/A boards, a high speed arithmetic processor and 
other general purpose items. All of these products will be 
available when announced in our advertising. 

We can only offer what the hobbyists want, so let us 
know what your needs are in both hardware and software. 

*MIKBUG is a registered trademark of Motorola, Inc. 


1. HANGMAN: The old word guessing game. Easily modified 
with your own word list. Requires 640 Bytes. $3.25 

2. ACEY-DUCEY: A card game played against the computer. 
Bet and try to break the bank! Requires 1K Bytes. $3.25 

3. CRAPS: A real casino craps game. Match your luck 

against the computer and try to win money. Requires 
IK Bytes. $3.25 

4. FLOATING POINT PACKAGE: Full floating point 
capability. 9 digits of accuracy with exponent range, 

-99 to +99. Four routines for add, subtract, multiply, 

and divide are all included. Requires 512 Bytes. $5.00 ( 

5. SPACE VOYAGE: Similar to the famous STAR TREK j 

with only a few limitations. Every game is a different 
adventure! Requires 4K Bytes. $10.00 , 

6. KLINGON CAPTURE: A smaller space simulation game, 1 

but, has many of the same surprises. 2K Bytes $4.75 

7. STOCKMARKET: Similar to the popular board game 

of the same name. Simulates real WALL STREET 
action. Requires 1 i5 Bytes. $3.50 

8. LINE EDITOR: Allows you to create a file in memory 
and then completely edit it. Commands are: NEW 
ADD, INSERT, DELETE, SEARCH, LIST, MOVE, 

PRINT. Will run in only 512 BytesI $4.00 


9. RANDOM NUMBER GENERATOR: Here is a routine 

which is an absolute must for writing your own game 
programs. Requires 60 Bytes. $1.50 

10. MASTERMIND: Test your logical abilities; An in¬ 
tricate guessing game requiring both skill and logic. 

Requires 512 Bytes. $3.00 

11. CARD SHUFFLE AND DEAL: Two very useful 
routines. Includes a driver routine to print out 
4 hands of 13 cards each. Requires 512 Bytes. $2.75 

12. NUMBER GUESS I: Try to guess the number the 
computer is thinking of! Requires 256 Bytes. $1.50 

13. NUMBER GUESS II: A more advanced number 

guessing game. Requires 512 Bytes. $2.00 

14. HURKLE: Try to find the hiding Hurkle relying 
upon clues given by the computer. Requires 640 bytes $2.00 

15. ROVER: Find and catch the Rover with the aid 
of hints supplied by the computer. Requires IK Bytes. $2.50 

16. SWITCH: Correctly arrange a random stfing of digits 
in the fewest possible moves. Requires 512 Bytes. $2.00 

17. CHOMP: A 2 player game which resembles a two dimen¬ 
sional "NIM" game. Requires 512 Bytes. $2.00 

18. SUBROUTINE PACKAGE: A special package of very 

useful subroutines selected by the staff of TSC. This 
package could save you many hours when writing 
your own programs. $3.00 

‘•SPECIAL PACKAGE DEALS....Supplied in a 3-ring binder 

I. Contains programs 1,2,3,6,9,10 $13.50 

II. Contains programs 1,2,3,9,10,11,12,13,14,15, 

16,17 $18.95 

III. Contains programs in I and II plus 4 and 8 $29.50 

•••••••••••SPECIAL ANNOUNCEMENT******•**•****••* 

At last there exists a valuable service to the computer hobbyist- 
THE PROGRAM OF THE MONTH CLUB- For only $2.00 you 
will get a one year membership. You will receive a monthly bul¬ 
letin describing the main selection as well as many alternates. 
Members will receive a 15% discount on the featured program. 
THERE IS NO OBLIGATION TO BUY ANYTHING! If you 
join now, you will receive free our Random Number Generator. 

[$1.00 handling charge for orders under $10. Add 5% for First 
Class Mail. Indiana Residents add 4% sales tax.] 

PITTSBURGH CLUB HAS 50 MEMBERS <& GROWING 
FAST 

There is a club in Pittsburgh. It has about 50 members and 
is still growing; all sorts of machines and hardware; anybody 
in Western Pennsylvania, Eastern Ohio or West Virginia who is 
interested can write: 

Pittsburgh Area Computer Club 
400 Smithfield St. 

Pittsburgh, PA 15205 

Or Call: 

Eric Liber (Pres.) (412) 276-6546 Nite 
Fred Kitman (Treas.) (412) 391-3800 Day 


Page 28 

218 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


August, 1976 





Shooting Stars for 
Uiterwyk’s 6800 Micro-BASIC 


Dear Jim, (received July 29, 1976) 

My copy of DDJ is arriving right on schedule—and full of good 
stuff tool. Keep up the good work. To help you and/or PCC with 
that work I am enclosing a copy of my latest game program. This is a 
version of Shooting Stars (Alias Teaser). The program is written in 
Micro-BASIC as supplied in the June SWTPC 6800 newsletter. (This 
interpreter was written by Robert Uiterwyk and Bill Turner, and has 
provided me with many hours of enjoyment.) Since the Micro-BASIC 
allows only arithmetic comparisons, I have had to use a rather unusual 
method for determining which positions are stars and which are black 
holes. The interpreter and game will fit in 4K of memory if you 
remove all the REM statements (doesn't REM mean REMOVE anyway?). 
The game features a randomization of the universe at the start of the 
game to keep you from getting too complacent or bored if you have 
a good memory. 

By the way, Corvallis is in the Willimette Valley about 80 
miles south of Portland. It is the home of Oregon State University— 
which has a good computer center (with Super Star Trek!). Unfor¬ 
tunately, our town lacks a computer store at present—know anybody 
who wants to invest in a small business in a community with an active 
and growing-technicaliy-oriented population? I'd work for a ridiculous 
wage. 

I am currently work on a text editor for my 6800 system 
which is very similar to the "classy" 8080 editor in your June/July 
issue. I still have a few commands let to program, but it is now run¬ 
ning with the INSERT, DELETE, APPEND, FIND, LIST, CLEAR, 

TOP, and NEXT commands active. I still have to get the CHANGE 
command on line. This is not too much of a problem at present 
since I use a TVT with a 32-character line—it's easy enough to change 
a whole line, so I left this one until last. Since I am using the cross- 
assembler on the computer center's CYBER system to write this 
program I may try to recoup some of my costs by selling the editor in 
an article where I can get some money for it. Rest assured that unless 
I change professions (I'm now a grad student in Oceanography), the 
source code for this and any other programs I find worth spreading 
around will be distributed at cost (mailing cost—not my development 
cost—this is a hobby, right?). 

Sincerely, 

Mark J. Borgerson 325 NW 9th, No. 3 

Corvallis OR 97330 

If you find that the other hobby mags are unwilling to publish the 
complete, annotated source code for your Editor, pass it along to us. 

We do publish useful-though-long program listings —Jim W. 

PROGRAMMING NOTES 
FOR "SHOOTING STARS" 

The game of Shooting Stars was originally published in the 
September, 1974, issue of People’s Computer Company (under the 
name of Teaser). It is well described in the May, 1976, Byte, so I'm 
not going to say much about the game itself here. The primary 
problem in writing the game in Micro-BASIC is finding a way to 
group the stars and black holes in the universe into the appropriate gal¬ 
axies. I have solved this problem using an array of nine numbers 
which are each the product of several prime factors. These are the 
values of the "F" array in the program. Each point in the universe is 
assigned a prime number value (the "S" values in the program). A pos¬ 
itive value indicates a "Star" and a negative value is a "black hole." 

The program can then check for stars and black holes with a simple 
arithmetic comparison (i.e., IF X> 0). Reversing stars and black holes 
is as simple as changing their signs. The program determines which 
stars are in a given galaxy by finding all the prime number factors of 
the "F" value for that position. The appropriate galaxy is then re¬ 
versed. The integer arithmetic of the Micro-BASIC interpreter allows 
checking for the factors of a number in the following manner: 


Suppose we have A = 3 
B = 12 

then (B/A)*A = 12/3 * 3 or 12 

But if B = 5 then (B/A)* A = 10 

because 12/5 = 2.4 and this is truncated to 2. 

This is the type of test which is performed in line 780 of the 
program. If the S value divides evenly into the F value the appropriate 
point in the galaxy is inverted. A FOR—NEXT loop checks and 
inverts the appropriate points in the complete universe. The same 
technique of checking for even division is used to print the carriage 
returns after each third point to produce a square matrix display (line 
890). 

The "S" values must be prime numbers to ensure that no extra 
factors creep into the "F" values which are the product of the 
appropriate "S" values for each galaxy. 

This program should run in any other type of Tiny BASIC 
which will handle-one-dimensioned arrays. You will have to change 
the RND statement (380, 390) to fit your random number generator. 

The RND statement in Micro-BASIC produces a random integer be¬ 
tween 1 and 32,762. Line 390 causes the starting universe to be 
biased toward black holes; roughly two black holes for each star. The 
program can easily be converted to a scale basic interpreter by using 
the INT function when checking for factors. For example, line 780 
would become: 780 IF(INT(F(X)/S(K))*S(K) = F(X) LET S(K) = -S(K). 

If you're not using a TVT with cursor control, change line 840 
to a simple "print" or whatever form of page control you need. 

Good Luck! 

00100 REM SHOOTING STARS IN 6800 MICRO-BASIC. 

00110 REM MARK BORGERSON 7-23-76 

00120 REM DESIGNED FOR SWTPC 6800 WITH TVT-11(CT-1024). 

00130 DIM FC9),SC9) 

00140 REM THE FOLLOWING STEPS ENTER THE INITIAL VALUES OF THE 

00150 REM F AND S ARRAYS.CM ICR0-BASIC HAS M0 DATA AND READ STATEMENTS) 

00160 S (1)=-23 

00170 S(2)=-3 

00180 S(3)=-19 

00190 S(4)=-ll 

00200 S C 5)=2 

00210 S(6)=-5 

00220 S<7)=-13 

00230 SC8>=-7 

00240 S(9)=-I7 

00250 F(l>»1518 

00260 FC2)=1311 

00270 F(3)=570 

00260 F(4)=3289 

00290 F(5)=23I0 

00300 FC6)=1615 

00310 FC 7 > = 2002 

00320 FC 8) = 1547 

00330 F C 9 ) * 1190 

00340 REM INITIALISE SHOT COUNTER 
00350 C=0 

00360 REM RANDOMISE STAR AND BLACK HOLE PATTERN 
00370 FOP 1=1 TO 9 
00380 X*RND 

00390 IF X>20000 SCI)=-SCI> 

00400 MEXT I 

00410 PEM PRINT INITIAL n ATTERN 
00420 GOSMB 840 
00430 PEM GET FIRST SHOT 
30440 PRINT "YOUR SHOT") 

00450 INPUT X 

00460 REM INCREMENT SHOT COUNTER 
00470 C-C+l 

00480 PEM CHECK FOP VALID SHOT 

00490 IF SCX)>0 GO TO 530 

00500 PRIMT"Y0M CAM ONLY SHOOT STARS" 

00510 GO TO 440 

00520 REM INITIALIZE SCORING COUNTER 
00530 P=0 

00540 REM INVERTCCHANGE SIGN) OF APPROPRIATE GALAXY. 

00550 G0SUB 770 

00560 REM CHECK SCORE BY ADDING STAP VALUES 
00570 FOP L=1 TO 9 
00580 B-B+SCL) 

00590 NEXT L 

00600 REM PRINT OUT MODIFIED UNIVERSE 
00610 GOSIIB 840 

00620 PEM IF B=-100 ALL POINTS ARE BLACK HOLES 

continued 


August, 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


Page 29 

219 


00630 IF B«-100 GO TO 690 

00640 REM IF B IS NEITHER -100 NOP. 96 GAME CONTINUES 
00650 IF n<>96 GO TO 440 
0066 0 PRINT'trOU HIM" 

00670 PRINT"YOU FIRED "tZi" SHOTS." 

00680 GO TO 700 
00690 PPINT"YOU LOST" 

00700 PRINT "TO PLAY AGAIN T v_l ii ' RUN *» CP." 

00710 GO TO 950 

00720 REM THE FOLLOWING SUBROUTINE CHECKS TO SEE IF THE F VALUE 
00730 REM FOR THE SHOT CAN BE EVENLY DIVIDED BY THE SVALUE 
00740 REM FOR EACH POSITION. IF S DIVIDES INTO F WITHOUT 
0B75e REM A REMAINDER, THE STAR OP BLACK HOLE IS INVERTED 
00760 REM (ITS SIGN IS CHANGED) 

00770 FOR K-l TO 9 

00780 IF(F(X>/S <K>)*5(K)«F<X) S(K)«-S<K) 

00 7 90 NEXT K 
00800 RETURN 

00810 REM THIS SUBROUTINE PRINTS OUT THE GALAXY 

00820 REM STATEMENT 9500 DOES A HOME UP AND ERASE OF SCREEN ON TVT 
00830 REM EQUIPPED «ITH COMPUTER CURSOR CONTROL. 

00840 PRINT"<CNTRL-P><CNTPL-V>" 

00830 TOP. J-l TO 9 

00860 IF SCJX0 PRINT" ."; 

•0870 IF S<J)>0 PRINT" *"I 

00880 REM IF J ISN'T DIVISIBLE BY 3, SKIP CARRIAGE RETURNS. 

00890 IF J/3*3<>J GO TO 920 

900 PraWT 
910 PMMT 
920 N 2XT J 
930 RETURN 

940 R m END OF SUBROUTINE AND GAME 

930 END 
READY. 




A PL/6800 CROSS COMPILER 


Intermetrics, 701 Concord Ave., Cambridge MA 02138, is 
reported to have a PL/M-type cross compiler for the 6800. 



6800 TBX FOR FREE . . . 

BUT IT’S SOFTCOPY 

Dear Folks, 12 June 1976 

The receipt yesterday of DDJ iVol. 1, No. 3], and the continued 
inability or unwillingness of Sphere to deliver a BASIC interpreter has 
motivated me to write you with some good news and some bad news. 

First, the good news: 

I am willing to place in the public domain a running version of 
TBX which I developed for my 6800 (Sphere) system. It contains all 
of the features of TBX as published in DDJ [Vol. 1, No. 2], including 
the DATA statement; plus REMarks, LOAD & SAVE (tape cassette 
commands), EDIT & CLEAR (CRT commands), and PRINT format¬ 
ting with a *:* for concatenation with no space. 

Now the bad news: 

My listing is in the same sort of shape as the TBX one you 
published—probably for the same reasons—i.e., hand-written on about 
55 IBM assembler coding sheets, hand-assembled into hex. 

Additionally, the code jumps about to patch locations, is CRT- 
oriented, and uses routines in the Sphere-supplied PROM monitor 
whenever possible. 

If you would be interested in publishing this, (and can scrape up 
the necessary volunteer iabor to type it into your format) I will send 
you a copy of the listing plus a page or so of comments about the 
significant differences from TBX as you published it. Please let me 
know. 

Sincerely, 

Chuck Crayne 734 S. Ardmore Ave 

Los Angeles CA 90005 

Well, all you 6800 fans who have been yelling for software . . . 
How ’bout pitching in and gening some publishable-sharable hardcopy 
and documentation? — JCW, Jr. 


SINGLE-CHIP CONTROLLER FOR 6800 

Motorola has scheduled a single-chip controller for the 
6800 m-p for delivery around the second quarter of 1977. 
Designated the 6802, it will have 8K bits of ROM, 256 bits 
of RAM, and will include I/O capabilities. 


(ANOTHER) L.A. STORE: 

THE DATA CENTER 

Gentlepersons: May 13, 1976 

We are currently opening "The Data Center," another 
micro-computer store, in the Los Angeles area. 

Sincerely, 

Mel Norell 3400 Wilshire Blvd. 

General Manager Los Angeles CA 

Program ma 90010 


SPACE GAMES MARATHON (IN MENLO PARK, CA) 

The Community Computer Center, 1919 Menalto, 
Menlo Park, CA 94025, is having a computer marathon on 
August 20th and 21st. During the 24-hour period be¬ 
ginning at 9 PM, Friday evening, the Center will offer 
reduced rates for computer time ($1.20/hour), and will 
charge a one-time admission fee of 50 cents. There will 
be 25 door prizes each being an hour of free computer time 
at the Center. 

There will be for-fun (non-prize) competition for such 
things as most ships destroyed, longest time, etc. 


AMI 6800 EVALUATION KIT INCLUDES TINY BASIC 


American Microsystems, Inc., 3800 Homestead Rd., 

Santa Clara, CA 95051, is marketing a 6800 Microprocessor 
Evaluation Board. It includes the 6800 version of Tiny BASIC, 
a ROM-resident prototyping operating system, and a built-in 
EPROM programmer. In kit form with a PC (evidently with¬ 
out memory?), it is $295. With 512 bytes of EPROM, the kit 
is $595. A fully assembled kit with 2K bytes of EPROM is 
$950. 


SOMEONE COPIES 6800 TINY BASIC...AND PAYS, ANYWAY 

Tom Pittman, [Box 23189, San Jose, CA 95153] who is 
offering an excellent version of Tiny BASIC for the 6800 for 
$5, told us of receiving a five dollar payment from someone who 
said he had already copied the documentation and paper tape 
(from a friend) and was sending the payment "retroactively". 

FAR OUT! (As we used to say in the ’60’s). We applaud 
and encourage such actions by hobbyists. We feel Tom is 
charging a fair price for a good product. This case supports 
our theory that reasonably priced software will not be "ripped 
off" by hobbyists. 

We actively encourage the continuation of such ethical 
behavior on the part of hobbyists, relative to fairly-priced 
software. We believe that it will encourage Tom and other com¬ 
puter pros to continue to develop excellent software and offer 
it to the hobbyist community at reasonable prices. We applaud 
such action by vendors such as Processor Technology, Apple 
Computer, Southwest Texas Products, Digital Research, and 
others. 


Pag* 30 

220 


Dr. Dobb’s Journal of Computer Calisthanics & Orthodontia, Box 310, Manlo Park CA 9402S 


August, 1976 


















MINOL: TINY TREK- 

MORE DETAILS & A CORRECTION 

Dear Jim, July 12, 1976 

If you are planning to publish the TINY TREK game, here are 
some additional details and corrections. 

Sincerely, 

Erik Mueller Britton House 

Roosevelt NJ 08555 


Too late! We have already published it in DDJ Vol. 1, No. 6. — JCW 


TINY TREK 
(written for MINOL) 


1234567 

1 • K • 

2 K 

3 K K 

4 • • 

5 B 

6 E 

7 


ile TVT screen 

update 

looks like this: 

SECTOR 

6 5 

- Location of the Enter¬ 
prise in quadrant 

STARDATE 

76 

- Increases by one each 
display 

ENERGY 

231 

- Amount of energy 
(maximum = 255) 

KLINGONS 

12 

- Number of Klingons 
left in galaxy 

CONDITION 

*RED* 

- There are Klingons in 
the galaxy 


7 UNIT HIT FROM KLINGON 


COMMAND? 


On the space printout, the "K" represents a Klingon ship; the 
a star; the "B", a starbase; and the "E", the Enterprise. 
The purpose of the game is to wipe out all the Klingons 


without the energy dropping below 60. 

COMMANDS 

1. Go to new sector (move within quadrant). The 
amount of energy used depends on the distance traveled. 

2. Go to a new quadrant. The galaxy is made up of an 
infinite amount of quadrants (such as the one above) which 
are generated when you move to them. You wll never see the 
same quadrant twice, and you have no control over where you 
go. The amount of Klingons in a quadrant is always less than 
or equal to the amount left in the galaxy. 

3. Fire phasers. You fire phasers to destroy Klingons. 

The amount of energy used depends on the distance away 
from the Enterprise. 

Traveling or firing through obstructions is OK, although 
you may not move to an occupied sector. 

Refuelling is accomplished by "orbiting" a starbase: 
Maneuver yourself to within one unit of it, and then move 
to adjacent sectors until your energy goes back up to 255. 

Corrections to listing previously sent: 


3 X=1 : A=0 : S=250 : T=250 

10 J=J+1 : IF A=W; G0T012 : IF J<8; G0T09 

16 (delete) 

13 ( 12,E- 1 *8+f+200 )=3:IF 150<I; G0T017 

39 X=X+1 : IF X 8; G0T022 : PR : IF L<50 ; GOTO170 

OOOOOOOOOQQOOOOOOOOOOOOOOQOOOOQOQ 

ERRATA FOR COATS’ 

TVT-2 KEYBOARD LOADER 

Bob, 6/18/76 

I just received a copy of Dr. Dobb’s Journal Volume 1, No. 3. 
I was looking over my program on page 16 ["Keyboard Loader for 
Octal Code via the TVT-2"], and I noticed an error. The label GO 
should be at 006, and location 061 should contain 006. 

Keep up the good work. 

Jack O. Coats, Jr 213 Argonaut, No. 27 

El Paso TX 79912 


August, 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


Page 31 

221 









MINOL Errata & Praise 

Dear Jim: July 5, 1976 

I have just received a letter from Joseph F. Gaffney 
listing, a zillion errors or typos in the MINOL listing. Below is 
a list of the corrections that should be made. Apparently, the 
listing has, been published. But I still haven’t received the 
issue or any issues after the third. Please check with the sub¬ 
scription department for me. **ERRORS** (Most of them 

were pointed out by Joseph F. Gaffney, 321 Lyndhurst Ave., 
Lyndhurst NJ 07071.) 


Changes 

are underlined. 


GSM 

001106 



002345 303 013 001 


ACT 

003123 



003211 

CPI “£’ 


003206 312 371 003 



003317 320 315 003 



003327 016 000 

MVI C 0 


003333 312 345 003 



003375 303 134 003 

JMP, NXGT 


004043 303 134 003 

JMP. NXGT 

NXGT 

003134 



004005 176 

MOV A,M 

INPTXT 

004052 



004135 302 144 004 



004155 303 057 004 

JMP, INO 

CHEKN 

005062 



005256 312 276 005 

JZ, INU 


006027 376 243 

CPI 


006353 311 

RET 


006053 322 013 001 

JC, LPBUB 


006056 303 041 001 

JMP. EXEC 


006101 302 066 006 

JNZ.SHME 

Sincerely yours. 


Erik T. Mueller 

36 Homestead Lane 



Roosevelt NJ 08555 


Thanks for the errata. Your subscription was entered 
on May 19th. Issues no. 4 and no. 5 were mailed a week and 
a half apart, about a month prior to your letter. I encourage 
you to complain to your local congressional reps (complaining 
to the Post Office appears to be useless). I also mailed an 
extra copy of the issue in which MINOL appeared, separately. 

-JCW 


Dear Mr. Warren, July 19, 1976 

Erik Mueller’s MINOL version of Tiny BASIC in the 
April issue is fantastic, and I’m really enjoying it! I relocated 
it to fit with my monitor (a modified ‘JAMON’ [MITS User’s 
Group]), and it’s running with a Model 33 Teletype. Some of 
the MINOL subroutines are useful in other programs as well, 
and are easily called (particularly useful is PRINTXT). MINOL 
is fun, certainly, but it is also very amazing (how can it be so 
smart and yet so small?). 

There were a few typographical errors which were easy 


to correct. Corrections (at the original addresses) are shown 
below. 

Address 

Was 

Change to 

001/350 

342 

242 

002/050 

274 

273 

002/346 

OMITTED 

013,001 

003/207 

271 

371 

003/317 

320 

302 

003/320 

OMITTED 

315,003 

003/327 

OMITTED 

016,000 

003/334 

OMITTED 

345,003 

004/005 

OMITTED 

176 

004/060 

OMITTED 

107 

004/137 

OMITTED 

004 

005/256 

OMITTED 

312 

005/257 

DISPLACED 

276,005 

006/353 

OMITTED 

311 


As the program stands, the processor will enter an 
endless loop if you try to divide by zero. This doesn’t hurt 
anything, but it does hang it up. To cure this, you might wish 
to add the following routine to test for division by zero. It 
adds Error 7. 


Change: 

003/326 

315,000,004 

CALL DIV0 

DIV0 * MOVAB 

004/000 

170 

MOVE B TO A 

ORAA 

004/001 

267 

SET STATUS 

MOVAC 

004/002 

171 

MOVE C TO A; 
STATUS UN¬ 
AFFECTED 

MVIC 

004/003 

016,000 

CLEAR C 

RNZ 

004/005 

300 

RETURN NOT 
ZERO 

MVIB 

004/006 

006,067 

ERR ‘7’ 

JMP 

004/010 

303,226,004 

JMP ERR 

*This is my ‘relocated’ code. Any convenient locations 
will do. 


Yours truly, 

Phillip L. Hansford 6841 Haywood St. 

Tujunga CA 91042 


EUGENE STORE: 


THE REAL OREGON COMPUTER CO. 

Dear Bob, 4/26/76 

Indeed we are running a store and would love it if 
you mentioned us. The store opened May 8. 

Thanks, 

John Montgomery 205 W 10th 

The Real Oregon Computer Co. Eugene OR 97401 


NEW CLUB CONTACTS: VENTURA COUNTY 
COMPUTER SOCIETY 

VCCS is a Chapter of the Southern California Computer 
Society. Its mailing address is P.O. Box 525, Port Hueneme, 
CA 93041. For more direct responses, contact their Secretary, 
Fred Moeckel, 4240 Harbor Blvd. No.208, Oxnard, CA 93030. 


Page 32 

222 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


August, 1976 


















Computer Music Bibliography 


by John Snell, Research Engineer, People's Computer Co. 

Box 310, Menlo Park CA 94025; 415 323-3111 

Digital circuits may be used for controlling analog syn¬ 
thesizers, direct digital synthesis, composing music, analyzing 
(or tracking several parameters of) traditional musical instru¬ 
ments and the voice, spacial movement of sounds, and pro¬ 
cessing of musical sounds (filtering, reverberation, choral 
effects, etc.). I hope the following list of articles and books 
will help some of you to develop systems which are capable 
of making music enjoyable even by master musicians. This 
list is relatively short, and includes only a "taste" of relevant 
topics not specifically about digital music. For a more compre¬ 
hensive, well-organized listing see the bibliography from 
Electronotes (a fine electronic music periodical edited by 
Bernie Hutchins). 

J. Allen, "Computer Architecture for Signal Processing," 

IEEE, Vol. 63, No. 4; April, 1975. 

W. Apel, Havard Dictionary of Music, Halliday Lithograph, 1969. 

J. Backus, The Acoustical Foundations of Music, W.W. Norton, 

1969. 

J.K. Baker, "The DRAGON System—An Overview," IEEE, Vol. 
ASS P-23, No. 1; Feb., 1975. 

S.C. Bass, and BJ. Leon, "Designers' Guide to Digital Filters," 
EDN, Jan. - June, 1974 (6 issues). 

J.VV. Beauchamp & H. Von Foerster, editors. Music by 
Computer, Wiley, 1969. 

J.W. Beauchamp, "Analysis and Synthesis of Cornet Tones 
Using Nonlinear Interharmonic Relationships," JAES, Vol. 23, No. 10; 
1975. 

J.W. Beauchamp, "A Computer System for Time-Vafiant Har¬ 
monic Analysis and Synthesis of Musical Tones," Music by Computers, 
1969. 

J.W. Beauchamp, "Additive Synthesis of Harmonic Musical Tones" 
JAES, Vol. 14, No. 4, p. 332; 1966. 

L. Beranek, "Digital Synthesis of Speech and Music," IEEE 
Transactions on Audio, Vol. AU-18, No. 4; Dec., 1970. 

S. Bertram, "Frequency Analysis Using the Discrete Fourier 
Transform," IEEE Transactions on Audio and Electroacoustics, Vol. 
AU-18, No. 4; Dec., 1970. 

B.A. Blesser, K. Baeder, & R. Zaorski, "A Real-Time Digital 
Computer for Simulating Audio Systems," JAES, Vol. 23, No. 9, 
p. 698; 1975. 

B.A. Blesser, "An Investigation of Quantization Noise," JAES, 

Vol. 22, No. 1, p. 20; 1974. 

B.A. Blesser, & F. Lee, "An Audio Delay System Using 
Digital Technology," JAES, Vol. 19, No. 5, p. 393; May, 1971. 

E. Blom, editor. Grove’s Dictionary of Music and Musicians, 

St. Martin's Press. 

D. Bohn, editor. Audio Handbook, National Semiconductor 
Corp., Santa Clara, Cal.; 1976. 

R.W. Burhams, "Digital Tone Synthesis," JAES, Vol. 19, 

No. 8; Sept., 1971. 

R.W. Burhams, "Single-Bus Keyboard Control for Digital 
Musical Instruments," JAES, Vol. 19, No. 10, p. 865; Nov., 1971. 

R.W. Burhams, "Simplified Educational Music Synthesizer," 

JAES, Vol. 19, No. 2, p. 127; Feb., 1971. 

R.P. Ceely, "A Composer's View of MITSYN," AES Preprint 
No. 811 (M-l), Oct., 1971. 

H. Chamberlin, "Fourier Series Waveform Generator, Part 1," 

EN, Vol. 5, No. 39, p. 2; May, 1974. 

J.M. Chowning, J.M. Grey, L. Rush, & J.A. Moorer, Computer 
Simulation of Music Instrument Tones in Reverberant Environments, 
Stanford University Dept, of Music Report No. STAN-M-1; June, 1974. 

J.M. Chowning, 'The Simulation of Moving Sound Sources," 
JAES, Vol. 19, No. 1, p. 2; Jan., 1971. 

J.M. Chowning, 'The Synthesis of Complex Audio Spectra by 
Means of Frequency Modulation," JAES, Vol. 21, No. 7, p. 526; 

Sept., 1973. 

J.M. Chowning, "Stanford Computer Music Project," NW, 

No. 1; 1972. 


W. Cochran, J. Cooley, D. Favin, H. Helms, R. Kaenel, W. Lang, 
G. Mating Jr., D. Nelson, C. Rader, P. Welch, "What is the Fast 
Fourier Transform," IEEE, Vol. 55, No. 10, p. 1664; Oct., 1967 

R. Crochiere, & P. Penfield, Jr., "On the Efficient Design of 
Bandpass Digital Filter Structures," IEEE, Vol. ASSP-23; 1975. 

M. G. Crosby, "Carrier and Side-Frequency Relations with 
Multi-Tone Frequency or Phase Modulation," RCA Review, Vol. 3; 

1938. 

D.R. Curtis, "A Monolithic Voltage-Controlled Amplifier 
Employing Log-Antilog Techniques," JAES, Vol. 24, No. 2; 

March, 1976. 

D. De Kold, "Binary Division Produces Harmonic Fre¬ 
quencies," Electronics, Dec., 1972. 

J.L. Divilbliss, 'The Real-Time Generation of Music with a 
Digital Computer," JMT, No. 8, p. 99; 1964. 

J. Dubnowski, R. Schafer, & L.R. Rabiner, "Real-Time Digital 
Hardware Pitch Detector, IEEE, Vol. ASSP-24, No. 1; Feb., 1976. 

J.L. Flanagan & L.R. Rabiner, editors. Speech Synthesis, 

Dowden, Hutchinson, & Ross; 1973. 

A. Forte, Tonal Harmony in Concept and Practice, Holt, 

Rinehart, & Winston; 1962. 

N. V. Franssen St L. Van der Peat, "Digital Tone Generation 
for a Transposing Keyboard Instrument," Philips Tech. Rev., 

No. 31, p. 354; 1970. 

M.D. Freedman, ‘Technique for Analysis of Musical Instrument 
Tones," Ph.D. dissertation. University of Illinois, Urbana; 1965. 

M.D. Freedman, "Analysis of Musical Instrument Tones," 

JASA, No. 41, p. 793; 1967. 

M.D. Freedman, "A Method for Analyzing Musical Tones," 

JAES, Vol. 16, No. 4, p. 419; Oct., 1968. 

S. Freeny, "Special-Purpose Hardware for Digital filtering," 

IEEE, Vol. 63, No. 4; April, 1975. 

R. G&el, "A Parallel Arithmetic Hardware Structure for Re¬ 
cursive Digital Filtering," IEEE, Vol. ASSP-22; Aug., 1974. 

J. Gabura & G. Ciamaga, "Computer Control of Sound 
Apparatus for Electronic Music," AES preprint No. 520; 1967. 

S. Gill, "A Technique for the Composition of Music in a 
Computer," Computer Journal, Vol. 6, No. 2, p. 129; July, 1963. 

J. M. Grey, An Exploration of Musical Timbre, Stanford Univer¬ 
sity Dept of Music Report No. STAN-M-2; Feb., 1975. 

P. Grogono, "MUSYS: Software for an Electronic Music Studio," 
Software—Practice and Experience, No. 3, p. 369; 1973. 

H.L.F. Helmholtz, On the Sensations of Tone as a Physiological 
Basis for the Theory of Music, translation—originally written in 
German in 1863—and additions by A.J. Ellis, Dover, N.Y.; 1954. 

W. Henke, Multiple Interactive Tone Synthesis System, 

Research Laboratory of Electronics, M.I.T.; Oct., 1971. 

L. Hiller & L. Isaacson, "Musical Composition with a High- 
Speed Digital Computer," JAES, Vol. 6, p. 154; July, 1958. 

L. Hiller, "Computer Music," Scientific American, p. 109; 

Dec., 1959. 

L. Hiller, "A Review of Decca Recording DL-9103, 'Music 
from Mathematics'," IEEE, Vol. 51, No. 3, p. 538; March, 1963. 

L. Hiller, "Musical Applications of Electronic Digital Com¬ 
puters," Gravesano Review, pp. 26-28; Nov., 1965. 

C. Hovey & D. Seamans, "A Polyphonic Keyboard for a 
Voltage-Controlled Music Synthesizer," JAES, Vol. 23, No. 6, p. 459; 
1975. 

K. Huehne, "Programmable ROM's Offer a Digital Approach to 
Waveform Synthesis," EDN, Aug., 1972. 

B. Hutchins, "B-004 Sourcelist of Electronic Music and Musical 
Engineering," EN, 1975. 

B. Hutchins, Musical Engineer’s Handbook, (EN address) 1975. 

B. Hutchins, 'The Frequency Modulation Spectrum of an 
Exponential Voltage-Controlled Oscillator," JAES, Vol. 23, No. 3, 
p. 200; 1975. 

B. Hutchins, "Application of a Real-Time Hadamard Transform 
Network to Sound Synthesis," JAES, Vol. 23, No. 7, p. 558; 1975. 

B. Hutchins, "Digital Harmonics 1, Waveshaping 2," EN, Vol. 2, 
No. 12, p. 5; Sept., 1972. 

B. Hutchins, T. Mintner, & C. Anderton, "Digital Harmonics 2," 
EN, Vol. 2, No. 13, p. 12; Oct. 1972. 

B. Hutchins, "Analog Delay for Musical Engineering," EN, Vol. 7, 
No. 56; Aug., 1975. 


August, 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


Page 33 

223 


IEEE, Vol. 63, No. 4, special issue on digital signal 
processing; April, 1975. 

F. Itakura, & S. Saito, "Digital Filtering Techniques for Speech 
Analysis and Synthesis," in Conf. Rec., 7th Int. Congr. Acoustics, 

Paper 25C No. 1; 1971. 

Ey. Jansson, St J. Sundberg, "Long-Time-Average-Spectra 
Applied to Analysis of Music," Acustica, Vol. 34, No. 1; Nov., 1975. 

L. B.W. Jolley, Summation of Series, Dover, N.Y.; 1961. 

P. Knowlton, "Capture and Display of Keyboard Music," 

Datamation, P. 56; May, 1972. 

S. Kriz,' "A 1,6-Bit A-D-A Conversion System for High Fidelity 
Audio Research," ifeEE Symposium on Speech Recognition, p. 278; 
April, 1974. 

P. Lehman, "Harmonic Structure of the Tone of the Bassoon," 
JASA, Vol. 36, No. 9, p. 1649; Sept., 1964. 

V. Lesser, D. Fennell, L. Erman, & R. Reddy, "Organization of 
Hearsay II Speech Understanding System," IEEE, Vol. ASSP-23, No. 1; 
Feb., 1975. 

T. Letowski, "Difference Limen for Nonlinear Distortion in 

Sine Signals and Musical Sounds," Acustica, Vol. 34, No. 2; Dec., 1975. 

H. Lincoln, editor. The Computer and Music, Cornell 
University Press; 1970. 

J. Link, Theory and Tuning: Aron’s Meantone Temperament 
and Marpsurg’s Temperatment “I”, Tuners Supply Co., Boston; 1969. 

B. Lin, & A. Peled, "A New Hardware Realization of High 
Speed Fast Fourier Transformers," IEEE, Vol. ASSP-23, No. 6; 

Dec., 1975. 

H.C. Longuet-Higgins, & M.J. Steedman, On Interpreting Bach 
m Machine Intelligence VI; B. Meltzer, & D. Michie, editors, 

Edinburgh University Press, Edinburgh; p. 221; 1971. 

D. Luce, "Description of a Real-Time Multipartial Waveform 
Analyzer-Synthesizer," AES preprint No. 611; 1968. 

D. Luce, "Dynamic Spectrum Changes of Orchestral Instru¬ 
ments," JAES, Vol. 23, No. 7; 1975. 

D. Luce, & M. Clark, "Physical Correlates of Brass Instrument 
Tones," JASA, Vol. 42, p. 1232; 1967. 

M. Mathews, The Technology of Computer Music, M.l.T. Press, 
Boston; 1969. 

M. Mathews, et. al„ "Computers and Future Music," Science, 

Vol. 183, No. 4122; Jan. 25, 1974. 

N. Mathews, 'The Digital Computer as a Musical Instrument," 
Science, Vol. 142, p. 553; 1963. 

M. Mathews, 8t J. Kohut, "Electronic Simulation of Violin 
Resonances," JASA, No. 53, p. 1620; 1973. 

C. A. McGonegal, L.R. Rabiner, 8c A.E. Rosenberg, "A Semi¬ 
automatic Pitch Detector," IEEE, Vol. ASSP-23, No. 6; Dec., 1975. 

N. J. Miller, "Filtering of Singing Voice Signal from Noise by 
Synthesis," Ph.D. thesis; University of Utah, Dept, of Computer 
Sdence; May, 1973. 

NJ. Miller, "Pitch Detection by Data Reduction," IEEE, Vol. 
ASSP-23, No. 1, pp. 72-78; Feb., 1975. 

F. R. Moore, & M. Mathews, "Grove—A Computer Program for 
Real-Time Music and Sound Synthesis," Communications of the ACM, 
Vol. 13, No. 12; Dec., 1970. 

J.A. Moorer, 'The Optimum Comb Method of Pitch Period 
Analysis of Continuous Digitized Speech," IEEE, Vol. ASSP-22, No. 5, 
p. 330; Oct., 1974. 

J.A. Moorer, "Music and Computer Composition," Communica¬ 
tions of the ACM, Vol. 15, No. 2; Feb., 1972. 

J.A. Moorer, On the Segmentation and Analysis of Continuous 
Musical Sound by Digital Computer, Stanford University Dept, of 
Music Report No. STAN-M-3; May, 1975. 

J.A. Moorer, The Synthesis of Complex Audio Spectra by 
Means of Discrete Summation Formulae, Stanford University Dept, of 
Music Report No. STAN-M-5; Dec., 1975. 

J.A. Moorer, On the Loudness of Complex Time-Variant Tones, 
Stanford University Dept, of Music Report No. STAN-M-4; Feb., 1975. 

NUMUS West, No. 4; 1973. (computer music issue) 

T.H. O'Beirne, "Computer Program Which Plays Music by Micro¬ 
tones," Computer Journal, Vol. 13, No. 4, p. 350; 1970. 

A.V. Oppenheim, 8c R.W. Schafer, Digital Signal Processing, 
Prentice Hall; 1975. 

W. Piston, Counterpoint, W.W. Norton Publishers. 

W. Piston, Orchestration, W.W. Norton Publishers. 

G. Plitnik, & W. Strong, "Digital Filter Technique for Syn¬ 
thesis of Bassoon Tones," JASA, No. 47, p. 131; 1970. 

R. Plomp, 'Timbre as a Multidimensional Attribute of Complex 
Tones," Frequency Analysis and Periodicity Detection in Hearing, 
edited by R. Plomp 8c G.F. Smoorenburg; A.W. Sijthoff, Leiden; 1970. 


L. Rabiner 8c B. Gold, Theory and Applications of Digital 
Signal Processing, Prentice-Hall, N.J.; 1975. 

L. Rabiner 8c C. Rader, editors. Digital Signal Processing, 

IEEE Press; 1972. 

J.C. Risset 8c M. Mathews, "Analysis of Musical Instrument 
Tones," Physics Today, Vol. 22, No. 2, p. 23; 1969. 

J.C. Risset, "Computer Study of Trumpet Tones," Bell Tele¬ 
phone Lab, Murray Hill, N.J.; 1966. 

P. Samson, "Digital Signal Synthesizer," Systems Concepts, 

San Francisco, Cal. 

P. Samson, "Digital Synthesizer—Brief Functional Description," 
Systems Concepts, San Francisco, Cal. 

P. Samson, "Digital Synthesizer—Programming Specifications," 
Systems Concepts, San Francisco, Cal. 

S. Saunders, "FM The Easy Way," Carnegie Mellon University 
Computer Science Dept 8c Xerox PARC; 1974. 

R.A. Schaefer, "Digital Generation of Equal Temperament," 
IEEE, Vol. AASP-23, No. 4; Aug., 1975. 

M. Schroeder, "Natural Sounding Artificial Reverberation, 

JAES, Vol. 10, p. 219; 1962. 

M. Schroeder, "Models of Hearing," IEEE, Vol. 63, No. 9; 

Sept., 1975. 

R. Schumacher, "Self-Sustained Musical Oscillators," paper 
delivered at the 91st meeting of the Acoustical Society of 
America; April, 1976. 

J. Sennott, "Efficient Digital Conversion of Audio Signals," 

AES preprint No. 970 (M-4); Sept., 1974. 

W. Slawson, Syntal II; A Speech Oriented Computer Synthesizer 
Revisited, Dept, of Music, University of Pittsburgh, Pa. 

W. Slawson, "Vowel Quality and Musical Timbre as Functions 
of Spectrum Envelope and Fundamental Frequency," JASA, 

No. 43, p. 87; 1968. 

G.W. Small, "Synthesis of the Musical Scale Using Non-integer 
Frequency Division," JAES, Vol. 21, No. 4, p. 261; May, 1973. 

G.W. Small, "Rate-Feedback Binary Counters in Musical Scale 
Generation," JAES, Vol. 21, No. 9, p. 702; Nov., 1973. 

L. Smith, "Score—A Musician's Approach to Computer Music," 
JAES, Vol. 20, No. 1; Jan./Feb., 1972. 

L. Smith, "Editing and Printing Music by Computer," JMT, 
p. 292; Fall, 1973. 

S. Smith, "Computer Music in 1972," Computers and Automa¬ 
tion, Oct., 1972. 

G. Steinke, "Experimental Music with the Subharchord Subhar¬ 
monic Sound Generator," JAES, Vol. 14, No. 2, p. 140; April, 1966. 

S. S. Stevens 8< H. Davis, Hearing—Its Psychology and Physiology, 
Wiley, N.Y.; 1938. 

T. G. Stockham, Jr., "A-D and D-A Converters: Their Effect on 
Digital Audio Fidelity," AES Preprint No. 834 (D-1), Oct., 1971. 

W. Strong 8i M. Clark, "Synthesis of Wind-Instrument Tones," 
JASA, Vol. 41, p. 39; 1967. 

W. Strong, & M. Clark, "Perturbations of Synthetic Orchestral 
Wind-Instrument Tones," JASA, No. 41, p. 277; 1967. 

R. Talambiras, "Digital-to-Analog Converters: Some Problems in 
Producing High Fidelity Systems," Computer Design, Vol. 15, No. 1, 
p. 63; Jan., 1976. 

J.C. Tenny, "Sound Generation by Means of a Digital Com¬ 
puter," JMT, No. 7, p. 24; 1963. 

H. M. Tremaine, Audio Cyclopedia, Sams, N.Y.; 1969. 

D.E. Walker, 'The SRI Speech Understanding System," IEEE, 
Vol. ASSP-23, No. 5, Oct., 1975. 

L. Wedin 8i G. Goude, "Dimensional Analysis of the Perception 
of Instrumental Timbre," Scand. Jour. Psych., No. 13, P. 228; 1972. 

S. White, "On Mechanization of Vector Multiplication," IEEE, 
Vol. 63, No. 4; April, 1975. 

T. Winograd, "Linguistics and the Computer Analysis of Tonal 
Harmony," JMT, Vol. 12, No. 1, p. 2; 1968. 

J. Zingheim, "Introduction to Computer Music Techniques," 

EN, Vol. 6, No. 42, p. 1; Aug., 1974. 


ABBREVIATIONS USED, AND ADDRESSES 

ACM Association for Computing Machinery 

Acustica, S. Hirzel, Stuttgart 1, Birkenwaldstr, 44, 
Postfach 347, Germany. 

AES Audio Engineering Society 

ASSP IEEE Transactions on Acoustics Speech and 

Signal Processing 


Page 34 

224 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


August, 1976 



Communications of the ACM 

1133 Avenue of the Americas, NYC 10036 

Computer Design 

Box A, Winchester MA 01890 

Computer Journal 
British Computer Society 
29 Portland Place 
London, England WIN 4AP 

Computers and Automation [now called Computers 
and People] 

Berkeley Enterprises, Inc. 

815 Washington St, Newtonville MA 02160 
Datamation 

Technical Publishing Co. 

1301 South Grove Ave., Barrington IL 60010 

ED Electronic Design 

50 Essex St., Rochell Park NJ 07662 

EDN EDN Magazine 

270 St. Paul St., Denver CO 80206 

EN Electronotes 

203 Snyder Hill Rd„ Ithaca NY 14850 

IEEE Institute of Electrical and Electronics Engineers 

345 E 47 St., NYC 10017 

JAES Journal of the Audio Engineering Society 
60 E 42 St 

Lincoln Big, Room 929 
NYC 10017 

JASA Journal of the Acoustical Society of America 

American Institute of Physics 
335 E 45 St., NYC 10017 

JMT Journal of Music Theory 

Yale School of Music 
Yale University 
New Haven CT 06520 

NW NUMUS West 

Box 135, Mercer Island WA 98040 

Perspectives of New Music 
Box 231, Princeton NJ 08540 

Science 

American Association for the Advancement of Science 
1515 Massachusetts Ave. N.W. 

Washington DC 20005 

Scientific American 

415 Madison Ave., NYC 10017 


AMBIGUITY ABOUT ADVERTISING 

The "Do You..." editorial in the preceeding issue men¬ 
tioned the fact that we don't accept commercial advertising. 
This was in apparent contradiction to the "Advertising" note 
printed inside the front cover, as well as to the obvious fact 
that we carry articles about commercial products. To clarify 
this point: 

The "Advertising" policy inside the front cover has been 
corrected to reflect our current position. The preceeding 
policy was a tentative one, chosen when we first began. 

We had been automatically reprinting that information in each 
issue and neglected, to note that it was inaccurate (blush). 

We do, and will continue to, carry articles about 
commercial products and services. We are not paid for 
this, however. It is provided as information for our readers. 
These articles often concern items that are unusually good 
deals for hobbyists (and thus worth special mention), or 
items being offered by very small companies that are too 
small to afford the hefty advertising rates charged by the 
other publications. 

Incidentally, you might note that we try to include ad¬ 
dress, telephone, and single unit pricing in these articles 
(when we know them); information often missing from 
paid-for advertisements. 


IT WAS NOT 
A “POLISH JOKE” 

There was a "digital calculator" cartoon on page 18 of the 
April, 1976, issue of DDJ that included text: "Made in Hong Kong . . . 
Polish versions also available." Our production manager, who is an 
outstanding publications production person but not a computer 
phreaque, questioned our including a cartoon with an apparent racial 
slur. We explained the rather in-group pun that was involved, and put 
his mind at rest. It occurred to us that., although no one else has com¬ 
mented on the cartoon, it might be appropriate to explain the pun: 

Handheld calculators use either infix or postfix processing for 
accepting a sequence of data and arithmetic operators. If infix pro¬ 
cessing is used, there must be some explicit means for indicating the 
sequence in which operations are to be performed. Commonly, paren¬ 
theses are used (e.g., 3 x (4 + 5) indicates that the + at the right is 
to be performed before the x at the left). 

Postfix processing, however, is a very classy parentheses-free 
system in which the order of data and operator entry determines the 
order of operations (e.g., 4 5 + 3 x produces the same result as the 
preceeding infix-coded example). The latter example says. Store 4 then 
Store 5 then Add last two elements stored and store the result then 
Store 3 then Multiply the last two elements stored. Postfix processing 
is one of the major concepts utilized in information processing by 
digital computers. It possibly rivals the concept of an electrically 
stored program, or the application of Boolean algebra to digital 
circuitry in its importance to computers. 

Why all this monologue on postfix processing? Because, more 
often than not, computer professionals refer to this as "Polish postfix" 
or simply "Polish" processing. It is so-named because its inventor was 
a Polish logician named Lukasiewicz. So, you see, if anything, the 
cartoon's pun was really a racial compliment. 



CLASSROOM USE OF HAND-HELD CALCULATORS 


The November 1976 issue of the ARITHMETIC TEACHER, 
published by the National Council of Teachers of Mathematics, will 
focus on instructional uses of hand-held calculators. Copies of this 
issue will be available for distribution at a special price of 50 cents 
each under the following conditions: 

1) . The minimum order is 100 copies. 

2) . Ail 100 copies must be sent to a single address. 

3) . Orders must be in the NCTM Headquarters Office by 

31 August 1976. 

4) . NCTM will pay the shipping charges if full payment is 

received with the order. 


To place an order, or for further information, contact Charles 
R. Hucka, Director of Publications Services, NCTM, 1906 Association 
Drive, Reston, Virginia 22091, or call (703) 620-9840. 



REPORT ON ELECTRONIC HAND CALCULATORS IN EDUCATION 


The body of the Final Report on the National Science Foundation 
supported project, "Electronic Hand Calculators: The Implications for 
Pre-College Education," is now available from the ERIC Information 
Analysis Center for Science, Mathematics, and Environmental Education, 
1200 Chambers Road, The Ohio State University, Columbus, OH 43212. 
The 350-page complete Final Report will be available later in 1976 from 

DON’T PRINT ITEMS IN DDJ 
THAT APPEAR ELSEWHERE 

Dear Dr. Dobb, 

Please concentrate on infromation not available elsewhere—if 
PCC moves toward "blue sky," DDJ should move toward practicality: 
Draw a sharp line and find out what your readers really want. MOST 
OF ALL: don:t waste space on something that has already been 
printed nationally—we have that. 

James R. Zimmerman 7835 Querida Lane 

Dallas TX 75248 


August, 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Manlo Park CA 94025 


Page 35 

225 










SMRT Will Hurt 

by Leroy Finkel 

(reprinted from PCC Vol. 4, No. 6) 

EDITOR’S NOTE: In general, we are trying to avoid duplicating 
articles in PCC and DDJ, since our subscribers overlap. This 
i n formation is sufficiently important, however, that we believe 
it warrants as widespread publicity as possible. 

We believe that in and for the foreseeable future, home com¬ 
puter users will need use of the phone system. They will need 
it, not for traditional time-sharing, but for accessing large data¬ 
bases with their personal computers. 

Since the phone system is the only public carrier that is 
reasonably available to home computer users, a government- 
licensed monopoly, it behooves us to assure that it meets our 
needs with reasonable economy. 

On July 1, 1976 Pacific Telephone will implement a new phone 
tariff in major cities in California, on all business telephone service, 
called Single Message Rate Timing. SMRT, as it is known, will 
assess a supercharge of approximately 1 cent per minute on all 
calls over five minutes. That means that the dial-up, time-sharing 
setup that you presently enjoy for a cost of $7.50 a month, or 
thereabouts, to make local computer calls could increase to as much 
as $80 a month, based on a 6-hour day usage. HELP! 

SMRT has come to California. How long will it be before it ZAP’s 
you? How does SMRT work? For any call that exceeds 5 minutes 
a one message unit supercharge will be added to the bill for each 
5 minutes after the first five minutes. Since one message unit 
currently costs Californians 5.75 cents, that means that a previously 
"free” 30 minute call will cost 28.75 cents under SMRT; a sixty 
minute call, 63.25 cents. Projecting hours into days, a school that 
uses dial-up service for 3 hours a day, 20 days a month can expect 
additional phone charges of $36.00 each month; a six hour day, 

$72.00 for EACH TERMINAL IN OPERATION. Can your budget 
afford that? 



FIGURE I 


Your present phone-terminal-to-computer link probably like that shown 
in Fig. 1. Local costs will vary, but generally our costs break down like this: 

At Terminal site - Dial-up business line $7.50/month 

At Computer site-Business phone linefnot shown 7.50 
Data Access Arrangement(DAA) 5.50 

Phone costs per terminal 20.50/month 

Add modem and acoustic coupler rental ($15@) 30.00 
(may be purchased for $300 each) 

Total communications costs per terminal $50.50/month 

This is the type of configuration that SMRT will really hurt. But, such 
a dial-up system has some real advantages to the user: Terminals can be used 
from any location where there is a standard dial-up telephone(home included); 
you can ‘oversubscribe’ your system and users schedule themselves or compete 
for open phone lines. 

Alternative No. 1 Probably the cheapest way to change your phone set-up 
to minimize the affects of SMRT is to convert all outside phone lines to run 
through your school or district PBX switchboard, (assuming you have one.) 

If you do not have a PBX, now may be the time for the school system to get 
one. Such a move should greatly reduce your normal monthly phone charges 
and because the system is' “internal” via the PBX, no SMRT charges will be 
added to your bill. Schools can be located anywhere. SMRT charges are avoided 
as long as everything runs through the PBX. Flexibility continues as before. 

The only problem we have discovered is that there may not by space on your 
PBX to accomodate additional lines. Each computer line requires TWO PBX 
extensions (one at computer, one at the terminal). But do check this 
alternative out. We can’t estimate how much, but can guarantee you sub¬ 
stantial dollar savings. 

Alternative No. 2. The phone company will likely suggest a Lease Line running 
from each terminal directly to the computer (picture a pair of wires running 
directly between the two sites). Lease lines are charged a fixed monthly fee 
for 24 hour usage that is based on distance from point to point. For the 
short distances we needed (no more than 12 miles), lease line costs ranged 
from $14 to $42 per month per terminal. Add to this a Telco modem at each 
end for $50/month (No DAA needed). 


The affects of SMRT could make you reconsider your 
hardware acquisition, location and use decisions. 

SMRT makes local microprocessors in each school look 
like a real wise decision. Think about it! 


Lease lines avoid SMRT costs, and, depending on distances, should save 
you substantial money. However, you lose the flexibility of dial-up from any 
phone and it is unclear how you can “oversubscribe” a lease line communication 
system. 


In our area, the phone company has computer printouts projecting 
the implications of SMRT on your bill. Ask to see this information, 
it is scary. In all honesty, I must admit that this is one new phone 
charge that does make sense. Those of us that use dial-up service for 
computer data, all day long, are not using the equipment "as intended." 
Therefore, we ‘tie-up’ valuable equipment for long periods without 
paying our fair share of the costs. SMRT will even all this out.... 
and then some! 


THINGS TO DO 

There are many things you can do to avoid or minimize the affects of SMRT. 
Your greatest problem will be getting all the right answers to your questions 
(We have not provided all the answers, just some suggestions.) 

CAVEAT EMPTOR. Do not expect to get all the “right” 
answers from the local phone company staff. They provide 
a limited array of services in the area of data communications. 

The right solution for you may not be in their array. You 
must ask Telco competitors about services they offer that fill 
the void of services provided by Telco. 


Alternative No. 3. Instead of using two Telco modems for $50/month, you can use 
lease lines as suggested in Alternative 2 but buy or lease modems from a company 
other than the phone company. Such modems may cost as little as $200 each and 
may lease for as little as $25 /month (for both). If you already own modems and 
acoustic couplers as part of a dial-up system, your present equipment MAY be 
usable with lease lines. Some will not be usable on lease lines. Contact 
your equipment supplier to see if your hardware is convertible for use on lease 
lines. We found our equipment was usable after a minor field modification 
made to our connecting cables. 

Alternative No. 4 In the long run, the least-cost method to provide for 
multiple terminals at one site is to connect ONE phone lease line between computer 
and terminal site. (Fig.3) To this one line you connect all your terminals (19 
teletypes, claims one firm- 12 is more real) - using a special modem called a Frequency 
Division Multiplexer (FDM). The FDM allows multiple terminals to share one 
phone line by varying the frequency at which the data is transmitted. Teletypes 
at 10 CPS and 30 CPS terminals can share the same line via the FDM’s. At 
each terminal you need an FDM with another FDM at the computer end to 
“unscramble” the data. The FDM units cost about $450 each, more than the 
standard lease line modems. But you only need one phone line. Therefore, your 
initial cash outlay may be greater, but in the long run you will save money be¬ 
cause phone costs are reduced dramatically. 

Terminals can even be located in different classrooms using FDM’s. There is even 
the possibility of using ONE lease line connecting a number of schools and a 


Page 36 

226 


Dr. Dobb’s Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


August, 1976 















(FDJ 
MULTIPLEXERS 


FIGURE 3 


number of terminals. Technicians clam this Multi-Point lease line is not any 
more of a problem from a maintenance standpoint than a single point-to-point 
set-up. Thus, more phone money can be saved. 

FDM capability is NOT available from the phone company at this time. Don’t 
expect them to respond too warmly to your questions about this effective way 
to share lease lines and save money. 

So now what? If this article serves no other purpose than to confuse you, we have 
accomplished something! Data communications has to be the most confusing 
topic we have investigated. Each call we made raised new confusion and new 
questions. Each “situation” at each new terminal site created a new set of 
problems, with a whole new set of answers. 

What is the answer? It all depends on 

Where you are in the greater US 
Your computer 

What equipment you already own 
how much money you have 

Should you spend big money NOW to save big money later 
Should you spend less money now and have a 
bigger phone bill forever... 

and 


SOLID STATE SALES 
SLIPS ORDER FOR 9 MONTHS 

Dear Editor, April 3, 1976 

I think it is worth telling about one supplier who is 
very remiss. I sent an order to Solid State Sales last July, for 
about $70 worth of electronic components. They sent roughly 
a third and backordered the rest. When October came and I 
had not received the balance I wrote them, with no reply 
received. My reminder in Decmeber brought a promise of 4-5 
weeks delivery. When that passed I wrote again, in March. I 
have just received another promise of 4-6 weeks delivery. They 
have now had my money for nine months—I think maybe they 
ought to start paying interest. At any rate, if they can't 
supply the stuff they ought not to send out those enticing 
advertisements. 


It used to be fun 
To add one and one. 

But it's no longer plain 

What result to obtain 

They say it could even be none. 

-unknown 


000000000900000000000 

SOURCES OF 

:R energy software sought 

Dear Dr. Dobb, 

I am trying to combine low cost computers, and alter¬ 
native sources of energy. As a start, I'm collecting programs 
about energy use. Any programs or ideas, in any language, 
that readers could donate would be appreciated. If I get 
enough of a response, these will form the basis for a book. 

Possible topics: Solar Parabolic Reflectors, Windmill 
Design, Thermal Loss, and Storage; Units Conversion (BTU, 
KW-HR), Battery Charge and Discharge, Flywheel Momentum, 
etc. 

Keep up the good words, 

Rich Roth 1052 Clark Ave 

Mountain View 

QOOOOOOOOOOOO CA 94040 
A COMMENT ON THE DIGITAL GROUP 

Dear Dr. Dobb (alias Jim Warren?) July 15, 1976 

I have (had?) a Digital Group 8080 system, which after 
being built didn't work quite right, and I had to send it back 
for de-bugging. It didn't care to read in the cassette tape, an 
initialization process needed to give it life. The still-born has 
been away for a month now, with no word from the doctor 
yet (it's under the care of Dr. Sudding and his staff - very 
competent I understand), but we're very hopeful. 

Your journal and concept is the best. I have the D.G.'s 
version of TBX-TVCOS and would dearly love to see it run, 
but alas, (sob) I wait.... 


[Christopher Hovey 


ESD/OC 
San Fran.APO 
CA 96369 


Kendall Stambaugh 


5009 Guide Meridian 
Bellingham WA 98225 
206 734-9424 

OOOOOOOOOOOOOOOOOOOOOOQQOOOOOOOOOO 

SAN FRANCISCO COMPUTER STORE OPENS 

The Computer Store of San Francisco, affiliated with 
Byte, Inc., opened its doors for business in the second week 
of July. It is located at 1093 Mission Street; (415) 431-0640. 


OOOOOOOOOOOOOOQOOOOOOOOOQOOOOOOOOO 

BAD SERVICE REPORT 
ABOUT THE DIGITAL GROUP 

Dear PCC, June 30* 1976 

Beginning to get bad vibes from The Digital Group. 
Purchased their television character generator cassette inter¬ 
face board. The Original character generator chip gave inverted 
characters on video monitor. The replacement was no good at 
all. On June 29th, I called about a replacement for the chip, 
and I requested that the chip be tested before being shipped. 
A Gus Calabrese stated that "They were swamped with orders 
and couldn't possibly get around to shipping the replacement 
for another two to three weeks." 

I can understand their being quite busy, but I don't 
think that they should abandon any kind of customer service 
to previous purchasers of their equipment. 

Thank you. 

Robert L. Gerald 102 Coventry Dr. 

Lakewood NJ 08701 


August, 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


Page 37 

227 
































LOU FIELD’S RESPONSE TO THE EDITOR’S 
NOTE TO SCCS MEMBERS IN THE MAY ISSUE 


WHAT THIS WORLD NEEDS IS A GOOD . . . 


The May issue of the Journal carried a note that was essentially 
critical of Lou Fields, the current Vice President of the Southern 
California Computer Society, and their potential next President. As 
is PCC policy, equal space (in fact, much more space) is being pro¬ 
vided for the response. 

In response to Jim Warren's note to the members of the Southern 
California Computer Society: 

In reply to your letter May Dr. Dobb’s this is following my con¬ 
versations by phone conversation with you and Bob Albrecht (after 
you wrote your letter but before I saw it — it arrived on the 22nd of 
July) 

1. Your letter is unfair, inaccurate, and at best intemperate. If you 
really wanted to be constructive you could have called me first — or 
at least consulted Bob Albrecht who made the arrangement with me. 

2. The facts are that I did not call to place an order. Bob called 
Ward Spaniol and Art Childs re: distribution of your products. He was 
told it was SCCS policy to handle no such material including its own 
magazine. Interface. They referred him to me since I had made arrange¬ 
ments for some other publications. I feel it in the best interests of the 
members to have magazines at meetings. Bob then called me and asked 
if he could send some (on consignment). I was not familiar with all 
the material but suggested he send what he thought was appropriate. 

Just before the meeting, 12 cases of papers arrived. I could not fit 

it all in my apartment or car. 

3. On the day of the April meeting, I brought what I could fit into 
my car 6long with the many supplies for the meeting). 

Jim arrived at the meeting unannounced and proceeded to make a 
45 minute presentation on Dr. Dobb’s. The members were fascinated 
with his excellent talk, however it would have been better and more 
considerate if the Program Committee had been consulted about it so 
that the talk could have been scheduled, announced, and not have so 
disrupted two other excellent speakers. 

Seeing the interest, I apologized to Jim because I thought I hadn't 
brought 'Dr. Dobb’s (in fact I had and they were later uncovered and 
available). It was the seeming lack of the pre-shipped Dobb’s which I 
believe may have really upset Jim. 

4. Recognizing that the PCC was donated (but marked one dollar) I 
asked the staff to stamp them in some way so that they could not be 
inadvertently sojd. A few (perhaps 12-20) were stamped as mentioned 
(in type approximately the size of a headline on the May letter). If I 
had been intending these for my own uses, I would have distributed 
them all this way. The newsletters were shipped to me, but no slight 
was intended and Jim made no mention of it at the time. 

5. Though these items were on consignment as confirmed with Bob 
and Jim during my telecon, I have sent you a total of $259.75 as well 
as the remaining material. I trust you will refund the difference. 

6. This unfortunate indident is perhaps the most dramatic example I've 
teen of the need for an ombudsman (consumer advocate) service. 

The SCCS will, I hope, soon offer this, so that some reasonable in¬ 
quiry can be made of the facts before damaging, insulting and unfair 
material is distributed for which no timely or effective rebuttal is 
available. 

7. I think your technical work is worthwhile, clever, imaginative, and 
creative. It is my heartfelt with that all of these good virtues will 
soon be matched with responsibility, accuracy, and a respect for the 
feelings, reputation, and good name of others. 

I, too, am working very hard to bring the knowledge and exper¬ 
ience of computing to our friends. I would like to hear directly 
what the readers think of this matter. 

Louis G Fields, 11662 Sunset Blvd Suite 2, Los Angeles CA 90049 
(213)478-0388 

We stand by our original May note. 1. Bob read and agreed with 
that note, prior to its publication. 2. The for-sale materials were not 
sent on consignment This was a legitimate misunderstanding in the 
original phone conversation. It was very explicitly stated, however, 
m a later conversation (referred to in point 5). 3. I had been in¬ 
vited to fly down and attend the meeting by Ward Spaniol and Art 
Chilis. By agreement with Art, who was running the Announcements 
Period between the two major speakers, I spoke briefly about the 
Journal. Due to my own longwindedness and a flood of questions, 

I took almost 15 minutes. Others with other announcements both 
proceeded and followed me, thus it is unlikely that I disrupted the 
morning or afternoon speakers. 4. Stamping the give-aways as being 
complimentary copies was a good idea. The copy I have, however, 
was stamped with two different stamps, one stating ‘Compliments of 
Louis G. Fields’ and the other being a 7-line stamp with Lou’s name 


Dear Dr. Dobb , May 1, 1976 

As I see it, the hobbyist could use three different 
publications. 

1. a monthly news magazine similar in content to the 
present PCC. This would be written for the average hobbyist 
who just wants to know what's going on in general terms 
without being inundated by a mass of technical detail. It 
could include: 

Reprints of articles of general interest from the club 
newsletters. 

News items related to home computers. 

Articles on social implications of computers (although 
Creative Computing seems to be doing this pretty well). 

Letters of general interest. 

Suggestions, gripes, comments, and blue-sky stuff. 

General information on new hardware, software, etc. 

Listings of useful or novel applications programs or 
computer games. 

Indices of selected non-technical or semi-technical articles, 
etc. from other publications. 

Classified ads. 

2. A monthly or quarterly technical journal similar to 
DDJ. This would be written for the hard-core hobbyist who is 
grimly determined to cram all the features of OS-360 into his 
homebrew machine. It could include: 

Schematics from the club newsletters. 

Indices to selected technical articles, etc. from other 
publications. 

Letters of technical content. 

Listings, hopefully legible, of useful non-applications 
software. 

3. An annual catalog or directory of reference-type 
information. This could include: 

Computer clubs. 

Hobbyist-oriented publications (e.g., BYTE). 

Computer stores and distributors. 

Manufacturers of computers, kits, and other hardware. 

Brief descriptions and prices of all current stuff of use 
to hobbyists and commercially available. 

Jim Day 17042 Gunther St. 

Granada Hills CA 91344 

We're tryin'. Let us know, in a year, if you think we've 
succeeded. -JCW. 



being the largest and in boldface print. 5. As of July 29th, we have 
received $259.75 and publication returns with a wholesale value of 
$70.60. We assume that the remaining $29.40 will be forthcoming. 

We also assume that the publications were sold for their retail value 
and the resulting profit was handled in a manner acceptable to 
the SCCS. If any excess payment is received, it will be immediately 
refunded. 6. We agree that there should be consumer advocates. We 
can think of many more dramatic examples of their need than this. 

7. Rather than avoid controversy, we prefer to present statements 
from both sides (or all sides), and let our readers make up their own 
minds. 

This particular controversy, however, has taken up enough space. 
THE END. 




Page 38 

228 


Or. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 


August, 1976 










dr dobb's journal of 


$ 1.50 


COMPUTER 

(Calisthenics ^5 Orthodontia 

Running Light Without Overbyte 


September, 1976 


Box 310, Menlo Park CA 94025 


Volume 1, Number 8 


A REFERENCE JOURNAL FOR USERS OF HOME COMPUTERS 


Realizable Fantasy: Computer Control of Music Tapes for Your Home Stereo — Jim C. Warren, Jr. 3 

A systems project uniquely appropriate for your home computer 
A Realized Fantasy: Unlimited Speech Synthesis for Home Computers — Jim C. Warren, Jr. 7 

A survey of computer speech synthesis systems including a $395 completely assembled unit 
Plessy Does Right by Hobbyists — Significant Discounts on Memory & a 1000CPS Tape Reader 11 

Proposal: A Board to Expand 8080 Instructions — Walt Ferris 12 

Five Mass Memory Notes — Includes Info on a 256K Byte Core Memory for $6500 13 

University of California Requests Suggestions About Stand-Alone Computers for its 120,000 Students 14 

Personal Computers: A Bit of Wheat Amongst the Chaff — Jef Raskin 15 

A critique of “little hidden gotchas” found in a multitude of kits 
6800 SOFTWARE 

How to Make the 6800 Assembler Work in Your System — Tom Pittman 19 

6502 SOFTWARE 

A 6502 Disassembler From Apple — Steve Wozniak & Allen Baum 22 

Mastermind: A Number Game for the 6502 — Steve Wozniak 26 

8080 SOFTWARE 

The Bouncing Beastie: A Random Walker for the VDM — Marvin R. Winzenread 28 

TBX Additions: String Handling & a New Print Delimiter — The Penny Tiger 30 

Dompier Music Mods, Memory Erase, Memory Test — Richard A. Kaapke 32 

BUGS & FIXES 

A “Fix” for Denver Tiny BASIC; a Bug-Note on Processor Tech’s 5K BASIC — F. J. Greeb 34 

How Secure is Computer Data? Not Very, Say Stanford Experts — The Stanford Observer 35 

Do You Know About People’s Computer Company Newspaper? 38 

- - AND - - 

57 other exciting tidbits and short articles 


229 








realizable fantasy 


Computer Control of 
Music Tapes for Your Home Stereo 


by Jim Warren, Jr., Editor, DDJ 


Do you use tape recorded music in your home music 
system? Do you have a number of bands or "cuts” record¬ 
ed on a single tape? Wouldn’t it be dandy to be able to 
play only desired cuts without having to manually hunt for 
each one, and then have the tape automatically rewound 
when a side is finished? You can do it with your personal 
computer; a project uniquely appropriate for home computing. 

How you can use the system: Mount the desired stereo 
tape on the tape transport. Tell your computer which bands 
are to be played. You may instruct that they be played in 
a different sequence than they appear on the tape, and you 
may have any cut(s) played more than once. Tell your 
computer whether or not to rewind the tape when finished. 
Then, do nothing but enjoy the concert of selected pieces 
until the computer is finished with the tape. The computer 
will use the fast-forward / fast—reverse facilities of the tape 
transport to move between selected cuts that are nonse¬ 
quential. 

The following notes outline how such a system can be 
implemented at nominal cost with currently available com¬ 
ponents. 

Pertinent points about how a good tape system can 
work: The tape transport can move the tape forward, 
fast forward, reverse and/or fast reverse, and can stop the 
tape. Playback and recording can only be done during the 
“forward” mode. The read/write head is retracted from the 
tape during “fast” modes. A position counter is provided, 
but is based on rotation of a tape spindle rather than linear 
tape motion (that is, a counter increment represents much 
less tape length at one end of a tape than it does at the 
other end). There are beginning-of-tape/end-of-tape (BOT/ 
EOT) sensors that operate either by sensing a metalized 
strip attached to each end of the tape, or by photo-elec- 
trically sensing a reflective or transparent leader/trailer strip 
on each end of the tape. Recording is performed by first 
erasing with an erase head, and then recording with a read/ 
write head. The erase head and the read/write head are 
adjacent, spaced well under an inch apart. 

The usual format for a tape (Figure 1) is for there to 
be a BOT leader, followed by several seconds of unrecorded 
or “blank” tape, followed by some number of bands or cuts 
of music — each separated by several seconds of blank tape, 
and finally terminated by some length of blank tape followed 
by the EOT trailer. 


*A realizable fantasy is a project that has not yet been done, but 
it's time to do it. That is: (1) It's interesting, entertaining, and/or 
useful. (2) It's feasible for hobbyists in that it can be done in a 
reasonable amount of time, at reasonable expense, and does not re¬ 
quire great expertise (except, perhaps, that which can be furnished 
in the design article). (3) It is well within the limits of current 
technology and current techniques. Send us your realizable fan¬ 
tasies, so that we may share them with others. 


The system design: Most of the tape transport func¬ 
tions are obviously binary. The tape is/is not stopped. The 
tape is/is not in “forward” mode. The tape is/is not in fast 
reverse mode. The system is/is not in record mode. The tape 
is/is not at BOT or EOT. The counter can easily be made 
binary by having tape spindle rotation cause a strobe every 
turn or half turn or quarter turn, etc. Your computer can 
then accept these strobes and maintain its own position 
counter. Note that the position counter and BOT/EOT sens¬ 
ing are independent of whether the read/write head is retract¬ 
ed; i.e., they are independent of whether the tape is being 
moved in “fast” mode. 

Given the number of audio cassette units being used for 
mass storage of digital data on home computers, it should 
be obvious that we can record digital information, as well 
as analog -- music (or voice) - information on tapes. In 
fact, both digital and analog information can be intermixed 
on the same tape. All that needs to be done is to encode 
the digital information in such a manner that it can easily 
be discriminated from the analog information. (Quick! One 
of you analog types. Send the implementation details in a 
fool-proof encoding scheme for this context - digital signals 
on the same tape as music signals.) 

Thus, digitally-encoded identifiers can be recorded in 
the blanks preceeding the music bands. (Figure 2). By 
recognizing and then reading that identifier, the computer can 
determine which band is about to pass over the playback head 
and can switch it to your hi fi system or skip it, depending 
on your instructions to the computer. 

Since the read head is retracted during fast tape motion, 
it is not possible to read band identifiers while skipping 
bands in fast-forward or fast-reverse mode. Therefore, the 
position counter must be used to approximately position the 
tape to a desired cut. In order to do this, the computer 
must know the position counter value for each cut. When 
a tape is initially recorded, such information is accumulated 
and then placed in a “Tape Directory” at the beginning of 
the tape (Figure 3). Your computer can then read in the 
Directory whenever it begins to play a tape. 

Hardware details: Your computer must have control 
over the system. It must be able to select tape motion: 
forward, fast-forward, fast-reverse, and stop. It should also 
be able to control whether the signal from the read head 
is allowed to go to the hi fi system, and should control 
whether a music signal can reach the record head during 
initial tape recording. And of course, it must also be able 
to control the recording of digitally encoded information 
on the tape. 

Your computer must also be able to monitor all 
outputs from the tape system. It must be able to see BOT/ 
EOT conditions. It must be able to monitor tape spindle 
motion via a rotation-periodic pulse or strobe. It must be 
able to monitor the analog signal coming from the read head 
so that it can maintain its constant vigil for digitally en¬ 
coded information. It should also be able to monitor re¬ 
cording signals being sent from the hi fi system to the tape 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 


September, 1976 



recording head. Finally, it would be desirable for it to be 
able to sense whether the “write lock” tab has been punched 
out of the rear of a mounted tape cassette. 

Software details: Two basic software modules are in¬ 
volved: A tape initialization module, and a tape playback 
module. 

The tape initialization module functions as follows, 
interacting closely with the human user. The user will 
mount a blank tape on the transport, at least partially re¬ 
wound, and tell the computer the maximum number of 
bands he expects to record on the current side of that 
tape. The computer will look for BOT. If BOT is not 
seen, it will do a fast-reverse until BOT is sensed; then stop. 
It will then switch to “record” mode with no signal going 
to the record head, and go forward until BOT is no longer 
sensed, indicating the end of the leader and the beginning 
of the recording area of the tape. At this point, it will set 
its tape position counter to 0. It will continue to go forward, 
erasing the tape as it proceeds, for the amount of tape 
space it will later need to record a Directory for the maxi¬ 
mum number of bands (already specified). It will then 
record a digitally encoded “1” to indicate that Band 1 is 
about to appear on the tape, stop the tape leaving it in 
“record” mode, and inform the user that it is ready for 
the first cut of music. 

The user may then begin recording. He must signal 
the computer when to start recording and when a cut has 
been completed. When he signals that recording is to begin, 
the computer will place the tape transport in “forward” 
mode, and switch the hi fi output into the record head. 
Whenever the user signals the end of a cut, the computer 
will disable hi fi input to the record head (to avoid any 
possible “noise”), digitally record the number of the next 
cut on the tape (which also serves an an “end” flag for 


the preceeding cut), and make note of the value of the po¬ 
sition counter for later use in the Directory. 

There should be several end-of-cut signals available 
for the user. One signal will indicate that the current cut 
is completed and that the next cut is immediately forth¬ 
coming, as is the case when continuously recordings multi¬ 
ple-band phonograph record. In this case, the computer will 
record the cut number and quickly switch back to hi fi 
input for the record head, leaving the tape in forward mode 
and record mode. 

A second signal will mark the end of the current cut, 
but will indicate that there will be some delay before the 
next cut is ready for recording. The computer will respond 
by halting the transport after recording its next: cut number. 
The start signal used for the first cut on the tape can 
then be used when the user is finally ready to continue re¬ 
cording. 

A third signal specifies that recording for that tape is 
completed. In this case, after recording the “next cut” num¬ 
ber (which serves only as the “end” flag for the preceding 
cut), the computer will disable recording, fast-rewind the 
tape until BOT, enable digital recording, move forward until 
BOT disappears, and record the Directory. The Directory 
will contain a sequence of entries indicating the values of the 
position counter the beginnings of each of the cuts. 

Nitty gritties: While recording the digital cut numbers, 
the computer should monitor the hi fi output to, if possible, 
detect any music that begins prior to the computer complet¬ 
ing the recording of the cut number. In this case, it should 
inform the user of a possible loss of the first part of the 
music. 

Whenever the tape is moving forward, the computer 
should monitor the EOT flag and should output the appro¬ 
priate error message if EOT is reached. 

Software control over recording should take into 


EOT 


Forward 


BOT 




TRAILER 


Band 7i 


Band Z 


Band 1 


Leader 


Blank 


blank 


BLANK 


blank 


Fi 


g-ure 


1 





&AKD TV 


Band Z 


Band 1 


#7t ■+! 


#3 

FiG-ORB Z 


#z 





F 


10-ORE 


3 


Page 4 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 September, 1976 


231 












account the distance between the record/playback head and 
the erase head, whenever it is appropriate to do so. 

The tape playback software module functions in a 
fairly obvious manner. First, it must accept a command 
sequence from the user, specifying which bands are to be 
played. When the computer notes the termination of this 
command sequence, it will then disable tape output to the 
hi fi system, hunt for the beginning of the tape, move 
forward and input the directory, setting the tape position 
counter to 0 at the beginning of the recording area of the 
tape. 

To play the desired cuts, it looks at the next cut (or 
first cut, initially) to be played, looks in the directory that 
it now has in memory for the position counter value, and 
compares the desired value to the current value of the po¬ 
sition counter. If the counters are significantly different, 
it uses the fast mode to position the tape. It positions 
the tape to a few counts preceding the desired count, then 
switches to forward motion and monitors the playback head 
output -- which, thus far, remains disconnected from the hi 
fi system. When the computer sees the digitally encoded 
cut number, it compares it to the desired cut number, and 
(presuming a match) switches the playback head output to 
the hi fi system as soon as the cut number has passed. 

The computer then begins continuously monitoring 
the signal from the playback head, looking for the next 
digitally encoded cut number (that will indicate the end of 
the cut being played). As soon as it sees the first part of 
a digital encoding, it disables the output to the hi fi to 
avoid having the listener hear glibble. It continues to pro¬ 
cess the user’s command sequence in the obvious manner. 

Available hardware: Though we assume that there 
are several tape systems that provide the necessary capa¬ 
bilities for the described interface, we will detail the only 
one about which we have explicit information. 

Triple I, a division of the Economy Company located 
at Box 25308 (1901 N. Walnut), Oklahoma City, OK 
73125, (405) 528-8444, manufactures three models of the 
Phi-Deck cassette tape transport. The least expensive vers¬ 
ion has a single, fixed speed for recording and playback 
and is quite adequate for this project. The mamma trans¬ 
port is a variable-speed t unit (which really isn’t useful in 
this context), and the daddy transport is also a variable- 
speed unit with a King Kong motor on it. Other than for 
the variable-speed facility and the motor size, all three 
transport subsystems offer the same capabilities. 

The standard speed for the fixed-speed transport is 
1-7/8” per second. Other speeds are available via a drive- 
pully change. All transports have fast-forward/fast reverse 
modes that can run the length of a 60-minute audio tape 
in less than 30 seconds. Engaging and disengaging the 
record/player head and the pinch roller is accomplished 
with a DC motor, rather than a solenoid. The transports 
have three other motors: take-up, rewind, and capstan 
drive. 

Our understanding from the local Triple I represen¬ 
tative is that there are two stock options for recording/ 
playback heads that come with the system: a 4-channel 
analog head, or a 2-channel digital head. The purchaser 
may choose either of these; their cost is included in the 
price of the unit. Alternatively, the buyer may choose to 
have the factory mount and align any other standard head 
that he may wish to furnish. There is no charge for fac¬ 
tory installation of any standard head. Thus, the buyer 
can have as high a quality head as he can afford. 

Available system features include: tape position 


strobe, BOT and EOT sensing, “Side A” sensing, write- 
lock tab sensing, “cassette in place” sensing, and, of course, 
a PC board that facilitates digital control over all of the 
tape transport facilities. 

Pricing is great for the experimenter: Triple I has a 
special introductory (one per customer) package for 
$189.00. It includes two fixed-speed Phi-Decks (normally 
$94.50 each), either one of the stock heads, an erase head 
(normally $2.50), all of the sensors (normally $1.25 to 
$7.50 each), the tape position strobe (normally $7.95), 
and the control board (normally $99.50). That’s not all, 
though. Since this introductory package is for prototyping 
and experimentation, it also includes a box that provides 
manual remote control over the system (normally $89.00), 
and an AC power adaptor (normally $7.50). Similar 
introductory packages are available using the variable- 
speed unit ($199.00 for the package), and the super deck 
($299). Shipping charges are prepaid if the package price 
is sent along with the order. 

Notes: Although these packages provide all of the 
electronics for control and sensing of the system, they 
contain no read/write electronics. That is, the wires come 
out from the record/playback head, are terminated at some 
wire-wrap posts on the edge of the PC board, and it’s up 
to the user to take them from there. Incidentally, these 
are fully-assembled systems; they are not kits. 

Although these packages contain two transports and 
one control board, the board is not designed to control 
two transports. The packages were designed to allow 
engineering prototyping in which one team builds a 
transport into a larger system which another team simul¬ 
taneously develops the controls, software, additional 
electronics, etc. 

Bells and whistles: There are some options available in 
this computer controlled system that have not yet been 
mentioned. We will mention them only briefly to whet 
your appitite. 

The design that has been outlined implicitly 
assumes that cuts are identified only by number, and 
that the user will specify cuts to be played by entering 
their numbers in the desired sequence. There is no 
reason to be so primitive, however. With appropriate 
additions to the tape initialization software module, and 
the playback software module, one could easily, input a 
name for each cut or piece of music. This information 
could be stored in the directory along with the tape posi¬ 
tion number. Appropriate software could then list an 
index to the recordings on a given tape, and such record¬ 
ings could be chosen to be played by entering their 
names or cut numbers. 

Primitive tape editing is another feature that could be 
added simply by expanding the software. More compre¬ 
hensive editing facilities would be possible if two trans¬ 
ports were under computer control. 

Thus far, this discussion has concerned the control 
of a music system. The cuts, however, could as easily con¬ 
tain spoken information instead of music “information.” 

For instance, it could contain instructions, questions, and 
answers. Coupled with devices for human-response input 
(keyboard, joy stick, push buttons, etc.), it would be 
ideal for many types of CAI (Computer-Aided Instruction) 
applications. 

The design that has been specified assumes that the 
record/playback head is retracted from the tape whenever 
the tape is being transported in “fast” mode. If this is 
not the case — if the head remains in “read” contact 
with the tape, even when the tape is being moved at high 


Page 5 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 September, 1976 


232 


speed — then it may be possible to avoid the need for a 
directory of 'ut position numbers, for the computer 
should be able to locate a desired cut simply by watching 
for the cut number to appear as the tape is racing across 
the read head. Such an alternative would provide some 
interesting timing or encoding problems, since the cut 
number would be recorded at one speed, but read at a 
quite different (and probably varying) speed. 

Gosing notes: This has been a design article; not an 
implementation article. We encourage you to send in 
follow-up articles, detailing your specific implementations, 
once you have them operational. The slogan is, “Let us 
stand on one another’s shoulders, not on one another’s 
toes.” 

We are publishing this now, rather than holding it 
in order to fill out the details and nitty gritties, for 
several reasons: Most importantly, we wish to get this 
idea out into the public domain — before someone else 
stumbles on it, and rushes off to the patent office. We 
are also publishing it in this somewhat incomplete form 
because these realizable fantasies are as much your pro¬ 
jects as they are ours. We assume that you gain as much 
enjoyment from invention as you do from construction. 

We have left room for your own invention — for you to 
contribute your own good ideas and additions to this pro¬ 
ject. We hope that you will share them with us, so that 
we may share them with everyone else. 

And, a final thought: Has your spouse been com¬ 
plaining about the money and time you have spent on 
your weird little computing machine? Have your friends 
been asking, “Yeah, but what can you do with it?” If 
so, perhaps this project will quell their unkind remarks. 

Be the first one on your block with a computer-controlled 
stereo system! 


DENTAL PERSON REQUESTS 
DATA ON OUR OVERBYTE CONTROL 

Dear Jim, 7-25-76 

Saw John Craig’s report of your new publication in 
73 Magazine. 

Would you please send me a copy of Dr. Dobb’s 
Journal of Computer Calisthenics & Orthodontia. 
Orthodontia?? That part of the title caught my eye. 
Thanks. 

Dr. Jim Smith, Orthodontist 111 N. Regency Dr. 

Drs. Lauder, Smith & Gordon Bloomington IL 61701 
Orthodontics, Ltd. (309) 662-5331 


APPLICATION NOTES GIVE EXCELLENT 
INTRODUCTION AND COMPREHENSIVE 
DISCUSSION OF FLOPPY DISC DRIVES 

We understand that PERTEC, 9600 Irondale Ave¬ 
nue, Chats worth, CA 91311, has two Ap Notes that pro¬ 
vide a complete and detailed discussion of floppys in a 
form that is understandable to the floppy novice (novice 
floppyite?). Their titles are “Soft Sector (Hard Sector) 
Formatting for FD400 Flexible Disk Drives,” however 
our information is that they provide a really complete 
discussion of floppy drives that is essentially applicable 
to any model from any manufacturer. 


PC CARD HOLDS 60 MEGABYTE REMOV¬ 
ABLE MAGNETIC STORAGE AT LESS THAN 
HALF THE PRICE OF DIGITAL CASSETTES 

Micro Communications Corp., 80 Bacon St., Waltham, 
MA 02154, (617) 899-8111, is manufacturing a tiny tape car¬ 
tridge drive, small enough to be mounted on a PC board. 

It takes a wee, endless-loop tape cartridge that has a maxi¬ 
mum capacity of about half a megabit. The drive will run 
at 3”/second. The tape is capable of 2400 flux-changes/ 
inch. Thus, using ratio encoding involving three flux 
changes per bit, one can obtain 800 BPI, and 2400 baud 
transfer rates. That would load a 16K byte program in 
less than a minute. 

Little Hidden Gotchas: MCC only manufacturers 
the drive and cartridges. The buyer must supply power 
(12v), motor speed control and analog R/W electronics, as 
well as the digital interface. But, the price is right: In 
5000-piece quantities (all right, which of you end-users is 
about to turn into a manufacturer?), the drives run from 
around $22@ with a 100-hour toy motor to $36@ with a 
1000-hour Swiss motor. And, certified tape cartridges in 
that quantity run $1.80 to $2.20@ depending on length. 
Incidentally, the cartridges weigh less than a half-ounce 
apiece. Two can be mailed, First Class, for 13 cents (this 
month). 


MOTOROLA COMPETITOR FOR THE Z-80 

Motorola is reliably rumored to be working on their 
6809, which supposedly will give Zilog’s Z-80 some stiff 
competition. More details when we have ’em. 


HAVE AN OFFICE IN YOUR HOME? IT’S 
ABOUT TO LOSE ITS TAX DEDUCTIBILITY 

We understand that the Senate Finance Committee 
has reported out a tax “reform” amendment which will, 
effectively, prohibit your deducting expenses incurred in 
maintaining an office at home . . . even if you are a 
completely independent consultant with no office else¬ 
where. If you have an opinion on this matter, you 
should write your Senator and Representative immedi¬ 
ately. (In fact, you could use your computer and Selec- 
tric to type “individual” copies for all the key Congress¬ 
men.) 


GAMES AND WAR 

We hear “from a reliable source” that the Army has 
awarded $25,000 to a computer games company for devel¬ 
opment of war games equipment. 

Also, a year or so ago, the Journal's Editor (who is a 
long-time computer consultant) was contacted concerning 
a systems position in developing a project at the Hunter- 
Liggett Military Reservation south of Monterey, California. 
They were installing multiple PDP-lO’s plus about ten 
PDP-ll’s (as remote data concentrators for sensors in the 
field), for the single purpose of monitoring war games on 
the reservation. The system sounded most exciting. How¬ 
ever, the application—including the incredible cost that was 
implied—made the project “uninteresting” to our Editor. 


Page 6 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 


September, 1976 


233 








A Realized Fantasy: Unlimited 
Speech Synthesis lor Home Computers 

A Survey of Computer Speech Synthesis Systems. 

Including 


by Jim C. Warren, Editor 

Intelligible, useful, voice synthesis by home computers 
is now available to hobbyists at reasonable cost. This means 
that, not only can your computer talk to you and your 
spouse (who, admittedly, may not want to hear it), but it 
can also talk to your pre-reader and beginning-reader chil¬ 
dren. Thus, besides being fun and useful in a general con¬ 
text, your home computer can also become a significant 
educational tool for young children. 

There are several manufacturers of computer speech 
synthesis subsystems, two of which are marketing specifically 
to hobbyists, and one of which is worthy of specific attention. 

The best system we know of for hobbyists—i.e., 
financially feasible—is nearly available from CompuTalker 
Consultants, Post Office Box 1951, Santa Monica, CA 
90406; (213) 392-5230. This brand new product has an 
introductory price of $395 assembled. (Note: There is a 
significant possibility that this price will be available only 
for a short time and will then increase, as seems to be 
characteristic of vendors to the hobbyist community. Once 
the demand for a good—or bad—product grows to where 
personnel must be hired to handle the increased workload, 
prices often must be raised to pay for the added wages, 
plant facilities, etc.) 

The first Computalker model is an assembled unit 
that mounts on a hobby-standard-bus board (that is, it 
plugs into an Altair/IMSAI/Polymorphic/etc. bus). The 
unit includes the PC board, two pre-assembled and tested 
CT-1 Synthesizer modules, and less than a dozen IC’s for 
buffering, decoding, DAC, etc. The bus interface requires 
nine 8-bit, output ports. The block of nine ports is relo¬ 
catable via switches on the board. The following seven 
ports should be reserved for future facilities. The unit 
requires +8V at a maximum of 250 mA (regulated on 
the board to +5V), and ± 16V at 85 mA (on-board regu¬ 
lated to ± 12V). The audio output is via an RCA-type 
phone jack or directly wired to the board. It supplies a 
IV output, peak-to-peak, into a 10K ohm load resistance. 

Units that will plug into other, non-hobby-standard buses 
are being designed, including interfaces to the GA-16 and 
DEC PDP-12. 


a $395 Kit 

question about the speed that would be required in an 
8080 for real-time—on the fly—speech synthesis. At that 
time, it appeared that, for real-time synthesis, an 8-bit hard¬ 
ware multiplier might be required for calculation of the 
byte sequences that cause words to be synthesized. Check 
with Lloyd Rice for more definitive information. Under 
any circumstances, the system can still be used, however. 
One simply generates the desired byte sequences; places 
them in memory; then transfers them to the output 
locations as rapidly as desired. This way, no complex cal¬ 
culations would be required during the actual speech output. 
For such non-real-time operation, however, about a kilo¬ 
byte of buffer space is required for each second of speech. 
Of course, another alternative is to use a faster processor 
such as the 4 megacycle Z-8C about to be available from 
CroMemCo (please see DDJ, Vol. 1, No. 7). A processor 
that is faster than your old, plain-Jane 8080 might allow 
real-time synthesis calcuations without the need for 
hardware multiplication. 

There is much more that could be said about this 
unit, including details of how it works, but that is the 
topic of future—and past—articles. We refer you to two 
articles by Lloyd Rice: The first one appeared in the 
April, 1976 issue of Dr. Dobb’s Journal, “Hardware & 
Software for Speech Synthesis.” The second one, though 
written earlier, appeared in the August, 1976, Byte, 

“Friends, Humans, Countryrobots: Lend Me Your Ears.” 

Incidentals: Lloyd Rice has been working in the area 
of speech synthesis for some time. He holds a B.A. in 
linguistics, and is currently working with the research com¬ 
puters in the Phonetics Lab at UCLA. 

CompuTalker is another one of those very small 
companies that has developed an exciting product for the 
hobbyist community. The product has been developed, as 
much for the love of the project and the gadget, as for 
the purpose of making money. We are very impressed with 
Lloyd’s expertise in the area of speech synthesis. We are 
also very impressed with his ethical standards and are quite 
sure that he will back his product and “do right by his 
customers.” We tend to be much more impressed by peo¬ 
ple who are doing something because it is fun and exciting, 
than we are by those who are doing something to make 
money. We believe Lloyd fits the first category and rec¬ 
ommend him and his product to you. 


During actual speech output, each output location or 
port must be loaded at least twenty times per second. If 
desired, the ports may be loaded as often as 1000 times 
per second. Good-quality speech synthesis requires that 
each of the nine ports be loaded about 100 times per 
second (presuming the locations are 8-bit bytes). 

The user may develop the software entirely on his 
own, or he may purchase the driver software from Compu¬ 
talker for about $35-$40. A good write-up with extensive 
information on phonetics and speech mechanics will be 
included. The driver software will take less than 8K 
bytes for an 8080. Software for the 6800, 6502, etc. is 
planned for the near future. 

At the time this article was written, there was some 

Page 7 


The second system being marketed to hobbyists is 
the Model 1000 from AI Cybernetic, Box 4691, University 
Park NM 88003; (505) 526-6842. First of all, we under¬ 
stand from people who have heard this system that it’s 
intelligibility is marginal. Some tend to feel that this sys¬ 
tem, rather than training the computer to speak, requires 
that the listener be trained to understand—an alternative 
which is opposite to our views concerning man-machine 
interfaces. Secondly, this unit is priced higher than the 
CompuTalker unit; the Model 1000 costs $425. The unit 
does, however, plug into a hobbyist-standard bus, and its 
advertisements imply that it requires considerably less soft¬ 
ware support. We suggest listening to a unit, before you 
commit to a purchase. We also suggest careful queries con¬ 
cerning “on the fly” real-time speech synthesis and mem- 

September, 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 


234 


ory requirements for production of reasonable sentences. 

Incidentally, we would be pleased to publish more 
positive statements concerning this equipment. We are 
interested in comments from end-users (as opposed to 
vendors) who own and have experience with the units. 

The third system that is of potential interest to 
hobbyists is from Votrax, 4340 Campus Dr., No. 212, 
Newport Beach CA 92660; (714) 557-9181. (This is the 
address for their Regional Manager, John McDaniel; not 
for their home offices. However, John has expressed an 
active interest in the possible hobby market.) The last 
word we had was that Votrax was considering making 
their unit available in kit form for under $1000 (see DDJ, 
Vol. 1, Nos. 2 & 5). Their system has been in the field for 
several years, being marketed as a turn-key system, ready to 
plug into big IBM systems for use in voice-answerback 
applications. In their commercial form, they run around 
$3000-up, unit quantity. They are considering stripping out 
all the turn-key garbage—such as audio amplifier, volume 
control, power supply, fancy cabinet, etc.—and peddling 
the guts for a much more consumer-tolerable price. If they 
do, the kit-form would consist of four heavily potted, 
highly proprietary boards along with the necessary instruc¬ 
tions for interfacing, adding power, providing input, and 
using the output. The four boards contain hardware pho¬ 
neme generators. We have heard the units “speak they 
are quite intelligible and provide reasonably good-quality 
speech. They also require only very limited and simple-to- 
use software support. We will say more if/when Votrax 
tells us that they are going to market a reasonably priced 
kit. If they ever do, we expect to strongly recommend 
their well-proven and easy-to-use unit. 


VIDEO TERMINAL TECHNOLOGY DOES 
HAVE A PHONE! 

After publishing the article on the 64-character 
by 48-line TVT for $499.95 [DDJ, Vol. 1, No. 6], 
we received a dozen or so requests for the vender’s 
phone number, which we had neglected to include in 
the article. Here it is: (408) 255-3001 or (408) 734- 
2244, ext. 5179 (ask for Ralph Butler). 


RELIABLE 110 CHAR PER SEC PRINTER 
(34 CHARS/LINE) FOR $298, UNIT QUAN¬ 
TITY 

Victor Comptometer Corp., Components Dept., 3900 
N. Rockwell St., Chicago, IL 60618, (312) 539-8200 has 
a Model 130 matrix printer that prints about eleven times 
as fast as a TTY. The printer has been around for about 
two years; over 150,000 of them are now in use. It car¬ 
ries a one year parts and labor warranty to the original 
purchaser. In single-unit quantity (1-9), the price is $298; 
100-unit quantity is priced at $183.25@. It takes roll 
paper from 2-9/32” to 3- 3 A” wide by up to 220’ long. 

The user must supply power for motors and sole¬ 
noids. The user must also supply solenoid print signals 
and paper feed control, but, then again. . .micros do that 
so well. Characters can be either 5x7 or 9x7. The 130 
will only print 34 characters per line, but, at that price 
and speed, maybe it’s worth it to tape two pieces of 
paper together to get 68 characters on a line. 


There are two other speech synthesis systems worthy 
of, at most, very brief mention here—primarily for the sake 
of completeness. 

The first is a custom LSI component that has a 
limited and fixed vocabulary. This contrasts with the pre¬ 
ceding systems which allow English speech synthesis limited 
only by the capacity of the computer’s memory to store 
the byte-strings that specify the words and sentences. This 
LSI component was developed by Dr. Forrest Mozer, a 
physics professor at the University of California, Berkeley. 
The custom chip was implemented by Silicon Systems, 

Inc., in Santa Ana, CA. It will generate 24-64 complete 
words. It has been used in a “talking hand calculator” of 
particular value to the blind. This calculator is made by 
Telesensory Systems, Inc., 1889 Page Mill Rd., Palo Alto 
CA 94304; (415) 492-2626. It uses a TMS1000 micro¬ 
processor from TI, and the entire unit sells for $395. 

The second system is a voice response system for the 
PDP-8, PDP-11, and NOVA computers that uses a “solid- 
state speech synthesizer.” It is available from Interface 
Systems, Inc., 462 Jackson Plaze, Ann Arbor MI 48103, 
and sells for $6,750 to $47,500. Need we say more? 

One final “maybe” system: We have heard that some 
crowd calling themselves “Master Specialties” is peddling 
voice synthesis equipment, but we have been unable to find 
out their location, the details of their product, or their 
pricing. Anyone know where they are—or know anything 
else about them, for that matter? 


CROMEMCO NEW ADDRESS 

CroMemco has moved from Los Altos. Their new 
address is 2432 Charleston, Mountain View, CA 94043, 
(415) 964-7400. 


A DOT-MATRIX PRINTER WITH 80-COLUMNS 
FOR AROUND $305??? 

We are currently tracking down the details on a 
printer rumored to become available from Practical Auto¬ 
mation, Inc. (address info when we get it) in about the 
middle of September, designated the DMTP-6, which will 
handle 8!4” paper, print 80 characters per line, and be 
priced slightly above $300. Our guess is that the price 
is for OEM quantities, however, who knows. . . 


PHILADELPHIA HOME COMPUTER SOCIETY 

At last Philadelphia has its own computer society. Started 
as the result of a letter in Byte, the initial meeting drew 
over 80 interested individuals. So far we have had demon¬ 
strations of Sphere and the Digital Group computers. Plans 
are for field trips to the Moore School of Electrical Engineer¬ 
ing (birthplace of the ENIAC) and to nearby MOS Technol¬ 
ogy. Our newsletter, TJie Data Bus, provides meeting informa¬ 
tion as well as articles on hardware and software, book reviews, 
letters, cartoons, etc. Interest is mushrooming and all of us 
here have visions of computer grandeur. 

Dick Moberg 404 S. Quince St. 

Philadelphia, PA 19147 


MARIN COUNTY COMPUTER GROUP 

Hobbyists in the Marin County area of Calif¬ 
ornia gathered for the first meeting of a new hobby 
group on July 21st. For information about this new 
group, contact the Byte Shop Computer Store, 509B 
Francisco Blvd., San Rafael, CA, (415) 457-9311. 


Page 8 


Dr. Dobb's Journal of Computer Calisthenics 8t Orthodontia, Box 310, Menlo Park, CA 94025 


September, 1976 


235 








ENGLISH-TO-PHONETICS TRANSLATOR FOR 
PHONEME SPEECH SYNTHESIZERS 

Joe Mockus 


Automatic Translation of English Text to Phonetics by Means of 
Letter-to-Sound Rules. 

Honey Sue Elovitz, Rodney W. Johnson, Astrid McHugh, and John 
E. Shore. 

Naval Research Lab Washington DC 21 Jan 76. 101p. NRL-7948 
AD-A021 929/5WC Hardcopy $5.50/Microfiche $2.25 

[available from National Technical Information Service, 5285 Port Royal Rd. 
Springfield, VA 22161] 

Speech synthesizers for computer voice output are most useful when 
not restricted to a prestored vocabulary. The simplest approach to un¬ 
restricted text-to-speech translation uses a small set of letter-to-sound rules, 
each specifying a pronunciation for one or more letters in some context. 
Unless this approach yields sufficient intelligibility, routine addition of 
text-to-speech translation to computer systems in unlikely, since more 
elaborate approaches embodying large pronunciations dictionaries or 
linguistic analysis require too much of the available computing re¬ 
sources. The work described here demonstrates the practicality of 
routine text-to-speech translation. A set of 329 letter-to-sound rules 
has been developed. These translate English text into the International 
Phonetic Alphabet (IPA), producing correct pronunciations for approx¬ 
imately 90% of the words in an average text sample. Most of the 
remaining 10% have single errors easily correctable by the listener. 

Another set of rules translates IPA into the phonetic coding for a 
particular commercial speech synthesizer. This report describes the 
technical approach used and the support hardware and software de¬ 
veloped. It gives overall performance figures, detailed statistics showing 
the importance of each rule, and listings of a translation program and 
a program used in rule development. 


A NERVOUS SYSTEM 
FOR THE HUMAN RACE 

Good morning, June 10, 1976 

We here are working on a plan for a series of "information 
stores" that would require computerization for large-scale 
information flow. Our plan involves store-front access points, 
an open catalog of information available, and economic self- 
sufficiency through both mass marketing of information and 
"per-bit" charges for both input and output information. 

Ultimately, the plan would involve utilization of the infor¬ 
mation for specific problem-solving assignments, on-going 
studies of attitudes and values, selective dissemination of in¬ 
formation and analysis to political figures and others likely to 
be influenced toward implementing the public good, and 
much more. 

The plan has been compared to giving the human race a 
nervous system complete with a brain. 

Please send us any information you can that relates to this 
task, and let us know if you would like to get more involved 
in what we are doing. 

Sincerely, 

Robert A. Moskowitz 403 W. School House Lane 

Philadelphia PA 19144 


BUSINESS WEEK NOTES HOBBYISTS 

The July 12 issue of Business Week carried a full-page 
article about the computer hobbyist movement. They also 
devoted 7 pages, essentially, to microprocessors, in a major 
article in their July 5th issue: "The Smart Machine Revolution." 


AN EXCELLENT 

BUY & SELL NEWSLETTER 

There is a very useful little typewritten news¬ 
letter available, that is explicitly concerned with want 
ads for computer hobbyists, both for buyers and 
sellers. It is called ON-LINE , and is published by 
D.H. Bettle, 24695 Santa Cruz highway, Los Gatos 
CA 95030. It is published every third Wednesday, is 
sent by First Class mail, contains 6 to 12 pages in 
each issue, and has a very fast turn-around—all ads 
received as late as the preceeding Saturday are in¬ 
cluded in the issue for that month. The publisher 
states that they put out 17.3925 issues per year, but 
we assume that is merely an approximate figure. 
Subscriptions are SI/four issues, or S3.75/18 issues 
(= one year), or $7/36 issues. 

For those wishing to advertise, there are both line 
rates and word rates, and there are reduced rates for 
ads running in multiple issues. There are also much 
lower rates for non-commercial ads than for commer¬ 
cial ads. As far as we can tell, there are no display 
ads; it’s all text, which means much more meat in 
much less space. 

We highly recommend this publication to those 
interested in buying or selling goods for the com¬ 
puter hobbyist. 

USED EQUIPMENT 
INFORMATION BROKER 

The Computer Equipment Information Bureau, 

Box 163, Boston MA 02117; (617) 247-2290, has 
listings of used computer equipment. The listings are 
free to buyers, and are available to sellers for a fee. 

R. Ferrera is the President of the Bureau. 


BLIND RUMOR: A FLOPPY DISC 
SUBSYSTEM FOR ABOUT $1K 


We heard the rumor that one of the companies that is 
marketing to the hobbyist community is putting the final 
touches on a floppy disc interface for Diablo's Model 12 disc 
drive. We also heard that the disc will store about three 
megabits, formatted, and that Xerox (Diablo's after-birth 
parent company) will be selling the unit for around $1000. 

We checked the story with the rumored company, and 
were told that there would be an announcement "soon.” 
Since we think this company is one of the "good guy" 
crowds, we are going to abide by their plea that we not 
disclose the about-to-be manufacturers. 

We do have a question, however: Why should anyone 
bother to wait for this system, when they can get one of 
Digital Systems' floppy units—right now, off the shelf, 
assembled and burned in—for $1095 (or $995 in quantities 
of 10)? Digital Systems' unit is already out in the field, has 
an excellent reputation from its users, uses a top-notch 
Shugart drive, and—perhaps the best thing of all—runs 
Kildall's CP/M, the DEC System-10-like floppy disc operating 
system that has been in production and instructional use for 
over two years. [See DDJ, Vol. 1, No. 7, for additional 
details.] 


LOTTA FLOPPIES 

Shugart, the manufacturers of one of the best- 
reputed floppy disc drives available in a highly com¬ 
petitive market, has shipped over 30,000 of their 
drives. 


Page 9 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 September, 1976 


236 







CASSETTE REPOSITORY, TRAC, OTHER LANGUAGES, 
CP/M, AND PROCESSOR TECHNOLOGY PRAISE 

Dear Jim, July 20, 1976 

1) Many hobbyists may now be starting to do some heavy 
stuff in assembly language. With things like the Tarbell cassette, 
the capacity is now there to be able to store the 100K or so 
needed for a fair-sized program. However, a lot of hobbyists are 
stuck for a means of hard copy. Even if they have a teletype, 
not many people care to wait the 3 hours necessary to list a 
program of the aforementioned size. Such a listing can be a very 
useful thing to have. What am I getting at? We need a place 
where we can send our cassettes (it almost has to be cassette; I 
shudder to think of someone trying to handle 2 miles of tape. 

In any case, getting such a tape would entail the same problems 
as getting a listing) or maybe floppy discs to get a listing of them. 
Whoever does it could charge a nominal fee and you could get 
back a lineprinter listing. I don't know if anyone could feasibly 
provide this sort of service, but if it is possible, it'd be nice. Of 
course, you'd have to standardize the format of your cassette- 
but then, standards are necessary. 

Speaking on the subject of standards, I think DDJ would 
make a good forum for discussion of such things. If we’re ever 
going to really share stuff, we're going to have to tackle this prob¬ 
lem. 

2) Regarding TRAC: I'm sorry to hear that Calvin Moores 
is such a nut on the subject of copyrights. TRAC looks like such 
a fascinating language (from what I read in T. Nelson's Computer 
Lib). One thing I did notice in Computer Lib is that "Moores 
stands ready to accomodate . . . experimenters who wish to try 
their hands at programming a TRAC processor. An experimenters 
license may be obtained for use of the copyright material for a 
few dollars . . ." 

I'm not sure whether this means you can try your hand at 
writing a TRAC interpreter for your own use, or whether this only 
means if you find a system that runs TRAC, you can write pro¬ 
grams for it. Did you notice anything about this in your deluge 
of paper from him? 

3) I'm very interested in your idea for small Pascal, even 
though I've never heard of it. But then, almost anything would 
be better than BASIC. One thing I'd like to see is some sort of 
list-processing language. BASIC is primarily oriented towards 
numbers, when a good deal of computer applications deal with 
text. That's where TRAC would be nice. 

4) I recently visited a person who had CP/M (the much 
heralded floppy disk operating system) up and running. I was 
quite impressed. One thing that wasn't mentioned was that the 
system also includes an assembler. I also hear there is a com¬ 
piler BASIC up to running with the system. I didn't get too much 
of a look at it, but I've been given the opportunity to learn to use 
it, and with this guy's permission. I'll send in my comments. 

5) A word of praise here for Processor Technology's VDM. 
I've had a chance to compare Polymorphic's video board with the 
VDM (from a user point of view). When I first saw the Polymor¬ 
phic's board it had the problem of white garbage being displayed 
on the screen (I understand that a fix has since been sent for 
this). I've seen no problems with the VDM. It is a very high 
speed device. 

The thing that really makes the VDM so nice is the soft¬ 
ware. Processor Tech is really supporting this device. Their 5K 
basic, for instance, has the VDM driver built right in. 

That driver is in itself interesting. It allows you to clear 
the screen and turn the cursor on and off, as it should, but it 
also allows you to change the rate of output. While the VDM 
is being outputed to, pressing one of the digits 1 through 9 on 
your keyboard changes the speed of output. 1 is equal to about 
2 characters per second, and 9 is a maximum of 2000 lines per 
minute. In addition, the output can be stopped at any time by 
depressing the spacebar. Any other character pressed then 
resumes output. 

This driver also works very nicely with MITS BASIC. 

All in all, the VDM is a fine product. It makes program 
development. 

6) Comments on Processor Tech's 5K BASIC: To start 
with, it's not really 5K BASIC: it needs 6480 bytes (decimal). 

It does have the feature of allowing more than one program in 
memory at a time; it does by the MEM command. When this 
command is issued, BASIC asks for a starting and ending ad¬ 
dress. Your program is put in this zone. It also asks you if 
the program is loaded. Note that BASIC does not concern 
itself with addresses. It blindly trusts you to give it address 
which are within your available memory. You also have to 


NEW HOME COMPUTING RAGS 

In the event that you have blindly bypassed the full-page 
ads in a number of ad-carrying magazines, two new hobby 
periodicals are in the offing: 

Personal Computing, bi-monthly, $8/yr ($6/yr before 
Sept.1976), first issue October-November, Benwill Publ. Corp,, 
167 Corey Rd., Brookline, MA 02146 

Microtrek, monthly, $10/yr, first issue: September, 1976 
Schneider Publ., Inc., Dows Bldg., Cedar Rapids, Iowa 52401 
[Iowa???] 

Both will be your usual, run-of-the-mill, exciting hobby rags, 
filled with display ads, articles, letters, etc. PersonaI Computing 
is touting an interesting twist: each issue will carry a full- 
color, poster-sized computer graphic...a center-fold for computer 
phreaques. Betcha neither one of 'em will ever devote 15 or 
20 pages to complete documentation & annotated source code 
listings of systems software, though [toot of own horn]. 


WE WILL TRY TO GIVE THE INFORMATION THAT YOU 
WANT 


Ever get excited over a widget that's advertised as costing 
"only $1195", only to find out that price is for 100 units to 
OEMers and excludes some essential component? We have. 

We find it quite irritating to read an advertisement or 
article in a trade magazine or commercial [ad-carrying] mag 
that avoids giving crucial information and forces us to call 
or write for the desired details...and often an additional 
sales pitch. The other day, we suddenly realized that we 
could systematically correct that problem as far as Journal 
articles were concerned. Since we aren't paid for publishing 
product information, we are not constrained by advertisers' 
desires. 

Therefore, to the extent possible, we will make it a 
policy to publish desirable product data such as: single-unit 
price, address, phone, availability, warranty, limitations, etc. 

We won't always succeed...particularly in the case of "hot 
stuff" that comes to us just before going to press...but we 
will try. 


keep the programs separate. 

BASIC also has the TSAU and TLOD (or TLOAD - I'm 
not sure) commands which allow user-written cassette (or 
disc) loading programs to be accessed. 

It also allows assembly language subroutines to be 
accessed via the CALL and ARG functions. ARG(x) passes 
the argument x (as a 16-bit integer) to the subroutine. Y = 

CALL (7000) assigns Y the value returned by the subroutine 
at 7000 decimal. 

This BASIC has all the features of "standard" BASIC, 
with the exception of strings. It includes READ-DATA,FOR- 
NEXT loops, SIN-COS-TAN functions, as well as the LOG and EXP 
functions. 

I do have one objection to it: when you press CR 
(without putting anything on the line), it gives you a bad syn¬ 
tax error. 

Well, I've rambled on fo' quite a while now, and so 
I'll quit here. 

Computer power for the people! 

Paul Holbrook 6104 Craterlake Ct. 

(alias Cap'n Quirk) Pleasanton, CA 94566 


Page 10 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 September, 1976 


237 





A FREE CATALOG OF MINICOMPUTER ACCESSORIES 

A catalog of computer supplies, accessories, connectors, 
cables, etc. is available "for the professional minicomputer 
user" from Minicomputer Accessories, Catalog Sales Dept., 
[1015 Corporation Way] P.O. Box 10056, Palo Alto, CA 
94303, (415) 969-5678. 


FEW FAULTY LSI-ll’s FOUND 

DEC (Digital Equipment Corp.) shipped more than 3000 
LSI-11's in about six months. In that period, only 63, (2%) of 
them were returned as defective. DEC tested those that were 
returned and, in only 20 (0.6%) cases, agreed that the micro¬ 
computer was in fact, defective. 


AN INTERVIEW WITH THE INVENTOR OF THE PDP-11 


The May, 1976, issue of a trade magazine called Research/ 
Development carried an interesting 5-page interview with Gordon 
Bell: "Computers-Past, Present and Future". It presented some 
quite interesting historical information about computer develop¬ 
ments, particularly about the work done at Digital Equipment 
Corporation. It also illustrated some of the viewpoints and 
background of Dr. Bell, DEC'S V.P. of Engineering, and a very 
well known computer engineer and researcher. 


NEWSMANSTOWN, PA SYSTEMS GROUP: 
SORTIARIi 

Gentlepeople, 28Apr76 

We are an embryonic, two-man company located in a 
relatively backward section of Pennsylvania. Our principal 
interest is in hardware maintenance and software support for 
personal and very small business applications. We're also 
interested in industrial controller systems. Our house machine 
will be a Sphere system with 36K core, and a line printer. 
Sincerely, 

David J. Beard Rd. 1, Box 192C 

Sortiarii Newmanstown PA 17073 

Minicomputer Systems & Applications (717) 949-6848 


NYC STORE: 

HOBOKEN COMPUTER WORKS 

Dear Dragon People, 12 May 1976 

The Hoboken Computer Works is another small, 
friendly computer store in the metropolitan New York area. 

A stroke of luck (and a memorable name) put us right on 
the front page of the New York Times last week. 

... I can't end this note without expressing my person¬ 
al appreciation for what PCC has been doing for the last few 
years. Obscurantism, ego-tripping, and elitism have dominated 
the world of computers for too long. Even though I note 
lingering evidence of these nasties in some of the letters 
published in PCC, I think you're doing a marvelous job of 
opening up these musty rooms to a little fresh air. 

Yours, 

Bob Radcliffe 56 - 2nd St. 

Hoboken Computer Works Hoboken NJ 07030 


PLESSEY DOES RIGHT BY HOBBYISTS 

A major manufacturer offers significant 
discounts to hobbyists on memory 
& a 1000 cps tape reader 

Plessey Memories and Plessey Microsystems is the 
first large manufacturer, traditionally marketing its 
products to major industrial purchasers, that is 
making its very significant GSA (U.S. General Ser¬ 
vices Administration), and Educational discount 
schedules available to hobbyists. 

They offer a 1000 char-per-second paper tape read¬ 
er, including electronics and buffering, to hobbyists 
(and Educational, and GSA customers) for S340. The 
1-4 quantity price to their industrial customers is 
$425. This 1000 cps reader has several quite interest¬ 
ing features. For one thing, it uses a capstan/pinch- 
roller to move the tape, rather than a much more 
wearing sprocket feed. For another, their phototran¬ 
sistors are infrared-sensitive to provide maximum 
coupling efficiency, and the light sources are LED’s 
that never need adjustment. 

They also offer a core memory module that is 
directly usable with National’s IMP-8, IMP-16, PACE, 
and SC/MP micros, and can obviously be interfaced 
to most other microprocessors realtively easily. The 
fact that it is core means that it is nonvolatile', your 
programs stay there when the power goes away. 

These units are available to hobbyists, educators, and 
the feds for $1085 for a 16K module, organized as 8K 
16-bit words. To industrial customers, Plessey’s price 
is $1500 in single-unit quantites, and $1365 in 10-14 
quantity. They are really “doing right” by hobbyists. 

The core memory modules require a controller. 
Plessey markets their controller card (already assem¬ 
bled, of course) to hobbyists, etc. for $360 ($500 to 
industry, unit quantity). This controller is rather 
flashy: it provides for memory expansion, data save, 
write protection, and address partitioning. Units are 
available 30 days ARO (After Receipt of Order). 

Incidentally, Plessey policy is to not publish prices, 
but rather, to give quotes for specific orders to 
specific customers. The Plessey rep was less than over¬ 
joyed about our plan to publish these prices . . . but 
then again, the Journal is here to best serve its 
readers; not the vendors. Don’t spread the good word 
about Plessey pricing too far, though. Otherwise, 
some of their greedier industrial customers might 
apply some unpleasant pressure. 

We applaud Plessey for their fair-minded decision 
to market their products to the hobbyists on the same 
price schedule they use for educational customers. We 
believe it is a logical policy, and is certainly a policy 
that benefits the home computer user, who derives 
no financial gain from his or her system. If you also 
approve, why not drop them a note of thanks. 

Plessey, 1674 McGaw Ave., Irvine CA 92714, has 
22 national and international sales offices. 


HOT IDEA 

Why doesn’t someone interface an LSI-11 bus to a 
hobby-standard (Altair/IMSAI) bus? Then people 
would be able to take advantage of the potency of an 
LSI-11 processor, and the economy of hobbyist sub¬ 
systems and peripherals? 


Page 11 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 


September, 1976 


238 








PROPOSAL: A BOARD TO EXPAND 8080 
INSTRUCTIONS 


Dear Jim, August 13, 1976 

We plan to make a Hobbyist-Standard (Altair/IMSAI com¬ 
patible) card which will add new commands and addressing modes, 
some of which will match or better the Z-80 commands. 

We would like your opinion on what is desirable. Some 
of the possible extensions are listed below. If some variation 
seems more appropriate, as an addition or as a substitution, please 
mention this. Notes about any other function you wish added 
will be appreciated. 

Of course, the more we put in, the more it costs. And 
there is the basic question is it worth it, since existing soft¬ 
ware would have to be modified to take advantage of it. 

Please respond to: 

Walt Ferris 2311 Middlefield Rd. 

Palo Alto, CA 94301 
(415) 321-1231 

Editor's suggestion: Rank-order your preferences from most- 
desired to least-desired, and indicate the maximum you would 
pay for each facility (in kit form, and in assembled form). "J.W." 

POSSIBLE NEW COMMANDS THRU “80F”. 

1. Block Move. 2 byte op-code, parameters such as starting 

addresses and ending address are in memory. Speed: 

2 or 3 clock cycles per byte vs 21 for Z-80. 

2. Block Search for one character. 2 byte op-code, 1 byte 

operand to search for, other parameters in memory. 
Speed: 1 clock cycle per byte vs 21 for Z-80. 

3. Block Search for a character suing, of programmable 

length, say up to 16 bytes. 2 bytes op-code, 
parameters in memory. Speed: 1 clock cycle per 
byte of area searched. Address found is left in 
memory. 

4. Block search for any of up to 16 different bytes. You 

program a table in memory; when one is found it 
jumps to a programmed address. 2 byte op-code. 
Speed: 1 clock cycle per byte of area searched. 

5. Program-relative Addressing for all 8080 jumps, calls and 

memory-accumulator instructions. 2 byte op-code. 
Jumps and calls have 2 byte displacement, + 32K 
bytes range, and speed of 16 clock cycles vs 12 for 
Z-80. The mem-acc group could be either 1 byte or 
2 byte displacement. 1 byte gives +127 byte range. 
Speed would be 17 clock cycles for 2 byte, 13 for 
1 byte. 

6. Indexed Addressing for all 8080 jumps, calls and memory- 

accumulator instructions. Index registers are in memo 

1 propose 3 and the maximum is 4 with a 2 byte op¬ 
code. With a 3 byte code it is unlimited. The index 
registers are 2 byte and the displacement (operand) is 

2 byte. Speed: 16 or 17 clock cycles. 

If we reduced displacement to +16K we could use 
one bit to specify yes or no to auto-increment. If 
we reduced displacement to +8K, we could use the 
two bits to specify: 

Indexed, 2 byte operand 
Indexed, auto-increment, 2 byte operand 
Indexed, auto-decrement, 2 byte operand 
Indirect,, use index register, 1 byte operand. 

7. Two-byte memory-accumulator commands (base page or 

zero page type). 1 byte special op-code. 1 byte 
operand which has to specify both operation and 
address; thus we can have 8 operations and 32 


Z-80 DETAILED IN ELECTRONICS 

The August 19th issue of Electronics contains an excellent 
and comprehensive article detailing the features and capabilities of 
Zilog's Z-80 [see DDJ, Vol. 1, No. 7, for article on Z-80 based 
hobby kits]. The article was written by M. Shima, Federico Fag- 
gin, and R. Ungermann, three of the principals in Zilog. Inciden¬ 
tally, Faggin used to work at Intel, where he designed all Intel 
micros from the 4004 through the 8080. 


GERMAN COMPANY ENTERS KIT MARKET 

Siemens AG, a West German electronics manufac¬ 
turer, has introduced a computer kit for around $200. 

It uses a SAB 8080A micro, and includes a 256 word 
EPROM, some static RAM, a clock generator, and other 
minor tidbits. 


[GIGGLE TIME] 4040 SYSTEM WITH IK OF 
RAM IS PRICED AT $1,195.00 

International Microsystems, Inc. (address presumed 
unwanted by hobbyists) is trying to peddle an assembled 
microcomputer for $1,195.00. That’s a reasonable price 
until you find out that all it has is a 4040, IK bytes of 
RAM, sockets for IK of PROM, a simple front panel, a 
simpler system monitor, and a “Test PROM” program 
. . . and that’s all. 


COMPUTER CHESS TOURNAMENT 

Entries are being solicited to the Seventh U.S. Computer 
Chess Championship to be held October 19-21, 1976 in con¬ 
junction with the ACM Annual Conference in the Hyatt 
Regency Hotel, Houston, Texas. A f our round Swiss style 
tournament is planned with the first round on Tuesday, 
October 19 beginning at 8 p.m., and the final round on 
Thursday, October 21 at 8 p.m. The field will be limited 
to 12 teams. David Levy, International Master from England, 
will serve as tournament director. 

For further information and for an application form, 
write to Dr. Monroe Newborn, School of Computer Science, 
McGill University, Montreal, Quebec, H3C 3G1, Canada. 


y addresses or 16 & 16. Speed: 12 cycles vs 13 for 
ST A or 7 for ADD. 

8. Programmable interval timer with associated programmable 

vector address when that interrupt comes. 2 byte 
op-code. The parameters could be in memory or be 
operands. There could be 3 or 6 channels. Man¬ 
agement would be a problem. 

We could have a memory address go high if each 
timer was in use; or we could have an automatic 
dispatcher if the parameters were in the operands, 
and have the memory address go high if all the 
timers were in use. 

9. Hardware Random 9-bit number; could have also a ran¬ 

dom decimal number, or a random packed decimal 
number. 

10. Hardware multiply, etc., etc. 

11. What else? 


Page 12 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 


September, 1976 








SIGNETICS 2650 PROTO BOARD FOR $190 

A new hardware development tool for microprocessor- 
based systems that allows a user to configure an accurate 
prototype with a minimum of design effort is now available 
from Signetics. Called the Adaptable Board Computer (ABC), 
the prototyping tool matches the accuracy of a development 
system built from scratch with the convenience of a pre¬ 
assembled prototyping card, according to David Uimari, 
Microprocessor Product Marketing Manager. 

The ABC system consists of a printed circuit board 
with circuitry designed to meet a broad range of proto¬ 
typing requirements; a 2650 microprocessor; 1000 bytes of 
ROM that includes PIPBUG, a Signetics-developed loader, 
editor and debug program, 512 bytes of RAM; both serial 
and parallel input/output ports; and a dual monostable on¬ 
board clock. 

Even without adding components, other options 
can be selected by the user by simply moving jumper 
wires. These options include replacing either the ROM or 
the RAM with PROM, implementing asynchronous oper¬ 
ation, adding external clock input, interrupt vector, and 
RS232 or TTY serial input/output. 

Additional memory or control features, unique input/ 
output circuits and the like, can be added by connecting 
selected components to the existing circuitry with jumper 
wires or wiretap connections. Room for new components 
is provided on the board, with plated through holes in 
place. 

The Signetics ABC system is available in either 
card form or as a kit. The card, which is completely 
assembled and tested, is priced at $275 in unit quantities. 

The kit, which comes complete with all ICs, resistors and 
capacitors, is priced at $190. Both versions are available 
from stock throgh Signetics and its authorized distribu¬ 
tors. 

For further information on the Adaptable Board 
Computer contact Signetics, 811 East Arques Ave,, Sunny¬ 
vale, CA 94086, (408) 739-7700. 




There are 2 n possible combinations of data in an 
n-bit RAM and 2n x 2 n cycles required to test them. 
It would take only two seconds to test all of the 
patterns in a 16-bit RAM at one microsecond per 
cycle, and about three days to test a 32-bit RAM. 
But, earliest man, working day and night since his 
birth around 450,000 years ago, could not have 
tested even 1% of a 64-bit RAM's possible pat¬ 
terns. Care to think about the 4K RAM? 

-From a Fairchild propaganda leaflet 


256K BYTE CORE MEMORY FOR $6500 

Dataram Corp., Princeton-Hightstown Rd., Cranbury, NJ 
08512, (602) 799-0071, is offering a 14!' x 16" board con¬ 
taining 128Kx18 magnetic core memory with 650ns access and 
1.5ps cycle for $6500 for a single unit and $5070 for 25 units. 
They say their sales are only on an OEM basis, but I betcha 
they'd sell 'em to someone who'll buy 'em. 

And, the nice thing about core is it remembers, even 
when the power dies in the middle of a six-hour program 
development session. 


8K MEMORY INCLUDES BATTERY BACKUP 

Seals Electronics, Box 11651, Knoxville, TN 37919, is 
offering an 500ns access time, 8K memory board that plugs 
into a hobbyist-standard* bus and includes battery backup 
to maintain memory contents when power is turned off 
(by you, or by accident). Its priced at $295/kit or $394 
assembled, plus $2 for shipping. You can use B of A, 
MasterCharge, or 75% C.O.D. 


* Up to this point, most people have been refering to the 
default-standard bus that is very widely used in the hobbyist 
community as an "Altair/IMSAI bus". We think its more appro¬ 
priate, now, to call it the "hobbyist-standard bus". 


65K BIT CCD's FROM T.l. 

Texas Instruments expects to offer prototypes of a 65K 
bit CCD (charge-coupled device) memory chip by the beginning 
of 1977. It will have a serial/parallel/serial (SPS) loop con¬ 
figuration, using 32 2K - bit loops. 


65KB CCD's FROM FAIRCHILD...SOONER 

Fairchild expects to deliver 65K CCD chips even sooner; 
beginning fabrication in September and offering samples to se¬ 
lected customers in October. These memory chips, numbered 
CCD465, also use an SPS organization, and have traded speed 
for low cost, low power and high density. Average bit-access 
time will be half a millisecond; worst case will be one ms... 
comparable to most fast discs and drums. 


64K CCD BOARD FOR $1500+ BY END OF YEAR 

BISI, 410 N.E. 72nd, Seattle, WA 98115, (206) 524-4101 
[and Vancouver, B.C.], has recently distributed preliminary in¬ 
formation on a 64K byte CCD (Charge-Coupled Device) 
subsystem. It is to function as a BORAM (Block-Oriented Ran¬ 
dom Access Memory; one reads or writes an entire block of 
bytes for each data transfer); a disc replacement. The proto¬ 
type has been used for about two months in a burroughs system, 
replacing a head-per-track disc and is said to have had essentially 
no failures. 

BISI is targeting for October availability, but sez end-of 
year for sure. The subsystem will plug into a hobbyist-standard 
bus and will require three boards. The CCD board (about $1500) 
the controller board, and the DMA board (no prices suggested on 
the latter two boards). They will probably be available only as 
assembled, burned-in,subsystems, and will have a 90-day warranty. 

Right now, that's still too expensive for hobbyists palates, 
but you can be certain that the cost will drop dramatically in two 
years (or much less), as CCD's become more plentiful and cost- 
competitive. 


Page 13 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 September, 1976 


240 









UNIVERSITY OF CALIFORNIA REQUESTS 
SUGGESTIONS ABOUT STAND-ALONE 
COMPUTERS FOR ITS 120,000 STUDENTS 

The University of California is soliciting advice from vendors 
of computer equipment and programs. This is an opportunity to 
consult with us in advance rather than tell us what we should have 
done after the fact. We are earnestly seeking your best thinking 
prior to considering the publication of a Request for Proposal 
which will establish our direction for the near future. This docu¬ 
ment is not a Request for Proposal (RFP) but rather an invita¬ 
tion to share with us your ideas and recommendations whether 
they be basic or "blue sky." Your response to the Request for 
Information (RFI) is voluntary and does not commit either you or 
the University. 

The University wishes to dramatically improve the system of 
delivering computing capability to the 120,000 students on the 
nine campuses and associated sites. Instructional capability has 
been provided through both batch and timesharing services utiliz¬ 
ing existing large computers housed in a computing center located 
on each campus. In the last two years, several of these centers 
have installed timesharing minicomputers which allow for the 
connection of several (typically, 16 to 32) remote terminals, 
through which the student may write programs in BASIC or 
access prewritten programs provided by an instructor ("Course¬ 
ware"). These minicomputer-based timesharing systems have 
proven to be very effective and they have the capability of expand¬ 
ing the services to meet academic needs. Such systems are flexible 
enough to meet a very large percentage of the needs of a very 
large percentage of the students. 

We feel that, now, with the changes being brought about by 
improvements in chip technology and the corresponding explosion 
in microcomputer capability, even lower cost solutions may be 
possible without giving up anything in capability. With any time¬ 
sharing system, unless all terminals can be hard-wired, there will 
be additional costs (beyond the computer and the terminals) for 
modems and communications lines. Technology has been producing 
orders of magnitude improvements in price/performance of com¬ 
puters, but communications costs are rising. Therefore, it seems 
prudent to search for solutions regarding delivery of computing 
which do not depend vitally on communications. Such a model 
might be found in a single-user machine with the following design 
goals: 

Desirable Features 

Interactive programming capability in some language such as 
BASIC or APL. The implementation should include the advanced 
features of the language. 

User space approximately equivalent to that provided in 
multi-user timesharing systems. 

User-removable read/write storage capability with "reason¬ 
able" retrieval times, (diskette, cassette, videodisk, etc.) 

Both character and graphics capability on some screen 
medium. Appropriate software (firmware) extnesions to deal with 
graphics. 

Full typewriter or teletypewriter keyboard facility. Addi¬ 
tional controls for cursor positioning for alphanumeric as well as 
graphics use. 

Some form of course-writing software/firmware such as 
PILOT or DIALOG. 

Editor program for preparation of programs to be executed 
on another computer. 

Provisions for attachment of communications interface. This 
should provide two functions: 

1. Easy interface to a host computer. 

2. Ability to service input data streams from other devices such 
as laboratory experiments. 

Extension Capability 

Additional or alternative language capability. 

Software/firmware for word processing applications. 

Color screens for graphics. 

Provisions for attachment of high-quality impact printer of 
reproduction quality as output from word-processing applications. 


Physical and Packaging 

Two physical versions. The first might be built into a desk or 
tabletop and would be consdiered non-portable. The second would 
be able to be carried by one person for short distances at least. 
Thus, this version would be "portable." The first version could 
be located in groups of five or more in a monitored room, while 
the second could be used in individual offices and classrooms. 

Since the majority of the machines would not have attached 
printers, an additional system type with the capability of produc¬ 
ing hardcopy from the screen image would be needed. It would 
have the ability of printing a page at a time, on request of the 
user, from his removable storage medium. Both graphic and 
character printing would be required. This machine could be 
another version of the One-on-One with special software/firmware 
or an entirely different peice of equipment. 

All equipment would operate from standard 110v 3-wire 
circuits. No special electrical circuits are to be needed. 

Main ta inability 

The system would be modular in design, allowing for board 
replacement to correct any failure. Adequate stocks of spare 
boards for each campus should be available. Board repair would 
be done by the vendor. 

Alternatives 

Although this is primarily a request for information for a 
single user system, the University does not wish to prejudge the 
thoughts and development that many vendors may have already 
devoted to the delivery system problem. Since our desire is to 
have the most cost-effective solution possible within the state of 
the art, a discussion of the pro and con of the above suggested 
approach compared with other possibilities would be most help¬ 
ful. For example, a little more software or firmware might pro¬ 
duce a cost-effective solution that might use a small number of 
keyboard devices clustered around a single processor. But the 
questions of file handling, of portability, and communications 
costs would need to be addressed as a minimum. 

Another possible alternative might sllow sharing of disk 
storage and common, read-only firmware while providing a micro¬ 
processor with each local unit. 

If you possess original ideas which might not satisfy the 
requirements anticipated in our possible RFP, the response to the 
RFI would be your opportunity to influence our determination of 
constraints to be incorporated into the RFP, so that your particu¬ 
lar configuration would be eligible for consideration. This is 
important, since it is expected that only those responses to the 
RFP which satisfy State qualifications therein will be accepted, 
i.e., no alternative proposals. Any concept which might run the 
risk of having to be in the alternate proposal category should be 
presented as a'response to the RFI, not the RFP. 

While there is no monetary renumeration for responding to 
this document, efforts expended should provide plans and text- 
material needed for your response to the anticipated RFP. Hope¬ 
fully, the uniqueness and enormity of our problem will be suf¬ 
ficiently tantalizing to serve as an inducement to stimulate your 
thinking. 

Responses to this RFI should be returned by October 1, 

1976. 

Questions 

Technical questions should be addressed to: 

Charles W. Stevenson 
Manager, Computer Planning 
Systemwide Administration 
University of California 
Room 192, University Hall 
Berkeley, CA 94720 
(415) 642-0393 

Procurement matters will be handled by: 

Robert Brilliant 
Purchasing Agent 
University of California 
2405 Bowditch Street 
Berkeley, CA 94720 
(415) 642-0881 


Page 14 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 September, 1976 


241 


“MUST” READING FOR ANY NOVICE CONSIDERING PURCHASING A KIT 

BROTHERHOOD, SYMPATHY & EMOTIONAL RELEASE FOR THOSE WHO ALREADY HAVE KITS 

Personal Computers: 

A Bit of Wheat Amongst the Chaff 

A Critique on “Little Hidden Gotchas” 


Found in a Multitude of 

by Jef Raskin 

Box 511, Brisbane CA 94005; (415) 467-4674 

Let it be known: the computer for everyman is not here. 
Yet. Caveat Emptor! The tempting price tags you see in 
the ads are a mere drop in the wallet. These are not 
Heath kits - you need a good bit of understanding of 
electronics and some about software to use them. Either 
that or a lot of patience and good learning habits, or a 
friend who knows what you don’t. Of course, you could 
wait until Heath does come out with one [which should 
happen by the time you read this.—Editor]. 

Having bought and built the two biggest names in 
the personal microcomputer field, the Altair 8800 and the 
IMSAI 8080, I know that there is much to praise. Both 
machines now run perfectly, reliably, and perform within 
their specifications as well as any computer I have worked 
with. They are dependable. I have purchased memories 
from Processor Technology, Dutronics, Solid State Music 
and Cromeco, a total of 52 Kilobytes, and all have oper¬ 
ated, once debugged, without error, week after week. 

The same is true for my IMS parallel I/O board, the 
MITS SI0 and 2-SIO serial boards, the PT Video board 
and so on. They all work. But, very few of them would 
have worked if I had not had prior electronics and com¬ 
puter experience. 

Before I go on to details, I should mention that I 
write from the point of view of someone who wants to 
use the computers in various applications; not learn about 
computers per se. I chose the kits because they are 
cheaper than anything else currently available (which 
means until approximately next week) in the way of true 
general purpose computers. If you want to be forced to 
learn about hardware the hard way, the inadequate docu¬ 
mentation (and just plain bad writing) that comes with 
almost all the personal computing products and the poor 
workmanship and parts of a few, will make you prema¬ 
turely wise, and give you a bad disposition. 

I will begin with an exception: the Cromemco Byte- 
saver. The quality of the printed circuit is up to the best 
commercial practice. The assembly manual did not lie 
once, and their software documentation was quite adequate, 
including a complete how-to-use-it for the novice and a 
source listing of the “bytemover” program. It is a study 
in How To Do It Right. Component locations are labeled 
on the board. A solder resist pattern keeps the wohbly 
hand from building bridges where none are colled for. 

The board was straight and true, and well laid out. It 
worked the first time, and caused us no frustration what¬ 
ever. 

On the other hand we have some amazing areas of 
incompetence and oversights. Never in my years of com¬ 
puting have I seen an assembler which omitted any items 
from the computer’s instruction set. Yet Processor Tech- 


Kits 

nology’s [PT] Software Kit No. 1 omits, for example, the 
POP PSW instruction. It will just not assemble it. This 
explains the otherwise mysterious SP EQU 6 in the source 
listings of the Bytemover and in Tarbell’s listings. They 
must have used the same assembler. You needn’t under¬ 
stand assembler to understand the problem. An assembler 
is primarily a program that takes memorable abbreviations 
and translates them into the more easily forgotten num¬ 
bers the machine feeds on. There is supposed to be a 
mnemonic for each instruction that the machine can use. 

A mere check of the instruction list published by (say) 
Intel would have discovered the fact that some were 
missing from the assembler. That such a check was not 
made is indicative of the malaise that the personal com¬ 
puting industry is suffering: Lousy quality control. 

Quality control must be worked at. I always work 
oh computers with my friend, partner and critic, Doug 
Wyatt, another professional computer nut. Whatever I do, 
from circuit design to documentation to soldering 100 
pin connectors into mother boards (yech!), he checks. 
Whatever he does, I check. We use a magnifying glass, 
a dictionary, anything that will help uncover errors. And, 
surprise, our stuff works the first time and keeps on 
working! RULE: You can’t catch all your own errors. 

The Dutronics 8KLST memory shows good quality 
control. It can be assembled according to the instructions 
and work, right off. Though 9 of the memory chips had 
problems (well, pretty good quality control) the 180 or so 
others were fine. While perhaps a step down from Cro- 
memco’s sheer professionalism in board layout, documen¬ 
tation and QC (quality control), Dutronic’s instructions 
were clear and current for the board, and the schematic 
was useful and easy to follow. I wonder this: If one or 
two companies can do it right and stay competitive, why 
can’t the others? Is it because the consumers are letting 
them get away with it? 

A Kind Word for the Palo Alto (California) Byte 
Shop is in order here. The nine bad chips were 
instantly replaced with new ones-of course, we had 
bought the memory boards there. And with service like 
that we’ll be back. Not all the computer stores have 
been so helpful, unfortunately. 

The Oliver Audio Engineering OP-80 A paper tape 
reader is a very handsome unit. The instructions were 
not up to the same high aesthetic standards. For exam¬ 
ple, you are told to bend the wire guides that align the 
paper tape with the read head. But they come pre-bent. 
Nothing wrong with that (it does make the kit a lot 
easier), but it seems to me that if Oliver (or whoever) 
goes through the considerable to bend the wires for each 
kit (and very accurately, by the way), is it asking too 


Page 15 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 September, 1976 


242 


much that a new page of instructions be typed as well? 
Then, too, we find comments such as “ . . . and align 
the sensor as shown below.” And we are never shown 
below or anywhere else. We are told “Install Jl.” 

Let’s see. Jl is not on the parts list. On the sche¬ 
matic? Nope. There the little bugger is, on the parts 
layout! 

I had problems of this sort with almost every kit. 

A typical kit’s parts list would tell you that there are 
4 74L04’s, the schematic would call them U34, U21, U8 
and U5; the layout diagram would have them labeled 
IC5, IC19, IC32 and IC26; the printed circuit board 
itself would be unlabeled altogether. And, to add insult 
to insult, three of them will be placed with pin one 
facing left and the last one with pin one facing right. 

Better be awake when you assemble this one. A fla¬ 
grant example is the Processor Technology “3P+S” board, 
to which I shall return later. On this board the chips 
actually occur in all four possible rectangular alignments. 
This is pretty poor for a board that is mostly jumpers 
anyway. But back to our typical kit. I should mention 
that there was a little slip of paper which fell out when 
I opened the plastic bag. It said that the 74L04’s were 
actually numbered WT87-9-6221. And just for you 
hackers who solder in your chips, there is an erratum 
(as usual placed at the end of the manual) saying that 
U21 is shown backwards on the parts layout. While 
fuming, remember that you will not only have to un¬ 
solder the thing but that you will have to figure out by 
tracing the schematic and the lands on the board whether 
U21 corresponds to IC5, IC19, IC32 or IC26 on the 
parts layout and, since the schematic is for REV 02 
and the board is labeled REV 03 and the parts layout 
has no REV number at all, you can’t tell if the change 
is still necessary. For newcomers, REV usually means 
“Revision.” 

While I have not run into all these problems simul¬ 
taneously on any one board or kit, they all have occurred 
in real life (if playing with computers is real life). Inciden¬ 
tally, I always use sockets. 

And Caveat Emptor to you if you want three 
parallel ports and a serial port, and you but the PT 
“3P+S” board [3 parallel + 1 serial I/O board]. It works 
fine, to be sure (remember that I began by saying that 
everything does, finally, work) but if you truly need an 
8-bit port, then you will need an extra bit or so for “hand¬ 
shaking.” For example, say a keyboard puts out eight data 
bits. When these are all ready for the computer, the key¬ 
board sends out a signal (usually called the strobe ) which 
tells the computer that a new character is on the data 
lines. Do I hear you ask: “Why can’t the computer tell 
that a new character is there by just noting when the 
character changes?” Well, just consider the South American 
llama. A computer can’t tell the first “1” from the second 
“1”, and would think you had typed “lama” thus changing 
a beast into a priest. Surprising what computers can do 
these days. Anyway, you need the strobe so you take a bit 
from another port and use it for that handshaking signal. 
Since the second parallel port needs handshaking, you take 
another bit or so from the third port and use it for that 
function. And since the serial port also requires control 
bits and etc., you steal a few more bits . . . Anyway, the 
“3P+S” is a good solid and flexible 2P+S with a control 
port. And, indeed, the instructions (quite extensive, but 
poorly organized), and the schematic all make it clear that 
the third parallel port was intended from the beginning as 
a control port for the others. Once again, marketing, wins 


out over technical accuracy. Most other brands of serial 
I/O boards do include a parallel handshaking port without 
calling themselves, say, a 2SIO+P. 

Now, a kudo for Processor Technology is in order. 
Their Video Display board (VDM-1) was easily built (even 
if it’s got lotsa parts) because the instructions are clear. The 
construction manual even had a good step-by-step checkout 
procedure. It seems to be a product of a different, and 
better, company. And out PT memories all worked per¬ 
fectly in my Altair. Not so in my IMSAI. The memory- 
protect would come on and off capriciously. There is no 
hardware protect switch on the early IMSAIs. Since I am 
not a hardware hacker (ha!) and am entirely above enter¬ 
ing long programs from the switches, I found the memory- 
protect feature less than useless, and unwired the feature 
from my Altair. The Processor Tech memories were ren¬ 
dered perfectly reliable in both machines by replacing the 
7400 used as the meory protect latch with two jumpers. 
This also gave me five spare 7400’s. 

The Processor Tech Altair motherboard is another 
example of lack of care. The fundamental intent was good, 
and the board works, but there is much wasted board 
space, and a pile of bothersome jumpers. This was due to 
too slavishly copying the original MITS board. The bus 
terminator regulator installation is a kludge. Included with 
the motherboard kit were two delrin rods with saw slots 
in them, meant to hold the various daughter boards up¬ 
right. There was an interesting oversight in their design. A 
good way to bend a stiff rod is to cut a series of slots 
part-way through the rod perpendicular to its long axis. 
These slots, intended to hold the boards up, in fact cause 
the rods to arc neatly away from the boards they are 
supposed to hold. This gives a new computer meaning to 
the word “floppy.” 

The Tarbell cassette interface is a prime example of 
good ideas followed by sloppy implementation and negli¬ 
gent documentation. A fault invisible to the naked eye— 
plated-through holes that weren’t—plagued both my hoards. 
While some updated documentation I have seen gives a few 
more hints than I got with mine, nowhere are we told, for 
example, that to use the interface, data must be preceded 
by a start byte (3C) and then a sync byte (E6) and then 
comes the data. You can dope this out from the example 
program given and from following through the schematic 
and reading your IC manuals but that should not be 
necessary. You can’t be sure from the sample program 
alone, by the way, that these details are necessary to run 
the board. They might be needed, as far as you can tell 
from the given program, by the particular algorithm being 
used, or perhaps by some other software that Tarbell uses 
somewhere else. Here, too, the assembly drawing did not 
have part values marked, necessitating much flipping back 
and forth from page to page during assembly. I get the 
impression from most kits that the instructions were never 
tested on persons unfamiliar with the device. 


A pet peeve: Cassettes have little tabs to break out if 
you don’t want the stuff on them written over. Not one 
tape pre-recorded by a manufacturer, including the BASIC 
from MITS that I paid for, had the write-protect tabs 
knocked out. Another pet peeve: Some manufacturers’ 
printed circuit boards have a specially shaped land where 
pin 1 of each IC fits. The peeve is this: those who don’t. 

A further peeve: The placing of modification and errata 


Page 16 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 September, 1976 


243 


sheets at the end of the documentation. 

And here’s a handful more of horror stories; little 
things that make computers seem much more frustrating 
than they need be. Like the un-numbered pages in so many 
instruction manuals. The IMS PIO board manual is com¬ 
pletely unpaginated. Since I’ve mentioned this manual, let 
me show you how a bit of thoughtlessness on the part of 
the writers cost me a few hours. On page 12 (if you write 
in the page numbers yourself) you are told how to wire the 
address jumper sockets. Good. There are two, the one on 
top is called C8, and the one on the bottom, B9. I must 
be dumb, because I wired the top socket on the board as 
shown for C8, and the bottom socket as shown for B9. 
Wrong. The diagram is schematic in nature, and the 
sockets are not that way at all. If I had bothered to check 
my assembly drawing or memorized the labels for each IC 
position I would not have been so harried. B9, shown on 
the bottom in the illustration is, of course, above C8 on 
the board. 

I think these problems stem from this: the people 
who know best what their equipment is intended to do 
seem to know it so well that they can’t tell new users what 
is going on. Certainly Mr. Tarbell designed his board with 
the idea that a code of 3C was required to get it started. 
But the sentence that would have made this knowledge 
public: “The board must be sent a byte containing 3C 
(in hex) to start it and then a byte E6 (in hex) to syn¬ 
chronize it before sending data.”, does not occur. Similarly, 
if the PT “3P+S” board advertisements and manual stated, 
“This board contains the hardware for one serial port and 
two parallel ports with a separate status and control port 
for them,” I would have had fewer complaints. If the 
manufacturers would test their assembly and user manuals 
on a few people not familiar with the design of the module, 
they would quickly find out how to improve their style. 
And, if we users would stop buying badly kitted equip¬ 
ment, and demand well-written manuals, we’d get improved 
kits and better written manuals. 

The current software situation is even worse. But 
that is a topic for another time. 

A WORD ABOUT THE AUTHOR 

Jef Raskin has been playing with computers since late in 
grammar school. Not that he was often late. He has been Director 
of a small computer center at U.C., San Diego, and taught such 
courses as computer programming, computer animation, computer 
music at San Diego, as well as a number of other colleges, univer¬ 
sities, and in his basement where he has had both an Altair and an 
IMSAI running. He is well known for his heretical belief that 
people are more important than computers, and that computer 
systems should be designed to alleviate human frailties, rather than 
have the human succumb to the needs of the machine. 

Editor’s Note: Further lurid comments by Jef may be 
found on page 8 of August, 1976, Datamation. 


A TIP ON SOLDERING FROM JIM DAY 

A new type of solder, designed to prevent the dissolving 
of printed circuit traces during soldering, has been devel¬ 
oped by Multicore Solders, Westbury, NY 11590. Called 
Ersin SAVBIT, this copper-loaded alloy also reduced the 
pitting of copper soldering iron tips. As every computer 
hobbyist knows, it can be a real nuisance to have to file 
a soldering iron tip every few minutes. (Iron-plated tips 
don’t pit as easily, but cost more.) 


IMSAI OWNERS - BEWARE OF THE MEMORY 
CLOBBERING PHANTOM! 

You’re perking along and suddenly the machine 
blows up. Careful autopsy of the wreckage reveals that 
a string of memory locations has been zapped to 00 or 
02 or 06. And this is happening several times a week. 
The phantom strikes! I have spent nearly a month 
chasing this bug and have found that the culprit is the 
deposit one-shot (U-17) on the front panel. It gets 
triggered while the machine is running by noise on the 
power line which passes right by the one-shot timing 
capacitors - a major design boo-boo. There are several 
approaches to fixing this bug: You can disconnect the 
power switch somewhere else. This may still leave you 
vulnerable to really large noise spikes. You can install 
a pi filter on the power line (two 8 uH 5 amp inductors 
in series with each side with two .03 uF capacitors 
across) or you can disconnect the A input of the one- 
shot and connect it instead to the Q output of the Run/ 
Stop flip-flop. That is, clip pin 9 of U-17 from ground 
and jumper it to pin 5 of U-22, This effectively inhibits 
the one-shot by holding the A input high while the 
machine is running. This last seems to work for me. 

Let me know how yours is doing. 

Pete Cornell Box 1290 

Los Altos, CA 94022 
(415) 948-8269 


TARBELL COMPLAINTS 

We are starting to hear a disturbing number of 
complaints about the Tarbell cassette interface. These 
are disturbing (1) because a number of hobbyists 
appear to be having problems with the units, (2) be¬ 
cause we think the design principles of the Tarbell 
unit are sound and the speed is highly desirable, and 
(3) because we believe that Don Tarbell is sincerely 
trying to offer a good product at reasonable cost. Our 
distinct impression is that Don is one of the “good 
guys”; he is not greedy, and is not trying to rip off 
the hobbyists by intentionally selling imperfect 
equipment. 

If you are having problems, we suggest that you 
write or phone him, directly. Tell him what the 
problem is. If you feel you know a solution, please 
pass it along to him (and to us; we’ll publish it if we 
feel it appropriate to do so). Our impression is that 
Don will make every effort to “do right” by his 
customers. 

To contact him: Don Tarbell, 144 Miraleste Dr. 

No. 106, Miraleste CA 90732; (213) 832-0182. 

[Don, We would be delighted to publish any 
reasonable reply you may wish to forward.] 


BIBLICAL MATHEMATICS 

We hear that Noah told the animals in his ark 
to multiply, and two snakes refused to do so because 
they were adders. Noah overcame this objection, how¬ 
ever. He quickly placed the snakes on a rough-hewn 
wooden table and told them to follow his command, 
for, as we all know, adders can multiply by using a 
log table. -Snickered around PCC 


17 Dr - Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 


September, 1976 


244 






HIDDEN GOTCHA FOR 
16K BASIC DOCUMENTATION 


SOURCES FOR 8080 FLOATING POINT ROUTINES 
& A STRUCTURED ASSEMBLER: ML 80 


Gentlepersons: August 16, 1976 

Anyone planning to use the 16K BASIC for the 
8008 should be warned that the publication men¬ 
tioned in Dr. Dobb’s Journal, Vol. 1, No. 3, p. 4, 
does not include a listing. For more details, see the 
Micro-8 Newsletter, Vol. 1, No. 10, p. 15. 

Sincerely yours, 

Robert F. Miles 


PALO ALTO TINY BASIC CONVERTED 
TO INTEL-STANDARD MNEMONICS 

We published complete details of Li-Chen Wang’s 
Palo Alto version of Tiny BASIC in our May, 1976 
issue. This included a well-documented source listing 
for the program. The assembler mnemonics (abbrevia¬ 
tions for machine instructions) that Wang used, how¬ 
ever, were not those used by Intel and by many of 
the 8080 assemblers that are available. Those desiring 
a listing of Palo Alto Tiny BASIC, coded in Intel 
mnemonics, may contact Roger Rauskolb, 3766 Cass 
Way, Palo Alto CA 94306; (415) 493-1501x3608. If 
the demand isn’t too great, he will furnish such 
listings. If the number of requests becomes more than 
he wishes to handle, we will consider publishing his 
translation in the Journal— however, we are not eager 
to do so, since there is so much other good stuff 
awaiting publication. 


CONTRA COSTA COUNTY 
CLUB STARTING UP 

The following person is organizing a computer 
club in the area of Contra Costa County, California. 
Contact him if you are interested in this club—the 
fourth computer hobby group in the San Francisco 
Bay area. 

Eric Bergman, 3188 Kingsley PI, Lafayette CA 
94549; (415) 283-6256. 


A BYTE LOSES SOME BITS 
IN SAN FRANCISCO 

A1 Cherin of the Computer Store of San Fran¬ 
cisco (1093 Mission St., 94103; (415) 431-0640), 
phoned us on August 20th to tell us that his Store 
is now independent of Byte, Inc. He sez he is now 
dealing directly with his sources such as IMS Associ¬ 
ates, Processor Technology, etc. (rather than routing 
his product purchases through the Byte, Inc. 
franchise). 


HOMEBREW IBM OFFICE SELECTRIC 
INTERFACE DESIGN 

Want to use a standard, IBM Selectric I office type¬ 
writer to obtain superb quality computer hard-copy? 
Page 218-220 of Don Lancaster’s TV Typewriter 
Cookbook tells how to do so with a few solonoids 
and some simple, non-impairing mods to the 
typewriter. 


Dear Fleet-foot dentists: June 26, 1976 

May I suggest the following source for floating point routines 
for 8080 systems. 

Cope, S.N., Floating-point Arithmetic Routines and Macros for 
an Intel 8080 Microprocessor, Oxford Univ, 1976. This is avail¬ 
able in the public domain through NTIS, 5285 Port Royal Rd., 
Springfield, VA 22151. Order number N76-11756 as micro¬ 
fiche for $2.25 or paper copy for $4. The routines take 335 
bytes total, give 4’/2 digit precision and are relatively fast. Add 
in 0.25 ms, multiply or divide in .75 ms, and square root in 
1.77 ms. These are typical times, maximums are slightly higher. 
The NTIS announcements are beginning to carry assorted micro¬ 
processor oriented reports now that funding and research/pub¬ 
lication lead times have been passed by processor availability. 

While it seems to have a bit of overbyte, their AD-A020055 
($2.25 in fiche, around $8 in paper) reports on ML-80, a PL 
360-like language for the 8080. It needs 16K to run however. 

Sincerely, 

Darrel J. Van Buer and 1516 Electric Ave.,Apt.R 

Hymie, the computer Venice, CA 90291 

(213) 823-6016 

P.S. Hymie is not an acronym. He is named in honor of the 
CONTROL robot. 


INTERRUPT-DRIVEN PASCAL 
AND AN OFFER TO HELP 

Dear Jim, 

I am very interested in a project for a micro version of 
PASCAL. I think the I/O interface of an interactive program¬ 
ming system is even more important than the actual lan¬ 
guage structure. PASCAL'S I/O system lends itself to the kind 
of things I think are needed. In particular it should be 
possible to have interrupt-driven input initialized without wait¬ 
ing for completion. This makes possible real-time programs 
such as Star Trek where entries can be made while the action 
continues. This is essential for the whole class of real-time 
games. 

My interest is in the 6800 primarily. Let me know if I 
can provide any help in your PASCAL project. 

Dr. Brian W. Johnson 1525 Westlake 

Plano TX 75074 

Can you help? Sure! Much is needed: tutorials describ¬ 
ing how to program in a block-structured language, a brief 
historical article, notes on the advantages of PASCAL over 
other block-structured languages such as ALGOL and PL/I, 
well-documented sample programs and games written in 
PASCAL, a detailed comparison of PASCAL with BASIC 
including examples, and much, much more . . . LOTS to do! 

Incidentally, PASCAL as Wirth originally designed it, 
did not have anything especially unusual or exciting for I/O. 

In particular he did not concern himself with interrupt-driven 
I/O. Per Brinch Hansen did, however. Brinch Hansen extended 
Wirth's original design into "Concurrent PASCAL," which is 
(1) explicitly designed to handle parallel processing problems, 
and (2) is implemented on PDP-11's. — JCW 


I wish to express a certain disgruntlement with some 
of the gargoyles that have been constructed on the 
cathedral of LISP.' 

—John McCarthy , speaking at a Menlo Park SIGPLAN meeting. 


Page 18 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 September, 1976 


245 










How to Make 

the 6800 Resident Assembler 


Work in Your System 


by Tom Pittman 

(Reprinted with permission from the Homebrew Computer 
Club Newsletter ) 

These two programs were designed to co-reside in 8K 
of RAM with 762 bytes of workspace remaining 
for edit buffer or symbol table. If you have 
more, your workspace is thus larger. Also, both the 
editor and assembler are designed to be able to use the 
other’s program space for additional workspace if desired. 
Figure 1 is a memory map of the system. The first two 
pages (locations 100-2B5) in these two programs are the 
same, and contain all of the I/O routines for both. If 
location 300 is non-zero, the Editor will use the assembler 
program space for additional buffer. The Editor is 
designed to use all available contiguous memory, but the 
Assembler will limit its symbol table to memory below 
2000, or below the contents of 301-302. 

The key to the I/O routines is a “transfer vector” 
starting in location 0100. The are 19 or so JMP 
instructions in this vector which permit access to all of 
the routines, so that the entry to the routines do not 
depend on their sizes. By careful analysis of these rou¬ 
tines I have made the following determinations. 

The I/O routines are designed to work with a Tele¬ 
type ASR33 or Silent 700 with cassettes, where the same 
data is used for both printed and tape copy. The paper 
tape reader on the terminal may be controlled either by 
X-ON/X-OFF or by a relay connected to an I/O line on 
the computer. The punch is controlled by TAPE/TAPE- 
or the program is instructed to make separate punch 
passes. There are two versions of the I/O routines, one 
for MIKBUG which uses a PI A for the TTY interface, 
and one for EXBUG, which uses an ACIA. MIKBUG is 
a crummy operating system (it was designed as an evalua¬ 
tion program), and Motorola is pretty tight about giving 
out information on EXBUG except with the sale of an 
Exorciser, so unless you have one of these in your system 
you are probably better off rewriting the I/O. 

The tape I have seen was done for EXBUG, and 
since it is most likely to be the same as your copy, the 
following remarks apply to that version. 

There are 31 references to upper memory in the 
I/O routines (none in the main part of the assembler and 
editor; I checked). Of these, there are four references to 
FF02 (locations 018B, 01 CD, 023F, and 025F); this is 
apparently a flag to indicate whether the terminal is a 
Silent 700 or not, with 00=not. All four are TST instruc¬ 
tions, which may be altered to test any zero memory 
location. There are two references to FF62 and one to 
FF53 (0154, 023C, and 0271), which seem to be related 
to the EXBUG I/O flags; they may be NOPed out (three 
NOPs will replace each reference). 

It is assumed that location FCFD contains some 
kind of constant for the paper tape reader control; this is 
fetched in locations 01DE and 0205. Bit 5 of this byte 
should be 0, and bit 6 should be 1 if RTS of the ACIA 
is used for reader control, and zero otherwise; bits 0, 2, 


FFFF 

FFOO 

FCOO 

FOOO 

2000 

1D06 

1640 

0300 

02B6 

013F 

0100 



FOR EDITOR 


ASM SYMBOL TABLE OR WORK RAM 


EDITOR 


ASSEMBLER 


BUFFER STORAGE 


I/O ROUTINES 


JUMP TABLE 


TEMP STORAGE ROOM 


Figure 1. (EXBUG) Resident Assembler And Editor 
Memory Map 


and 4 should be ones. It may be convenient to NOP out 
these two fetches, and replace the opcodes of the respec¬ 
tive following instructions with LDA A immediately 
(instead of AND A). Note that bit 5 enables interrupts, 
which may not be desired, so No. 15 should be used 
instead of No. 35. 

The ACIA is assumed to be at locations FCF4-FCF5. 
Two references to its control register are used to turn the 
paper tape reader on and off (locations 01E3 and 020A). 
Two references to the input data register (locations 0212 
and 0215) occur to clear out any remaining input after 
turning off the reader. Location 0287 checks the status 
register for imput during a timeout loop, and 028D reads 
the data character when it comes. If your ACIA is in a 


Page 19 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 


September, 1976 





































different location, you may later the addresses in these 
instructions. 

There are seven subroutines in EXBUG which are 
called from these I/O routines. Of these, four directly 
must have correspondence in your system. They input 
a single character from the ACIA, output a single charac¬ 
ter, and exit to the monitor or operating system; they 
are summarized in Table 2. 

Table 2 also shows the calls for composite opera¬ 
tions. These, however, may be encoded easily to rely 
only on the single character imput and output func¬ 
tions. The discussion to follow describes how these 
functions may be encoded in an arbitrary system. 

Assume that your operating system provides a 
single call each for one character input “INPUT”, and 
one character output “OUTPUT”. We also assume that 
if your terminal requires nulls between the CR and LF 
that your operating system will detect the CR and insert 


* Type CR & LF 


F021 

LDA A 

#OD 

Carriage return 


JSR 

OUTPUT 


LDA A 

#OA 

Line feed 


JMP 

OUTPUT 


* Type String 



F024 

JSR 

F021 

First type CRLF 

F027 

LDA A 

o,x 

Get character 


INX 


Increment to next 


CMP A 

#04 

Is it end? 


BEQ 

EXIT 

Yes. 


JSR 

OUTPUT 

No, type it. 


BRA 

F027 

Go get another. 

EXIT 

RTS 


Quit when done. 

* Input 

& Output Links 

F015 

JMP 

INPUT 


F018 

JMP 

OUTPUT 


F9CF 

JMP 

OUTPUT 



Figure 2. I/O Linkages to substitute for EXBUG 


* File/Terminal I/O separator 


INPUT 

TST 

RDRON 

Check if File Input 


BEQ 

TERMIN 

No, Terminal. 


BRA 

FILEIN 

Yes, file. 

OUTPUT 

CMP A 

#11 

Reader-On Control? 


BEQ 

XON 

Yes. 


CMP A 

#12 

Tape-On? 


BEQ 

TAPE 

Yes. 


CMP A 

#13 

Reader Off? 


BEQ 

XOFF 

Yes. 


CMP A 

#14 

Tape Off? 


BEQ 

NT APE 

Yes. 


TST 

PCHON 

Is “Punch” on? 


BEQ 

TERMOUT 

No, Terminal. 


BRA 

FILEOUT 

Yes, file. 

XON 

INC 

RDRON 

Turn on “reader” = 1 
input. 


RTS 



XOFF 

CLR 

RDRON 

Turn off file input. 


RTS 


TAPE 

INC 

PCHON 

Turn on file output. 


RTS 


NT APE 

CLR 

PCHON 

Turn off file output. 


RTS 


Figure 3. 

Suggestion for Terminal/File separation 


the necessary nulls in the output call. If you have 
separate devices for file input and output which do not 
go through the terminal I/O, the beginning of INPUT 
and OUTPUT will be complicated sufficiently to dis¬ 
tinguish file I/O from terminal I/O as described a little 
later. 

Figure 2 is a sample program to provide the 
functions supplied by EXBUG. The various entries 
are labeled in the listing by the address in EXBUG 
which provides the same function (see Table 2). Nor¬ 
mally you would include these routines in your oper¬ 
ating system monitor, and patch jumps to them from the 
I/O linkages in lower memory. If you do this, you 
probably also wish to modify the references to upper 
memory described earlier to point to your own ACIA. 

For a completely generalized I/O system, you need 


LOCN FUNCTION 

0100 Beginning of Assembler 

0103 Beginning of Editor 

0106 Initialize I/O flags in F2, F5, F6 

0109 Output character in A to Punch, adding 
LF to CR 

0100 Punch character string pointed to by 
X, ended by 04 

01 OF Input (buffered) character from reader 
to A 


0112 Read a line into input buffer; first char to A 

0115 Type character in A, adding LF to CR, conv 

Tab to space 

0118 Input character (from keyboard) to A 

01 IB Input character to A (with no echo?) 

01 IE Type text string on new line 

0121 Type text string pointed to by X, ended by 04 


0124 

Type CR & LF 

0127 

Punch 32 Nulls for leader 

012A 

Turn on Punch (if not already on) 

012D 

Turn off Punch 

0130 

Jump to monitor (exit from program) 

0133 

Jump to 01 IE 

0136 

Jump to 0121 

Table 1. 

I/O Routines Jump Table 


CALL 

FROM 

CALL 

TO 

FUNCTION 

0157 

F015 

Accept input character from terminal 

0177 

01A5 

01E8 

020F 

F018 

Type character to terminal (or punch) 

0130 

F564 

Monitor exit 

01D4* 

01D9* 

0246* 

024B* 

0250 

0255 

025C 

0266* 

026B* 

F9CF 

Output character to ACIA 

*these calls are skipped if location 
FF02 (or its substitute) is = 00 

01 IE 

F024 

Type string on new line 

0121 

F027 

Type string 

0124 

F021 

Type CR & LF 

Table 2. 

Assembler and Editor calls to EXBUG 


Page 20 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 


September, 1976 


247 


QUIBLETS ABOUT TINY BASIC AND THE JOURNAL 


to set up separate calls for I/O on the terminal-console 
and I/O on the data file. Operating system commands can 
then be used to designate different devices as file or 
terminal, so that for example, you can assemble from 
cassette or paper tape, edit from one device to another, 
etc. Figure 3 shows how two flag bytes in RAM some¬ 
where (labeled PCHON and RDRON) can be used to 
direct a single stream of output to either the terminal or 
the output file, and conversely to accept a byte from either 
the terminal or the input file. Note that this routine traps 
the Teletype Tape controls to select the data stream, and 
does not pass these controls through to the output. If 
you are going to do this, you should delete references to 
the ACIA from the I/O routines in lower memory (see 
Table 3), and insert the following instruction in the input 
routine in lower memory: 

01EF JSR FILEIN 

Note that the monitor subroutine FILEIN (as all good 
monitor routines) should not alter the Index register or 
the B accumulator. On return, FILEIN leaves the Carry 
flag set to one to indicate an end-of-file, otherwise the 
carry is cleared. In the case of an end-of-file, the A 
should still contain some appropriate character (I real¬ 
ize this is not the proper way of designing a system--so 
complain at Motorola) such as hex 1A (Control Z, which 
is not the ASCII EOF, but is used by these programs as 
an EOF character). 

It should be noted that most of this information was 
inferred by analysis of the dis-assembled software, and 
lacks some of the insight afforded by true annotated 
assembly listings. Therefore, no warranty is made for the 
accuracy of the interpretations presented here. I have 
attempted to verify my findings, and it does seem to work. 
Please let me know if you find any differences or excep¬ 
tions to this analysis. 


LOCN 

INSTRUCTION 

FUNCTION 

0154 

INC FF53 

?? 

023C 

INC FF62 

Exbug Punch-on flag 
turned on 

0271 

CLR FF62 

Exbug Punch-on flag 
turned off 

018B 

TST FF02 

Silent 700 flag (0=off) 

01CD 

55 55 


023F 

55 55 


025F 

55 55 


01DE 

LDA A FCFD 

Fetch reader control 
type flag 

0205 

55 55 


01E3 

STA A FCF4 

Turn on RTS in ACIA 

020A 

LDA A FCF4 

Turn off RTS in 

ACIA 

0212 

LDA A FCF5 

Discard pending input 

0215 

55 55 


0287 

LDA A FCF4 

Test for input during 
timeout loop 

028D 

LDA A FCF5 

Input character in 
ACIA 

Table 3. 

Data References to Upper Memory 


Dear Bob, July 1, 1976 

Some comments on D,D.J.C.C;&0.!!!!! First, Tiny BASIC 
itself: Basically OK (I'm sorry about that. . .really I am) but it 
lacks some flexibility because you don't have floating point math 
and a few simple functions like sin and cos. Look at it this way- 
with Tiny BASIC extended you are halfway there to writing 4K 
BASIC. . .25% of the way to 8K BASIC. In my opinion it is a 
waste of a $1000 machine to be running just TB on it, when if 
you just added another $100 or $200 you could be running some 
superior software. Of course there is the problem of getting the 
software cheap too, so I may be wrong to say that. 

Since I am sure everyone is patting everyone else on the 
back what with D.D.J.C.C.&O, I guess you can hear some criti¬ 
cism. You may have made a mistake by introducing a new news¬ 
letter and taking stuff out of P.C.C. The way I got interested in 
home computing was by reading all about assembler and machine 
code and hardware in P.C.C. If you take it out, you may be 
isolating high school people playing games on big systems from 
home computer people, since the high level language programmers 
won't bother with a newsletter for home system people. Fur¬ 
thermore there are now two newsletters, not one, and you know 
how bad it is to pay for all that stuff. Maybe you could offer 
a special rate when people subscribe to both at once, or send a 
free issue to people who subscribe to P.C.C. for the first time. 

This may, on the other hand, work out OK since you will 
now have room in P.C.C. to explain stuff like assembler, machine 
code, and hardware in P.C.C. and not just list it or mention it. 
[Yes!] 

Who is this Dr. Dobb character anyway? [A visitor from 
the planet Pern.] 

One last item: I've seem BASIC take a lot of knocks 
lately, what with people saying,"BASIC is a very inefficient lan¬ 
guage and it doesn't suit the needs of the home computer user 
and besides it is hard to learn and who said we need it anyway 
and there must be a better language for games etc., etc., etc." 
but I have yet to see any concrete stuff in the way of ideas for 
a better language. Besides, you don't see people clamoring for 
FORTFIAN or COBOL for their home systems! Or how about 
JCL! Think, if you were designing the ideal language what 
would you put in it? Well, first we need something to print 
stuff on the terminal so we'll use a PRINT statement and then 
we need to be able to jump from one spot to another so we'll 
use a GOTO. I guess maybe PL/M or something might be 
better but if all the software brains in all the computer software 
factories can't come up with anything better, knowing that their 
users will pay millions of dollars for it, why should some people 
who mess around with this stuff in their spare time think they 
can? Sorry to get crabby like this (again) but you know how it 
is. 

Steve North 7 Deerhaven Lane 

Newfoundland, NJ 07435 


LOCN FUNCTION 

OOFO-1 Temporary storage for Index register 

00F2 Input Buffer non-void flag 

00F3-4 Input Buffer pointer 

00F5 Input flag (no timeout if set) 

00F6 Punch Flag 0=print only 
00F7 Input flag ?? 

Table 4. References to Page 0 by I/O Routines 


Page 21 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 September, 1976 


248 






A 6502 Disassembler from Apple 


Invalid, Implied, Accumulator 
Page zero 

Absolute, Branch (target printed) 
Immediate 

Zero page, indexed by X 
Zero page, indexed by Y 
Absolute, indexed by X 
Absolute, indexed by Y 
Indirect 

Indexed Indirect 
Indirect Indexed 


by Steve Wozniak & Allen Baum 

Apple Computer Co., 770 Welch Rd., No. 154 
Palo Alto CA 94304; (415) 326-4248 

DESCRIPTION 

This subroutine package is used to display single or 
sequential 6502 instructions in mnemonic form. The sub¬ 
routines are tailored to disassemblers and debugging aids, 
but tables with more general usage (assemblers) are in¬ 
cluded. The subroutines occupy one page (256 bytes) and 
tables most of another. Seven page zero locations are used. 

FEATURES 

Four output fields are generated for each disassem¬ 
bled instruction: 1) Address of instruction, in hexadecimal 
(hex); 2) Hex code listing of instruction, 1 to 3 bytes; 

3) 3-character mnemonic, or “???” for invalid ops (which 
assume a length of 1 byte); and 4) Address field, in one 
of the following formats. 

Format Address Mode 

(empty) 

$12 
$1234 
#$12 
$12,X 
$12,Y 
$1234,X 
$1234,Y 
($1234) 

($12,X) 

($12),Y 

Note that unlike MOS TECHNOLOGY assemblers, 
which use “A” for accumulator addressing, the APPLE 
disassembler outputs an empty field to avoid confusion and 
facilitate byte counting. 

USAGE 

The following subroutine entries are useful. 

DSMBL Disassembles and displays 20 sequential instruc¬ 
tions beginning at the address specified by the 
page zero variables PCL and PCH. For example, 
if called with $D2 in PCL and $38 in PCH, 20 
instructions beginning at address $38D2 will be 
disassembled. PCL and PCH are updated to con¬ 
tain the address of the last disassembled in¬ 
struction. Must be called with 6502 in hexa¬ 
decimal mode (‘D’ status bit clear). All proces¬ 
sor registers are altered (except S—stack pointer). 
Uses INSTDSP and PCADJ. 

INSTDSP Disassembles and displays a single instruction 
whose address is specified by PCL and PCH. 

Must be called in hexadecimal mode. All pro¬ 
cessor registers (except S) are altered. Uses 
PCADJ3, PRPC, PRBLNK, PRBL2, PRNTAX, 
PRBYTE, and CHAROUT. 

PRPC Outputs a carriage return, 4 hex digits corres¬ 
ponding to PCH and PCL, a dash, and 3 blanks. 
Alters A, clears X. Uses PRNTAX and 
CHAROUT. 

PRNTX Outputs the contents of X as two hex digits. 
Alters A. Uses CHAROUT. 

PRNTAX Outputs two hex digits for the contents of A, 


then two hex digits for the contents of X. A 
is altered. Uses CHAROUT. 

PRNTYX Same as PRNTAX except that Y and X are 
output. Alters A. Uses CHAROUT. 

PRBLNK Outputs 3 blanks. Alters A, clears X. Uses 
CHAROUT. 

PRBL2 Outputs the number of blanks specified by the 
contents of X (0 for 256 blanks). Alters A, 
clears X. Uses CHAROUT. 

PRBL3 Outputs a character from the A register fol¬ 
lowed by X-l blanks. In other words, X speci¬ 
fies the total number of characters output. (0 
for 256 blanks). Alters A, clears X. Uses 
CHAROUT. 

PCADJ (PCL,PCH) + 1 + (contents of page zero variable 

LENGTH) -»-Y & A (low order byte in Y). For 
example, if PCL = $D2, PCH = $38, and 
LENGTH = 1 (corresponding to a 2 byte instruc¬ 
tion), PCADJ will leave Y = $D4 and A = $38. 
X is always loaded with PCH. 

PCADJ2 Same as PCADJ except that A is used in place 
of LENGTH. 

PCADJ3 Same as PCADJ2 except that the increment 
(+1) is specified by the carry (set = +1, 
clear = +0). 


RUNNING AS A PROGRAM 

The following program will run a disassembly. 

Supplied on APPLE-1 r 9F0 200 8 JSR DSMBL 

cassette tapes. ~ 9F3 4C1FFF JMP MONITOR 


First, put the starting address of code you want dis¬ 
assembled in PCL (low order byte) and PCH (high order 
byte). Then type 9F0 R CR (on APPLE-1 system). 20 
instructions will be disassembled. Hitting R CR again will 
give the next 20, etc. 

Cassette tapes supplied for the ACI-1 (APPLE Cas¬ 
sette Interface) are intended to be loaded from $800 to 
$9FF. 

NON-APPLE SYSTEMS 

Source and object code supplied occupies pages 8 and 
9. All code is on page 8, tables are on page 9. These 
tables may be relocated at will: MODE, MODE2, CHARI, 
ChAR2, MNEML, and MNEMR. The code may also be 
relocated. Be careful if you use pages 0 or 1. Page 1 is 
the subroutine return stack and page 0 must contain 7 
variables (to use DSMBL). These may be relocated on page 
0 but PCL must always immediately precede PCH for 
(Z-page), Y addressing. 


locations 

used 

by 

supplied 

code 


$40 FORMAT Used 
$41 LENGTH x b y 
$42 LMNEM INSTDSP, 

{ $43 RMNEM DSMBL 
$44 PCL -I Used by PCADJ, 

$45 PCH * INSTDSP, DSMBL 
$46 COUNT }Used by DSMBL only 


MODIFICATIONS 

a) To change “#’ to “=’ for immediate mode change 
location $955 (on code enclosed) from a $A3 to a $BD. 

b) To skip the ‘$’ (meaning hex) preceding disas¬ 
sembled values make the following changes: 


Page 22 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 


September, 1976 


249 


946: 01 
947: 02 
94C: 11 
94D: 12 
94E: 06 
950: 
951: 
95B: 
95C: 


05 

ID 

00 

00 


(was 81) 

(was 82) 

(was 91) 

(was 92) 

(was 86) 

(was 85) 

(was 9D) 

(was A4) 

(was A4) 

c) To have address field of accumulator-addressed 
instructions print as ‘A’. 

1) Must skip $ preceding disassembled values 
by making modification b) above. 

2) Change the following locations: 

949: 80 (was 00) 

957: Cl (was A4) 

d) To add ROR and addressing modes, change the 
following locations: 


9C 

26 

02 


991: 
9D1: 
919: 
91A: 45 
91B: B3 
91D: 08 
91F: 09 


(was 00) 
(was 00) 
(was 00) 
(was 40) 
(was B0) 
(was 00) 
(was 00) 


_J CO ■ X til O 

'll CO 1— O : li_ 

I-- 3 3 _J O 

22 X CO CtUlEQX 
*-* f-i Li. O CD CO LU 


lu X 3 

- -- 1—4 

:< o _i o 
. _l o o 


CO X LD 
22 O 22 
h!lh 

DC 

—' CO Lij 
© i— P 
3 22 

—' UJ 4-1 

3 

3 CO 
3 

’Hill 


2- CO LU LiJ f—« 
X 3 X CO 

Lti I— 03 IZ< l— 


X LU X 
O i j o CO O 


—1 *—* •—* CO Cti 


3X3 
ill E 1— 
>1 Lti D" 


LU LU f— 

!_! >—I 

LU li_ • LU 


Q.P J -• 
P LU 
3 'I I— I— 


LU U_ X X . . 

CO LU LU CD Qi 


Lti X CD 


Z LL U] Ui M - 
*-• O ! i O I— 
Lu 0-J O-J O i-< L 


X 3 23 LU X 02 X 


3 ---f 0-J CO 3 U .• CD Lu Lu C 
^'trf’+Tj.rt-rfLLLuC 


CtL 3 3 3 '3 3 3= 3 3 '3 2 
X LU LU LU LU LU LU LU LU LU C 


X X LU LU X LU 

Lu X X X _J X Zj X X 
O LU X X CD CD O lu X 
U 1 _! Lti Li. LU CD lu X' 


4 LU 3 CO Xhi 


I 3 CD 3 

:■ x x cd 
> co x lu 


1 co P 3 ~D 3 b- 


•Lti C'-J 
! Cti 
< X LU 


3 
02 r-4 CO 
Lti ¥t Vt 


L 3* 

- CO <3 


X -Cti X X X X ft iJ ; 


X CD Cti CO X 
CO CD CO CD X 
_f CD _! LU CD 


—! l—i 9r 'X X X lu i—i LU j- X DC X X P X X ui DC 

XXX CO X I—i X* CO CO CO CO XXfi -p X ui -— X i_X X 

Dil X !_! _i S— _J 3 —1 —I —I —i X X_1_I i—_i CO X CO UXh 


CO CO CO 

3 3 3 

j uD Ofi X 3 Li" ! .£i 0-j CO 3 


r - oj co r--- 3 


LI 


:• z © —- •: 

.< P OJ X X ' 


© oj 3 f--- x x 3 oj in r- 

Z- X X X X 3- 3 ■ 

•:: co co co co co co •: 

Z •— 1 ©• X' X 1 X' X 1 3* 3' 3' C 


J ’T iu rf 3 3 0-j ©< CO «-i 

- X 3 3 00 3 3 3 © 3 

4 X* X X X X X. X' X. IT- X 0 'j-. IT- L- 

i CD -1- 3 3 3 0 i f=i X X X X DO ' ~ 


CO 'J. CD lu 


' r --- CO i 

i o j ■ c 
' CO CO c 


O J CO CO CO CO co CO O', .'.'i Tj- rf« 

oj co co co co : j co od t 

X* X' 3 X- X' X* -z- -z- Z- Z- Z 1 “ • 


J -T-t 3 1 3 3 

4 3‘ ’—i 3 1 3' 

5 j— j— -r-l 3' 


DC DC DC DC DC 
DC DC DC DC DC 


X 1— 

X CD 
LU 

X 0-J 


XX PH- 
j—i D— 
3 5— !— X CLi 

X LU X 
—* 3 LU LU I— 
CD XXI— X 
CO X LU D— X 
LU 1— CJ CQ CD 
X X ! >-1 

Pi i—_I C'-J X 

u-4 X X i—i 
X ^ CO X X 

3 i CO 

X 1— -4 

O LU 
XXXI— X 

_I 1-4 ----- 3 O 


O X X X' 


X' x CO 2 
O CD X C 
X I— x 

22 i JT X I 
I— *—• X CD C 
X X ~ C 
i X iPt C'-J L 


DC Q 
LU P 


LU 4 


X 

x -..gt; 

3> *3 X ' 
CO u- 

LU X 


X + 

9^ 


X P P 3 

CO CO X X OJ 

+■+ Vt X X -H+ 

# 4 Z 'I E -2 X 4 


_J X X X XX 

X LU X X' X X 

X X X X 3 UO X X 
IEZX«H*XX 
EJXEitttitJi 


: x x 

2 ¥t X 


Ui CO X co I— - X LU 

1 X X I— X X --4--. Pi I— 

2 —i P 3 P ZZ CO _J X D- 

2 3 '-£> CO XXXXLUOJiU 
2 X Vt -i?t X X X 3 -*4+ X X X 

- il 4 # u_!iix# ----- X X 


—• 1 I— 

Cm' i - 3 13! -rt Hi 
XXX -r-t O C'-J X O 
•—i u I—! X X X Pi X 
X X X X X X X X 
X O X X X X X X 
X X 0. CD 3 '3 X *3 


• CO 


4 LLI Li_13 3 3 3 i 


1 X D- X X X X X D— 3 3 3 D- 3 CD X DC 3 X DC X 

'■< 3 x i—t I— i—■ i— Pi Pi CO O O 3 X Pi CO 3 X CO Pi X 

J X r— 3 CO 3 CO 3 3 X X X P LU X 3 Pi LLi —I 3 '3 


D- O' X C 
P 3 P 2 
. Ju_1C 


X CO X D- 3 3 C 
P O CO 3 X CO C 
_1 3 3 P CO 'X CO . 


X X X <3 X DC 3 CO X DC DC 3 D- C 
•i P 3 CO-3 X I— CO X X X x: 


:< p x x j i— *■ 


© 


CO © c 
0-1 X L 


- x •__- 

3 3 3 3 3 3. 

o: :: : 

© C- -Z z z z . 

Page 23 


■ © co © - 

' P '3 '.0 P 3 i 

• -■£- 0. x -3 » 

' ir. LO li‘- u‘- L 

SP :,C0< 


0-. x ■: 
© x C 


Z' Z — <Z 'Z- 'Z‘ -Z' 'Z 1 

Dr. Dobb's 


3 Z C J -D •£■ f - OD X *3 L 

- ' - f - CO CO CO CO 05 CO CO CO c 

co :c co :o co •: 

/ -Z 1 -Z *Z- 'Z 'Z- © © ; Z- © 'Z' 0 


3 3 © © - 


j in r-- ‘j. 2 

-. ;J. iT-. .j-, r 

j co co co ■: 

■' ©i i© ©' c 


:• >3 0-J © 3 


3 3 © 3 3 IT' © 3 


XXX 

XXX 

XXX 


© p © p © © cz © o 


■' X X X 
:> CO CO CO 

I X. Xi © 


r -- x © 

X X X 
CO CO CO 

© ©I ©' 


Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 


j © CTi 

P 3 3 

XX 3 3 
CO CO CO CO 
© © © © 

94025 


r - x 

3 3 
CO CO 
© © 


3 3 CD 
CO CO CO 

©' ©I ©I 


o j co ' D r - co x 

CD CD O '3 >3 '3 
CO CO CO CO CO CO 

©I ©I ©I ©I ©1 ©I 


3 *3 3 
•3 CD CD 
CO CO CO 
© © © 


September, 1976 


250 













CO 

UL 

I— 

CO 


CO 

O' 

I— 

CO 


OC - 

- ~ x 

i_n ij 

i_3 cl a: u x > u 

x _i o_Q_a:~~coa: 

Ct 20 Q_ CO Cl. O I 10- CO CO CD li_I - ~ ... 

uiE I LU 21 o F-J F-J I • CD lu X I LU -- .. rtt 4* j- 

Lu *-< r- j >x «x r j ix «x r- j ct -■ - ». ... 


X 

X* 

X) 

X 

X 

X 

X 


CM M- CO Xi X' X' CM M- CO X« 

CM M" CO i —1 CO M" 7' CM M" CO v—I CO 


CM CO CO cr . ^ -4 CM O' « 

ij-s '.£i t— i r- >x xs cm co co X' x« uo> M" 


— O J 'X X ID 
7. cr- CO M- CO 

f*t •*«+•*+»■ «+ 


O ' o CO 00 M" 
X X X X X 
-**++*+ Vt +•+ -«t 


CO M" ■M" X' X 
CP X X X* CO 


0 p m lg -« 
CM UO' CO -H ijz 

+n *n -Mt +>t **t 


Gj Qj ill Gj Uj X GjCOiULLlfCiilClCClCClCCiOjCOCQCuCUCOCuCClCOCuCOCClCOCOCOCOCOCOCuujCClCOCCiCCiCOCuCOCuCuCOCCltiBCOCuCuCuCuQZl 
LiiLLlilLliLLLlLlLLiJ.U.LLIilJ-lLllLl.Ll.LlLli.U.ii.Ll.LLli.li.LLU.Li. U.U.LlLlLlIiLlLlIlU.Lj.LlLlLl1j.L.LLi. 

I— 1 —i *—I I—I I—I I—I I—i I —i I—I 1—1 ’—I I—i I—I i—I I—1 f—I i—I I—I I—i !—i i—I 1—« I—I I—4 I—I l—i I—I I—I I—I 1—* I—I I—* 1—1 I—^ 1 I—* I—* •—I I—i I—i I—I I—I I—I I—l I—! i—I i—I I—! I—i l—I I—I I—I t—I I—! 


P 0 P U) P 'H O ' 'O' LU O'. CO O' CO -M- CO X CO 

CM O' CO -H'lOW-'IOI’H CM CM ID 0 J 


i~i~i iVi 1T1 1T1 !~Q i~fi ffi ;~i~i CO Cij lTj iTi Ci'i iTi CCi ffi iTi 1T1 
XXXU_U_XXLLU-.Li-Li-LL_Li_Li_Li_Li_LL.ij_ 
P3 |—| l_| |_l l_4 1-1 i—It—i 1-1 1-1 1-1 1-1 I—11—II—II—!l—I 1-4 


- ID ■£' r-_ CO O' X UiuQLU 

:• co co co co co co co co co co 

' <J: ij. a% iT. it-, it-. iT. 7, 


X X* CM CO -M- UO CD f-- CO O' X X O i 

CO CO M - M" M" M" "M* M" M" Tf M" tT "M - M" 'T ' 

O' O' O' O' O ' O' O' O' O' O' O' O' O' O' 7 i 


lllJLLSh CM CO M- UO CO F -- CO O' CGjOPUJX X' *-• CM CO ' r T UO CD F •_ CO O' X X O i-i X X X' CM CO M" UO 

• Tf ~T uO UO' UO UO UO UO UO UO' UO' UO' UO* UO' UO U0« UO' UO' CD CD '-£' CD CO CD CD CO CD CD '-£' '£' CD CD CD CD F-_ T'-- f'-_ f'-_ F'-_ f‘-_ 

, iT, ij-. iT-. cT, -T. iT. a. iT-. |T‘. 7. |7. 7, ij-. 7'. lj‘. |7, iT, 7‘, 7-. iT‘. 7. 7. i7. 7. 7. iT. ij; 7' 7‘. 7. 7' O' O' O' O' O' O' O' O' O' 

i X' X' X' X X' X' X' X' X* X' X' X' X' X' X' X' X' X' X' X' X' X' X' X' X' X' X' X' X' X' X' X' X' X' X' X' X' X* X' X' 


LU 



I— X 
U_ LD 
LU —• 


■X 


0— i—i Cti I— i—i Ct£ Xi Cti 

lu co 'ii — izi'i co 'X X 

ii.’ X O llti +•+ X -Mt -M+ X 
LL # U LL LL LL 4t O # # ' 



M- 


'X 

o 

Cl. 


X' UO' 'Xi X' *3 CM UO' 05 X) X> X' UO 00 X X' X' X' X' X' X' CM M" CO X' ' M" CM M" CO X' O M" X X' 

M" CM M" CO FP CO M" O' 00 0-J 'T CO M0’? O' ^ CM rj- CO Pi 00 tT O' ? O ill m X' M" X' X' CM tC CO i—1 CO ’M" X' CM X CO I—I CO M" O' 


Q_ x X X OC X X X 0-C X X X U CO X O > X J >□□> iO 0 111 G] CG iL ill dJ III CD LG iXi CD CCi CD QJ GG CQ Cli ill CD CD III CD Q] CG GG CG £G CD Eli LG iXI G] CO GJ CG GJ 

21 p O’i p P u'i P OJ w i-i CO UJ Z! !— !—i LiJ I—I 'I G. Ill M O Z I— X U_ X X U_ X Ll X Ll. X U_ X U_ X X X X X Ll U_ LL Li- L_ Li- Li_ Li_ Ll_ Ll- Li_ Li- X U_ X U_ X U_ X 

“0 _l — 1 _I I — 1 I “ I I JHLUX_i 05 i I— LUWlLD'-'XPPPPPPPPPl-lPPPPPPPMWMpWMI-n-IMWMMI-IMWMI-IMMI-l 


LlIlLlLlIlLlU-LlIi. 
iP Pi i—i i—i i—i i—i i—i I—• i—i 


i£ 

X CM CO 
_I _I _1 

LULLIIil 

XXX 

XXX 


0-J CO ’M- 


1—I l-l 1—l 
X X X 

o o o 

XXX 


Pi —1 LU 

X CO IP 

O h- o 

X X 21 


:■ co UO' CO X O X -M- '•£' CO X ' X X - 
IiQOiTiOiPiiPiLULUXLULlILlILUUJI 
:■ CO CO CO CO CO CO CO CO CO CO CO CO CO CO ' 
;i r-1 iHi is X' X' X' X< X' X 1 X' X' X' X' X' ' 


^ CM M- UO' r-_ CO X U P LU Ll X' —' CM CO M- UO' '-£' r- CO >T- XCGOflllJliOH CM 05 

- X X X X X X X X X X X' X' X' X* X' X' X' X'.X' X' X X X X X X 

!' CO CO CO CO CO CO CO CO CO CO '7' 7' 7' 7' 7' 7' 7' 7' 7' 7' 7- 7- 7' 7- 7. iT. tjN 7 s ' T' T' 

:■ X X' X' X' X' X' X' X' X' X< X* Xi X' X* X X' Xi X< X< X X> X' X> X X' X' X X X' X' 


X‘ 7' X X' X X X X* X X X CM M" CO X X' M" X' —' CM Tf CO X O 'X C 

TT X' M- Xi -M - CD IP X' M- X' X CM M" CO k-i CO M" X CM "M - CO t-i CO TT 7' ’ 

Tj- UO' '.£' r-_ CO 7' X X O wlULS-H CM CO "rt UO' '■£' F-- CO 7 ' X lu O iP L 

-h I-.J OJ OJ OJ OJ CM CM CM CM CM CM CM CM CM C 

7' 7' 7' 7' 7' 7. 7' 7' 7' 7' 7' 7' 7' 7% 7-. ij-. 7-, 7-. 7-. ij-. 7% iT-. iT-- it-. 17. 17. r 


Page 24 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 


September, 1976 


251 












I 

X 


CO 7 
CM 7 
© >3 
<3 <3 


•3 UO 

r- - co 

>3 >3 
>3 S3 


•rT CM zj- CO CM O-J CM CM '3: X UO CM CM COCO zf ix: CO zj- 
r - F-- rf 3 3 CO 011 ‘3 CM ©—«'-• O-J 3 r- r-- COO >_< O CM zj- zj- 

-H» 4* -M+ ** 


rr X o 

J*t *t 


CO '3 >3 CO 

, 5 , ,T'. <*—i 

- ^ ^ ,3 1^1 
•3 '3 '3 ‘3 


CO CO 3 Ili 3 III CO ill III III LU 3 CD CD ill ill COCO 33333333^ 
Li_li.Li_Ll_U_Li.Li_Li_Li_Lx.Li.Li_Ll_LL.li.U_ U_U_ XXXXXXXXX: 

-~i Ci L=1 I_I I_I 1_I 1_I 1_1 I—I i—i i—1 1—i I—I i—• :—i i—i i—11—i .—. ,—i—, ,—, —i ,—, ,—, ,—, l . I 


•7* 'Xi ITi <3 zfr zj- 
—« CM M- zj- CM —» 
3 3 3* >3' ©' ©' 
O >3 >3' *3' *3' 3 


> 7 -h rf CO zj- UO 

> '£< 3 UO CO 7 — 

> *3 '3 3' 3' 3> 3 
'i 3* 3' 3 1 3' 3' 3 1 


'-£' CM F-- '-£' zj- tlO '-£< r-_ O ' 
' zP i • ---i 3< O' 3 3 

»-* ■—* 3 3* o -r-i CO 
3 ©' 3> 3* 3< 3* 3' 3* 3* 


CO r-_ CM CO 7 
O ' 3 o» CO CM 
3 3 3 3 t-i 
© © 3' © ffl 


O' O-J UO © O-J —• zj- UO 

—< r -- r- o-j © co co -m- 

< 3 3 © '-h 3 3 *-» 
3' 3 © 3 3' 3> 3 © 


LU.© UO 3 CO O-J zj- - 

CD 0 j CM 3 3 3 3 C 
X © 3 3 3‘ 3 3 C 


i CM CO 3 CO zj- O-J UO LO CO CO CO '•£' CO O* © zj- p-_ 3' UO O' ; -£= CO Cm rj- O-j O’- 0-J Zf" CM 00 •’-< UO 7* UO 3 LO O* r-_ 

3 zj" CO CM 3 3 zj" 3 LO Ll - ' '•£' zt" CO* CO zj- zf 3 3 O- O'- 3 ■>-' CO OO CO 3' CO CO CM O-J O-J 3 '-£' CM © CO zj- 

i 3 3 3 © 3' 3* O-J OO 3 © 3 O-J hhhh 0 3 3 3 t-i ^ -r-t 3 3 Qhh-h 1 H 1 'Hi *-h •*-. 31 3 

i 3 3 © 3 3 3 3 3 3 3 3 3 3 3 3' 3 3 3 3 3 3 3 3' © 3 3 3 © 3 3 3 3 3 3 3 3 3 3 3 


J 3 cm >: 
i 3i CM C 


> zr LO '•£' f 

'■ 7- O' 7 C 
i 3 3 3 C 


,7:7: 

:< 3 © 


7 .,7 3 c 

© © 3 c 


ij © 


'•£' Ll. '-£• 3 zf 111 * 3 O'- UO CM CM O CO LU O-J O- LU CM X « CM CO LO zf F -- LlPLl 3' CO zf O LU 

U" LU zf 3 3 CO zf OO CM —* zf zf LO •.■"• zf LO UO XM’LUXXX'M-'t O- O- X 3 £ LU LL S f-_ 

O ' X 3 CO -10 CO 3 CO CO OO 3 u.> 7j >7 - CO CO CO CO O ' CO CO CO CO 3 3 00 CO 00 00 OO 00 OO X OO 

3 X 3 3' 3 3 3 3' 3 © © © '_J 3 3* 3» 3' 3' 3 3' 3> 3 3> 3' 3 3 3 31 31 3 3 = 3 |j_ 31 


00 CO O ■_ 
00 0 : CO 00 
3 3 3 3> 


- OO '7' X CO 

4 £T| iZj iTj £3 

• ‘7 • 'J. >7. >7- 

:• 3 3 3 3 


—' CM OO rt X X 
X X X X CM OO Z r- ' 
1—■ l—i i -—1 I—I —I I _! 0 


x x x = : 


j x x x x 0 


. X X X X 


X X i-i 0 X X X X X X X X X X -X X 3 3 X 1 

-i- » O O O O 3 X 3 X 3 X X X X X Oi 

1 - ‘ T ^~ ■- s"; T; .'i 


‘■-j X oc 0- 

Zhhh 


-■ '£• Q O rr 00 L 

•: o cc- co o> 3 co >: 

3> H' 3 3 3 L 


3 Z 0_• X X 


00 

X 


3 

© 


0— 

5 

OC 


3 

© 

X 


© 

© 

© 

X 

oc 

oc 

X 

X 


© 

3 


rf CO '7- —< X 3 3 LO' 'J- rT X X 3 O 7 O LOOO If)'7' '7- CO M" CO Tf —< UO' '7- CO 3 CO CJ X CO '-£' CM 7f CO M" -7 CO M* CO CO rf tC t t CO Ll) rj- t ,JZ r-.j CM 7T X X CM CM "M“ ’7 

CM ll - .' ■*-< X 3 LiZ' Ll - ' X '•£' CM CM X X X X O-J 3 C- © —< 7- '£' 3 XUO C-J U0 CO CO X '•£' C-J X i=i '-£' LO rf CM ! £i iT-, 00 Ll - .' -3" O UZ' '-£' X 7 3 3 OO OO f - 3 CM 3 p-_ X O rj- r-_ X X OO 3' X X X F - F - 


33333333333333333333333333 3 33333333333333333D0 3 3 333 333333333333333333333333 
U-LLXU-XLLXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXLL.Lt-U-XXU-XU-.XXXXXXXXXXXXXXXXXXXX 

I—It—II—ll- 4 t-ll_||_ll —4 i—j i—i i—| |—| 1—4 1=1 1=4 1=1 I=i 1=1 1=1 1=4 ^=2 1=1 |= 3 ||—i r —4 1—4 I—I L —1 1 —I 1—1 1 —i 1—1 1—4 1 —i I —1 I—I 1—1 I—i 1 —I I —1 1—1 1—4 1 —s I—I 1—1 i —1 I—I 1—1 1 —i I—i I—I I—I 1 —I i—I I—? I —1 1 —I I —1 !—4 I—i 1—4 1 i—i i^l i—i i—I 1 —i 1 —i l—l i—I l—« 


Tj- CO 7' © X 3 3 uO 7 rj- Tj- X X CO « 7* © O © UO '3 O © 107- J CO rf CO Tf —• UO 7- CO © OO CM X OO '-£' CM T CO ~t Tl - CO M" ‘00 ~3 OO ~3r © rj- CO rj- rj- CO X f X CM CM Zf X © X 0J CM zT ZT 

CM in -r -1 X © U~I UO X 3 C-J CM X X X X CM © r- © 7 3 © X '•£' CM L 0 CC CO —« X '-£' CM X t=t 3 UO zT CM £' 7 CO LO -rf O UO 3 zC X 7 © 3 © CO F-- 3 CM 3 F-- X 3 zr f -- X X CO © X X X r - 


CO 7 X CCl O O X X © -H C-J CO Zf UO '£' F-- OO 7 X 3 O O X X ©’-' CJ ''0 zj- UO ' £' F - OO 7 X 3 U O X X © — CM CO -rf LO ■•£' F - OO 7 X 3 O O X X © —• CM CO zT UO 3 r--_ 00 7 . 

r- r-_ r-_ r--_ r-_ r-_ r--_ co oo oo co co oo oo co oo co co co © © © oo 7« 7 7 7 7 7 7 7 a - 7- 7 7 7 * 7 7 - 7 x x x x x x x x x x x x x x x x 3 3 3 3 3 3 3 3 00 3 

7 7 7 7 7 7 7 7 7 7 7 7 7 7 . 7 . O-' 7 7 7 7 7 7 7 . 7 7.7 7 '7 7- 7 *7 7 7 7- 7 7 7 7 7 '7 7 '7 7 7 7 '7 7 7- 7 >7 '7 '7 7- 7 '7 it. rf-. rr-, «t-. 7 .T, 7- 7 7- Z- Z 

© © © © © ©I '©' '©' '©! © © !©' CO '©' © © © CO '©' © © © © © •©» ©' ©I © © '©' © ©' ©! ©I ©I ©I '©' ©I © «©! ©! '©' ©I ©I ©I ©' I©' '©' © ©I '©' ©i ©I ©i ©I ©! ©i »©! ©' ©' C '©' ©< © ©' ©' 


X 3 CO £=> X X '©' —>. 
3 3 3 3 3 3 O 
7- 7- 7 7- 7' Z- 7 7 
© ©' ©' © ©‘ © ©' ©' 


Page 25 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 


September, 1976 


252 





A Number Game for the 6502 


by Steve Wozniak 

Apple Computers, 770 Welch Rd., Suite 154 
Palo Alto CA 94304; (415) 326-4248 


DESCRIPTION 

MASTERMIND is a number guessing game. In this 
version the computer generates a 5-digit, random number 
where the digits are limited to 0 through 7. The user at¬ 
tempts to guess the number in the fewest possible tries. 
After each guess the computer informs the user as to how 
many digits were correct (contained in the random num¬ 
ber) and in the correct position by printing '+’ signs, and 
how many digits are correct and in the wrong position with 
’ signs. The user is not informed as to exactly which digit 
positions the “+’ and the ’ signs correspond. A skilled 
player can usually win in 6 or 7 tries. 


RUNNING ON APPLE-1 SYSTEMS 

The source and object listings provided will run on 
APPLE-1 systems. The program loads in locations $300 
through $3AE and uses the following page 0 locations for 


variables: 


$F2 

TRIES (no. of tries - 0 to 99 BCD) 

$F3 

$F4 

RNDL \Binary 

RNDH J random number 

$F5 

RND2L (Temp.) 

$F6-$FA 

N (5 digits of unpacked random 

$FB-$FF 

GUESS (User guess) 


RUNNING ON OTHER SYSTEMS 

1. The LDA STROBE instruction at loc. $313 (on 
supplied listing) senses for a key down condition after the 
READY? message. This is used to generate a random num¬ 
ber corresponding to the delay before a key is depressed. 
The code is written for a negative value to indicate ‘key 
down’ (by = 1) and a positive value (by = 0) to indicate 


THE PLAY 

1. Computer prints ‘READY?’ 

2. User hits any key when ready (not echoed). A 
random number is generated by counting from the 
‘READY?’ message to key depression. 

3. Computer prints ‘01’ . for move number 

Cursor left here. 

4. User enters his 5-digit guess following the move 
number. Remember that valid digits are 0 through 7 only. 
Entering any invalid character cancels the line and the 
computer repeats step 3 for the current move. This may 
be used to cancel errors. 

5. Immediately after entering the 5th digit of his 
guess, the computer will print a number of ‘+’ signs (for 
correct digits in correct positions) followed by a number of 
‘- ’ signs (for correct digits in incorrect positions). This 
‘score’ is indicated to the right of the guess and does not 
indicate the specific digit positions involved. Play resumes at 
3 for the next move number except for a win. Examples 
follow: 


Scoring Examples for Random Number 12154 


Move Guess 

Score 


01 

33366 


(none correct) 

02 

00018 


(line cancelled due to invalid digit, 8) 

02 

00011 


(2 digits right, in wrong positions) 

03 

11234 

++- - 

(4 digits right, 2 in correct positions, 
2 in wrong positions) 

04 

11325 

+- 

(4 digits right, 1 in correct position) 

05 

13216 

+- - 

(3 digits right, 1 in correct position) 

06 

44444 

+ 

(1 digit right in correct position) 

07 

55555 

+ 

(l digit right, in correct position) 

08 

12154 

+++++ 

YOU WIN (win message) 

READY? (for next game) 


no key down. This instruction is followed by a JSR 
CHARIN instruction whose only purpose is to clear the 
strobe. The character returned is not used. Thus the user 
must provide an address for the LDA STROBE instruction 
corresponding to his hardware and must insure that the 
CHARIN subroutine clears the strobe. 

2. A CHARIN subroutine must be provided to read 
one ASCII character with by set. Do not use the CHARIN 
subroutine provided as it uses APPLE-1 I/O assignments. 

The character read must be returned in the A-Reg. The 
Y-Reg may be altered by CHARIN but not the X-Reg. If 
by is returned clear (=0) then the EOR #$B0 instruction 
at loc. S34E (on supplied code) must be changed to an 
EOR #$30. 

3. A COUT subroutine must be provided which out¬ 
puts one ASCII character (passed in A-Reg). If the user 
output device requires line feeds with carriage returns then 
the COUT routine must intercept the carriage return char¬ 
acter ($8D) and output the necessary CR-LF combination. 
All computer generated text has by=l. No registers (A,X,Y) 
may be altered. 

4. PRBYTE subroutine must be provided which out¬ 
puts one byte (passed in A-Reg) in hexadecimal (printing 
2 digits). No registers need be preserved. The following 
routine will do: 


PRBYTE 

PHA 

LSR 

LSR 

Save for LSD 


LSR 

LSR 

MSD to LSD position 


ISR PRHEX* 

Output MSD first 


PLA 

Restore A 

PRHEX 

AND #$F 

Mask LSD 

PRHEX* 

ORA#$B0 

Add “0” 


CMP #$BA 

(May be skipped if used for 


BCC TOCOUT 

)MASTERMIND only, since 


ADC #$6 

(only BCD digits supplied. 

TOCOUT 

JMP COUT 

Output ASCII and return 


Rage 26 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 


September, 1976 


253 




LlI 

§ 


i_t 


IfiD 

:• o z p 

-hlM 

•X Qi P 

. z co 

1 _ »- LU 

:■ o x z« 

:> z co co 


io:So:^ 

Lii O D 0 h 
O O 

S-'S-'t 


- • a: -• -• -• z - 

j Qi x Qi z •-< z x x ©> o- x + 

-• O O - -- - X -■ - LU '■ 


■r 

UJ 

LU _J 
LU CJ 
O 

Qi 1=1 
I— z 
CO z 

Qi 7- 



I— 1=1 
*-< Z 
■X LU 
Z ui 


s 

CO 


P 

LU 

Z 


CD r* 
■0< UO 
—> CD 

c c 


r- 

'-£> 

c 

C 


CO 

{■- 

C 

c 


'•£' 

C 

•3 


OJ 

co 


g 


O' 

C'J 

'D 

'D 


If!' 

+ co OJ 

OJ CO X CO X CO 

CO LU CO LU -• Z< -- J=l I— Z< 

=■ Lu LU Lu in Z UO -X =• Z 

_J ** —t ^ + M + «t Ij ►—< 

LU4tn #ZZZ#u Z 


— LU Z 

co lu ►—« 

=> Qi UU-ULL 

Z h- Ll 0 t UO C'J 1=1 1=1 LU 'J-. r-- © UO Lu <r* © lO CO 0 Lti 'I w 
>— X LU i=i O O O !=1 CD CO CJ CJ P 'X i=l O N'lilttul-Iuj 


• CO 


CO 

z 

7- 

co 


© '•£' OJ 

UO CO '-£> 

© © © 

© © © 


p .t-. r- r-- co 

p CO CO © C'J 

©i © © ’-H © 

© © © ©i ©i 


r p uo —i a-, uo a-. co p a-, p r--_ 

p cj —< co p uo © co co r- ^ —« 

©I ©I ©I ©I ©I ©I i—l ©I ©I ©1 ©I ©I 

01 © © © © © © © © ©I © © 


—* p r-_ ij> co p co co © co —< O' co cj co 

P UO CO 'D r-- '-£« CO UO C'J CO C'J i-< C'J C'J 

©I ©i ©i ©I 'Hi ©I ©I ©I ©1 ©I ©I ©I ©I ©' ©I 

©! ©1 ©! ©i ©! ©I ©I ©I ©I ©i ©I ©I 101 © © 


X LU > X 'X X X X 7- Z Qi 7-C X j- X C X X X X X X X X X X X X X X X X X Z X Z X 'X CO P 
Z Z P P 7C P Z Z I— OCOZZZZLiJLuL.LuLuLuLuLuLuLlLuLuLlLuLuLuLuLuPZmCuPI— Z 
i-iCU_l_iHJOLQOj_l - "-iOj'->LULUMMMi-lMMMMMWMpMMMpM_IO_lLO_iLLLU 


co 


z 



UI 

CO 


Lu 

_l 

X 

CJ 


s 


CJ 


co r- co uo -H r- © uo co co co p co co —* uo cj cj a- ©> cj uo p co cr- i-< cj 

p © ©i © -i- © —< r-_ r- co co —< © co cj cd '-d r- © uo cj © © © —< —< c 

©1 i—l ©I i—l ©I 101 ©I ©I ©I ©1 ©I IjJ ©! ©I ©1 ©1 ©I © ©I 101 ©I ©I ©1 ©1 ©I ©1 ©1 '0' 

©I ©I ©I ©I ©I ©1 ©I ©1 ©! ©1 ©' ©I ©I ©1 ©I ©1 ©1 ©■ ©I 101 ©1 ©I ©I ©I ©' 101 *01 *0' 


‘X LU '0! CO CO r-- CO 1=1 Lu CJ 'X iJ-> 
LU Lu 10' Lu Lu ©' Lu *X LU Lu LU CO 


P X —< X C 
CO LU —« Lu -i 


CO *01 i0> '•£' 'X C’J UO >0> P it-, ©i CO '0' CO '01 '01 Lu CP- P t-, UO CJ i=i i=i LU <7- f - ©• UO Lu >J> '0' CO >7- CJ P ©• P ©> 

LU =1 'X CO CO >X i=i CO O'. © CJ LU P u Q Lu CO M CJ <J O p CO CO CJ O p C P CJ P I X 'I -t X 'I CD 

UO ' £' CO >X O P Lu i-i CO UO P- 'X lli i=i LU '0' CJ CO P UO '-£• V- CO <7> 'X CO O P LU Lu '0> —< CJ CO UO CO CO Pi >0* 

r-- r-- r •- r- - r- - r _ r •- co co co co co co co co cr-> a-, it-, it. it-, it-. ©. it . it-. it-, it-, a. it-, it. it. ■© © © © © © © © co 

CO CO CO CO CO CO CO CO CO CO CO CO CO CO CO CO CO CO CO CO CO CO CO CO CO CO CO CO CO CO CO CO CO CO CO CO CO C'O CO 

10' '0' ‘0 1 '0' '0' i0i '0i >01 ©i ©i ©i ©i ©i ©i ©i ©j ©i ©i ©i ©i ©i ©i ©i ©i ii£i ©i ©i ©i ©i ©i ©i ©i ©i ©i ©i ©i ©i ©i ©i 


z 

LU 

Qi 

LU 

Ll 

LU 

Lti 


P^ CO Lu CO '7' CO 101 ‘X Lu Z C'J C'J ©' ‘-Q CO CO Li_ C' J UO CJ CO CO UO P C'O 

CO tX LU 'X CO Lu — r- r- CO I7- 10' 101 Lu CJ —1 UO •-£< r- P P 1-1 Lu Lu Lu 

CO CO Lu CO CO i0i ©i CO CO CO CO CO CO 10 1 CO CO CO CO CO Lu CO CO X 10' i0‘ 

©i ©i Lu >01 i0i i0! Pi ‘0! '01 10' '01 i0' i0i i0i i0i i0i '01 10’ i0i Lu i0' i0i ’01 ! 0‘ '0‘ 


P C'J 
101 -1 Lu 
CO 10' i0i 
i0i P 10' 


Z Z 1-1 C J CO 

LU 1-1 Z CO CO CO CO 

IJJ Qi i— Lu LU CO —• —I —> 

1— 'XX' I L? LU P Z Z Z 

i-i Z O 'lti i—i X Cu i — 1 1 —i *— 1 

LLI 101 101 101 PULiZZZ 


P Z LU LU 

lu z *— i-i oj co f— o— _i a. co co 

JZ _i Qi CO CO CO > LU C'J C'J I J J O LU 

|0| P i— —> Z' ffi'ii P R P P P Qi >— 

CO CO X X i_i iQiPZZZZZi— Qi 

Z Z Z Z Z Cu Cu Cu Cu Qi Qi Qi Qi Qi Qi CO I— 


CO 

LU 


LU P 

t— 

j— 
Qj LU 

! 0C 

C'J 



LU 

LU 

Qi 


CO 


LU 

Z 





LU ■ 

z co r - 


Txzi5 

Qi —i 
Qi Z O 


• LU 
LU Z 



LU Qi 

P CD i0‘ Z LU 

Z i— 'X CO 

’X Qi P CO X 

LU O 

P I=- Z Z LU 

ix z p Zu¬ 
lu '0. Lu M 'X 

Qi ' 01 Z CO 


% 


i 

uo 


P IX 
Z X 
X LU 

OP 


L'J 





LU 


LU LU 



*-• 01 Z 'X 'X 
P Z - CO O Z 101 


-1 CO CO P Qi -• 

CO PXLU'I1U22 
X Z Z X Z P LU 
0_ CE _ !0J Z P Z 
Qi Z - X X 


P -• Lu CO O' lu Z 



Qi i—i CO P Z v-u 
P P O ■ i-i Z 


Cl'' Lu ZLtiZX 
-PLlP 101 
'01 LU -P LU Z Lu 
Z CO I CO •+: *-• 


X 


Lu O' Si —< i-« 

LU P —i —i ©I IP 

C'J CO P UO '-£' LU Lu Lu ©i ©' ©' CO L3 X 

Lu L_ Lu Lu Lu Lu Lu Lu P P CO *n CO O 

-P P -M+ P -rr P -P -P P -M+ # Z O' 


LU Z 
lu CO Qj Q_ i—' 

_■ ! iJ_I OJ I »:• _I Qi 


z 


P P P Qi P «: 

z z z p z : 

Qi Qi Qi CO Qi 


LU 

00 CO CO P 

LU LU Lu LU 0- *0i 
* * I—* J >— ill 'I 
Qi Qi Qi Qi Qi P 
P P Pil# 


X X X X 

P _J 'OJ Z C'J - 

_i i—i i—i !—i UZ' i—i C'O P i-< 

O Z Z Z P ! P z | 

O LL Qi it: # Z # X it: Z 


z z z + 

X Z 1—1 *-< CO 

IX lli Qi p ©■ x CO 

P X 'Z X CD CO P X 

—1 1-1 Z 101 P P X X 

CO P O IJ # # Z X 


LU X LU 



s 

p 


x uo x uo >: 

X + X + -I 
0 Z LU Z = 


X X —1 X X X X X X X X 00 Z Qi X X X CJ X O 'X X Qi CJ P 'X O Z P Qi Z Qi 'I 0- Qi Z Z Z X 0- 0- Qi 

Qi - - : - ; x c 0. 0-; gs q; q; ql p p co xzpzzzplu co x x o-c p p x co p co p z co p p p p p p co 

X X X X X X X X X X O X X — I P X CO --I Z i-i X X — ' CO CO P Z CO O ~1 X — 1 X P ~' X CO X X CO X X 


_I 0- X 0-0 X X Qi X X CO Z 0-C 0-C X 0— Z X 0 X X 0- Z Z 0- X 0-C X 

O X Z X Z CO CO O Z *01 P X X Z P p CO PZZPPPZZPZ 

Qi p X P X 01 ~0 X X CO P O X X X *0 X 01 X CO X CO *—I Qj X X 



X X 
CO P X 

X Z' X P X 
01 C' X X P 
X X X CO 



CO X 

■01 X 


X 


z 


co 

101 


co —i x r - C'j >*o C'j rt 1-. uo co 

101 17 -. X X X X 101 X —1 X 10 



. I—l ©1 Z '0' ' £• '-£i ©1 '£• t—i ©• -01 C'O •: 0 

z x oj i_* p x p x z — '■ u. c o 


uo 0 - 7 : c j - ' uo uo cu -r ©• z •& '£■ co ©i © ©■ ©■ 01 . 7 , 7 0 

Z • i Z Z C i Z O!' 0 Z '7' Z -7 '-■) '•••' CO P CO’-'IT X 



X P X '0i X |0‘ X l -1 X X 10' X i-i 1—1 

X X X Z X *0' X '01 X Z 10' X 1-1 CO 

Z 10- 101 10‘ -7' 0- JO UO 101 P >7' U0i co. 101 C'J '01 

1 _ X P Z Z X P P 17 . Z '7 ' P Z P 


0' c- J UO CO 17 . X P X i—i CO '■£! CO X 

101 101 ©1 ©I ©1 ©1 ©1 101 1—1 1—1 1—1 1—1 —-1 

CO CO CO CO CO CO CO CO CO CO CO CO CO 

01 10' 101 ©I ©I ©1 ©■ 101 '01 10- ©1 ©I ©1 



CO X P X — •*' f - '7 X P X 10' JO '£• CO X X © 'J P £ f - >7 Qj P X OJ 0" '£• Oj Z X X ^ CO 

'•J 1 *'J ''-J ■' : CO CO CO |V| .-.-I ppppppppu* U” UO U“ UO O’* U'- U' L“ •£• '-£• *£• *£• ‘O *£> '-£' '£> x r - 

i'.j CO '‘•j '0 CO CO CO CO CO CO CO C'j O’' t'O C j i"0 r-j Oj CO CO CO CO CO CO CO CO co CO CO CO 

•0' -0' i0> '0* ©• ©• 0i ©i ©i © ©• ©. ©• ©i ©' i0' '0- -0i 0i ©' © © 0' ©■ 0' ©' ‘01 0 7 t C' 10' 10' O i0i '0< Ci '01 C ©' 


Page 27 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 


September, 1976 


254 












THE BOUNCING BEASTIE 

A RANDOM WALKER FOR PROCESSOR TECH ’S 
VDM 

by Marvin R. Winzenread 

If you have a Processor Technology VDM or any dis¬ 
play that reads directly from memory,, and at least 256 bytes 
of other memory, here is a random walk program you might 
like. 


* * 

The program was assembled using P.T.’s software No. 1 
on a system of only 8K, so the comments were added later. 

I hope you enjoy my turtle. 


0000 

31 

A1 

00 

0003 

3E 

00 


0005 

D3 

8C 


0007 

21 

00 

88 

000A 

36 

20 


oooc 

23 



00 0D 

7C 



000E 

F£ 

8C 


0010 

C2 

0A 

00 

0013 

21 

20 

8A 

0016 

36 

07 


001 8 

78 



001 9 

E6 

03 


00 IB 

CA 

24 

00 

00 1E 

01 

FF 

IF 

0021 

C3 

27 

00 

0024 

01 

FF 

OF 

0027 

0B 



002 8 

78 



002 9 

FE 

07 


002B 

C2 

27 

00 

002E 

36 

2A 


0030 

CD 

72 

00 

0033 

47 



0034 

E6 

01 


0036 

C4 

5E 

00 

003 9 

78 



003A 

E6 

02 


003C 

C4 

69 

00 

003F 

78 



0040 

E6 

40 


0042 

C4 

4E 

00 

00 45 

78 



0046 

E6 

80 


004 8 

C4 

56 

00 

004B 

C3 

16 

00 

004E 

23 



004F 

7 C 



0050 

FE 

8C 


0052 

CO 



0053 

26 

88 


0055 

C 9 




LXI 6,AR+6 
MV I AjO ~\ 

OUT 8CH # 

AG LX I Hj 8800 H W" 
ST MV I M,20H \ 



Set Stack Pointer 


Initialize VDM 


Start in Center of Screen 
Looks like a turtle to me 


A wait routine to slow the action to human speeds 


Experiment with different fonts 
Could be IN0FFH If you want to control the action 


MOVE 


Move right 


Page 28 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 


September, 1976 


255 





0056 

2B 



8200 

LF DCX H 

0057 

7C 



8210 

MOV A* H 

0058 

FE 

87 


8220 

CPI 87H * 

00 5A 

CO 



8230 

RNZ 

005B 

26 

8B 


8240 

MV I H>8BH^ 

005D 

C 9 



82 90 

RET 

005E 

1 1 

CO 

FF 

8300 

UP LXI D> OFF! 

0061 

1 9 



8310 

DAD D 

0062 

7C 



8320 

MOV Aj H 

0063 

E6 

F3 


8330 

AN I OFBH^ 

0065 

F6 

08 


8340 

ORI 08H 

0067 

67 



8350 

MOV H.*A 

006 8 

C 9 



83 90 

RET 

006 9 

1 1 

40 

00 

8400 

DN LXI D,40H 

006C 

19 



8410 

DAD D 

006 D 

7C 



8420 

MOV A*H 

006E 

E6 

FB 


8430 

ANI 0FBH # 

0070 

67 



8440 

MOV H.» A 

007 1 

C 9 



8490 

RET 

0072 

E5 



8600 

RND PUSH H 

0073 

21 

9A 

00 

8610 

LXI Hj S H+3 

0076 

06 

08 


8620 

MV I B,8 

007 8 

7E 



8630 

MOV A> M 

007 9 

07 



8640 

RTOP RLC 

007 A 

07 



8641 

RLC 

007B 

07 



8642 

RLC 

007C 

AE 



8650 

XRA M 

007D 

17 



8660 

RAL 

007 E 

17 



8661 

RAL 

007 F 

2D 



867 0 

OCR L 

00 80 

2D 



8671 

DCR l 

0081 

2D 



8672 

DCR L 

00 82 

7E 



86 80 

MOV A* M 

00 83 

17 



86 90 

RAL 

00 84 

77 



86 95 

MOV M*A 

00 85 

2C 



8700 

I NR L 

00 86 

7E 



8710 

MOV A,M 

0087 

17 



8720 

RAL 

0088 

77 



8730 

MOV M*A 

00 89 

2C 



8740 

I NR L 

00 8A 

7 E 



87 50 

MOV A* M 

00 8B 

17 



8760 

RAL 

00 8C 

77 



8770 

MOV M.» A 

00 8D 

2C 



87 80 

INR L 

00 8E 

7£ 



87 90 

MOV A,M 

00 8F 

17 



8800 

RAL 

00 90 

77 



8810 

MOV M.* A 

0091 

05 



8820 

DCR B 

00 92 

C2 

79 

00 

8830 

JNZ RTOP 

00 95 

El 



8840 

POP H 

0096 

C 9 



8850 

RET 

0097 




9000 

SH DS 4 

00 9B 




9010 

AR DS 6 


Move left 


Up 


Down 


A random number generator from P.C.C. 


*My VDM is addressed as: 8C = Port address 
8800 — 8BFF = Memory 
If yours is addressed differently you need to 
make changes in these statements. 


Page 29 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 


September, 1976 





TBX Addit ions: 


String Handling & a New Print Delimiter 


Dear Dr. Dobb, August 12, 1976 

I have implemented the Whipple/Arnold TINY BASIC 
[DDJ, Vol. 1, Nos. 1&2], and am really excited about 
the super job they did. 

[ I have several modifications to it (any system worth 
having is worth modifying to your own desires). Most 
of the modifications are of interest only to me. How¬ 
ever, a few modifications may be of general interest, so 
I am offering them to you to share as desired. 

Since I am a programmer by profession, I owe my 
soul to the company store. So If you publish this, 
please sign me as - 

The Penny Tiger 

STRING HANDLING FOR TINY BASIC 

I have incorporated a rather austere character string 
capacity into the Whipple/Arnold version of TINY BASIC. 
Although it is somewhat clumsy to work with, it does 
make character string input, output, storage and manipu¬ 
lation possible, so it can’t be all bad. 

It involves two modifications to the TINY BASIC 
interpreter; one to the processor for the IN statement, and 
oen to the processor for the PR statement. These changes 
utilize a special variable named “@”. (This has always been 
an available but unadvertised variable name in TINY BASIC.) 

The changes assume that the variable “@” is an array 
and has been singly dimensioned to the maximum permis¬ 
sible character string length. 

When the statement 
IN @ 

is executed, the user may type in any character string. The 
characters typed in are placed in array elements @(1), @(2), 
etc., until a carriage return is entered. The carriage return 
is also stored in the array. These may then be thought of, 
in storage, as being numeric representations for the charac¬ 
ters. For example, the letter A is stored as the decimal 
number 65, the character 4 is stored as 52, and a carriage 
return is stored as 13. 

If the number of characters typed in equals the dimen¬ 
sion of @, no further characters are accepted and control 
is returned to the program. In this case, no carriage return 
is placed in any element of @. 

When the statement 
PR @ 

is executed, the character representations for the numbers 
stored in successive elements of @ are printed, until either 
a carriage return is encountered, or all elements of @ are 
printed. The carriage return is not transmitted. Thus, the 
data input from an IN @ statement may be directly 
printed by the PR @ statement. For example: 

10 DIM @(20) 

20 PR “WHAT IS YOUR NAME” 

30 IN @ 

40 PR “HELLO”;@; “-HOPE YOU HAD A NICE DAY” 

50 END 

RUN 

WHAT IS YOUR NAME 

? ALICE 

HELLO ALICE - HOPE YOU HAD A NICE DAY 

The data entered may be inspected or modified by the 
program as desired, if you remember that what the pro¬ 
gram sees is numbers. For example: 

Page 30 


10 DIM @(4) 

20 PR “WANT RULES”; 

30 IN @ 

40 IF @(1)=78 GOTO - 

50 PR “HERE ARE THE RULES: 

In this case, if the response begins with N (coded as 
78 decimal), the program assumes NO and skips printing 
of the rules. 

Of course, if more than one character string must be 
maintained by the program, they must be moved to 
other arrays while the @ array is ued for input or print¬ 
ing. For example: 

10 DIM @(20), N(20), A(20), C(20) 

20 PR “WHAT IS YOUR NAME”; 

30 IN @ 

40 FOR 1=1 TO 20 $ LET N(I)=@(I) $ NXT I 
50 PR “HOW OLD ARE YOU,”; @; 

60 IN @ 

70 FOR 1=1 TO 20 $ LET A(I)=@(I) $ LET @(I)=N(I) 

$ NXT I 

80 PR “THANK YOU,”;@; “ - WHAT IS YOUR 
FAVORITE COLOR”; 

90 IN @ 

100 FOR 1=1 TO 20 $ LET C(I)=@(I) $ LET 
@(I)=N(I) $ NXT I 

110 PR “WELL,”;@;“ - I NEVER HEARD OF A”; 

120 FOR 1=1 TO 20 $ LET @(I)=A(I) $ NXT I 
130 PR @; “YEAR OLD BEFORE” 

140 FOR 1=1 TO 20 $ LET @(I)=C(I) $ NXT I 
150 PR “WHO LIKES”; @ 

160 END 
RUN 

WHAT IS YOUR NAME? ALICE 
HOW OLD ARE YOU, ALICE? 12 
THANK YOU, ALICE - WHAT IS YOUR FAVORITE 
COLOR? BLUE 

WELL, ALICE - I NEVER HEARD OF A 12 YEAR 
OLD BEFORE WHO LIKES BLUE 
The above should illustrate how the capability is used. 
The implementation is shown above. Note that the input 
and output routines cannot be located within the TINY 
BASIC code because sufficient space could not be found. 

In my system, space was available starting at 200. This 
can be placed anywhere in available space below 4K, or 
above the program area (top pf program area is defined 
at 033354, 033355). Just remember to relocate the appro¬ 
priate addresses. 

Changes to implement @ in the PR statement: 


032154 

231 

271 


TST P3 ‘ ’ 

031271 

231 

322 

P3 

TST S8C ‘@’ 

031273 

300 




031274 

300 

200 


@OUT routine 

031276 

032 

161 


JMP S6 

000200 

052 

000 024 

@OUT 

LHLD H, slot for 





variable @ 

000203 

116 



MOV QM 





Get dimension 





of @ in B, C 

000204 

043 



INX H 

000205 

106 



MOV B, M 

000206 

043 


@OUTl 

INX H 


Dr. Dobb's Journal of Computer Calisthencis & Orthodontia, Box 310, Menlo Park, CA 94025 


September, 1976 


257 



000207 170 


MOV A, B 



Determine if 



all chars output 

000210 261 


ORA C 

000211 310 


RZ 

000212 013 


DCX B 

000213 176 


MOV A, M 

000214 376 015 


CPI CR 



Is it C.R. 

000216 310 


RZ 

000217 345 


PUSH H 

000220 315 026 022 


CALL ASCOUT 



Output the char 

000223 341 


POP H 

000224 043 


INX H 

000225 303 206 000 


JMP @OUTl 

Changes to implement @ 

in the IN statement: 

032232 027 273 


JMP P4 

027273 232 222 

P4 

TST P2A 

027275 300 



027276 300 230 


@IN routine 

027300 032 240 


JMP back 

032222 133 310 

P2A 

CALL AVTEST 

032224 032 234 


JMP back 

000230 325 

@IN 

PUSH D 

000231 076 077 


MVI A, “?’ 



Output prompt 

000233 315 026 022 


CALL ASCOUT 

000236 076 040 


MVI A, ‘ ’ 

000240 315 026 022 


CALL ASCOUT 

000243 315 000 020 


CALL BUFIN 



Read keyboard 

000246 021 111 020 


LXI D, BUFSTRT 

000251 052 000 024 


LHLD H slot for 



variable @ 

000254 116 


MOV C, M 



Set up count fro 

000255 043 INX H 

DIM of @ 

000256 106 


MOV B, M 

000257 043 

@IN1 

INX H 



Put chars keyed 



into @ 

000260 170 


MOV A, B 

000261 261 


ORA C 

000262 312 304 000 


JZ @INR 



End of @ 

000265 013 


DCX B 

000266 032 


LDAX D 

000267 167 


MOV M, A 

000270 043 


INX H 

000271 066 000 


MVI M, O 

000273 376 015 


CPI CR 

000275 312 304 000 


JZ @INR 



C.R. terminates 

000300 023 


INX D 

000301 303 257 000 


JMP @IN1 

000304 321 

@INR 

POP D 

000305 311 


RET 


BRINCH HANSEN TERMINATES DISTRIBUTION 
OF CONCURRENT PASCAL & SOLO MATERI¬ 
ALS 

Per Brinch Hansen has left Cal Tech and moved to 
USC. With this move, he has ended the availability 
(through him) of reports and PDP-11 system tapes for the 
Concurrent PASCAL/SOLO project. Papers describing the 
system may be found in IEEE Transactions on Software 
Engineering (June, 1975) and in Software-Practice & 
Experience (April-June, 1976). 

PROPOSED STANDARD FOR MINIMAL BASIC 
PROGRAMMING LANGUAGE 

A draft of a standard for a minimal BASIC was pub¬ 
lished July 1st and is being circulated for a four-month 
period of public comment and review. It was prepared by 
the X3J2 Technical Committee (T.C. for BASIC) of the 
American National Standards Institute (ANSI). Copies may 
be requested from, and comments should be directed to 
CBEMA/Secretary X3, 1828 L Street, N.W., Washington, 

DC 20036. 


bar graphs. Or I would like to use the character 
string capability to compose text. 

In order to make these possible, I implemented a 
new delimiter (colon) in the PR statement of the 
Whipple/Arnold version of TINY BASIC. It works 
like the semi-colon delimiter, except that no space is 
output. 

It is implemented as follows: 

032173 226 377 
026377 232 202 P5 

027001 272 
027002 032 166 


TST P5 U 
TST S7 V 


JMP back 


NULL LINES AND THE REM STATEMENT 


If you just hit RETURN when the Whipple/Arnold 
version of TINY BASIC expects a command, it puts a 
line of garbage at the beginning of your program. This 
change prevents this from happening: 


020366 303 066 022 
022066 041 111 020 
022071 170 
022072 261 
022073 312 


JMP PI 
PI LXI H, BUFSTRT 
MOV A, B 
ORA C 
JZ END 
JMP back 


A NEW DELIMITER FOR THE PRINT 
STATEMENT 

I have often wished that TINY BASIC could output 
messages catenated together without the intervening 
spaces provided by the semi-colon delimiters. For 
example, I would like to output a number as dollars 
and cents (e.g., $4.36). Or I would like to generate 


166 021 
022076 303 371 020 

I implemented the REM (remark) statement as 
follows: 

032074 226 370 TST P2 ‘IF’ 

026370 232 112 P2 TST S3A ‘REM’ 

026372 122 105 315 

026375 325 246 LOOP 

Those who have video terminals may wish to change 
the size of the print zone from 15 characters to 8 or 16. 
This can be done by changing the following locations to 
the desired number: 

022036, 022355, 022365, 026107. 


^S® 31 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 September, 1976 


258 






MORE MODS TO DOMPIER’S MUSIC PROGRAM, 

A FIVE-INSTRUCTION MEMORY-ERASE ROUTINE, 
& ANOTHER MEMORY-TEST PROGRAM 


Dear Editors of DDJ: Aug. 15, 1976 

I was indeed interested in seeing some modifications 
to Steve Dompier’s MUSIC PROGRAM [DDJ, Vol.l, No.3]. 
However, there is still an inconvenience in the original pro¬ 
gram. This is the necessity to change the tempo data in 
memory for each new piece that is loaded. I submit to 
you my re-written code that allows the user to input the 
tempo to the program from the sense switches of his 
machine, allowing him to change and “fine tune” the 
speed at which the music is played. The new code is as 


follows: 





ADDR 

DATA 


MNEMONICS 

COMMENTS 

000-000 

041 XXX XXX 

LXI H, XXX 

;ENTER START 





OF PIECE 

000-003 

176 


MOV A,M 

;R EAD NOTE 

000-004 

376 377 


CPI 377 

.TEST FOR 
END-OF-PIECE 

000-006 

312 000 

000 

JZ 000-000 

;JUMP TO BEG¬ 
GING IF END 

000-011 

333 377 


IN 377 

;l NPUT TEMPO 
FROM SENSE 
SW 

000-01 3 

127 


MOV D,A 

;MOVE TEMPO 
TO D REG 

000-014 

005 


DCR B 

;MAIN PLAY 

PROGRAM 

FRAME 

000-015 

302 021 

000 

JNZ 000-021 


000-020 

106 


MOV B,M 


000-021 

015 


DCR C 


000-022 

302 014 

000 

JNZ 000-014 


000-025 

025 


DCR D 


000-026 

302 014 

000 

JNZ 000-014 


000-031 

043 


INX H 


000-032 

303 003 

000 

JMP 000-003 



Note that tempo zero on the sense switches will be the 
fastest, and tempo 337 will be the next fastest, tempo 
001 being the slowest. (This is due to the nature of 
Dompier’s program.) 

The following are two very short programs for 
utility and recreation. The first is a memory clear pro¬ 
gram that leaves zeros in memory, effectively erasing 
itself, with the exception of two instructions. 


ADDR 

DATA 

MNEMONICS 

COMMENTS 

000-000 

041 010 000 

LXI FI,8 

;SET POINTER 
TO END-OF 
PRGM.-1 

000-003 

257 

XRA A 

;SET ACC. TO 
ZERO 

000-004 

043 

INX H 

INCREMENT 

MEM. 

POINTER 

000-005 

167 

MOV M,A 

;MOVE ACC. 
TO MEMORY 
LOCATION 

000-006 

303 004 000 

JMP 000-004 

;LOOP TO INX 
H INSTR. 


This program will effectively try to write zeros into all 
available memory locations, and erases itself, up to the 
INX H instruction, which then will become a NOP and 
the program will infinitely loop, writing zero into the same 
memory location. The lights on your computer will indi¬ 
cate when the program has stopped; it usually will be 
through in a second or two, depending on the access time 
of your devices. You then may zero the remaining memory 


memory locations (005, 006 & 007 in this lower-page 
assembly) with DEPOSIT. 

The following program was written by my colleague, 
Steve Schossow, the first day that we got my Altair work¬ 
ing. It effectively lets you use the sense switches on your 
computer like a keyboard on a synthesizer. This works by 
playing the note on the sense switches out an AM radio, 


just as the Dompier 
ADDR DATA 

program does. 

MNEMONICS 

-* “ ~ 5 

COMMENTS 

000-000 

333 377 

IN 337 

;INPUT NOTE 

000-002 

075 

DCR A 

FROM SENSE 
SW 

;LOOP TO 

000-003 

302 002 000 

JNZ 000-002 

PLAY NOTE 
CONTINUE 

000-006 

303 000 000 

JMP 000-000 

DECREASING 

'TIL ZERO 
;GET NEW 


NOTE TO 
PLAY 


This program makes it obvious that the simple DCR or 
INR loop is essential to playing the “note.” We tried 
putting more complex looping structures in this program, 
but simplicity seems to work the best. 


MEMORY TEST PROGRAM 




LX! H.START 

000-000 

041 

XXX XXX 


LXI B.END 

000-003 

001 

XXX XXX 


LXI SP,$+4 

000-006 

061 

050 000 

AGAIN: 

XRA A 

000-011 

257 


NEXT: 

MOV M,A 

000-012 

167 



MOV D, M 

000-013 

126 



CMP D 

000-014 

272 



JNZ ERROR 

000-015 

302 

040 000 


DCR A 

000-020 

075 



JNZ NEXT 

000-021 

302 

021 000 


INX H 

000-024 

043 



MOV A,H 

000-025 

174 



CMP B 

000-026 

270 



JNZ AGAIN 

000-027 

302 

011 000 


MOV A,L 

000-032 

175 



CMP C 

000-033 

271 



JNZ AGAIN 

000-034 

302 

011 000 


HLT 

000-037 

166 


ERROR: 

MOV E,A 

000-040 

137 



PUSH H 

000-041 

345 



PUSH D 

000-042 

325 



HLT 

000-043 

166 




000-044 

000 

000 000 000 

The starting address for 

the memory to be 

tested should 


be loaded in the two locations reserved by the label 
START at the first instruction. If you wish the first 
available location outside the operating program, this will 
be location 000-050 (split octal). The ending address to 
be checked, however, must be increased. E.g., if you 
were testing a 4K memory, END would be set to 020- 
000, instead of the last memory location in RAM, 017- 
377. When the program is done, it will halt, regardless of 
error. To verify if there was an error in testing memory, 
examine the four locations beginning at location 000-044, 
if no error occurred in reading memory, these will remain 
unchanged. If there has been a change in these locations, 
the data they contain is interpreted, thus: 

Location 044 is the WRITE data to memory 

Location 045 is the READ data from the same memory 

location 

Location 046 is the memory location detected (bad) 
lo-order 

Location 047 is the memory location detected (bad) 
hi-order 

Some hints on interpreting this information: 

If the READ data was 377 and the WRITE data 


Page 32 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 September, 1976 


259 



000, the problem is probably that there was no memory at 
that address. 

If the WRITE data is zero and the read data NOT 
377, the problem probably is that the memory slice was 
protected. 

Elsewise, you may “trap” a bad memory slice by 
zeroing the last four locations (after making a note of 
them!) and doing the following changes: 

-Change the START data to be your LAST 
memory location (like 017-377 in a 4K memory) 

-Change the END data to be the beginning 
memory address to be tested (as in 000-050) 

-Change location 000-024 to a DCX H (053). 

. . . And run the program again. It will now stop, hope¬ 
fully returning a new value in the ERROR locations. From 
these two addresses (the old address pointer you wrote 
down from locations 046 & 047, plus the new address 
pointer currently there) indicating between what two 
addresses (inclusive) that bad memory was found, you may 
have an indication that one of your IC’s was bad (for 
instance, one bit would never go off: WRITE 000, READ 
001 — it will usually be detected on WRITE 000.) and the 
memory pointers’ difference will most likely be 1024. The 
memory slice and bit that is bad will indicate, with the 
help of a schematic, a bad memory chip. 

Richard A. Kaapke 4485 Vision Dr., Apt. 9 

KLUGES, Inc. San Diego, CA 92121 

(All rights released to DDJ from Kaapke’s Little Used but 
Greatly Esoteric Software, Incorporated) 


REPRINTED ALPHANUMERIC MUSIC WITH 
AMPLITUDE CONTROL INCLUDES CORREC¬ 
TIONS FROM AUTHOR 

Malcom Wright has sent in three letters containing 
corrections and additions to his booklet on Altair com¬ 
puter music generation [see DDJ, Vol. 1, No. 5, for notes 
on this publication]. These letters (dated April 13, May 
17, and June 7) have been included in the most recent 
reprint of the booklet, available from the PCC Bookstore. 


COMPUTING CAREERS FOR DEAF PEOPLE 

Proceedings of the 1975 ACM Conference on Computing 
Careers for Deaf People have been published by the Associa¬ 
tion for Computing Machinery. The Conference, sponsored 
by the ACM Special Interest Group on Computers and the 
Physically Handicapped (SIGCAPH), was held last April in 
the Washington, D.C. area. It featured 30 presentations 
(including 11 by deaf professionals) covering such topics as 
educational opportunities, special training programs, placement 
problems and solutions, federal legislation, on-the-job prob¬ 
lems and solutions, and success factors. 

Industry and government employers will find that these 
proceedings provide sound input to their plans for compli¬ 
ance with the requirements of the Rehabilitation Act of 
1973 (Public Law 93-112). 

The proceedings contain 125 pages and cost $6.75 for 
ACM Members and $9.00 for non-members. They are avail¬ 
able, prepaid, from: 

ACM Order Department 
P. O. Box 12105 
Church Street Station 
New York, NY 10249 


ERRATA TO ZEIGLER’S 6502 “BUG PROGRAM” 

The March issue of Dr. Dobb’s Journal [Vol. 1, No. 3] 
contained a “Breakpoint Routine for 6502’s” submitted by 
John Zeigler. The final paragraph of the documentary text 
contains an error. It should read: 

“. . . it is necessary to load the interrupt vector, FFFE 
and FFFF, with 54 amd 02, respectively ...” 


PROPOSAL FOR HANDY SOFTWARE, WITH 
EXAMPLE 


A STRING OUTPUT SUBROUTINE FOR THE 6502 


Dear Jim: August 10, 1976 

I have been noticing that in the Journal, the main sub¬ 
ject has been large programs (BASIC’s, monitors, text editors). 
I agree there is a need for large programs such as these, but 
I believe you should also concentrate on HANDY (Helpful 
Algorithms for Novice Do-It-Yourselfers) programs to save 
bytes in space-limited systems. I enclose my example: a 
string immediate-output subroutine for 6502-based systems. 
This routine saves pointers, loops, etc. normally used for 
string output by sequentially outputting the ASCII charac¬ 
ters represented in hex in the bytes immediately following 
the Jump to Subroutine. After reading a terminating char¬ 
acter (null), it returns to the instruction following the end 
of the string. No string addresses or lengths are needed. 

The subroutine uses 40 (hex) contiguous bytes for 
program and intermediate storage and 2 zero-page bytes 
for indirect addressing. Calling the routine affects none of 
the registers, nor the stack. It has been implimented on 
an Apple Computer and copies of the program are being 
delivered to the Homebrew library and the CCC repository. 

Chris Espinosa 

LOC. 03JECT CODE SOURCE STATEMENT 

;;; stringout: handy stung output ^om t ime 
;;; DEVELOPED FOR THE M0S 6502 C. ESPINOSA 
;;; public domain 9 / 11 / 1 976 

0RG 5400 






AKEEP 

EQU 

S043D 






YKEEP 

EQU 

S043E 






KKEEP 

EOU 

5 0 4 3 F 






OUT 

'EQU 

SEFFF 






L0 

EQU 

IFE 






HI 

EQU 

IFF 






L0 

D°Z 







HI 

D°Z 



0400 

8 D 

3D 

04 

BEGIN 

STA 

AKEF.P 


0403 

8 C 

3E 

04 


STY 

v KEF. n 

SAVE REGISTERS 

0406 

68 




PLA 


GET RETURN ADDRESS 

0407 

85 

FF. 



STA 

L0 


0409 

68 




°LA 



040A 

85 

FF 



STA 

HI 


040C 

A0 

0 1 



LD V 

# 1 

SET UP INDEX 

040 E 

31 

FE 


, N EXT 

LDA 

(L0)»Y 

GET NEXT CHAR 

0410 

F0 

07 



3EQ 

EXIT 

END IF 00 

0412 

C 3 




I NY 



0413 

20 

FF 

EF 


JSR 

OUT 

OUTPUT I* 1 * 

04 1 6 

4C 

0E 

04 


JMP 

NF v ” r 


04 1 9 

3C 

3F 

04 

EXIT 

STY 

KKEEP 


04 1 C 

A5 

FE 



LDA 

L0 


04 1 E 

38 




SEC 



04 1 F 

6 D 

3F 

04 


ADC 

KKEEP 

ADD STR. LEN. 

0422 

85 

FE 



S T A 

L0 

TO RETURN ADDRESS 

0424 

A5 

FF 



LDA 

HI 


042.6 

69 

00 



ADC 

#00 

CARRY 

0428 

85 

FF 



STA 

HI 


042A 

AD 

3D 

04 


LDA 

AKEE° 

RESTORE REGS 

042D 

AC 

3E 

04 


LD V 

YKEE° 


0430 

6 C 

FE 

00 


JM° 

CL0) 

RETURN 


Page 33 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 September, 1976 


260 








A “FIX” FOR DENVER TINY BASIC, PRAISE & 
A BUG-NOTE ON PIT.’S 5K BASIC 

Dear Jim, July 30, 1976 

I just finished looking through Vol.l, No.6, thought it 
was great, as usual, and decided to send along a few com¬ 
ments. 

The following mod should be made to get dimensioned 
variables to work properly in my Denver version of Tiny 


BASIC [DDJ, Vol. 1, No. 3]: 


TSV6 DCX D 

TSV6 DCX D 

XCHG 

XCHG 

DAD H ■ w DAD H 

DAD D Change t0, ^LDAX D 

MOV E, M 

ADD L 

INX H 

MOV L, A 

MOV D, M 

INX D 

XCHG 

LDAX D 

CALL ASPH 

ADC H 

POP PSW 

MOV H, A 

RET 

CALL ASPH 
POP PSW 
RET 


A modification to the text editor which would be useful 
would be a “Test for valid data”. I occasionally get con¬ 
trol characters into a file, or lower case ASCII, which prints 
as upper case on my TTY, and don’t detect it until I run 
a program through the assembler, which generates an assem¬ 
bly error. A test of this type, either as a separate command, 
or in the input routine, or both, would prevent these types 
of errors. Since I modified my TV-Typewriter (it will scroll 
now), I will probably change the editor to eliminate the 
clear screen routine, at which time I plan to add the above 
mod also. It shouldn’t be difficult. The test is used in the 
INSM command, and all that is necessary is to pull that por¬ 
tion out as a separate command. 

I finally received Processor Technology’s listing of their 
5K BASIC, and thought that I would pass along some com¬ 
ments on that, also. First, for $5.00, I think it’s a real bar¬ 
gain. (So is their assembler/editor/etc. package). I have it 
running now and it appears to work fine. I did find one 
apparent bug in the listing, in the “INT” function, subroutine 
AINT; This routine sets the floating point exponent to 
zero if the absolute value of the variable is less than 1. 

This is correct, but apparently at least some of the other 
routines require the entire 5 byte number to be zeroed 
for a zero value. I haven’t traced this completely, but 
I was getting some strange results. I changed the rou¬ 



tine to zero the entire value, and the problems disappeared. 

The only other problem I encountered concerns a 
feature of the assembler used to generate the listing. There 
are numerous 5 and 6 letter symbols used, so rather than 
reassigning new symbols for my 4 character max limit, I 
modified my assembler (again) to accept longer symbols. 

I now can have sumbols up to 11 characters long. I 
store only the actual number used in order to keep the 
memory requirements down, and plugged in 2K more of 
memory to be able to handle decent size source code 
blocks. Anyway - I used the symbols directly from the 
listing, and on the first pass through the assembler dis¬ 
covered that even though 6 character symbols are used, 
only the first 5 are unique and recognized. In several 
places the sixth letter had been dropped in the listing, 
which my newly modified assembler assumed were two 
different symbols. Numerous “Undefined symbol” 
errors occured. I also had a duplicate symbol error, and 
sure enough, the symbol “PRIN2” is used two places in 
the listing. After straightening those problems out, 
along with numerous errors I made in entering the 
code, everything appears to work fine. A little more 
documentation would have been nice (I received only a 
listing, but there are enough comments to figure it out), 
and 5K BASIC requires over 6K, but I still would recom¬ 
mend it. 

I still think I will implement my own high level 
language. I have the floating point routines running 
now, using binary arithmetic at 4 bytes per value, 
rather than decimal at 5 bytes per value, and have 
begun investigating different techniques for implementa¬ 
tion of a new language. I’ll send along a listing of the 
floating point routines as soon as I can get a good copy,, 
off. I have the listing on cassette, but haven’t had time! 
to run it through the printer yet. 

Happy computing, 

F. J. Greeb 1915 So. Cape Way 

Denver, CO 80227 

EDITOR’S NOTE: Processor Technology is located at 
6200 Hollis St., Emeryville, CA 94608, (415) 652-8080. 


Page 34 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 September, 1976 


261 






How secure is computer data? 
Not very, say Stanford experts 


(reprinted with permission from May, 1976, The 
Stanford Observer ) 


The proposed key for a security 
system designed to lock up the vast 
quantities of information stored in 
U.S. computers so that only autho¬ 
rized persons can get at them is 
“too small” and “within 15 years 
will be rendered totally insecure” in 
the opinion of two Stanford com¬ 
puter experts. 

Electrical Engineering Prof. 
Martin E. Heilman and graduate 
student Whitfield Diffie criticize 
the computer key, proposed by the 
National Bureau of Standards 
(NBS) and the National Security 
Agency (NSA), in an article in 
Communications of the ACM 
(March 1976), professional journal 
of the Association for Computing 
Machinery. 

The two computer experts have 
been working on related research in 
data security under National Sci¬ 
ence Foundation sponsorship. 

If the Secretary of Commerce 
approves it, the key will become a 
required standard for most federal 
agencies and a de facto standard for 
all computer users. 

Numerous computer thefts of 
company secrets and even of 
money in recent years have caused 
the industry to look hard for better 
methods of securing their trade 
secrets and other private informa¬ 
tion stored in computers. At the 
same time there has been wide 
public concern about the privacy of 
individual’s computerized files held 
by the Internal Revenue Service 
and other government agencies. 

So far the only way to tell 
whether computerized secrets are 
safely stored is to use trial-and-error 
methods to find the code words or 
signals that will enable one user to 
read another’s files. Such eaves¬ 
dropping already occurs now and 
then quite by accident. 

The system proposed by NBS 
originated at IBM and consists of a 
kind of combination lock called an 
“algorithm,” which is an encoding 
computer program. When the user 


m LETS SEE 

isiuoioi? 

OR is IT 

moo?-. 

BrmR'BR'rtG- 
THE D7M AM it£ 
jVSTIrt CASE, 



35 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 


September, 1976 


262 















puts his key into the algorithm lock 
and feeds information into the 
machine, it is stored or sent to the 
recipient in coded form. 

The same key must he used to 
get the information out again, or 
for the recipient to get the sender’s 
message Any other key wilt pro¬ 
duce only garbled versions. 

If approved the algorithm lock 
will become a standard item of inte¬ 
grated circuitry, mounted on a tiny 
silicon chip and manufactured in 
quantity for installation in any 
computer whose users want it. 

The key to the lock, on the 
other hand, is a series of 56 digits, 
zeros and ones, arranged in any 
order. The large number of possible 
arrangements of these digits--ap- 
proximately 100 million billion 
gives the appearance of a high level 
of security. 

But Heilman and Diffie hold 
that the so-called “56-bit” key is 
not all that secure, that such a key 
could be broken in a day by anyone 
with enough money to build the 
trail-and-error machinery to search 
the 100 million billion keys. 

The machine would cost about 
$20 million by their estimate, 
averaging out to $10,000 per key 


broken. Such a prodigious search 
has only become economically 
feasible within the last few years 
due to revolutionary advances in 
electronics. 

They believe it significant that 
this would probably be too costly 

for a p r jv:pt' firm to invest in nTying 
into a rival firm’s secrets, but not 
too much for a government 
agency—say the NSA or CIA. The 
implication is that by setting a 
56-bit standard the government 
wants to be able to pry in the name 
of national security or other pre¬ 
text, but prevent others from doing 
so. 

“While it is well established that 
a larger number of keys does not 
guarantee security,” says the Stan¬ 
ford pair, “too small a number of 
keys guarantees insecurity. 

“It is widely held that computa¬ 
tion costs will continue to decline 
by an order of magnitude every five 
years. In 10 years our $20 million 
machine will then cost approxima¬ 
tely $200,000 and be within the 
reach of any large organization. If 
adopted, the proposed standard 
would have to be changed before 
that time. 

“The cost of modifying termi¬ 


nals, systems, etc. to use the new 
standard, and the cost of [reen¬ 
coding 1 old files which are still 
deemed private would be high. 
These costs seem unjustified since 
the cost of enlarging the key of the 
proposed standard would be mini¬ 
ma! ” 

Enlarging the 56-bil key to 64 
bits would escalate the cost of key¬ 
breaking machinery to about $5 
billion, or $2.5 million per key 
broken, they estimate. This cost 
might give pause to governments 
today, but in 10 years the expected 
advances in technology would re¬ 
duce these figures to $50 million 
and $25,000 respectively. 

The Stanford experts have urged 
a much higher standard with at 
least 1 28 key bits, which the com¬ 
puter users could employ wholly or 
in part. It would then be impossible 
to break the key by trial and error. 

“We strongly encourage NBS to 
consider modifying its proposed 
standard,” they conclude. “At the 
least it should define the level of 
security it believes the proposed 
standard offers and make public 
and reasoning behind its belief. 
Adoption of a standard with built- 
in obsolescence is not justified.” 


REVIEW OF THREE PERIODICALS 
CONCERNING ENERGY, TECHNOLOGY, 
AND PEOPLE 

by “The Old Soldier” 


Intermediate Technology 
556 Santa Cruz Ave. 
Menlo Park, CA 94025 

Self Reliance 

1717 - 18th St., N.W. 

Washington, D.C. 20009 


RAIDS ON ALLEGED ELECTRONICS COMPONENTS THIEVES 

Marshals raided Valcomp, Inc. in Westlake Village, CA, Pa¬ 
cific Semiconductor, Inc., in Inglewood, CA, and Idea Total 
Printing Services in Torrance, in the first week of July. At 
least part of the action concerned $8.7 million worth of Xerox 
Corp. computer modules, stolen in El Segundo. The raids were 
based on information furnished by a private investigator hired by 
National, Intel, Motorola and Fairchild; all being companies quite 
concerned about recent major thefts of components. 


People & Energy 
1757 S Street, N.W. 
Washington, D.C. 20009 


The three titles above are from newsletters that recently came 
into P.C.C. All are concerned with energy and technology, and 
each has something to recommend it, but since the combined sub¬ 
scription prices come to $23.50 a year, some discrimination 
becomes necessary. 

People & Energy is the most political of the three and a strong 
advocate for the corporate conspiracy theory of explaining our 
energy problems. For those who feel that way, this will help rein¬ 
force that attitude. No article on the suppression of the 100 MPG 
carburator, but perhaps next issue . . . 

Intermediate Technology is trying to put together working 
groups to examine production of energy, goods and foodstuffs to 
seek more rational production units in this time of rising transpor¬ 
tation and energy costs. Looks like a good way to pick up.iWeHtiple 


ideas without a lot of rhetoric. 

Self-Reliance , issue No. 1, got to me. The article "Do We Need 
Large Companies?" advances the thesis that, beyond a certain size, 
corporate growth does not enhance efficiency. Those advantages 
that do accrue are, greater leverage for equal percentage advertising 
expenditure, better and less expensive access to credit, and the 
possibly mistaken impression that large company employment is more 
stable. Another article, "Towards Sewerless Cities" brought an 
'amen' from me. The majority of the water we use in the home is 
used just to carry away sewage. Los Angeles, from just one plant. 
The Hyperion Sewerage Works, discharges between 350 and 750 
million gallons per day of sewage containing water into the ocean. 
Modern technology, and some technology not so novel, offers 
viable alternatives to this waste, and some of the alternatives are 
explained here. Self-Reliance has a fan in 

-the Old Soldier- 


Page 36 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 September, 1976 


263 



$ 1.50 


dr dobbs journal of 

COMPUTER 


C 


alisthenics 


60 


rthodontia 


Running Light Without Overbyte 


October, 1976 


Box 310, Menlo Park CA 94025 


A REFERENCE JOURNAL FOR USERS OF HOME COMPUTERS 


Volume 1, Number 9 


Policy Statement: Handling of Consumers’ Complaints Regarding Vendors’ Products & Services 
CONVENTIONS: 

Hurray & Beware: Everybody’s Jumping on the Convention Bandwagon —' Jim C. Warren, Jr. 
Computer Hobbyist Conventions Calendar 

Some Personal Observations on the Personal Computing ’76 Convention in Atlantic City 
The First West Coast Computer Faire — First Announcement & Call for Participation 
The San Francisco Bay Area Finally Gets It Together 
Inside Dope from Motorola 
CONSUMER NOTES: 

A Consumer’s Report on iCom’s Floppy Disc Subsystem — Chuck Felber 

An Excellent, Point-By-Point Response to Complaints About The Digital Group — Richard C. Bemis 
Assembling an IMSAI Computer — Pierre duPont V 
PCC Research Engineer Evaluates the 16-Bit PACER Kit — John Snell 
Survey of Vendor’s Products & Services — A Questionnaire for Consumers 
The Computer at Puberty — Reprinted from Technology Review 
SOFTWARE: 

Timer Routines for 6800’s — Gregory A. Worth 

Micro BASIC Plus for $15.95 — Technical Systems Consultants 

Tiny BASIC for the 6800 & 6502 from Tom Pittman’s “Company” 

SAVE and LOAD Mods to Pittman’s 6800 Tiny BASIC — Henry L. Lee 
A BASIC Terminal Exchange Program — Robert Wilcox 

Octal Debugging Program (ODT-80) for the MCS-80 Computer — E. R. Fisher 

Complete Documentation & Annotated Source Code 
OOPS! A Iine-Drawing Game for your Video Terminal - Marvin R. Winzenread 

SCRUNCH: A Compactor for 8080 BASIC Programs — Marvin R. Winzenread 
ALGORITHM & SOFTWARE DESIGN 

Jack Armstrong’s Super Decoder Ring — Jon O. Stedman 
How to Code Code 

TINY HI — Design Specs for a Powerful Procedural Language — Martin Buchanan 
PUBLICATIONS: Computer Power & Human Reason — Book Review by Dave Caulkins 

Tutorials from the IEEE Computer Society — Selected Bibliography With Abstracts 
Wayne Green to Start Publishing Kilobyte - John Craig 
PCC Bookstore Offerings 


3 

4 
6 
8 


5 

10 

11 

12 

20 

14 

21 

21 

22 

23 

24 
26 

30 

31 

16 

32 

36 

36 

38 

39 


264 






Policy Statement: 

Handling of consumers 9 complaints 
regarding vendors’ products & services 


by the Editor 

As our regular readers are aware, we have pursued a 
course of active consumer advocacy ever since we began publi¬ 
cation. In fact, one of the reasons we refuse to carry paid 
advertising is to maintain the viability of our statements and 
comments regarding products and services being offered to 
the computer consumer. After some months of publishing 
compliments and complaints about vendors’ offerings, we 
have slowly evolved a policy regarding the handling of con¬ 
sumer complaints which we believe will be fair to both the 
consumer and the vendor, to wit: 

We solicit both compliments and complaints concerning 
vendors, from the hobbyist community. In either case, these 
comments should be explicit, and contain as much detail as 
may be appropriate. In the case of complaints, particularly 
those involving service, we will contact the vendor, discuss the 
complaint with him, and request that an explicit response 
from him be forthcoming within a reasonably short period of 
time. If the response is written, we will request that a copy 
of it be forwarded to the originator of the complaint. 

If we receive a response within the time period we 


specify, and the response appears to us to adequately deal 
with the complaint, then we will do nothing more about the 
complaint. 

If we fail to receive a response within a reasonable period 
of time, or the response is vague, ambiguous, or otherwise 
fails to deal with the specifics of the complaint, then we will 
probably publish the complaint (and probably the response, 
as well) in the next available issue of Dr. Dobb’s Journal. 

If we receive complaints about poor design of some 
item of hardware or software, and it is our engineering and 
systems judgment that they are valid, then we may publish 
the complaint without first contacting the vendor. If there 
is any question about the validity of the complaint, we will 
contact the vendor or manufacturer as outlined above. 

We will take this path of action only in the case of 
written complaints that explicitly specify the problems. 

In the case of compliments and praise, we will pub¬ 
lish it whenever it seems appropriate to do so. It is almost 
certainly appropriate when we receive multiple complimen¬ 
tary remarks about the same product or service, coming 
from different parts of the country. 



A Note and Warning for Hobbyists & Vendors 

HURRAY & BEWARE: 

EVERYBODY’S JUMPING ON THE 
CONVENTION BANDWAGON 

by Jim C. Warren, Jr., Editor, Dr. Dobb’s Journal 

So far, the computer hobbyist conventions have been 
entirely run by hobbyists. As such, they have been well- 
oriented to hobbyist needs and interests and have been really 
exciting to most of those who attended them. Also as a 
result, however, they have generally been less organized and 
more haphazard than is the case with a “professionally run” 
convention. They haven’t furnished as much as they could 
(and have often been a hair-pulling frustration to exhibitors), 
but, what they lacked in smooth operation, they more than 
made up for in exuberence and enthusiasm. 

Now, however, some professional convention organi¬ 
zers are starting to get into the act. With a proper attitude, 
and with close cooperation and leadership from the hobby¬ 
ists, these “pros” can help make a good convention even 
better. They can smooth out the rough spots and tie up the 
loose ends. However, at least a few of them don’t appear to 
give a damn about the hobbyists; they seem interested only in 
the maximum amount of profit for the minimum effort. In 
this case, I would say that “pro” stands for promoter with its 
worse possible connotation. 

I became aware of this whole thing at the Atlantic City 
convention, because I passed out preliminary announcements 
of the First West Coast Computer Faire to be held in the San 
Francisco Bay Area, next Spring. As a result, I had half a 
dozen people contact me to say that they, also, were planning 
computer hobbyist conventions. I found this both exciting 
and disturbing. It was exciting to see that the personal com¬ 


puting movement has grown sufficiently that a number of 
people considered it worth their time and effort to organize a 
convention in their region. It was disturbing in that (1)1 
found that almost no one was paying any attention to what 
anyone else was planning, and (2) I encountered at least a few 
people who appeared to be interested in it strictly for profit 
without the slightest interest in benefiting the hobbyists. I 
think that the former can cause less-than-excellent conven¬ 
tions and gross confusion and irritation on the part of the 
vendors, and the latter can produce, at best, “cheap shows.” 

Sooner or later, the vendors will probably put together 
an association that will maintain a calendar of such events. 
Until that happens, there are some things that can be done by 
people considering holding a conference or convention to 
avoid (or at least know about) calendar conflicts. 

1. They can phone me at People’s Computer Company, 

(415) 323-3111. I will be happy to tell them of all the con¬ 
ferences I know of, and will maintain a Calendar of all hobby¬ 
ist conventions of which I am informed. 

2. Periodically, Dr. Dobb’s Journal will carry a complete list¬ 
ing of that Calendar information. The list that follows is the 
first such listing. 

3. They can contact Smith Dorsey, the Chairman of the 
ACM’s Conferences & Symposia Committee. Smith main¬ 
tains one of the most complete calendars of computer-related 
events available, including both ACM and non-ACM meetings. 
He can be reached at Rockwell International, Dept. 503/034, 
3370 Mira Loma Ave., Anaheim, CA 92803, (714) 632-1391. 

4. They can check the Events Calendar published each month 
in the Association for Computing Machinery’s Communica¬ 
tions of the ACM, and the Institute for Electrical and Elec¬ 
tronics Engineers (IEEE) Computer Society magazine, Com¬ 
puter. This will at least point out possible conflicts with meet- 


October, 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 


Page 3 


ings organized by the professional and engineering societies. 

There are also some things that can be done to avoid 
being disappointed by the “cheap shows” (whether you are 
a hobbyist or a vendor). 

1. See whether the hobbyist groups located in the area of an 
advertised convention are sponsoring or actively participating 
in the meeting. If they are, you can expect them to be 
listed in the advertisements. If they are not listed, you should 
assume that they are not involved, and that the “convention” 
is really little more than a trade show. 

2. See whether a significant conference activity is part of the 
convention, along with the trade show/exhibition. If there is 
advertisements should note that there will be a number of 
talks, panel sessions, seminars, etc. If they don’t, you should 
assume that it is primarily a trade show—and expect nothing 
more than that, if you attend. 

COMPUTER HOBBYIST 
CONVENTIONS ALREADY HELD: 

May 2, 1976 Trenton Festival 
Trenton, NJ 

Amateur Computer Group 
of New Jersey 

Jun 11-13, 1976 Midwest Regional Computer 
Conference 
Cleveland, OH 

Midwest Affiliation of Com¬ 
puter Clubs 

Aug 28-29, 1976 Personal Computing '76 
Atlantic City, NJ 
Southern Counties 
Amateur Radio Assn, 
of New Jersey 


1500 people 
45 exhibitors 


1 500-2500 
people 


4500-5000 

people; 

103 exhibitors 


COMPUTER HOBBYIST CONVENTIONS 
BELIEVED TO BE IN THE WORKS: 


IMS ANNOUNCES 44-COLUMN PRINTER FOR 
$399 


IMS Associates is offering a 44-column dot-matrix 
printer for $399 (kit) or $549 (assembled). It prints 75 
Unes/minute, has automatic wrap-around for overlength 
lines, can print double-size characters under software con¬ 
trol, can print on multicopy paper, and interfaces to a 
parallel output port using hand-shaking. IMS Assoc., 
14860 Wicks Blvd., San Leandro, CA 94577. 


June, 1977 Midwest Regional 

Computer Con¬ 
ference 

Cleveland, OH 


Jun 13-16, 1977 Personal Computing 
Section 

'77 National Com¬ 
puter Conference 
Dallas, TX 
[Expecting 30,000 
people, 100 ses¬ 
sions, and over 
250 exhibitors] 

Jun 18-19, 1977 Atlanta Computerfest 
Atlanta, GA 
[in conjunction with 
Hamfest] 


Jul 29-30, 1977 Seattle Computerfest 
Seattle, WA 
[in conjunction with 
Hamfest] 


Midwest Affilia¬ 
tion of Compu¬ 
ter Clubs 
P.O. Box 83 
Brecksville, OH 
44141 

(216) 371-9304 

American Fede¬ 
ration of Infor¬ 
mation Process¬ 
ing Societies 
210 Summit Ave 
Montvale, NJ 
07645 

(201) 391-9810 


Kilobyte & ’73 
Magazine 

73 Pine St. 
Peterborough, 
NH 03458 
(603) 924-3873 

[same as above] 


Nov 5-7, 1976 Technihobby—USA 
Commonwealth Pier 
Boston, MA 
[Computer & Radio 
Hobbyists] 


Nov 10-14, 1976 Technihobby—USA 

Los Angeles Convention 
Center 

Los Angeles, CA 
[Joint Meeting with the 
Personal Electronics 
Show] 


Nov 19-21, 1976 Technihobby—USA 
Atlanta Civic Center 
Atlanta, GA 

Dec 3-5, 1976 Technihobby—USA 
Sheraton Park Hotel 
Washington, DC 


Dec 16, 1976 Western Microcomputer 
Show 
Sheraton 
Anaheim, CA 

Apr 15-17, 1977 The First West Coast 
Computer Faire 
Civic Auditorium 
San Francisco, CA 
[Expecting 7,000- 
10,000 people, 

50 sessions, 200 
exhibitors] 


Marketing Ven¬ 
tures, Inc. 
5012 Herzel PI. 
Beltsville, MD 
20705 

(301) 937-7177 
[same as above] 


[same as above] 


[same as above] 


[co-sponsored 
by a number of 
Bay Area hobby¬ 
ist, professional, 
and educational 
organizations. 

See article, else¬ 
where in this 
issue] 


Aug 27-28, 1977 

Personal Computing '77 
Consumer Trade Show 
Atlantic City, NJ 

PC '77 

503 W. N.J. Av. 
Somers Pt, NJ 
08244 

(609) 927-6950 

Oct 25-28, 1977 

(Name unknown at 
press time) 

Anaheim Convention 
Anaheim, CA 

Interface Age 

Box 1234 
Cerritos, CA 
90701 

(213) 469-7789 

Spring, 1977 

Personal Computing 
(four shows being 
planned for: 

Boston, Chicago 
Philadelphia, and 
Southern Califor¬ 
nia) 

Benwill Publish¬ 
ing Corp. 

167 Corey Rd. 
Brookline, MA 
(617) 232-5470 

Fall, 1977 

(Name unknown at 
press time) 

Los Angeles Area 
[Proposal to hold 
such a convention 
has been placed 
before SCCS Board 
of Directors] 

Southern Cali¬ 
fornia Compu¬ 
ter Society 

P.O. Box 3123 
Los Angeles, CA 
90051 

Note: This list excludes a number of 

conventions directed 


towards computer professionals that are expected to have 
at least nominal activity in the area of personal and hobby 
computing. Although the '77 NCC is primarily for com¬ 
puter professionals, its Personal Computing Section will be 
a major activity with a number of significant sessions and 
events planned for personal computer enthusiasts. 


Page 4 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 October, 1976 


266 




A CONSUMER’S REPORT ON iCOM’S 
FLOPPY DISC SUBSYSTEM 


Dear Editor, September 1, 1976 

I read with interest, “The Time for Floppy’s is Just 
About Now,” in DDJ, 8/76. I too think a floppy peripheral 
provides a highly desirable mass storage device, not only for 
homebrews but for industrial micros and minis as well. 

In particular, I would like to provide some answers 
from my own experiences, to the questions you had regard¬ 
ing the iCOM floppy system. I bought a single drive system 
in August 1975. At that time they had not yet introduced 
their Frugal Floppy but they allowed me to purchase just 
the controller-formatter, model CF360, Mux card (-20) and 
cable set (-22). They then told me exactly how to buy the 
mating Pertec drive and mating Adtech power supply, giving 
me part numbers and names of people to contact. At the 
same time, they mailed me their Interface Manual and their 
Schematics and Logic Diagrams to me. By the time all the 
equipment arrived, I had already purchased the necessary 
2 PIA’s (Peripheral Interface Adapter) for $15.00 each, con¬ 
nected them to my Motorola M6800 Evaluation Module 
board, and provided a connector to mate with the format¬ 
ter-controller. Within about an hour, primarily required to 
add a fuse and power cord to the power supply and figure 
out which cables connected where, the system was all con¬ 
nected up and I was trying out the subroutines in my own 
version of a software driver. All the necessary interconnect¬ 
ing cables and connectors but one had been provided as 
part of the formatter-controller purchase. The manuals had 
provided suitable information about this cable so I had it 
ready and waiting too. (It is now included with the Frugal 
Floppy.) 

Their documentation was thorough and accurate. Of 
the fourteen floppy commands that can be issued to the 
formatter-controller, I managed to correctly implement 12 
of them in my driver without problems. It took me another 
week to debug my READ routine and the remaining two 
commands so that I was reading data and not status. I 
still had one problem left, but when I called iCOM, Terry 
Zimmerman and Bob Brusseau informed me how to interpret 
IBM format, and my problems were over. In addition, Bob 
went over the entire Logic Diagram and added all the signal 
names that had been omitted from various portions of the 
circuit and included two gates that had been added to the 
PC boards but not the Logic Diagram. During the year 
since, the Microcomputer/Floppy has been interfaced to a 
minicomputer as an intelligent peripheral, and it was found 
desirable to add another disk drive. I ordered another Pertec 
drive this time from iCOM, with an additional Mux board, 
and when it arrived and was unpacked, I simply attached it 
to the connectors that had come with the original system, 
and was able to use either drive just as easily as using the 
single drive. Unfortunately, the fuse on the power supply 
blew out several times. A call to iCOM revealed that we had 
been too conservative in sizing the fuse initially so we in¬ 
creased its capacity and added the recommended fan to pro¬ 
vide cooling and now have an effective, dependable system. 

Two additional programmers have “cut their teeth” on 
this system. One added routines to the core-resident driver 
including an automatic initial-program-load (IPL) feature. 

October, 1976 


PERTEC (FLOPPY MAKER): BUYS iCOM 
(CONTROLLER MAKER), MAKES WATS 
LINE AVAILABLE TO CUSTOMERS 

Pertec, a manufacturer of floppy disc drives for some 
years, has just completed purchase of iCom, the Southern 
California systems house. iCom has been marketing a 
floppy disc controller and operating system for Pertec 
drives since last spring, and has been actively cooperating 
with computer hobbyists. 

Unrelated to this purchase, Pertec has announced 
installation of WATS-line (toll-free) telephone service for 
use by its customers and field service personnel. This 
800-area code number allows you to call the factory 
trouble shooters, without cost. 

Note: We just phoned WATS Information and found 
that the Pertec WATS number is (800) 423-5156 . . . 
but is accessable only outside of California. 


USED TELETYPES & TERMINALS 

National Teletypewriter Corp. (207 Newtown Rd., Plain- 
view, NY 11803, (516) 293-0444 is an ongoing dealer in 
used computer terminals and a variety of models of tele¬ 
type. 



The other implemented a partially disk-resident operating sys¬ 
tem that makes the IK of microcomputer RAM memory 
appear to be about 4K, by using overlay techniques and 
program chaining. 

Throughout it all, the floppy system has always func¬ 
tioned properly. The compatability of the IBM format 
used was tested as follows. The minicomputer collected 
digital data, it was passed to the M6800 in ASCII, transla¬ 
ted to EBCDIC and recorded on the diskette. The diskette 
was then loaded into an IBM 3540 peripheral on our IBM 
370. The IBM 370 was then able to read and print the data 
as if the diskette had been recorded in the 3540. Similarly, 
IBM 3540-recorded diskettes were loaded into iCOM floppy 
system, read by the M6800, translated to ASCII, and used 
as data by the driver routines. 

Since then, we have ordered a Frugal Floppy and a 
mating power supply ($250 for the power supply) and are 
contemplating purchase of a third system. These negotia¬ 
tions were handled by Alan Garfein who provided informa¬ 
tion and advice not only about iCOM equipment but was 
most helpful in providing leads to other related equipment. 

In summary, the equipment has been highly reliable and 
performed according to specifications, the documentation 
was well-written and complete, and the personnel were 
knowledgeable and helpful. We expect to be getting FDOS 
I, editor, and assembler with the Frugal Floppy and then 
we will be able to gain experience with iCOM software as 
well. 

Sincerely, 

Chuck Felber Rockwell International 

Technical Staff Tulsa Division 

Box 51308 (918) 835-3111 

Tulsa, OK 74151 

Page 5 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 


267 




Some Personal Observations 


on Personal 

Jim C. Warren, Jr., Editor 

Through the prodigious efforts of John Dilks, Davy 
Jones, and Jim Main (and with considerable help, guidance 
and support from Carl Helmers and BYTE Magazine), the 
August 27th-28th Personal Computing ’76 Consumer Trade 
Fair was a great turn-on! So much was going on that I 
had only three to four hours of sleep per night, and even 
then, I missed some gatherings I would like to have at¬ 
tended. Details of particular note: 

Statistics, first: About 4,500 computer enthusiasts and 
curiosity seekers attended the two-day convention. There 
were slightly over 100 exhibitors, and about 50 talks, panel 
sessions, and seminars. The banquet on Saturday night 
turned out over 360 people (in spite of its hefty $15 price 
tag). 

We blew it. Contrary to the “reliable rumor” we 
published in our August issue, Heathkit was not one of the ex¬ 
hibitors. We understand, however, that Heath purchased a 
block of 16 tickets to the convention. Lou Frenzel, 
their Director of Computer Products was there. And, he 
reportedly was overheard saying that Heath would have a 
kit out “before Spring.” So much for rumors mongered. 

Idle gossip had it that MOS Technology was being 
bought by Commodore Calculators. (So what? They will 
undoubtedly continue to turn out hot products.) 

I am delighted to publish another correction to in¬ 
formation in our August issue: We noted (incorrectly) that 
the fine print of the literature concerning Matrox VRAM’s 
(Video RAM) indicated that a minimum order was 100 
units. Their rep, Lome Trottier, dropped by to say “hi,” 
and told us that the stock items we had listed in that 
August article are available in unit quantity for the 
prices we quoted. The 100-unit minimum pricing referred 
only to custom-built units. Therefore, take another close 
look at ‘em. They have a 256 x 256 black-and-white 
graphics display for $630, as well as some interesting 64 
and 80-character alphanumeric VRAM’s (ASCII in, video 
out). That’s Matrox Electronic Systems, Box 56, Ahuntsic 
Stn., Montreal, Quebec H31 3N5, (514) 481-6838. 

I am also delighted to report a correction to coitl- 
ments contained in a letter that we published in our June/ 
July issue. In that letter, one of our readers stated that 
MITS Computer Notes would only be available by sub¬ 
scription after the first of the year. Dave Bunnell the 
publisher of Computer Notes, announced at the banquet 
that this was incorrect (explicitly referencing the letter) 
and indicated that Computer Notes subscriptions would 
be available without cost, permanently. We applaud 
this fair-minded and sensible policy and apologize for 
publishing inaccurate information [note the Policy State¬ 
ment on Complaints, published elsewhere in this issue.] 

National Semiconductor was present and told me 
that they now have Tiny BASIC for their SC/MP 
microprocessor. It is available in paper tape form or in 
3K of PROM. Incidentally, their SC/MP kit with 256 
bytes of RAM, and 512 bytes of ROM including their 
KITBUG monitor is available for $99. In less than four 
months, Hash Pa til said they had sold over 8,000 of 
these kits. 

Someone mentioned this interesting tidbit: Alexander 
Graham Bell was not a technical type. Rather, he was an 


Computing 9 76 

artist. In fact, he was a member of the National Academy 
of Design which, at that time, was a very prestigious 
national society. 

I should mention Leda Alpert, the woman who put 
together the super low-cost travel package that helped a 
number of west coasters (including myself) afford to at¬ 
tend the convention. She almost worked her Southern 
California tan to the bone putting that mess together. 

At least in my case, her agency (Travel Co-Ordinators, Inc., 
Los Angeles) probably lost more than it made. We must 
have spent half a dozen long-distance phone calls, haggling 
over my eccentric travel desires. But ultimately, she put 
it together. Furthermore, she was at the show to trouble¬ 
shoot travel problems for her clients . . . which was help¬ 
ful to a coupla people. 

I had the good fortune to meet Neil Colvin, the 
software type with Technical Design Labs of Trenton, NJ. 
Keep an eye on that crowd; they are doing some great 
things with their Z-80 system. Among other things, Neil 
said they already have a macro assembler modeled after 
DEC’s MACRO-10 and using MACRO-11 syntax that pro¬ 
duces relocatable code. They have a loader that accepts 
relocatable load modules. They have a BASIC that runs 
in 6.5K bytes and accepts Altair BASIC source code. 

They have a FORTRAN compiler very near completion 
(aww shucks; I thought that dinosaur was dead). And, 
at the time I spoke with him, he had just finished trans¬ 
porting a portable PASCAL compiler over to the Z-80. At 
that time, it took 32K bytes of grossly inefficient code (as 
portable software is prone to do), and Neil was starting 
to go through it and optimize it. The PASCAL compiler 
generates PCODE as output, which requites an interpreter 
(portable PASCAL had much the flavor of “portable” 

Tiny BASIC). Neil had managed to crowd the PCODE 
interpreter in one kilobyte on the Z-80. Also, he said 
they are. working on a “word processor.” 

At the head table at the banquet, I was delighted 
to find myself sitting next to John Whitney, the compu¬ 
ter graphics artist of international reputation, who was 
the last speaker at the banquet. As usual, he closed it with an 
absolutely fascinating exhibition of some of his computer-gen¬ 
erated films. He is a most fascinating man, for his ideas, his 
art, and his exuberant and vibrant outlook. If you ever 
get a chance to hear him speak, or see his films, don’t 
miss it! Incidentally, he travels so much that he has two 
watches on his watchband; one gives the local time, and 
the other gives “home” time for the west coast. 

I saw the first issue of the much-advertised Microtrek 
magazine. It had 64 interior pages, of which less than 
nine were advertising. Almost five pages were devoted to 
“Just Getting into Microprocessors? Odds Are, You’ll End 
Up With a Kit,” reprinted from Electronic Design. The 
rest included: a ten-page article on the “KIM-1 Microcom¬ 
puter Module,” five pages devoted to a “Super-Simple Cas¬ 
sette Interface,” Part I of an “Introduction to Assembly 
Language Translation” (eight, pages including a glossary), 
almost nine pages concerning “Better Programming 
Though Flowcharting and Documentation,” four pages of 
details for an M6800 “Software Leader,” and a nine-page 
“Buyer’s Report: The IMSAI 8080 Computer Kit.” I got 
the impression that it was planning on being a “general 
content” magazine, just like Byte, but possibly with a 


Page 6 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 October, 1976 


268 


lower level of expertise expected of its readers. However, 
when I identified myself to the Editor and asked him 
what the focus of Microtrek would be, he said it was 
going to concentrate of software. Furthermore, some 
editorial notes in the first issue state that he is especially 
seeking articles on medical applications, display applica¬ 
tions, floppy disc systems, computer control of electro¬ 
mechanical devices, pattern recognition systems, bit-sliced 
computers, and APL. So, I don’t know where Micro trek 
is headed, but I am interested in seeing the future issues. 

Some interesting tidbits gleaned from Chad Harris, 
Club and Training Manager for the American Radio Relay 
League (ARRL): There are 281,000 ham operators, right 
now, and they expect 30,000 more by the end of the 
year. Their average investment in ham gear exceeds $1K. 
Only about 1% built all of their own gear; the rest built 
kits or bought turnkey systems. And . . . Chad estimated 
that approximately J Ath of the hams are seriously inter¬ 
ested in amateur computing; that’s more than 70,000 
potential computer phreaques! 

Quoth one of the banquet speakers, alluding to com¬ 
puter foul-ups: “Failure to receive this bill is not an excuse 
for nonpayment.” 

A surprise award for Computer Hobbyist of the Year 
was given to Saul Libes, the leader of the Amateur Compu¬ 
ter Group of New Jersey and one of the major organizers 
of personal computing activities on the East Coast. 

Someone had a little booth in the Trade Fair portion 
of the convention and was selling digital clock kits. By 
Sunday afternoon, he had sold out, packed, and gone 
home. 

IBM was/wasn’t an exhibitor. (The following story 
came from John Dilks and is retold with Inis permission). 

In the early planning stages of PC ’76, John contacted 
IBM and asked, them if they were interested in being an 
exhibitor. Initially, he received no response. Then, IBM 
decided they were interested, sent in their exhibitor 
registration and fee, and indicated they would be there. 

So, as part of the promotion of the convention in some 
of the publicity releases, John (reasonably) mentioned IBM 
along with a number of others as being expected exhibi¬ 
tors. Shortly before the convention, IBM called up and 
said they wanted to cancel out. John said, “No way.” 

IBM said he could keep the registration fee and rent the 
booth space to someone else. John refused. Then IBM 
wanted to get another vendor, on their own, and let him 
take the space. At that point, John told ‘em that, no 
matter what IBM did, they were going to have the booth 
they had committed for, and it was going to have an 
IBM sign on it, whether they were there or not. Well, 

IBM showed up, refused to take the booth, but set up 
some of their gear in one of the hotel suites and placed 
a directional sign in the booth (strange people, those 
maxi makers). In one of the final verbal exchanges 
between John and an IBM rep, Dilks said, “You know, 
you people have your heads in the clouds watching 
for the money to blow by. You ought to look down 
on the ground and find the bucks laying at your feet.” 
[Quote verified by John.] 

Bob Jones, who has been the publisher of SCCS 
Interface, has chosen to go his own way. He was dis¬ 
tributing the August issue of his new publication, called 
Interface Age. [Incidentally, the last we heard, SCCS is 
planning on continuing to put out their own publication 
which will be called SCCS Interface. 

I spent a pleasant evening with Ron Davies and 


Roald Evensen, two of the principals in Marketing Ven¬ 
tures, Inc., which is putting together the TechniHobby 
shows [see “Hurray & Beware . . .”, another article in 
this issue]. I was favorably impressed by them. They 
were low key, “up front,” and seemed to have some good 
ideas. Basically, they were planning on their Technihobby 
shows being trade fairs covering not only computer hobby¬ 
ists, but also ham radio and radio-controlled models. In 
this way, they expect to encourage considerable “cross- 
pollenation,” particularly from the ham crowd into com- 
putery. They indicated that they were planning on co¬ 
operating with local hobby groups. They also had some 
innovative ideas for assisting small vendors who couldn’t 
afford to travel all over the nation exhibiting their wares. 
They also publish an excellent trade newspaper, Mid- 
Atlantic Electronics. I got around to reading it on the 
way back to the West Coast and found that I tore out 
almost half the pages to keep in my technical reference 
files. They are at 5012 Herzel PI., Beltsville, MD 20705. 

I heard that the National Security Agency has an 
in-house club of computer amateurs that has over 100 
members. 

The Chesapeake Microcomputer Club appears to be 
an East Coast counterpart of the Southern California Com¬ 
puter Society. It already has Chapters in Baltimore, 
Columbia, Wheaton, Washington, McLean, Reston, and 
Richmond. 

Wayne Green and John Craig were there with 73 
Magazine and their new computer hobby mag, Kilobyte. 
[See John Craig’s article elsewhere in this issue.] 

Votrax was another exhibitor well worth noting. 

They have been making speech synthesis systems for 
several years. Last Spring, we contacted them and en¬ 
couraged them to enter the hobbyist market with a 
low-cost speech-synthesis kit. I am delighted to report 
that they were handing out a press release detailing 
such a kit for $750, with first deliveries planned for 
early 1977. [See February, March, May and September 
issues of DDJ for more details.] 

I heard some preliminary but very exciting com¬ 
ments about a general-purpose string-processing lan¬ 
guage that is about to become available, based on 
Strachey’s GPM and Mcllroy’s M6. 

Ted Nelson was there with his Itty Bitty Machine 
Company of Chicago, and 7’-high stacks of IMSAI’s 
as a backdrop. We happened to share the same tables 
for several meals ... a most interesting guy. He told me 
something of his progress on Xanadu, a very exotic 
electronic library and information facility (described in 
one part of his book, Computer Lib)', a fascinating pro¬ 
ject that appears to be nearing reality. If you haven’t 
head about it, better look it up. You are likely to be 
hearing about it before long. He is making heavy use of 
Calvin Mooers’ TRAC (licensed, proprietary name) lan¬ 
guage, and expects to market the sortware for $100 (with, 
of course, an agreed upon royalty being paid to Mooers). 

Carl Helmers gave me this hot news item for DDJ 
(and I took it, hook, line, and sinker): The Amalgamated 
Clothing Workers Union is considering unionizing program¬ 
mers. They have decided they ought to do so since they 
heard that programmers make software. [Byte is too 
proud to publish it, but we’re jus’ plain folks, out here.] 

And with that ... I better quit. 


October, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 Page 7 


269 


San Francisco Bay Area finally gets it together 


First West Coast Computer Faire 


Jim Warren, Editor, Dr. Dobb’s Journal 

The first microprocessor was invented in the San Fran¬ 
cisco Bay Area. One of the first computer clubs to be formed 
is located in the Bay Area. The Bay Area has the second 
largest such club in the U.S. The San Francisco Peninsula has 
a greater concentration of semiconductor and microprocessor 
manufacturers than any other area in the Western Hemisphere. 

Yet, it has never had a conference or convention con¬ 
cerned with personal and home computers, in spite of the fact 
that three such conventions have met with great success and 
enthusiasm in the East and Midwest. Well, the San Francisco 
crowd has finally gotten it’s act together. A convention of 
major proportions is scheduled for next April 15th through 
17th, 1977. 


The convention—called The First West Coast Computer 
Faire—will be held in the largest convention facility in Nor¬ 
thern California, the Civic Auditorium in San Francisco. The 
two-and-a-half day event will include a Conference that will 
offer 50 to 100 different technical and tutorial sessions, 
several banquets and luncheons with major speakers, and an 
Exhibition that should have over 200 exhibits. Based on the 
location, the amount of planning and organization, and the 
experience with the other hobbyist conventions, 7,000 to 
10,000 people are expected to attend. 

The Computer Faire is being co-sponsored by a number 
of computer groups and educational organizations including: 
The Homebrew Computer Club 

The Association for Computing Machinery, Peninsula Chapter 
Stanford University’s Electrical Engineering Department 
People’s Computer Company 
The Community Computer Center 
The Amateur Research Center 

and a number of other organizations are considering becoming 
co-sponsors as this article is being written. 


The Conference portion of the Faire will include every¬ 
thing from formal papers and “heavy talks,” through informal 
“shirtsleeve raps.” It will also include a number of panel dis¬ 
cussions, working sessions, and presentations of homebrewed 
computer projects. Though planning is still in its early stages, 
several exciting Conference Sections are already taking shape, 
some of which are “firsts” for the personal computing move¬ 
ment. 

One such Section is that concerned with Personal Com¬ 
puters for Education. It will focus on educational uses of 
computers in the home and elementary and secondary 
school, as well as in one-computer/one-user situations in col¬ 
leges and universities. 

Another “first” is the Conference Section on Micro- 
programmable Microprocessors for Hobbyists. Presentations 
in this Section will include designs and kits for hobbyists who 
wish to have systems in which they can “customize” their pro¬ 
cessor’s instruction set. 

Sections are also being planned for Computer Music, 
Computer Graphics and Animation, Personal Computing for 
the Handicapped, and many other exciting subject areas. 

There will be a number of panel sessions and working 


groups concerned with hardware and software standards. 
These will include Digital Cassette Tape Standards, Bus 
Design Standards, Peripherals Interface Standards, Software 
Modularization for Program Portability, and so on. 

There will also be information exchange sessions for 
Club Officers, Newsletter Editors, and Conference Organizers. 
Additionally, several “social centers” will be set up around 
the auditorium for sittin’, sippin’, and gossipin’. 

An exhibition of homebrewed projects and systems 
is also planned. Assuming that there are sufficient entires 
to make it interesting, these projects will be judged, and 
prizes and awards will be presented for the best systems. 
Nominal Grants-in-Aid will be made available on a refereed 
basis to some hobbyists living a significant distance from San 
Francisco who would like the opportunity to exhibit their 
homebrewed projects. These Grants will be to assist with 
the expense of shipping the systems to be exhibited. 


Most of the banquet plans have yet to be solidified, 
however, one banquet speaker has already been chosen. 

He is Professor Henry Tropp who has spent almost three 
years as the Principal Investigator in the Computer History 
Project jointly sponsored by the Smithsonian Institution 
and the American Federation of Information Processing 
Societies. In this capacity, Professor Tropp has traveled 
quite broadly, conducting in-depth interviews with most of 
the “old timers” who created and invented the computer 
science and technology that is the basis for today’s computers. 
Dr. Tropp is a quite fascinating speaker, and will be relating 
a number of stories concerning the personalities, foibles, 
mistakes, accidents, and eccentric technology of those early 
days of computers. 


The Exhibition portion of the Faire will include ex¬ 
hibits by almost every manufacturer and vendor who is in 
any way interested in the personal computing community. 
These vendors have shown great enthusiasm for the Faire; 
many committed to being exhibitors as soon as they heard 
about it. In the first three afternoons of contacting possible 
exhibitors, the following have already indicated they expect 
to participate: 

National Semiconductor 
American Microsystems Inc. (AMI) 

MOS Technology 


Zilog 

Southwest Texas Products 
Apple Computers 
Technical Design Labs 
Polymorphic Systems 
Cromemco 
OSI 

Microcomputer Associates 

STM Systems 

Quay 

Project Support Engineering 
Computer Converser 
Shugart Associates 
iCom 

Action Audio Electronics 

and that’s just scratching the surface. 


Byte 

Interface Age 
Dr. Dobb’s Journal 
People’s Computer Co. 
Kilobyte 
73 Magazine 
Microcomputer Digest 
Osborne & Associates 
Processor Technology 
Solid State Music 
National Multiplex 
Monolithic Systems 
Percom 
Call Computer 
Associated Electronics Co. 
Byte, Inc. 

CompuMart, Inc. 


(Continued on next page.) 


Page 8 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 


October, 1976 


PAPERS AND PARTICIPANTS ARE BEING SOUGHT 

If you are interested in participating in this Computer Faire, 
as: 

• A Speaker 

• A Panel Session Leader or Participant 

• A Section Chairperson 

• An Exhibitor of a Homebrewed System (hard or soft) 

• An Exhibitor of Commerical Products 

• An Assistant in the Administration and Coordination 
of the Faire 


• Or Whatever 

Or, if you wish to suggest something or someone for inclusion 
in the Faire: 

• Topics for Panel Sessions or Talks 

• Possible Speakers or Panel Leaders 

• Interesting Exhibits (Homebrewed or Commercial) 

• Special Activities (Tours, Meetings, etc.) 

Or, if you have questions or desire additional information, 
then please contact: 


Jim Warren, Faire Chairperson 
[Editor, Dr. Dobb’s Journal & 
Vice Chairman, Peninsula 
ACM Chapter 1 

c/o People's Computer Company 
P.O. Box 310 
Menlo Park, CA 94025 
(415) 323-3111; 851-7664 


[or] Bob Reiling, Operations 
Coordinator 

[Editor, Homebrew Com¬ 
puter Club Newsletter ] 

193 Thompson Square 
Mountain View, CA 94043 
(415) 967-6754 


FLOATING POINT PROCESSOR FOR 8080’s 


A PC card is available from North Star Computers, 
Inc., 2465—4th St., Berkeley, CA 94710, (415) 549-0858, 
that provides floating point functions to the 8080. It pro¬ 
vides for addition, subtraction, multiplication, and division 
of BCD-formatted floating point operands with 14-digit pre¬ 
cision. The subsystem is available for $499. 

NEW CHIPS OFF THE OLD SUBSTRATE 


INSIDE DOPE FROM MOTOROLA 

We announced the “reliable rumor” of a Z-80 com¬ 
petitor being planned by Motorola, the 6809, at the July 
21st Homebrew Computer Club meeting. Afterwards, a 
Motorola engineer rushed over and, after an unsuccessful 
query concerning our source of information, volunteered 
to “tell all.” Here is his information as of August 6th. 

All of it is tentative. 

A BASIC compiler for the 6800 will be introduced in 
the 3rd Quarter of this year. It will be resident in the 6800 
Exer Ciser, will be a legitimate compiler (not an interpreter), 
will take 4K to 6K for the compiler plus 2K—minimum—for 
the user. It will handle scalers, one and two-dimensional 
arrays (but no matrix operations), and will include such 
command facilities as IF-THEN-GOTO, GOSUB/RETURN, 
DATA, READ, RESTORE, INPUT, and PRINT. It will have 
the usual arithmetic functions and will allow linkage to 
user-generated object code. Features that will be added at a 
later date include matrix operations, string manipulation, 
and graphics. It is being developed at Ohio State. 

Motorola’s forthcoming high performance micropro¬ 
cessor will probably be labeled the 6809, although there was 
some in-house discussion about calling it the 6900. The 
architecture has been defined and has been just about 
finalized. The instruction set will be a superset of that of 
the 6800. It will have additional registers, including one or 
2 more index registers. It will have additional addressing 
modes including indirect and “true indexing” with the base 
in the operand and the offset in a register. It will probably 
be an N-Channel device. It is expected to be available in 
the 2nd Quarter of 1977. 

Lots of other tidbits are forthcoming from Motorola, 
however: 


by Jim Day 

The September 2, 1976 issue of Electronics de¬ 
scribes two new peripheral support chips that may prove 
useful to hobbyists. 

On page 133 is a description of the MN3020 8-bit 
D/A converter chip from Micro Networks Corp., 324 
Clark Street, Worcester, MA 01606. The 18-pin DIP in¬ 
cludes an internal reference and an amplifier for the ana¬ 
log output. Priced at $30, the unit is TTL compatable 
and should be useful for music and speech synthesis 
applications. 

Page 151 describes a new character generator 
chip from National Semiconductor Corp., 2900 Semi¬ 
conductor Drive, Santa Clara, CA 95051. Designated 
the DM8678, the 16-pin DIP includes all circuits needed 
for parallel-to-series shifting, address latching, and char¬ 
acter and line spacing. Priced at about $15 in lots of 
100, the bipolar device could simplify the design of 
video display boards used by hobbyists. 


HEATHKIT MARKETS VIDEO GAMES KIT 

Heath Co. [Benton Harbor, Ml] is starting to peddle a video 
game kit for $49.95 (mail order) to $54.95. It is designed to at¬ 
tach to the video and sound inputs of any of Heath's tee-vee kits, 
thus bypassing the FCC regulation quagmire. It also uses the tele¬ 
vision's power supply for its power source. 


Note that the 6800 uses 197 of the 256 available op 
codes. The 6801 will have an on-chip clock. Sampling of 
the 6801 is expected in September or October. 

The 6800A is expected to be available in a coupla 
months. It will run at 1.5 MHz or better and will be a 
depletion-load device. 

The 6802 will be available in the 1st or 2nd Quarter 
of 1977. It will be more of a “controller” than the 6800. 
Its instructions will be more oriented towards bit manipu¬ 
lation. 

In October of this year, Motorola will introduce a 
new 6800 kit for about $200. It will be a two piece kit, 
will include a 7-segment hex display, hex keyboard, a IK 
JBUG Monitor (the “J” stands for “Jim”) that is located 
at the top of memory, and a Kansas City “standard” audio 
cassette interface. 


RAW RUMOR: AN 8085 FROM INTEL? 

The Silicon Gulch rumor mill grinds onward: someone 
announced at the September 15th Homebrew Computer 
Club meeting that Intel will shortly release the 8085. It is 
supposed to be a microprocessor with on-board clock and 
I/O, 12 new instructions, and requires only a single +5 volt 
power supply. 


October, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 Page 9 


271 







AN EXCELLENT, POINT-BY-POINT RESPONSE TO 
COMPLAINTS ABOUT THE DIGITAL GROUP 

Dear Mr. Warren, August 24, 1976 

I would like to take this opportunity to thank you for 
the kind words and your support in Dr. Dobb’s Journal. As 
you know, Dr. Suding and the Digital Group have tried to be 
equally supportive of your efforts and of course will continue 
to be so. 

In your August issue, you raised some very valid points 
about what we are trying to do and how well/not-well we are 
succeeding. Your assumptions were partially valid on the 
current situation and I would like to address them one-by- 
one. [The following three quotes were editorial comments 
published in the August article.] 

1. “Customer interest in Digital Group products has 
exceeded their initial capacity to respond in a 
manner they would like.”—obviously true. 

2. “They are aware that they have a problem and are 
doing everything they can to expand their customer 
service department and procedures.”—boy, are we 
aware of the problem! 

3. “It is their wish to maintain an operation of un¬ 
usually high integrity and responsiveness to their 
customers.”—Exactly. 

Agreeing with you is OK as far as it goes, but what are 
we DOING? Here are the actions we have taken to rectify 
the situation. 

1. We have expanded our facility from 100 square feet 
to over 7000. 

2. Our number of full time people has expanded from 
6 to 16 plus part time as needed. 

3. We have quintupled our investment in inventory 
(which was not trivial to begin with). 

4. Of the new personnel, 2 went directly to customer 
service on a full time basis, effectively tripling our 
capability there. 

5. We are in the process of automating our operation 
(a long overdue step) so that we can respond to 
order status more appropriately and do such things 
as acknowledge receipt of an order, keep better 
track of any shortages, and keep people informed 
if their order hits any unexpected snags. 

All of these items have been implemented currently and 
you should begin to see their results soon. We are doing 
everything we possibly can to “dig out from under” and ex¬ 
pect to be in very good shape soon. 

Next item: You did print a couple of complaints 
about the servicing we were providing a couple of months 
ago. I find no objection whatsoever against complaints 
when they are on target, but I wish that just once a manu¬ 
facturer would be given a chance to respond before you go 
to press—not censor, as that would impune your integrity— 
but at least a chance. [We have. See editorial in this issue.] 
The manufacturer is always automatically cast as the heavy 
against the little guy and does not dare respond. Please 
pick up the telephone and call me directly (collect, of 
course) so at least I can look into the problem and fix the 
situation. You would then be doing everyone a service by 
getting action and would still be able to print whatever you 


ELECTRICALLY ERASABLE ROM’S 

General Instruments is rumored to be planning 
announcement of ROM that can be erased simply by 
applying a short blast of voltage to appropriate pins. 
Reading is performed at usual voltage levels. Writing 
or erasing is done at 28 volts; 10-20 ms for writing 
and 100 ms for erase. There are to be two models 
of the ROM (EROM?, EPROM?, non-volatile RAM?): 
the ER2800 will have 8K bits and 2 mics. read cycle, 
while the ER3400 will have 4K bits and an access 
time of 650 ns. _ _ _ _ 

fel: was appropriate. [A reasonable request. Herewith 
adopted as Journal policy.—JCW] 

On the two items [Page 37, August issue]: 

Christopher Hovey. Our turnaround time on servicing 
is now down to less than a week and rarely, if ever, has 
exceeded 2 weeks. Of course, Mr. Hovey is at an APO 
address and normal one-way shipment takes 3 weeks or 
longer. Amazingly enough, he’s been waiting a full month 
for his equipment to go by boat to wherever overseas he 
is stationed. The latest information we have is that he is 
indeed up and running. [My error. I should have spotted 
the APO address and noted that a one-month turn-around 
was reasonable.-JCW] 

Robert Gerald. This one’s a pip. Yes, he is quite right 
that we got some mis-labeled parts from Motorola that did 
indeed generate upside-down characters. About 10 actually 
got out our door, and to my knowledge, all have been replaced 
in most cases before the kit builder even had his kit built. 
However, his complaint is misleading concerning the replace¬ 
ment of his chip. We shipped him a replacement the day 
after he placed his call, irrespective of Gus’s comment (which 
was not true and very ill-advised—one of his bad days ob¬ 
viously). You will note that the date on Mr. Gerald’s let¬ 
ter is the very next day. Now, the post office is doing 
pretty well, but not that well. Ah, but there’s more. You 
will notice that after our repeated requests to send in his 
board, Mr. Gerald finally sent it in with a cover letter on 
July 31 [Copies of correspondence were enclosed.—JCW]. 

I’ve also included a copy of our service record for the unit 
and what we discovered—misplaced part, destroyed char¬ 
acter generator, and a solder bridge. We returned his kit 
on August 12, up and running, with no charge. If that’s 
“abandoning any kind of customer service to previous pur¬ 
chasers,” I guess there’s nothing more I can say. [We 
agree.—JCW] 

Well, I hope I’ve made my point. As usual, there 
are 2 sides to every situation, and all I can hope for is that 
you might be able to do a little checking on what’s really 
behind the letter before printing. 

Sincerely, 

Richard C. Bemis, President 

Hie Digital Group, Box 6528, Denver, CO 80206 

(303) 861-1886 

Editor’s Note: Mr. Bemis also included some notes about a 
delay in shipment of DG’s Z-80 kits. The problem has been 
cleared up (as of September 6) and they expect to fill all 
Z-80 orders within three weeks of receipt.—JCW 


Page 10 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 October, 1976 


272 



A Consumer Reports 

ASSEMBLING AN IMSAI MICROCOMPUTER 
by Pierre duPont V 

When I left for my first year at boarding school last Sep¬ 
tember, my big interest was Spanish, and I had visions of a 
language major. However on my first day at school, I was 
introduced to a PDP8/e computer. Immediately I took in¬ 
terest and got to know the appropriate teachers and stu¬ 
dents. After a year of intensive training with a computer 
hobbyist who was never around when I wanted to learn, I 
received a key to the computer room, and a key to the com¬ 
puter itself. I now have visions of an electrical engineering 
major, and can’t wait to complete my requirements in Span¬ 
ish this year. 

Just as school let out I became convinced that I should 
purchase a microcomputer. In about a week I had placed 
several orders, cancelled several, and ended up with an 
ALT AIR 680. It arrived on time (strange!), and I assembled 
it without difficulty. Just as I finished, I left for Denmark 
for some sleep. When I returned and had about one day’s 
use of my 680,1 went to the Personal Computing Conven¬ 
tion in Atlantic City. When I arrived at the convention, my 
teaching friend began to think about trading his 680 in for 
an IMSAI. As it turned out, we both traded our VW 680’s 
for Cadillac IMSAI’s. 

I didn’t start assembling mine for about a week, but whe 
I did, I had a couple of scares. The instructions were not 
as easy to understand as ALTAIR’s. I had to remove the 
same IC socket twice, and nearly ruined the circuit board. 

It was a socket for a jumper to the main processor board, 
and there wasn’t even supposed to be a socket there. It is 
assumed in the assembly manual that no sockets other than 
those given (3) were to be used. There was also a space that 
looked like a place for an IC, but nothing was to be in¬ 
stalled there. I don’t see why they don’t mention the 
sockets in more detail, but they aren’t too difficult to under¬ 
stand and install. 

I nearly ruined the entire power supply when I installed 
four diodes in the wrong position. I put them in as re¬ 
quired, but somehow I knew it wasn’t right. I called the 
factory and found out that the updated page had been left 
out of my manual, and that they were sorry. Well, the 
power supply works fine now, although it supplies a little 
too much. ' 

I finished building it in two days of slow work, and then 
proceeded to wait. I’m still waiting. It’s been l l A weeks, 
and it’s killing me. I’m very disappointed because IMSAI 
supplies no memory with their basic kit. I have ordered 
8K of RAM from a small discount store (8K for $ 180- 
worth the wait), and a video interface board from Polymor¬ 
phic. Of course neither has arrived and I can’t test my 
dream computer. 

While waiting I’ve placed several more orders. I pur¬ 
chased a cassette interface, and expander board, several 100 
pin connectors, and a cooling fan. I also hope to persuade 
the relatives to give me an advancement on my Christmas 
presents, and give me another 8K board. 

So far I have no complaints with IMSAI, except that it 
comes with no memory. I realize that this is because 
their computer is meant for small businesses who may pur¬ 
chase 32K at one time, and have no use for IK of on 
board memory that would clutter things up. The entire 
kit seems to be this way—the assembly instructions are not 
really meant for a small time hobbyist like me, and the 
computer itself is built like a tank. I do think that IMSAI 


CONSUMER NOTES ON 
DIGITAL GROUP & TINY BASIC 

Dear Jim, Sept. 7, 1976 

Since I wrote you last I have received an 8K board, 
Tiny BASIC and a C-104 superscope cassette player from 
Digital Group. 

4/30/76 Order placed 

5/10/76 Tiny BASIC and game tapes received 

6/1/76 8K and Cassette deck received 

UPS messed DG up by going on strike, so I reminded 
DG about my order a week after UPS went back to work. 

The 8K board went together in 314 hours including 
checkout and installation. Worked perfectly. 

The “Tiny BASIC” (TB) tape was defective and they 
sent me another. Their soft ware is a little sloppy but it 
is very inexpensive and does work, $5.00 for TB. 

The C-104 works great but I’m sure it’s possible to 
buy it cheaper someplace else. I wanted it in a hurry. A 
good feature is its variable speed control. It allows a per¬ 
son to use tapes recorded on different players even if 
their speed was a little off. The tapes from DG have been 
running a little slow on my system. 

My plans are to work on SCELBI’s “SCELBAL” and 
8080 Assembler programs. Tiny BASIC felt restrictive as 
soonaas I tried to apply it in physics problems. Integer 
arithmetic requires scaling. 

Oh, by the way, the biggest disadvantage of DG’s 
TB is they send no listing or include no software tools 
for modifying it. Fortunately they tell you how to use 
it. No listings are sent with their games. TB was set up 
for TTY and not for 32 column TV, a disadvantage. 

Keep up the good work. 

Yours, 

Ed C. Epp Educational Computer Laboratories 

748 S. Main St. 

Freeman, SD 57029 


SOLAR ENERGY COSTS DROP 50% IN 18 
MONTHS 

Remember how the "nuclear people" were predicting, in 
last spring's California ballot initiative battle, that solar energy 
would remain uneconomical for the rest of the 20th Century? 
Well, the September 2nd issue of Electronics magazine carries 
a report of an announcement by ERDA (Energy Research and 
Development Administration) officials, stating that costs of 
photo cells designed for solar energy use had dropped from 
$30/watt to $15/watt within the last year and a half. 

[And: Photocells aren't even the best way to obtain 
reliable electrical power from the sun. There are some excel¬ 
lent solar-thermal alternatives, requiring no significant techno¬ 
logical breakthroughs that can provide 24-hour electrical power 
without requiring electrical sotrage for night-time service.] 


makes a great kit, and offer praise to them for their rela¬ 
tively inexpensive tank-like kit. 

In the next year or so I hope to expand to about 20K 
of RAM. I also plan to get 8K and 4K BASIC along with 
IMSAI’s self-contained system on PROM. After that comes 
a hardcopy printer and several more cassettes for a Tarbell 
interface board. 

The IMSAI kit is great and I recommend it to anyone 
who wants a microcomputer, but doesn’t want to wait for 
an ALTAI R. Being relatively new like they are, IMSAI 
has quite a kit. 

Pierre duPont V Salisbury School 

Salisbury, CN 06068 


October, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 Page 11 


273 





PCC Research Engineer 
Evaluates the 16-Bit PACER Kit 


by John Snell 


(Reprinted from PCC) 


Editor's Note: John Snell is an unusually competant electronics 
engineer who joined the PCC staff some months ago. Prior to 
that time, he was working in the "real world" (or unreal world; 
it depends on your viewpoint) as an EE in the San Francisco 
Peninsula electronics industry. He found such work too time- 
consuming, keeping him from more important work, namely re¬ 
search into the design and implementation of very esoteric 
computer-music systems. He also needed more free time to work 
with some associates on their exotic video/lazer/iightshow systems. 


So, PCC agreed to hire him for our usual paltry pittance, so he 
could do his research and keep our electronic widgits working. 
The PACER kit is one of those widgits, recently received. In¬ 
cidentally, John is a graduate of Carnegie-Mellon University, 
one of the top computer engineering schools in the nation. 

1 recently put to gether a Pacer 3H microcomputer development system kit, 
made by Project Support Engineering. It has by far the easiest to use operational 
and debug functions of any computer kit that 1 have used. It has a NOVUS 
type (no tactile feedback) calculator keyboard built into the front panel. When 
you want to deposit a number such as 7532, you hit the 7, 5, 3, 2 keys on the 
keyboard instead of binary switches 1,1,1, 1,0,1, 0,1,1, 0,1,0. The Pacer uses 
the hexadecimal number system for keyboard input and display. If you do not 
know hexadecimal, the keyboard will convert from decimal to hexadecimal 
as well as perform hexadecimal arithmetic. Addresses are displayed to the left 
and data contents to the right in alphanumeric LED’s. Using the keyboard you 
may examine and/or modify not only memory locations but also: 

♦ 4 accumulators X 16 bits, 

♦ a 16 bit program counter, 

♦ a 16 bit status register, 

♦ a 10 word X 16 bit stack, 

♦ a 16 bit value register used for scanning memory to find the address 
at which a value is located, 

♦ a 16 bit mask (for use if you are not certain about some of the bits 
or digits in the value), 

♦ and 10 break point registers, 16 bits each. 

The keyboard will also allow you to sequentially increment or decrement through 
memory or internal accumulators and registers for examination or modification 
of contents. Other front panel buttons include run, initialize (reset), restart 
(halt CPU but do not reset), and cancel last command. 

The kit includes all parts one needs to have a working desk top microcomputer 
development system. The CPU board includes the PACE 16 bit MPU with 
necessary input and output buffers. On the control and I/O boards are two 
DM8531 (2038 x 8 each) ROMs for the system monitor. Also included on 
these boards are four MM2112 (256 x 4) static RAMs, one MM5740 keyboard 
encoder, two hex latches and LED driver circuits as well as all required support 
components to interface with the two 4 digit displays and 32 keypad. The 
control board has space for four more MM2112 RAMs. The memory board 
comes with four MM2112 RAMs. Space is provided for 12 more MM2112 RAMS 
and four MM5204 (512 x 8) PROMs for future memory expansion. The PAC II 
card has 2K x 16 of MOS RAM. The PAC I, PAC II, and PAC ill cards are 
optional cards. PAC III is a prototyping card with voltage regulators. All other 
boards also have their own on board voltage regulators. PAC I is a TTY (or 
RS232C) interface and resident assembler card. With PAC 1 the user may perform 
all the front panel functions from a teletype (or similar device using current 
loop or RS232C) as well as the following useful functions: 

♦ Load or punch a paper tape — no bootstrap need be loaded. 

♦ Display a block of memory in one of several formats including assembly 
language (yes a dis-assembler! - very useful), ASC II, hexadecimal, 
unsigned decimal, or signed decimal. 

♦ Set, list, or reset break or snap points (Break points are placed at 
strategic locations in a program. They halt execution and display 

the contents of specified registers and memory locations. Snap points 


do the same except program execution is not halted.) 

♦ Enter programs in assembly language format (the assembler converts 
your programs line by line as you type them, to hexadecimal. No 
paper tape or cassette need be used for this. The assembler and other 
features listed here reside in two EA4900 type ROMs which hold 16K 
bits each.) 

♦ Use symbols; the assembler does all address assignment and referencing. 
(One may also list the symbol table, delete a symbol or clear the table.) 

In addition to the resident ROM memory in PAC J space is provided for twelve 
MM5204 (512 x 8) PROMs, for future user resident programs. 

So what else comes standard with the basic Pacer kit? A case, keyboard, 
push buttons, alphanumeric LED’s, all interface logic for keyboard and LED’s, 
a power supply, a mother board (which reduces interconnect wiring and makes 
expansion easy), cables, connectors and a fan. Space is provided on the mother¬ 
board for 8 extra PC boards for future expansion. The power supply included in 
the kit will put out 8 amps total. If you used mostly CMOS on optional PC 
boards, the power supply would probably allow you to fill all the available 
space on the motherboard. P.S.E.l says the supply will power the CPU board, 
control board, front panel and logic cards, standard memory board, plus a 
TTY/line assembler (PAC I) and two RAM (2K x 16) memory boards (PAC II). 

The assembly of the Pacer 3H was easy and quick. I had only a couple of 
minor problems. I forgot to connect the fan power lines at the right step of 
assembly. So 1 had to remove some heat shrink solder wires, and then put new 
heat shrink on. Really no big deal, but I don’t have a heat gun or hair dryer. 
Shrinking heat shrink with a match near the plastic case was somewhat of a 
hassel. I really should get a heat gun. They are also great for troubleshooting 
circuits with temperature sensitive problems. 

There is a thin flexible cable that runs from the keyboard to the logic. This 
looked fragile, so I took my time installing it in its connector. Once installed 
however it will never be moved or flexed again, so this is really nothing to 
complain about. 

The Pacer worked perfectly the first time I turned on the power. As I played 
with it, I began to appreciate the beauty of its high level front panel operational 
and debug capabilities. 

Now I wanted to try our teletype with it. I quickly wired up our TTY to the 
connector and plugged in a PAC I pc board (TTY interface/resident assembler). 
The TTY would not work — oops, I neglected to ground the TTY select (low = 
select) pin on the connector. Once I did this everything worked perfectly, and 
I enjoyed exploring the fine operational capabilities of the unit. 

Available soon from P.S.E. will be a PROM burning board, and an audio cassette 
interface, a CRT character generator and interface, a floppy disk interface, and 
BASIC (the debugged program burned into PROMs) as well as other programs in 
firmware. Since the Pace shares instructions with the IMP-16 (minor modification 
of programs might be needed), there is a lot of software already available. The 
Bit Bucket 2 newsletter is the best source of PACE and IMP-16 software. 

Program listings are free, source tapes $5, object tapes S3. 



Overall I very much like the Pacer. 1 wish sockets had been provided for all 


Page 12 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 October 1976 


274 




B4CER continued 

the IC’s and a heftier power supply had been used, however, these additions 
would of course increase the cost. The front panel operation and debug capa¬ 
bilities are the best I have seen on any commercial computer kit. 1 have not 
used any PAC II operational memory cards yet; so I can’t evaluate them. 

However, I would highly recommend the PAC 1 TTY interface/resident assembler 
optional card. Having an assembler and dis-assembler as well as a system monitor 
in firmware result in relatively quick and easy assembly language, programming 
and debugging. The 16 bit instructions and data provide for efficient assembly 
language programming as well as increased accuracy. One may use words as a 
whole or in 8 bit bytes. Common memory and peripheral addressing result in 
simple quick I/O instructions. 

With the Pacer’s 16 bit accuracy and easy I/O and a couple of floppy disks, 
one could program something like Music and Score^ for composition and 
playing of high fidelity music. Of course you would also need a 16 bit DAC^. If 
a very fast hardware multiply card were added as well as a fast Pace IC (rumored 
to be coming out from National Semi) to replace the pMOS IC, a real time FM 
systhesis^ of timbre might be possible. I’m not sure if the rest of the Pacer circuits 
would be fast enough. Oh well — back to the 4 bit bipolar slices for real time 
Fourier synthesis 



(1) Project Support Engineering/750 N. Mary/Sunnyvale, Ca. 94086 

(2) Bit Bucket I Commute-,-! 15/National Semiconductor/2900 Semiconductor Dr. 
Santa Clara, Ca. 95051. 

(3) Described in The Technology of Computer Music by M. Mathews, MIT Press, 
Cambridge, MA 1969. 

(4) “Score — A musician’s Approach to Computer Music” by L. Smith in the 
Journal of the Audio Engineering Society (JAES) Vol. 20, No. 1, Jan/Feb, c 72. 

(5) “Digital-to-Analog Converters: Some Problems in Producing High Fidelity 
Systems” by R. Talambiras, Computer Design, Vol 15, No. 1, page 63, Jan ‘76. 

(6) J. Chowning, “The Synthesis of Complex Audio Spectra by Means of 
Frequency Modulation” JAES, Vol. 21, No. 7, p. 526, Sept. 1973. 


PACER PRODUCT LINE RETAIL PRICE LIST (JUNE, 1976) 


Pacer Units 


Quantity 

1 H 

2H 

3H 

PAC 1 

PAC II 

PAC III 

PAC IV 

Fan Kit 

1 - 3 

$895 

$1075 

$1025 

$180 

$225 

$50 

$7 

$25 

4-9 

$855 

$1035 

$985 

$175 

$245 

$47 

$6 

$23 

10 — up 

$820 

$995 

$950 

$170 

$235 

$45 

$5 

$22 


Club group buys would help reduce costs. 

Pacer 1H — totally unassembled (not recommended by P.S.E. for beginners. 
Pacer 2H - completely assembled, tested and burned in. 

Pacer 3H — unassembled except for logic cards which are tested and burned in. 
PAC I — TTY interface/resident assembler card. 

PAC II - 2K x 16 MOS RAM card. 

PAC III - prototyping card with voltage regulators. 

PAC IV — dual 43 pin mother board connector (this comes with PAC I, PAC II 
or PAC III). 

Fan kit - designed for general purpose use 


PHILA STORE OPENING 

The Computer Room is opening in Philadelphia, 
located at Juniper and Sansom Streets. Though we 
are unclear of the exact relationship, it is evidently 
closely associated with Carol Groves of Castle Systems 
Co., 1028 Spruce St., Philadelphia, PA 19107, 928-1268. 


DOC QUESTION ON 64-CHAR MOD FOR TVT-II 

(Copy of a letter to Digital Designs) 

To: Digital Designs August 18, 1976 

P. 0. Box 4241 
Victoria, Texas 77901 

David O. Valliere, [see DDJ, Vol. 1, No. 6, page 29] 

I received the circuit hoard to convert my SWTPC TVT-II 
to 16 x 64 characters from you last week. I have not in¬ 
stalled it yet. In the meantime I have modified my TVT-II 
diagram to include the changes. At the same time I decided 
to check your modification to see if I could convince my¬ 
self it would work. 

I failed. But I think I know what’s wrong. Three things 
bothered me. 

1. There seems to be no source for the logic net compris¬ 
ing pin 9, IC28, pin 13, IC33 on the TVT board. 

2. There seems to be no source for pin 15, IC42 compara¬ 
tor. 

3. Connection I on your circuit board had no instruction 
referring to it. 

I would like to know if the following correction is correct. 
Remove the following instruction from page 4 of the in¬ 
structions: Connect pin 15, IC35 to H. Add in its place 
the following two instructions: Connect pin 13, IC33 to H; 
Connect pin 15, IC42 to I. 

Walter Cole 5868 Pentz Way 

San Jose, CA 95123 

P.S. I am very interested in your upper/lower case and com¬ 
puter controlled cursor modifications for the SWTPC 
TVT-II. 

ENDLESS LOOPS SUGGESTED TO AVOID 
TAPE-STRETCH PROBLEMS 

Dear Dr. Dobb’s, 

Since we have been experiencing tape-stretch prob¬ 
lems and other Natal problems when we have to run 
BASIC back and forth on the cassette machine to load 
our APPLE every morning, I was going to ask you for 
your best medical advice, but have solved the problem 
with a home remedy. Being new to this cassette business, 

I figured they should only run in one direction, but no, 
wham-bang, you have to rewind the buggers—this stretches 
and pulls and raises general hell with the tape! So why 
not just run in one direction? No reason why not if 
you use an endless loop tape! TDK puts out a high 
quality loop tape in 20 sec., 30 sec., 1 min., 3 min., 6 
min., and 12 min. versions (something for everyone)— 
so you can save your favorite games or BASIC on a tape 
that will run round-and-round and just wait for the 
beginning to press load. 

Sorry I didn’t get the prices (they are expensive), 
but just finding the things after calling a dozen places threw 
me off. They are available from: 

Qument Electronics 
1000 S. Bascom Ave. 

San Jose, CA 
(408) 998-5900 

If you have a loading indicator, file no. select, or 
can listen to the tape, endless-loop makes a fast single 
loading device. 

What can you do about my wisdom teeth? 

Bob Grater Byte Shop No. 2 

Technical Services 3400 W. El Camino Real 

Santa Clara, CA 95051 


October, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 Page 13 


275 










The Computer 
at Puberty 

(reprinted with permission from Technology Review, May 1976; 
Copyright 1976 by the Alumni Association, M.l.T.) 

The computer already seems to be everywhere, 
doing everything, but according to a group of prominent 
computer scientists, the industry has only just begun an 
explosive growth. Over the next two decades it will 
enter home, business and factory as never before. 

This was the principal conclusion of preliminary 
reports on an extensive study of “The Future Impact of 
Computers” being performed by computer and social 
scientists at IBM, Stanford, M.l.T., Harvard, Yale, Prince¬ 
ton, and other prominent institutions. 

The study, coordinated by Michael Dertouzos, 
Director of M.I.T.’s Laboratory for Computer Science, 
and Joel Moses, Associate Director, is sponsored by 
AT&T, IBM, the Office of Naval Research, and M.l.T. 

To be completed in 1977, it consists of an integrated 
series of carefully thought-out and hashed-over papers 
on key topics in the computer field. The participants in 
the study, key people in their fields, occupy excellent 
vantage points to ponder the computer’s future, said 
Professor Dertouzos. But, perhaps just as important, 
th"ir influence could make their predictions self-fulfilling 
prophecies. 

At the symposium marking the 100th anniversary of 
the telephone, many of the participants in the study 
gathered to offer a fascinating glimpse into a future 
stuffed with computers. 

The hardware of the computer should be about the 
least restraining influence on the computer’s future, 
according to scientist-entrepreneur Robert N. Noyce, 
Chairman of Intel Corp. His analysis shows that the size 
of computer components could be reduced a hundred to a 
thousand times, from even the tiny circuits of today, 
before they begin bumping “down” against the fundamen¬ 
tal thermal noise limits on size. And technological 
advance has allowed the complexity of integrated cir¬ 
cuits to double every year since 1960, he pointed out, a 
trend that should continue, allowing ever lower costs for 
ever more powerful computers. The future almost cer¬ 
tainly holds reductions in size and cost, and increased in 
complexity as remarkable as those that brought pocket 
calculators from the engineer’s workbench to citizen’s 
pockets. 

The Computer at Home 

The key to these technical advances is continuing 
profitability, said Dr. Noyce. His company is a leader in 
the high-technology semiconductor industry. For the com¬ 
puter to remain a profitable product, said Dr. Noyce, it 
must become a mass-market item. And according to Pro¬ 
fessor Moses, the computer will mount a massive invasion 
of the home over the next two decades. 

The first wave, said Professor Moses, will consist of 
computers which perform tasks not requiring connection 
to a communication network - such networks will probably 
bring up the rear in computer developments. 

Professor Moses foresees computer games and other 
recreations, “smart” household appliances, home educa¬ 
tion programs, and efficient household heating and cooling 
control as the first uses for home computers. Indeed, 
many such products have already appeared in the market¬ 
place: computer-controlled machines now being marketed 


include microwave ovens, television sets, automobiles, and, 
of course, the popular electronic games, which can be 
played through one’s TV. 

Eventually, however, computer communications net¬ 
works for the home will evolve, and subscribers will have 
enormous volumes of information at their fingertips - via 
home computer consoles that will cost about as much as 
today’s color TV sets. Computerized encyclopedias, elec¬ 
tronic mail, and enormous electronic “newspapers” which 
would allow the reader to delve into whatever subject he 
wished. Also possible would be a new form of electronic 
“junk” mail - when a subscriber wished to buy something, 
he could use his computer to summon all the current 
advertising for the product, and comparison shop from his 
easy chair. This divorce of news from advertising could 
also affect the content of news, noted Professor Moses. 

No longer would a reporter on auto safety worry about 
irate car dealers cancelling ads, should he criticize their 
product. 

There will also be other changes in the kinds of 
information we receive, with the advent of the “informa¬ 
tion utility,” according to John McCarthy of Stanford. 
Computerized publishing would increase competition, 
because the expensive printing process would be eliminated. 
As soon as a manuscript was ready, it could be instanta¬ 
neously available. The nature of public controversy in the 
computer age would also change, said Dr. McCarthy. 

When one candidate attacked another over the computer 
news network of the future, the average citizen could 
immediately dial up the opposing statements. Thus, 
public stands would be much more carefully considered 
before being made public. Also, government information 
would be truly public for the first time. Instead of being 
stored away in dusty archives, available only to those with 
the wherewithal to dig it out, the data would be instantly 
available on the average person’s home console. 

Giving Computers the Business 

Although business and industry are already heavy 
users of computer power, they will become even more so 
in the future, according to the study participants. One 
major trend will be toward the “paperless office,” said 
Victor A. Vyssotsky of Bell Telephone Laboratories. 
Records and communications will be stored and trans¬ 
mitted by computers rather than as pieces of paper. How¬ 
ever, said Dr. Vyssotsky, the clerical worker will by no 
means be out of a job; rather the nature of his job will 
change drastically, from paper shuffler to electron pusher. 
Computer methods for assisting managers would also make 
gradual process as business tools. 

“Overall, I anticipate a modest steady improvement 
as a result of further computerization of business func¬ 
tions,” said Dr. Vyssotsky. “At a very rough guess, this 
improvement, over the next twenty years, may be some¬ 
thing like two per cent per year for a force which may 
run somewhere aorund forty per cent of the U.S. work 
force.” 

Manufacturing will also see much greater use of com¬ 
puters than even today, according to Professor Dertouzos, 
who wrote the portion of the study on that subject. The 
key technical developments in this area will be program¬ 
mable robots with senses of touch and sight; microcompu¬ 
ter-operated control systems integrated into aircraft, autos, 
home and factories; and networks of robots or control 
systems capable of working together. 

Out of these technologies, Professor Dertouzos sees 
emerging automated factories that could produce products 
tailored specifically to each customer. For instance, a 
customer might order shoes fitted to his foot measure- 


Page 14 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 October, 1976 


276 


merits, and the shoes would be manufactured on the spot. 
Such automation would revive U.S. industries currently 
being strangled by cheap foreign labor. Also, said Dr. 
Dertouzos, robots would continue to take over dangerous 
jobs, preserving human life; and they would relieve humans 
of mindless tasks, enabling them to do truly humane 
tasks. 

“While the popular view of an automated future 
involves a heartless and mechanistic society geared to pro¬ 
ductivity and efficiency, I advocate the opposite view that 
computers will improve and humanize our way of life,” 
he said. 

The major plea throughout all the scientists’ dis¬ 
course was — as Terry Winograd of Stanford University 
put it — that computers be “peoplized.” The computer 
must be taught to adopt the sytle of communication 
natural to people, and not the foreign language it is now 
allowed to use. Computers that understand human dia¬ 
logue, that can take human speech as an input, and that 
can explain their actions and reasoning to humans will 
represent major steps in this direction. 

Perhaps them the computer will become as benign 
and helpful an invention as is the telephone, whose 
100th anniversary the conferees were observing. — D.M. 


A THEATER COMPUTER USERS GROUP 

Support of a Theater Computer Users Group is being 
considered by Theater Sources, Inc., a non-profit, tax- 
exemp corporation. Persons who have developed pro¬ 
grams for applications in the area of live drama are in¬ 
vited to contact TSI with suggestions, information, and 
requests to be placed on a preliminary mailing list. Write 
TSI-TCUG, 4712 Northway Dr., Dallas, TX 75206. 

The form of support has not been set, but may 
include a newsletter, reproduction of listings or decks on 
file and/or meetings for exchange of information. Sug¬ 
gestions are welcomed. Costs of services will be covered 
by modest fees. 

Uses of the computer in theater might include 
rather ordinary uses such as bookkeeping, accounting, and 
mailing lists, but can also be extended to ticket sales, seat¬ 
ing charts, budgeting and artist records. Further extensions 
might include creation of buying and cutting lists for sets 
and costumes, visualization and modification of designs, 
and other interactions between artists and machine to ease 
the tedium of craft. 

Theater Sources, Inc., is a non-profit corporation 
under Texas law, created to “gather and distribute informa¬ 
tion about live theater” and granted a federal tax exemp¬ 
tion. Its current activities include publication of PROLOG, 
a newsletter for playwrights, and THEATER ACROSS 
AMERICA, for community theater, and the National 
Theater File, timeshare access to theater information. 

Contact: Mike Firth, 4712 Northway Dr., Dallas, 

TX 75206, (214) 363-5003. 


SOUTH CAROLINA HOBBYIST GROUP 
FORMING 

South Carolinians interested in forming a. persona 
computing club should contact Dewey K. Barefield, Box 
452, Hodges, SC 24653. 


ROBOT FEATURED AT ACGNJ MEETING 

BUSTER-II, a robot, will be the featured demonstrator 
at the October meeting [of the Amateur Computer Group 
of New Jersey]. BUSTER-II is a home-built robot con¬ 
trolled by an MOS Technology KIM-1 microprocessor. 

BUSTER-II was designed and built by Rod Loofburrow. 
Rod, who is 14 years old, is another of John Loofbur- 
row’s young sons . . . you may remember Wayne Loof¬ 
burrow (age 13) who demonstrated a 6800 Assembler at 
the March meeting. 

Rod will be explaining the technical side (or is it 
inside) of BUSTER-II, demonstrating the robot’s abilities, 
and answering all questions (sorry, as yet, BUSTER-II 
does not have a voice). 

The October meeting will be held at, and sponsored by, 
Middlesex County College, Edison NJ, on Friday, October 
15th. The meeting will be held in Building No. 4, The 
College Center, Cafeterias B and C (same as last meeting 
at MCC). 

There will be a Flea Market, starting at 6:30 p.m. 
Tables are available ($2 contribution is asked). Remember 
to bring your own extension cords. 

BUSTER-II will be doing his thing at 8 p.m. We must 
vacate the building by 10:30 p.m. 

Editor’s Note: We are publishing this, not as a meeting announce¬ 
ment for the ACGNJ, but rather, because of the unusual and 
fascinating nature of the presentation being given at their meeting. 


LOOT FOR USELESS HEADS 

If you happen to have any crashed or worn-out disc heads, 
you might be able to peddle 'em for nominal cash. Trans-Data 
Corp [170 Glenn Way, Belmont, CA 94002, (415) 593-8545 (Don 
Collier)] is looking for heads for IBM 3330's and 2314's. 

[ANOTHER] MICROCOMPUTER 
PRODUCT SURVEY 

Dear Sir, Sept. 9, 1976 

This letter is to announce to you the publishing of The 
Microcomputer Product Survey. As we at Small Business Systems 
are sure you realize, there are a number of individuals who have 
claimed to offer a microcomputer product survey which has turned 
out to be little more than a chip feature list. The M.P.S. is a 
two volume report on the hard and software being offered in the 
small and personal computer market. 

The first volume will be released in November and will deal 
with Microcomputer Hardware, Peripherals and the companies that 
manufacture them. The second volume will deal with Software 
and the additional companies which supply only software and is 
scheduled to be released in January, 1977. 

The organization of Volume 1 will be a series of 16 charts 
covering all the major mainframes and peripherals. The peripheral 
section will.include plug compatible memory and I/O cards. All 
of the hardware will be cross-referenced to the company profile. 
The peripherals will also be cross-referenced by mainframe com¬ 
patibility. The general form for Volume 2 will be three charts 
and a series of plain text discussions of applications program-ser¬ 
vices. The charts will compare general types of instruction for 
the three general classes of software, operating systems, assemblers 
and higher level language. 

The two volumes will be supplemented with periodic 
product supplements to allow the M.P.S. to be one of the most 
timely sources of performance parameters in the marketplace today. 

SBS has planned to allow the individual three options to 
personally determine the worth of the M.P.S. A subscription to 
the M.P.S. is only $9.00 a year, a sample issue is $3.00 and com¬ 
plete details for only $1.00. 

Yours truly, 

Timothy D. Sisson Small Business Systems 

General Manager 1800 Wayne No. 1 

Bellevue, NE 68005 


October, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 Page 15 


277 







How to Code Code 

Jack Armstrong’s Super Decoder Ring 


by Jon 0. Stedman, 1450 Alice St., Oakland, CA 94612 

Nostalgia time, gang! Remember when Jack Armstrong 
was sending his secret messages over the radio into your 
home? For only two box tops of some breakfast cereal, 
you could order your own SUPER decoder ring. In no 
time, you can be passing secret messages like any interna¬ 
tional spy. 

In reality, we have a super cryptographic machine in 
the home brew micro-computer! Complicated cyphering 
techniques can be programmed to baffle all of those govern¬ 
ment snoops who like to read other people’s mail. 

Simple letter substitution cyphers are easily broken 
with a little statistical analysis on the letter frequency of 
the code-text. Many other cyphering techniques are public 
knowledge (see your public library) so the secret part of a 
coded message is the code word which is the “key” to de¬ 
coding the message. 

For instance, John Kennedy used the key . . .HEAVY 
EQUIPMENT and the Playfaire cypher to send a rescue mes¬ 
sage from his wrecked PT 109. Had the Japanese intercep¬ 
ted and de-cyphered that rescue message, then history would 
have been changed! 

Personally, computer games don’t interest me much, so 
I hope that the following specifications will excite someone 
to write a Playfaire program and that cryptography will be¬ 
come a developing interest to hobbyist computer users. 

You can try your hand at Playfaire with the following 
bit of encyphered philosophy. 

KPGHU WKPGA EWAQG EHBBZ PBVRN 
EYUFZ ATSHY BMZQE VYVSN EVGUE 
WZREU BMZQE VYUGG YEBZL 

Use Kennedy’s code word HEAVY EQUIPMENT. 

PLAYFAIRE—DIGRAPHIC CRYPTOGRAPHIC 
CYPHER 


The first cell of row number 5 is the one in the lower 
left-hand corner of the array. The second cell of row num¬ 
ber 5 is directly to the right of the first cell. This ordering 
continues until the 5th cell is reached (the one in the lower 
right-hand corner), then the cycles begins again. Thus the 
elements in row number 5 are ordered in a cyclic way as fol¬ 
lows: 

In a similar way, the elements of each column can be 
considered to be ordered in a cyclic pattern as follows: 



Since the array has room for only 25 letters, the let¬ 
ters I and J will be considered to be interchangeable. I and 
J will occupy the same array element. In a similar way, X 
and space will occupy the same array element, but only X 
will be used as a code letter. 

The key to filling in the 5x5 array with the letters 
of the alphabet turns on the use of a “code word. ” 

In the absence of a code word, then the normal alpha¬ 
betic order is followed in filling the array. The array is 
filled row by row, i.e., row number 1 through row number 5. 


This code technique uses a 5 x 5 array matrix. The elements 
in this array can be considered to be ordered into rows and 
columns. Each row in turn also is ordered in a cyclic fash¬ 
ion. 



Rowl 
Z-* 
3 -r 

4 -* 


A B 

c 

D 

fj 

F 

G, 

rt 

% 

K 

L 

M 

A 1 

0 

P 

Cl 

R 

S 

T 

U- 

V 

W 

jk 

r 



The use of a code word permutes the order shown 
above. 

With a code word, fill up the array as follows: 

Fill the array (row by row) with the letters of the code 
word in the order they occur in the code word. Remember 
not to use any letter twice from the code word. After the 
code word letters are exhausted, then complete the array 


Page 16 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 3*0, Menlo Park, CA 94025 October, 1976 


278 
















































Plain-text 


with the remainder of the alphabet (in alphabetic- order, of 
course). 

Example: code word is JUNEMOON 


Mi 


|e 

L 

o\ 


1 

H 










The code word has been entered into the array. Note: 
(J/I) J and I occupy same cell. 0 is used only once. N is 
used only once. 

The array is then completed with the remainder of the 
alphabet. 


% 

UL 

hi 

E 


o 

A 

8 

C 

Id 

r 

IF 

<? 

H 

K 

L 

p 

Q 

R 

S 

r 

[vj 



r 

z 


Playfaire is a digraphic technique that destroys the let¬ 
ter frequency distribution found in a particular culture-lan¬ 
guage. The technique is to transform letter pairs into anoth¬ 
er letter pair, i.e., digraph is a letter pair. For instance; 
Plain-text [F,A] [G,0] Code-text 

[F,E]^[K,J] 

Of course, digraphs have a known frequency distribu¬ 
tion, but the number of letters is small (approximately 26) 
and the number of digraphs is large (approximately 26 x 26); 
so a much larger volume of codetraffic is needed to build 
any statistics. 

There are 4 cases to consider using the Playfaire array. 

I. Both letters of a digraph are in the same row. 

II. Both letters of a digraph are in the same column. 

III. The letters of a digraph are in different rows and col¬ 
umns. 

IV. Both letters of the digraph are the same. 


0,A] Code-text 
[0,B] 

[B,0] 

A, C] 

B, D] 

D,A] 

Both letters of a diagraph are in the same column, 
each letter is replaced by the next letter in order 


Case II: 

Method: 
in the given column. 
JUNEMOON array. 


[D,0 

-> 

D,A 


A,D 

-> 

0,B 

-> 

A,C 

-> 

C,0 



Example: Column number 2 from 

A* 

\ 

\W 


Plain-text [A,Q] -> [G,W] Code-text 
[A,U] -> [G,A] 

[W,Q] -> [U,W] 

[G,A] - [Q,G] 

[G,W] -> [Q,U] 

[Q,w] - [W,U] 

Case III: Letters of a digraph are in different rows and col¬ 
umns. Method: The vector formed by the line from the 
first to the second letter of a digraph is one of the diagon¬ 
als of a rectangle. The two diagonals form the equivalence 
between the text-digraph and the code-digraph. Example: 
Using the JUNEMOON array: 


% 

U 

N 

E. 

ImI 

o 

i£j 

4.1 

el 

'B 

H 

c 

J<] 

d 

L 

uE 

a 

R 

s 

T 

IV 

w 

% 

Y 

2 


For instance, the digraph [F,U] defines the diagonal 
and rectangle: 


Case I: Both letters of a digraph are in the same row. 
Method: each letter is replaced by the next letter in 
order in the given row. Example: Row number 2 from 
JUNEMOON array above. 

—* A —►b — 



The mirror image of the [F,U] diagonal is the [G,J] 


(Concludes, next page) 


October, 1976 Dr. Dobb’s Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 Page 17 


279 







































































Music by computer 

Reprinted with permission of Digital Equipment Corporation. 

Yamaha has interfaced an electronic organ with a com¬ 
puter so that the organ can be played either by the compu¬ 
ter or a musician. 

A PDP-8 minicomputer is able to control the instrument, 
reproduce previously recorded musical scores and display them 
on a cathode ray tube. 

Using a core-resident real time operating system, the 
minicomputer can sense what is being played, interpret this 
data and compare it with storage. 

Yamaha anticipates that the organ may one day be 
taught completely by this method. Students will be able to 
compare the written music stored in the computer memory 
with what they actually play as displayed on the cathode 
ray tube. Practice sessions can be recorded for critique by 
instructors at a later time. 

Digital’s GT40 graphics terminal was chosen for its in- 
terrupr handling capabilities, refresh-type display and cost ef¬ 
fectiveness. 

The refresh display is ideally suited to the dynamic 
pattern changes in a musical score. Since the GT40 con¬ 
verts the binary data obtained from the memory area (DMA) 
to analog form and displays it on the CRT independent of 
the central processing unit, the processor can be dedicated 
to the organ, making possible the real time applications of 
the recording and playing back. 




(conclusion of Decoder Ring Article) 

diagonal. Note that the first letter of both digraphs are in 
the same row. 

Plain-text [F,U] -> [G,J] Code-text 
[U,F] -> [J,G] 

In general, using matrix notation—(row number, column num¬ 
ber): 


[(F),(U)] = [(3,1),(1,2)] [(3,2),(1,1)] = [G,J] 

Therefore- [(a,3) (6,^)] [(a , O (<5 ,3)] 

Case IV: Both letters of a digraph are the same. Method: 
the letter X is to be inserted into the plain-text to separate 
double letters. Example: BALLOONS would be broken into 
digraphs as [BA], [LX], [LO], [NS]. 

In order to break up the appearance of words, the 
plain-text is run together by leaving out the spaces between 
the words. Sometimes to improve on readability and avoid 
ambiguous situations, X’s are inserted for the spaces between 
words. 

The code-text output is in a standard fixes format of 5 
letters per word. 

EUNFE RAHXJ UPZWO etc. . . . 


PROCESSOR TECHNOLOGY ANNOUNCES 
WINNERS OF Personal Computing ’76 
DRAWING 

Processor Technology was one of a number of 
vendors which donated “door prizes” for the Personal 
Computing ’76 convention in Atlantic City. The P.T. 
door prizes consisted of two S500 merchandise certici- 
cates. The winners were: E. Eibling, Florham Park, 
NJ; Barbara Ataran, Montclare, PA. 


AN 18-BIT PDP-11? 

Rumor has it that Gordon Bell originally designed the 
Digital Equipment Corp. PDP-11 as an 18-bit machine 
(note the bus width), but DEC Marketing decided to make 
it a “byte” machine and reduced the BRANCH range. 



Photographs courtesy of Digital Equipment Corporation. 


Page 18 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 3T0, Menlo Park, CA 94025 


October, 1976 
























TIMER ROUTINES FOR 6800’s 


Gentlemen: Sept. 3, 1976 

I have found in writing programs, that often a time- 
delay can be used to spice up a program. The following 
subroutine will generate time delays between 1 and 255 
seconds. To use the routine, load register-B with the num¬ 
ber of seconds you wish to delay and then jump to the 
subroutine. The subroutine returns after the specified 
number of seconds. 

To show how it works, I have enclosed a short 
program that uses the time delay routine to ring the bell 
on a teletype once every 30 seconds (make it 3 minutes 
and you’ve got an egg timer). 

How it works: 

LOOP1 is the basic time-delay loop. Traversing 
from line #11 to line #14 takes 20 clock cycles. This 
loop is executed 50,000 times (C350 Hex). Thus to com¬ 
plete this loop requires 20 x 50,000 or 1 million clock 
cycles. Since the clock frequency on the 6800 is 1 Mega¬ 
hertz, it takes one second to complete. 

LOOP2 is the outer loop which by decrementing 
and testing register-B allows varying delays by repeating 
LOOP1 the specified number of times. 

Line #9 and #17 save and restore the X-register to 
the value it had when the routine was entered. 

Note: If you put a radio next to the CPU and 
tune to the interference, there will be an audible click 
each second (a darkroom timer??). These routines were 
assembled by a cross-assembler I have written in IBM’s 
BASIC. 

Sincerely, 

Gregory A. Worth 115 Campbell, Apt. 6 

Rochester, MI 48063 


LINE PC OBJ CODE 


MNEMONIC OPERANDS 


*TIME DELAY SUBROUTINE FOR THE MOTORLA 6800 
♦NOTE: 

* 1. VALUE IN THE B-PEGISTER WHEN ROUTINE IS ENTERED 

* DETERMINES THE NUMBER OF SECONDS THE PROGRAM DELAYS 

* 2. REGISTERS A £ X ARE LEFT UNCHANGED BY THE ROUTINE 


0000 FF 00 
0003 CE C3 


16 


i DELAY 
4.L00P2 


STX 

LDX 


& SAVE 
#$C350 


J SAVE THE X-REGISTER 

;load x-p.eg with 50000 


1 1 0006 76 00 03 

12 0009 79 00 03 

13 000C 09 

14 000D 26 F7 

15 000F 5A 

16 0010 26 FI 

17 0012 FE 00 16 

18 0015 39 

19 0016 

20 0018 


ROR 

ROL 

DEX 

ENE 

DECB 

-ENE 

LDX 

RTS 

RMB 

END 


£ LO 0 P2 
£L00P2 


4L00P2 
& SAVE 


;ROTATE->WASTE TIME 
;ROTATE->WASTE TIME 
;DECREMENT X-REG 
IIF X<>0 GOTO L00P1 
;DECREMENT B-REG 
IIF B<>0 GOTO L00P2 
;RESTORE X-REG 
I RETURN TO MAIN PROGRA 

JSTORAGE FOR X-REG 


WRITTEN AUGUST 25, 1976 BY GREGORY A- WORTH 


LINE PC OBJ CODE 


MNEMONIC OPERANDS 


WRITTEN BY CFE60RY WORTH 

PROGPAM TO RING THE BELL ON A TELETYPE EVERY 30 SECONDS 
USES TIME DELA V SUBROUTINE FOR DELAYS i THE CHARACTER OUT 
ROUTINE IN MIKBUG- 

NOTE E075 IS THE CHAPACTER OUT ROUTINE IN MIKEUG 
PNC 0000 IS WHERE THE DELAY ROUTINE IS 


0030 86 07 
0C32 ED E0 75 
0035 C6 IE 
0037 PD 00. 00 
003A 20 F6 
003 C 


LDAA 

JSR 

LDAE 

JSR 

EPA 

END 


#$07 

SE075 


$00.00 

£EELL 


J LOAD BELL CHAP. 
JRING THE BELL 
J LOAD E-RE6 = 30 
IJUMP TO DELAY PROG 
I BRANCH TO iEELL 


MICRO BASIC PLUS FOR $15.95 
INCLUDES COMPLETELY ANNOTATED 
SOURCE CODE 

(NEWS RELEASE FROM TECHNICAL SYSTEMS 
CONSULTANTS, BOX 2574, W LAFAYETTE, IN 
47906) 

You have seen the “TINY BASIC” and “MICRO 
BASIC” for the 6800 which fit in a small system (2-3K) 
and offer 10-15 statements and commands for the user 
to write BASIC programs. These systems range from 
quite slow (due to 2-level interpretation techniques) to 
surprisingly fast for a small system. The limiting factor 
in these versions of BASIC is the incomplete selection 
of statements, commands, and functions. The lack of 
certain statements means having to do without, resulting 
in less efficient programs. 

TSC has solved this problem by creating MICRO 
BASIC PLUS. It is not a 2-level interpreter so it runs 
considerably faster than ones implemented using the 2- 
level technique. Statements available to the user include 
PRINT, INPUT, READ, DATA, RESTOR, IF . . . THEN, 
GOTO, GOSUB, RETURN, ON . . . GOTO, ON . . . 
GOSUB, FOR, with positive and negative STEP, NEXT, 
LET, DIM, for both single and double dimensioned arrays 
(up to 98 by 98), EXT, REM, and END. The commands 
available to the user are LIST, SCRATCH, RUN, and 
MONITOR. There are also several functions available 
which include TAB and SPC (for output formatting), RND, 
ABS, SGN, and T (Used for exponentiation). This list of 
features does not stop here. MICRO BASIC PLUS also 
contains a complete line editor, multiple statements per 
line, direct execution of most statements, large arithmetic 
range than others (±99999), complete error identification 
including printout of the line number where the error oc¬ 
curred, and a very simple procedure for dumping the users 
BASIC program to paper tape or cassette and then re¬ 
loading it at a later time. Also included is an EXTERNAL 
statement which allows the user to write 6800 machine 
language subroutines to be called during BASIC program 
execution. 

You are probably thinking this all sounds great, but 
if the less extensive versions of “TINY” or “MICRO” 
BASIC require 2-3K of memory, this one must require 
5 or 6K since the capability is doubled. Well, here is the 
“icing on the cake!” MICRO BASIC PLUS resides in 
just a fraction over 3K which means in a 4K system you 
still have room for a 30 to 60 statement BASIC program! 
Not only is the interpreter approximately the same size 
as others, TSC has made special provisions for keeping 
the users program source to a minimum (e.g. all commands 
and statements can be entered using the first 3 letters of 
its name). 

Now you are probably saying it must be expensive. 
You are right if you think $15.95 is expensive, but we 
think this will also please you. Unlike others, we include 
the complete commented source listing, hex dump for 
fast entry using MIKBUG, sample programs, sample out¬ 
put, plus TSC’s famous instructions and documentation 
for use. As all TSC 6800 software, this program uses 
MIKBUG I/O routines but instructions are provided for 
adapting to other routines. Write for details concerning 
availability of MICRO BASIC on “Kansas City Standard” 
cassettes. 


October, 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 


Page 21 








Tiny BASIC for the 6800 & 6502 
from Tom Pittman’s “Company” 


Editor's Note: Tom Pittman is Itty Bitty Computers. Tom is an 
avid computer hobbyist who is one of the more major figures in 
the San Francisco Bay area’s Homebrew Computer Club. He is also 
an experienced software consultant who specializes in small-com¬ 
puter software and systems. We strongly recommend him to you 
because (1) we have received a number of communications praising 
Tom's Tiny BASIC for the 6800, (2) we have yet to receive a 
written or verbal complaint about the quality of Tom's products, 

(3) we have ample evidence that Tom consistently exhibits an 
unusually high level of responsiveness and good business ethics in 
dealing with his customers, and (4) we are delighted to see a com¬ 
petent systems software specialist offering excellent software prod¬ 
ucts to home computer users at very nominal rates, and wish to do 
everything we can to encourage him and others to pursue this 
approach to development and distribution of good, low-cost soft¬ 
ware. 

The following information is a duplication of the typewritten 
data sheet that Tom distributes to those wishing information about 
his products. 

Itty Bitty Computers is dedicated to the principle of 
high quality, low-cost software for personal computers. 

Tiny BASIC is our first offering in this field; if it sells well, 
there will be more. We are not in the hardware business- 
software is all we sell. The emphasis of all our software is 
small size and flexibility rather than high speed. Tiny 
BASIC will run in as little as 3K of memory. 

Tiny BASIC is a subset of Dartmouth BASIC, with 
only 16-bit integer arithmetic. There are only 26 variables 
(A-Z), no arrays, and no strings. The 12 commands (LET, 
PRINT, INPUT, IF. . .THEN, GOTO, GOSUB, RETURN, 
REM, RUN, LIST, CLEAR, END) are adequate for most 
programming needs. A machine language subroutine calling 
facility enables the user to extend Tiny BASIC to any 
degree necessary. 

Single copies of Tiny BASIC cost $5. This buys an 
individual license to use it, a 26-page user manual, and a 
hexadecimal paper tape in the manufacturer’s loader format 
(Motorola “S” or MOS Technology A hexadecimal 
listing will be substituted for the tape on request for users 
without paper tape facilities. Programs are mailed out first 
class within a few days of receiving the order, but at these 
prices we can accept prepaid orders only. For airmail service 
to foreign countries please add $2 per program. A 20% 
discount may be applied to quantity purchases of ten or 
more programs of the same version to the same address at 
the same time. 

Tiny BASIC itself does not contain any I/O instruc¬ 
tions; three JMPs link Tiny to the user’s I/O routines. 

These are well documented in the manual. The primary dif¬ 
ference between the following versions is the memory re¬ 
quirements (shown in parentheses), though all use 
memory page 00. 

TB680R (0100-08FF) For MIKBUG, EXBUG, and 
most homebrew 6800 systems with RAM in first 3K of 
memory. 

TB680S (0200-09FF) For Sphere; includes I/O 
routines. 

TB680P (E000-E7FF) For AMI Prototyping Board; 
includes I/O routines (ACIA), and runs with on-board 
IK RAM. 

TB650K (0200-0AFF) For KIM and most homebrew 


6502 systems with RAM in first 4K of memory. 

TB650J (1000-18FF) For Jolt. 

TB650W (0300-0BFF) For Apple. Includes I/O 
routines. 

NOTE: The third digit of the version number refers to the 
revision level. We will ship the most recent version regard¬ 
less of order specifications (e.g., we are now shipping 
TB682R for orders specifying TB680R). 


MEMORY ALLOCATION STANDARDS 
FOR HOBBYISTS 

by Jim Day 

One of the benefits of owning your own computer is 
the fun of exchanging programs with other hobbyists. So 
far, this has been fairly easy to do. It is easy to load a 
BASIC program from an ASCII tape or to bootstrap a 
machine language tape into a “cold” machine. But this 
situation may not last very long. As more hobbyists begin 
to use ROM-resident operating systems and a wider vari¬ 
ety of peripherals, compatibility problems may become 
much more difficult to resolve unless standards are estab¬ 
lished for memory allocation. 

I suggest that the first 16K of memory be reserved 
for the operating system, including resident processors and 
I/O handlers. Standard port numbers and handler entry 
points should be established for all kinds of peripherals, 
including the exotic ones. Allocation standards need not 
work a hardship on those with smaller amounts of mem¬ 
ory, since memory modules don’t have to be contiguous. 
That is, a 2K machine could have IK of memory start¬ 
ing at address 0 and the rest starting at 16K. 

Needless to say, the standard handler “entry 
points” would simply be instructions branching to the 
real entry points somewhere within the first 16K of 
memory. Likewise for the entry points of language 
processors, text editors, etc. Attempts to use unimple¬ 
mented programs should cause a branch to an error 
routine. 


6800 CAN SHARE HOBBY-STANDARD BUS 
WITH 8080 WITHOUT CONFLICT 

M.R.S. has developed a 6800-based board that 
plugs into a hobbyist-standard (Altair, IMSAI/SOL/ 
Cromemco/Polymorphic/etc.) bus. Even while installed 
in the bus, it will allow any also-resident 8080 to run 
without interference. It gains control of the system 
via a single instruction, and returns control to the 
8080, either via the halt switch or via software in¬ 
structions. The 8080 unit handles all front-panel 
interface. 

A fully assembled and tested unit is available 
for $180 with kits available at even lower cost. The 
mailing address for M.R.S. is Box 1220, Hawthorne, 
CA 90250. 


Page 22 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 October, 1976 


282 





SAVE AND LOAD MODS TO PITTMAN’S 
6800 TINY BASIC 

Dear Jim, 

Here are modifications I’ve written to Tom Pittman’s 
6800 Tiny BASIC. The additions are confined within the 
2K size for the interpreter. The Sphere 6800 user will 
now have the ability to SAVE and LOAD programs he 
has written in Pittman’s Tiny BASIC. I do not think the 
modifications submitted infringe on the proprietary rights 


of Pittman’s Tiny BASIC. 

Sincerely, 

Henry L. Kee 

42-24 Colden St. 

Flushing, NY 11355 


MODIFICATIONS TO PITTMAN'S TINY BASIC 

SAVE PROGRAM, LOAD PROGRAM, SYSTEMS BREAK 

ENTER PITTMAN'S TINY BASIC WITH I/O SPHERE INTERFACES 

IN LOCATIONS D8 TO FD AS PROVIDED 

ENTER THE FOLLOWING MODIFICATIONS: 

ORIGIN C0 

CE 0200 

TINY BASIC START ADDRESS 

DF 3C 

SET PTR FOR START 

CE 09FF 

TINY BASIC END ADDRESS 

DF 3E 

SET PTR FOR END 

86 42 

LOAD A WITH VALUE "B" 

97 34 

STORE INTO PART OF IDENT 

BD FB91 

READ BLOCK 

7E 0200 

GO TO START ADDRESS FOR TINY BASIC 

ORIGIN 9C1 

BD FE4A 

BREAKPT FOR FUTURE USE 

C6 91 

LOAD OPTION (DECIMAL ADDRESS 2500) 

F7 09EB 

MODIFY I/O FOR READ 

F7 09F6 

OR WRITE BY VALUE IN B 

97 39 

STORE 2ND CHARACTER OF ACIA 

DF 33 

STORE 2ND CHARACTER OF ID 

86 F0 

SETUP ACIA ASSIGNMENT 

97 38 

86 FF 

SET FLAG 

97 3A 

86 24 

STORE "$" FOR INITIAL ID 

97 33 

CE 00C8 

BEGIN ADDRESS OF TINY BASIC PARAMETERS 

DF 3C 

SET BUFFER START 

CE OOCF 

END ADDRESS OF TINY BASIC PARAMETERS 

DF 3E 

SET BUFFER END 

BD FB00 

INITIALIZE I/O 

BD FB00 

READ OR WRITE 

DE C8 

SET USER PROGRAM START PTR 

DF 3C 

INTO BUFFER START 

DE CC 

SET USER PROGRAM END PTR 

DF 3F. 

INTO BUFFER END 

BD FB00 

READ OR WRITE USER BLOCK 

39 

EXIT 

BD FE4A 

SYSTEMS HALT (DECIMAL ADDRESS 2552) 

C6 2D 

SAVE OPTION (DECIMAL ADDRESS 2555) 

LOAD B WITH WRITE 

. 7E 0SC6 

BRANCH TO ROUTINE 

CODING FOR V3N 

SYSTEM 

ENTER THE FOLLOWING: 

ORIGIN 33 

24 54 

ORIGIN 38 

"$T" ID FOR TINY BASIC 

F0 50 

CASSETTE 1 

FF 00 

00 CO 

START OF BOOTSTRAP LOADER 

00 FF 

END OF BOOTSTRAP LOADER 

ORIGIN A00 



BD FB 00 WRITE OUT BOOTSTRAP 

BD FB 2D 
BD FE 4A 

EXECUTE AT LOCATION A00 


ORIGIN 33 

24 42 "$B" ID FOR TINY BASIC 

ORIGIN 38 
F0 50 
FF 00 

02 00 START OF TINY BASIC 

09 FF END OF TINY BASIC 


EXECUTE AT LOCATION A00 

YOU MOW HAVE A MODIFIED VERSION OF TINY BASIC ON CASSETTE 


TO LOAD PROGRAM: 

ENTER THE FOLLOWING: 

ORIGIN 33 

24 54 

ORIGIN 38 

F0 50 

FF 00 

00 CO 

00 FF 

ORIGIN A00 
BD FB 00 
BD FB 91 
7E 00 CO 


EXECUTE AT LOCATION A00 
TO SAVE PROGRAM: 

INTERRUPT SYSTEM 
EXECUTE N=USR(2555,XX,yy) 

N VARIABLE THAT IS USED FOR ENTRY INTO SAVE 
COULD BE ANYTHING FROM A-Z 
USR USER CALL 
2555 DECIMAL ADDRESS OF SAVE 
xx SECOND CHARACTER OF ID 

FIRST CHARACTER WILL ALWAYS. BE "$" 

THE VALUE GIVEN SHOULD BE IN HEX 
e.a. 65=A, 71=C, etc 

yy SECOND CHARACTER OF ACIA 

FIRST CHARACTER WILL ALWAYS BE "F0" 

THE VALUE GIVEN SHOULD BE IN HEX 
e.g. 80-50, 96=60 

TO LOAD PROGRAM 

INTERRUPT SYSTEM 
EXECUTE N=USR(2500,xx,yy) 

2555 DECIMAL ADDRESS OF LOAD 

all other parameters are the same as above 


SYSTEMS BREAK 
GOTO USR(2552) 

2552 DECIMAL ADDRESS OF BREAK 

THIS INSTRUCTION MAY ALSO BE PART OF CODING IN PROGRAM 


TO INTERRUPT SYSTEM AT THE TINY BASIC LEVEL 
HIT "REPEAT KEY" 

TO IGNORE LINE JUST TYPPED 
HIT "ESC" KEY 


October, 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 


Page 23 



A BASIC TERMINAL EXCHANGE PROGRAM 


Written by Robert Wilcox 
920 N. Washington 

Owossa, MI 48867 Sept. 13, 1976 

The purpose of this program is to add the ability to 
talk to two terminals to those versions of MITS BASIC 
which do not have the console command. 

The terminal change is accomplished by calling a 
machine language (USR) program which has been loaded 
into reserved high memory. The program may be loaded 
by use of the BASIC program given here, or in the case 
of 4K BASIC which does not have the POKE statement, 
by use of the front panel switches. 

When the USR program is called, it interrogates 
each I/O handling location in BASIC. If Port Number 20 
or 21 is found, it is changed to Port Number 22 or 23, 
respectively. If the BASIC is already addressing the higher 
port, it is changed to the lower one. Thus, if one terminal 


is addressed to Port 20-21, and another one to Port 22-23, 
control will be passed back and forth between them when¬ 
ever the USR program is called. 

The USR program may be called by a direct com¬ 
mand, such as: 

X= USR(1) 

or, this may be an indirect (numbered) statement in a 
BASIC program: 

110 X= USR(1) 

The following statement: 

10 X = USR(l):GOTO 10 

will cause control to alternate between the two terminals. 
Typing a Control-C on either terminal will cause command 
to stop at that terminal. 

The program is written for 8K BASIC, Version 3.2, 
supplied on paper tape. “*” indicates data to be substituted 
for the cassette version, and “**” indicates data for 4K 
BASIC. 


BASIC PROGRAM WHICH LOADS THE USR PROGRAM: 


5 REM REMEMBER TO RESERVE MEMORY SPACE WHEN INITIALIZING BASIC 
10 POKE 73,208:P0KE 71)-,31 
20 Ln8l44 

30 READ D$:IF D$-"END" THEN END 

IpO GO SUB 120 

50 POKE L,D: L-I >1 :G0T0 30 

60 DATA 021,355,037,032,376,377,310,157,023,032,114.7,176,376,022 

70 DATA 372,350,037,326,002,167,023,303,323,037,306,002,303,3143 
80 DATA 037 

90 REM USE LINE 100 FOR PAPER TAPE VERSION. 

95 REM USE LINE 110 FOR CASSETTE VERSION. 

100 DATA 301,00lp,3H,00lp, 31l4.,00l4.,323,0014,176,005, 332,005,377, END 
«• 110 DATA 721,OOli.,331,0014,3314,0014,3143,0014,216,005,352,005,377,END * 
120 Dl- VAL(MID$(D$,1,1)) 

130 D2= VAL(MID$(D$,2,1)) 

II 4 O D3- VAL(MID$(D$,3,1) ) 

150 D-Dl*6i4+D2tt8+D3 
160 RETURN 


This is an assembly listing of the USR program. Note 
that the data is different for the different versions of BASIC. 
Before this program can be called by the USR command in 
BASIC, its starting address must be loaded in BASIC in lo¬ 


cations called “USRLOC”. This is taken care of in line 10 
of the BASIC loading program. For 4K BASIC, you must 
load this information in by the front panel switches: load 
320 at location 103, and 037 at location 104. 


ADDRESS LABEL 

DATA 

HIGH,LOW 

037,320 

021 

355 

323 GET 

032 


3214 

376 

377 

326 

310 


327 

157 


330 

023 


331 

032 


332 

11+7 


333 

176 


3314 

376 

022 


MNEMONICS 

037 LXI D DATA 
LDAX D 
CPI 377 
RZ 

MOV L,A 
INX D 
LDAX D 
MOV H', A 
MOV A,M 
CPI 022 


COMMENTS 

D&E POINTS TO DATA 
GET DATA IN ACCUM. 

IS IT END FLAG? 

IF END, RETURN 
PUT DATA IN REG L 
POINT TO NEXT DATA 
PUT IT IN ACCUM. 

THEN INTO REG H 
GET DATA FROM BASIC 
COMPARE W/HI PORT NO. 


Page 24 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 


October, 1976 


284 


RASKIN REPENTS 


INTEL HAS RESIDENT PL/M 


Dear Dr. Dobb, Sept. 15, 1976 

In my article in the last issue [“A Bit of Wheat 
Amongst the Chaff’ I said that Processor Technology 
should have advertised their “3P+S” clearly as a 2 
parallel channel device, with serial port and a control 
port. They should have. But I found a P.T. ad, I am 
happy to say, done a while ago, that mentions in the 
fine print the exact truth. 

They should have, perhaps, called it the 2-1/3 

P+S? 

Jef Raskin 


ERRATA FOR WRIGHT’S ALPHA-NUMERIC 
MUSIC 

Dear P.C.C./Malcolm T. Wright: 

Please be informed that your publication, Alpha¬ 
numeric Music with Amplitude Control, contains a typo¬ 
graphical error in the program listing: 

Page 13, Address 001,103 is 000 
should be 001 

This JUMP references STORE in Page 0, but the object 
listing references Page 0. Source is correct; object is wrong. 

A. Paejh 

P.S.—Sounds fine. Forced me to write a hex-octal key¬ 
board read routine. 

[Why not submit the keyboard read routine for publication 
in DDP. -JCW] 


UNCLE SAM CONSIDERS ESTABLISHING A 
“SCIENCE COURT” 


PL/M, the first and most widely used high-level 
language for microprocessors, was originally only com¬ 
pilable on large machines. A compiler for it is now 
available, however, that is resident on their 8080-based 
Intellec floppy disc system. It requires 65K bytes. 


COMPUTER STORE WORKING ON 
BUSINESS SOFTWARE 

A new computer store, Rainbow Enterprises, is 
reported to be developing programs for very small busi¬ 
ness systems. They are located at 10723 White Oak 
Ave., Granada Hills, CA 91344, (213) 360-2171. 


PDP-11 CROSS ASSEMBLER FOR 6502’s 

For $900, you can get a PDP-11 based cross assembler 
for MOS Technology 6502 microprocessors. The cross 
assembler is written in MACRO-11 and runs under DEC’s 
RT-11 operating system, using 5K words, minimum. The 
price includes one year of product support, as well as source 
code, distributed on a disc. Contact Mike Corder, Compu¬ 
ter Applications Corp., 413 Kellog, Ames, IA 50010, (515) 
232-8181. 


Newsweek 

NEWSWEEK NOTES HOME COMPUTING 


The National Science Foundation and the Department of 
Commerce are jointly studying a proposal to create a Science 
Court. Such a court would be especially organized to handle 
disputes involving highly technical matters, disputes that are cur¬ 
rently adjudicated by courts having judges of no particular tech- 


The August 23rd issue of Newsweek carried almost a 
full-page article titled, “Computers: Home Cooking.” It 
was the usual story of a couple of example installations— 
human interest stuff—with the usual inaccurate underesti¬ 
mates of number of stores and clubs, and the usual inter- 


nical capability. 

view with Paul Terrell of Byte, Inc. 

336 


372 

350 

037 

JM ADD 

IF L0 PORT, ADD 2 

31+1 


326 

002 


SUI 

? 

IF HI PORT, SUB 2 

31+3 

PUT 

167 



MOV M,A 

PUT REVISED DATA BACK 

31+1+ 


023 



INX D 

NEXT DATA 

31+5 


303 

323 

037 

JMP 

GET 

DO IT AGAIN 

350 

ADD 

306 

002 


ADI 



352 


303 

31+3 

037 

JMP PUT 


355 

DATA 

301 


*321 

IS-- 

*170 

FIRST DATA IS FOR 8K 

356 


00)+ 



IF- 

s-00 3 

BASIC ON PAPER TAPE. 

3 57 


311 


*331 


'-■200 

15- INDICATES DATA TO 

360 


00l| 




:-003 

BE SUBSTITUTED FOR 

361 


311+ 


*2 31+ 


:-20 3 

CASSETTE VERSION. 

367 


00!+ 




:-00 3 

-5H5- INDICATES DATA FOR 

363 


323 


*31+3 


:-212 

1+K BASIC 

36!+ 


001+ 



-V-- 

:-00 3 


365 


176 


-”-216 


:-l 6 !+ 


366 


oo5 




*001+ 


367 


332 


-"-352 


:-377 


370 


005 






371 


377 






October, 1976 


Dr. Dobb's Journal 

of Computer Calisthenics & Orthodontia, Box 

310, Menlo Park, CA 94025 Page 


285 










OCTAL DEBUGGING PROGRAM (ODT-80) 
by E. R. Fisher FOR THE MCS-80 COMPUTER 


NOTICE: ‘‘This report was prepared as an account of work spon¬ 
sored by the United States Government. Neither the United States 
nor the United States Energy Research & Development Administra¬ 
tion, nor any of their employees, nor any of their contractors, sub¬ 
contractors, or their employees, makes any warranty, express or 
implied, or assumes any legal liability or responsibility for the ac¬ 
curacy, completeness or usefulness of any information, apparatus, 
product or process disclosed, or represents that its use would not 
infringe privately-owned rights.” 

Abstract 

ODT-80 is an octal debugging routine for use on the 
Intel 8080 microprocessor. This routine provides the capa¬ 
bility to examine and modify all of the memory that is 
available to the microcomputer and transfer program con¬ 
trol to the created program. ODT-80 makes use of simple 
keyboard commands from any terminal—such as a tele¬ 
typewriter—that is attached to the system. 

Introduction 

ODT-80 (Octal Debugging Technique) is a program 


“RE. ARTICLES TELL HOW TO BUILD A 
SYSTEM FOR UNDER $100” 

Dear Bob, July 16, 1976 

For some time now Eve felt that the hardware 
oriented types (like me) who only want to spend 
$100 or so to get started have been completely neg¬ 
lected. I’ve also been approached by many hobby 
groups who want to know more about the COSMAC 
microprocessor. To satisfy both types of potential 
users, I’ve prepared a series of articles showing how 
to build a complete COSMAC microcomputer 
(called ELF) for under $100. This series of arti¬ 
cles started in the August, 1976 issue of Popular 
Electronics, and should be of interest to many of 
your readers who are still looking for a lower cost 
way of getting started. The basic microcomputer 
doesn’t need a terminal since input switches and 
an output display are provided. A novice user can 
actually do more with this system initially than he 
could with a $466 Altair 680 by itself (I have both 
systems). Of course, the COSMAC ELF has no cabi¬ 
net or PC board and you must handwire 12 chips 
together. Other articles in the series will provide 
programs, applications, inexpensive interfaces, memory 
expansion, and a simple operating system. A very 
low cost graphic video display is also planned for the 
ELF microcomputer. I just want to make your less 
affluent readers aware that plans for a low-cost, 
do-it-yourself, micro-computer are now available via 
this series of articles. 

Best wishes, 

Joe Weisbecker 1220 Wayne Ave. 

Erlton, Cherry Hill, NJ 08002 


EDITOR’S NOTE. 
RCA’s COSMAC. 


Joe is the architect/designer of 


written for the MCS-80 that allows the user to modify a 
program via a teletypewriter keyboard. The program oc¬ 
cupies 400 octal words and must be located in the lowest 
memory page of the MCS-80 system, since the program 
uses the RESTART instructions. 

ODT has been proved to be an effective aid to de¬ 
bugging on microprocessors. The first version/ for the 
Intel 8008,* has been “front panel” for virtually hundreds 
of microprocessor applications. The author submits this 
ODT for the 8080 in hopes that the tradition of soft 
front panels may be perpetuated. 

System Requirements 

All addresses of memory locations and contents of 
memory locations are referred to in octal numbers. A 
question mark (?) will be typed for any illegal input. 

The minimum system requirements for using ODT 
are as follows: 

• MCS-80 computer set 

• ODT programmable read only memory (PROM) at 

memory page 000c 

• 256 word (RAM) at page 010o 

• Teletype interface with the following codes: 

OUT 2—SEND ASCII character 


IN 2 - Input word from TTY 
D_, 


D n 


IN 3 - Read flags 11 111 


111 


Sending done — 
Word received 


(flag word) 


Example 

The following example illustrates a typical debugging 
operation. It is assumed that a program has been assem¬ 
bled and that the program is to be loaded by a loader in 
PROM 2. 

A program listing and a detailed description of the 
command set follow the debugging description. 

1. Set the memory field with the S command, and 
read the tape with the R command. 

IQS* ; SET MEMORY FIELD TO 10 
OR ; START READER ON TTY 

? ; WHEN TAPE IS READ IN ODT 

RESTARTS (startup of ODT de¬ 
pends upon the reader program 
in PROM 2) 

2. Start the program with the G command. 

10S ; START PROGRAM AT LOCAT- 

ION 0 
0G 

TEST PWOGRAM 

; TYPED BY PROGRAM WITH AN 
ERROR 


Page 26 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 


October, 1976 


286 










3. Change location (30) to correct output. Restart 

ODT. 

? 

10S 

30 / 327 222) ; CHANGE “W” TO AN “R” 

0G 

TEST PROGRAM ; CORRECTED OUTPUT 


EXAMPLE PROGRAM LISTING 


8080 MACRO 

ASSEMBLER, 

VER 1.1 

ERRORS = 0 PAGE 1 







;0DT TEST PROGRAM 







;10-21-74 


000006 




SEND EQU 

6 


000370 




CRLF EQU 

370Q 







;PROGRAM PROPER 


004000 





ORG 4000Q 


004000 

041 

022 

010 


LXI H TABLE 

;SET UP ADDRESS 

004003 

176 



LOOP: 

MOV A,M 

;GET ENTRY 

004004 

376 

000 



CPI 0 


004006 

312 

016 

010 


JZ ND 

;IF 0 END OF LIST 

004011 

367 




RST SEND 

;TYPE CHARACTER 

004012 

043 




INX H 


004013 

303 

003 

010 


JMP LOOP 

;LOOP 


004016 

315 

370 000 ND: 

CALL CRLF ;SEND CRLF 

004021 

166 


HLT 


004022 

324 

TABLE: 

DB 324Q 

T 

004023 

305 


DB 305Q 

E 

004024 

323 


DB 323Q 

S 

004025 

324 


DB 324Q 

T 

004026 

340 


DB 240Q 

SPACE 

004027 

240 


DB 320Q 

P 

004030 

327 


DB 327Q 

W FOR ERROR 

004031 

317 


DB 317Q 

0 

004032 

307 


DB 307Q 

G 

004033 

322 


DB 322Q 

R 

004034 

301 


DB 301Q 

A 

004035 

315 


DB 315Q 

M 

004036 

0 


DB 0 





END 



NO PROGRAM ERRORS 


8080 MACRO ASSEMBLER, VER 1.1 ERRORS = 0 PAGE 2 





SYMBOL TABLE 





* 01 

A 

000007 

B 

000000 

C 

000001 

CRLF 

000370 

D 

000002 

E 

000003 

H 

000004 

L 

000005 

LOOP 

SEND 

004003 

000006 

M 

SP 

000006 

000006 

ND 

TABLE 

004015 

004021 

PSW 

000006 


Commands 


(n 8 /) - SLASH 
(LF) - LINE FEED 


(.) - PERIOD 
(n g S) - 


Open the n 8 address and type con¬ 
tents in octal. 

Close the currently open address, 
and open the next sequential 
address. The contents of the open 
register may be changed by typing 
the octal number to be input and 
then typing a (CR). 

This operator may be used before 
the (/) operator to open the address 
last used. 

The SET command is used to set the 


(n 8 R) - 


(n 8 G) - 


(CTRL-C) - 

CONTROL-C 


(CR) - CARRIAGE 
RETURN 


H register to the memory page to be 
accessed. 

(EX) 10S ; H=010 g 

The READ operator is used to start 
a loader program in memory page 
No. 2, location 0. If this command 
is preceded by an “nS” command, 
the n value will be passed to the 
loader program in the H register. 

The GO routine is used to start a 
program in memory. The octal 
number typed before the “G” 
operator will set the starting ad¬ 
dress in memory. The “G” opera¬ 
tor should be preceded by an 
“nS” command to select the 
desired page. 

Type out the top two locations in 
stack. (See trap.) Leaves the stack 
pointer at its initial position —2. 

Close the currently open address. 


Utility Routines 


The following subroutines are available to the user as 
utility routines for other programs: 

Address Call 


307 

RST ODT 

367 

RST SEND 

315 

CAL READ 

333 


0 


315 

CALL CRLF 


370 

0 


315 C CAL OCTALP 
301 
0 


Restart ODT program. This is 
useful error branching in pro¬ 
gram debugging. 

Send the ASCII character 
presently in the “A” 
register. 

Wait for a character to be 
received from the teletype 
and return with the ASCII 
character in the “A” register. 
The “A” and “B” registers 
are used in this routine. 

Send a carriage return and a 
line feed to the teletype¬ 
writer. 

The “A” register is used in 
this routine. 

Send a space and type in 
the three digit number in 
the “A” register. 

The A, B, and E registers are 
used in this routine. 


Trap 

The trap feature of ODT works as follows: When 
the central processor encounters a 377 8 as an instruction, 
the processor decodes this as a restart to location 70 8 in 
memory 0 8 . An example of this is when a nonexistent 
memory is addressed, or when a 377 8 is placed in a pro¬ 
gram for a break point. At this time, ODT stores in the 
pushdown stack the address of the errant location and all 
of the registers. The trap indication is a “T” typed out 
on the teletypewriter. Control is now back in ODT and 
multiple Control-C’s (CTRL-C) typed by the operator will 
yield, in sets of two, the trapped information in the fol¬ 
lowing format: 


October, 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 Page 27 


287 





REGISTERS 


PAGE 

NO. 

LOCATION A 

F 

B 

C 

D 

E 

H 

L 

XXX 

XXX 

XXX 

t_ 

XXX XXX 

J _ 

XXX 

XXX 

XXX 

XXX 

XXX 

The "F" register i 

the status flags of the 8080, with the format shown in 

Fig. 1. 

MSB 
(SIGN) 


'1 


1 


r 




°7 







D i 



ZERO 

FLAG—J 

CARRY 1J 

EVEN 

PARITY— 1 

CARRY 

J 



Fig. 1. "F" register format. 


One set for each CTRL-C typed. 


A CTRL-C typed at any time will type out the push¬ 
down stack but not in the format shown above! The above 
above format is only available immediately after a “T” has 
been sent by ODT. 

If a continuous string of “T” are sent to the TTY 
without stopping, this is an indication that the stack 
pointer is pointing at nonexistent memory. It will be nec¬ 
essary to restart ODT. 


for INTERRUPT or RESTART operation. These locations, 
shown in Fig. 2, contain jumps to the scratch RAM mem¬ 
ory number 10, used by ODT. This allows interrupt ser¬ 
vice to be handled even though memory number 0 is pre¬ 
programmed to contain ODT. 

Notes on the 8080 

The stack pointer is reset to location 350o every 
time ODT is restarted via location 0 of ROM 0—in 
other words, whenever a “?” is sent by ODT. ODT and 
other programs use the stack pointer; therefore, memory 
locations plus and minus this location are apt to be over¬ 
written. However, the stack pointer moves down in mem¬ 
ory (high addresses to low addresses), so normal operation 
will keep the stack pointer in RAM 10g. 

Acknowledgements 

I wish to acknowledge the work of Jim English, who 
coauthored with me the ODT for the 8080, from which a 
large part of this program was derived, and Walt Binge and 
Mike Maples, who helped on the preparation of this paper. 

1. E. Fisher and J. English, Octal Debugging Program (ODT) for 
MCS-8 Computer, Lawrence Livermore Laboratory, Rept. UCID- 
16507 (November 13, 1972). 

•Reference to a company or product name does not imply appro¬ 
val or recommendation of the product by the University of Cali¬ 
fornia or the U.S. Energy Research and Development Administra¬ 
tion to the exclusion of others that may be suitable. 


RESTART/INTERRUPT Locations 


•Underlined typeout is typed by the user. 


There are five segments of memory reserved in ODT *° ne set of each ctrl-c typed. 


MEM 

*0 




20 


40 


50 


60 


70 


ODT 

ENTRY 


JMP 

10 

10 


JMP 

20 

10 


JMP 

30 

10 



JMP 

50 

10 


SEND 

ENTRY 


TRAP 

ENTRY 


MEM 

# 10 


10 


- 20 


30 


40 

50 


STACK 

POINTER 



INTERRUPT 

SERVICE 

ROUTINES 


Fig. 2. RESTART/INTERRUPT locations. 


bo 

G 


S 

as 

u 

bo 

O 


O 

00 

I 

Hr* 

Q 

O 


in a 
m r~ 
s r~ 


■O-Q.CLQ_CLQ.CLCLllCLtLCLCLQ-fLCLQ-CLa.0_ 

zrooooozooooozooooor 

:-)-ozzzzz->zzzzz-)zzzzz-> 


o r~ r~ o o o o 

in t- t" — ru ro j- 

MdJOO O O O 

— iDmroaoooofQoooooraooooom 
100-00000000000000000000 
oopomooooomooooopoooooom 


o ru id n oKunoMjiniDooMjiniDhoKijiniDoo 

oooo ooo -njmrunirufuNNMNMMj 

oooo oooooooooooooooooooooo 

oooo oooooooooooooooooooooo 

oooo oooooooooooooooooooooo 

oooo oooooooooooooooooooooo 


Page 28 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 


October, 1976 




































cr in 

O oJ 

ir a: 
cr Q 


¥ cr ui i 

i— 1/1 U 2 O f— 

ui < u o o uj 
o z o o z < o 


> in 
< < 
in z 


in z 
ui o o 
cr a z 


cr 

p 


< 

a 


a 

2 

LJ 

in 


2 

o: 

3 

f— 

UJ 

cr 


ro 

r- 

r- 

ro 

CD 

J- 

T 

ID 

o 

o 

ID 

r- 

ID 

o 

ID 

J- 

J- 


— 

ro 

o 

o 

o 

o 

ro 

— 

O 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

□ 

o 

o 

o 

o 

o 

o 

2 

c_> 






2 



_j 






in 

CL 

o 

cr 

CL 



cr 

2 

< 

< 

Ld 

h- 

cr 

o 


Ld 

Ld 


cr 

CD 

O 

Ld 

o 

z 

Q- 

in 

in 

r— 

« 







* 


J- 

O 

ro 

r* 


— 

ID 

U) 

J- 

o 

r~ 

o 

j- 

ID 

o 

o 

r- 

nj 


ro 

o 

— 

—• 

ro 

— 

ru 

ru 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 


r- id o: m 

o o in ui a 

m o ru cl ru 


_j a o 
cr ro cr < 
i- ai cr 
o m ui • 

• — N 

. im o_ z 
l “5 o 


< ru o uj 
•-Z- 
ui < in < r 


> Q. - u I 

O Z > _J . 

z z tr ( 


o Q UI < CJ O < <>-0 CD Z XO_l 

(D Z - UI < UI >- * *— < ' ID ' O 

ru in < uir-O-i ct h cd t- j < in i < < 

u i— u- —i 

— cr ~i->uuu>-cl cr <_> > i— cr cr > clcl>_j> 

izoisiQino_i_i_iozz;z<z zggz<<ggzog<g 
<ocr<crzcrcrcrz;< - )~cr - > ^^ — ^ 


■ r o — cr cr z cr ' 


r~f'0ioj-t'nr'~mo 

oiDininoincuo 

moruoaimroo 


w ili iu iu - hid r r i uj i - 

i— — — r~ — r~oj-oooofor-iD 

romforororofow — ro o o o — o ro 


r~- j- ro 
o — o 
o ro o 


cvj ro 
o o 
o o 


2 

O 


O 




o 






O 

ID 


ru 



L. 

o 


< 


X 

z 

(_> 

— 


—* 


o 

_J 

>- 


1— 

> 

r— 

cr 

1— 

ru 

o 

ru 

2 

Ld 

cr 

Ld 

Lu 

O 

< 

Id 

Ld 

Ld 

* 

2 

- 

Ld 

CD 

o 

Ld O 

_1 

o 

CD 

in 

i— 

O 

< 

in 

< 

in 







8 ~£H!SDlS?l-KSP;E!iieEP?g2gEPSSSK'?2SR!aRSBRRK 

jjrororo — ooo — i 


t ro ro o ro ro • 


Q- 


f— 

— 

Q- 

O 


Ld 










Z 

> 

in 

> 

Z 

2 


_J 








* 


3 

z 

cr 

z 

3 

Ld 


CD 

















< 

o 

r- 

T 

ro 

ID 

o 

ro 

o 

ID 








l— 

o 

o 

~— 

o 

o 


ro 

CD 

o 









o 

ru 

ro 

o 

o 

— 

ro 

o 

o 








_1 

o 

o 

o 

o 

a 

o 

o 

o 

o 


u_ 






o 

o 

o 

o 

o 

o 

o 

o 

o 

o 


_J 






CD 

o 

o 

o 

o 

o 

o 

o 

o 

o 


cr 






z 











o 






>- 

















in 




















cr 

O 


CL 

a 

o 


O 




o 






C_) 

< 


2 

< 

2 


O 




o 





cr 

Ld 

_J 


•— 

Ld 

Ld 

CL 

O 




o 




CD 

o 

O 

u. 

_J 

2 

cr 

in 

in 

O 

2) 


ru 

T 













ID 



— 

J- 


in 












ru 


ru 

ro 


cr 

















o 











ro 

ID 

r- 

ID 

ro 


cr 




ru 

o 

j- 

P' 

ID 

ID 

ID 

o 

r- 

ID 

r- 

o 


cr 


o 

o 

o 

o. 

o 

o 

o 

J- 

o 

ro 

o 

ro 

o 

ro 


Ld 


o 

o 

o 

o 

o 

— 

o 

ro 

o 


— foiDoroinoruinio — roj-mioo — ajj-iniDo — cxjroj-iniporoiniD—r 
mmmioioior-r-r-r^ooooo — — —— — — — cunjojcucucururorororo 
: rl SC ^ I.. n. w m ki m m m m r -------- — — — — — — 


SgSSSooooSo2222 2 22222ogogo||oooooo|olooloolol 

oooooooooooooooooooooooooooooooooo 

oooooooooooooooooooooo 


id o ru mn 
uDr^r^r-r- 
ro ro ro ro ro 

O O O O O 

o o o o o 

o o o o o 


Z 

< 

cr 

o 

o 

cr 

Q_ 

o 

2 


o 

o 


o o 
o o o 
o o o 


o o 
o o 


o 

tr o 

o »- 

cr x 

3 

2 

o 

>- 


cr uj 

in 

Ld 

z 

h- 

• 

N 

H 

3 

a 

3 

V 

tr 

in 

in 

h- 


in o 

O UJ 

ui cr cr 


j in in >- o u. 


o u 
in id u 
ui ru 3 


ui cr 
o o 
ui z 


33 3 
a. a. 
z z 
— o 


in 


ui 


- o cr cr 

ui cr o < o 

cr < < a. 

o a. x 
o — z o 

< — i o _J 


t'- d >- 
cl cr 

T Z O 


u in < u 

d ui o cr in 

CD >- _i ui — 


o z in 

CL a Q. CL CL CL Q_ 

OOOOOZO>CL(L_j^v-> 

z z z z z -J z o r r < o a. 


_J _J X I I I 

i i ui in in in • 

' ' ■- 3 Z3 D z> : 
CL CL CL CL : 


£ < 
K a. 


?• < ui ai i 


cr 


in 


c o u 


I < O D 0. ( 


cr >ozunjooo zoruo I 
cr < • -o • z ui — - - z 
ui cd in _i < <inm<jrzx<in_j< 

-Hcr>j>ju._j^- 

-inzo<o<z<og 
— • z o z • - ^ ■" 


u h cr o o o o cd ru 

O UJ u - UJ -ui - — 

O < J" CD Z CD < (U 


o o o a in 

in ru o r- < 

— cr ru o in _j 

i ru o ro o ai in 


o a. > > j - *- o. > — > : 

jqzoo< >inzgg | ^g-:v,- 

- — —'- jzcr^zinTZZCE' 


: a* ~> < z z i 


— > cl > — 

u3NOIOQ.Ni 

zcn^z^zo - )! 


O ID > X 
UI Id < Id 
CD CD in z 


o o o 
o o o 
o o o 

r~ x o 
o t r~ 
— ro ro 


ooooorooinroroin — — ro in in in in id 
ooooooo — oo — ininjiuoiD-rr - 
oooooroo - ^ v> m n 


• rororo — rorororororoo 


o j- 
r~ ru 
ru ru 


— — r- o 


j ru in ru r- — 
j r~ ru — o I s «j "j 
irooro — — ooo 


o — ro ru — o — ru r»i '-j - 

r-r-t^ruoro — iDtnior-roruionj — lor-jr-rinininrotnfuipru- 

ruairuroooinr-— r-ioor-ru— ior~iDinr' — r-— o — r-tu — i 
r—. r-z\ — — mi n w ro -— ro ro ■— o ro 3D — ro — rororo* rorn 


i ru — m r' cu o I s id 

> —id — o ru o in j 

fu — ru ru ro o ru — 

lOiDtUiDtUlDlUlDrU 

jn-n-—n- — r-— n- — 
i—forof^ror^rororo 


roj-iniDr-oroj-inoroiDr-o — ruroj-in 

j-j-j-j-j-inminmtDiDfDiDr'r^r'r^r~r' 

oooooooooooooopooog 

ooooooooooooooooooo 

r-.nr->c->r->f»«-jOOOOOOOOOOOO 

''-OOOOOOOOOOO 


r- o □ o o o ■ 


oooooooooo 
ooooooo 
o o O ~ “ ~ 


__„000000000000< 
OOOOOOOOOOOOOOOC 
OOOOOOO OOOOOOOOOOOl 


----rururururururururutururururuturururu 

JOOOOOOOOOOOOOOOOOOOOOOOOOOOO 
JOOOOOOOOOOOOOOOOOOOOOOOOOOOO 

IOOOOOOOOOOOOOOOOOOOOOO'-><-><-»<-i*-'<-> 




October, 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 


Page 29 


289 









* ** ¥= OOPS!: A Line-Drawing Game 

* ^ ^ for Your Video Terminal 

-Martin R. Winzenread 


Go Gn/y Where You Haven’t Gone Before 


I 


You control a cursor with your right four sense 
switches in any combination. Try to draw a picture on the 
screen with a line that never goes through the same point 
twice. 


E.g. can be drawn, but .j^-^^^can not. 

An ‘V indicates that you have been there before. 

You may then restart the program by putting the 
right four sense switches down. 

To change the speed of the cursor, change memory 
locations 0026 and 002C. 

♦Change these statements if your VDM is not addressed 
as port 8C and memory 8800-8BFF 



/■ 




-'Jh 

> 

O 

X 

x 






X 

o 










X 


o 















CD 


N 



X 



«* 


X 




X 

X 

X 


CO 


Q 


x m x <e 


Q 


X CD 

<c 







•» 




•» 

X CO 

■» 




*» X 

•» 


'O 

X 

<C co 


X 


*-< 

Q 

<c o o 

X 


HH 

D 

A 

0 

X 



o 






X 






X 





CO 

Q 

> 

•—i 

tO 

H 

H 

X 

Q 

> 

►H M 

> 

f— 

X 

Q 

> *-• 

> 

H 

Q 


o 

X 

2 ►> 

X 


<£ o 

2 X 

o 

W 


<£0 2 

o 

Cx3 


X 

2 

o 

K S 0J 

X 

Q 

2 

<C O 

2 

X 

2 

Q 

2 <£ 

E X 

X 

X 






D 






Q 





co 

O 

O 

o 

o 

o 

O 

O 

o 

o 

o o 

o 

o 

o 

o 

o o 

o 

o 

o 

O 

— « 

CM 

CO 


O' 

o 

—t 

CM 

CO <f 

in 

O' 

o 

— « 

CM CO 


O' 

o 

CM 

CM 

CM 

CM 

CM 

CM 

00 

CO 

CO 

(O CO 

CO 

CO 


* 




o 

CO 

CO 

CO 

00 

CO 

CO 

00 

CO 

CO 

CO CO 

CO 

CO 

CO 

00 

CO CO 

CO 

CO 

O' 


X 

X 


o 

o 




p- 


CQ 


o 



m 

CO 



o 



CQ 






CO 


CO 


o 



X 

o 



<T 



X 




CD 

o 

x 

o 

VO 

O' 


O' 

O vO 

X 

p- 

O' 

-H 

O' 

o 

vO 

r- 

O' 


CM 

p- 

X 

O CM 

o 

-• 

— 

p~ 

x 

X 

X 

o 



p- 

X 

X 

o 


x 

X o 

CM 

CO 

in 

vO 

O' <£ 

CQ 

Q 

X 

o 

_ 


in 

'O 

CO 

O' <£ 


X 

p- 

p- 

p~ 

p- 

c^ 


p- 

c- 

p- 

p~ 

CO 

00 

CO 

CO 

00 

CO 

00 

00 

o 

o 

o 

o 

o 

o 

o 

o 

8 

o o 

o 

o 

o 

o o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o o 

o 

o 

o 

o 

o 

o 

o 

o 

o 


I 


I 

CO 

O 

§ 

CO 

I 


-^ r 


s 


I 


X 



00 

o 




<t 








X 


X 






















vT 






+ 


Of- 

CO 

CM 


* 


CO 

2 




CD 



X 


o 





X 



X 














•V 

X 




1 

X 



** 





•» 





•i 



X 


*\ 





X 



<£ 














2 

X 





in 

o 

X 

X 

2 

X 

X 


X 

<£ 

X 


r- 

<c 





CQ 

CQ 

X 

o 


X 

X 


CM 

<£ 



X 



X 



X 





X 

X 




•» 


o 



* 

o 

f— 



<£ 

f- 





•» 

CO 



•» 

co 

o 

X 


n 



X 



2 



f- 



X 

CM 


o 

X 


X 

X 

vO 

<£ 

CO 

*—1 

*-« 

H 

A 

CO 

in 

►-H 

> 

CM 


2 


n 

in 

CQ 

2 

*-« 

X 

<£ 

<£ 

2 


o 

2 

2 

X 

—« 

D 

<c 

CM 

Q 

<£ 

•3 1 

X 

<£ 

CO 

J 

2 

r> 


C^ 

o 

<c 

<£ 




x > 




X O 


X 


o 


2 


X 

o 




2 


n 















2 

2 





M 

M 

H 

X 

2 

X t> 

H 

to 

X 

2 

►-H 


1—• 

2 

H 


*—1 

X 


Q 



to 

w 

t-i 


n 

> 

►H 

to 

> 

M 

to 

> 

»-• 

to 

> 

M 

to 

X 


•“< 



to 


X 

!> 




2 O 

X 

2 



X 

to 

t> 


2 

NJ X 

2 



o x 

2 


2 

to 

> 

o 

2 

2 

o 

2 

2 

o 

2 

2 

o 

2 

2 

2 

H 


2 

X 

2 

X 

2 

o 

CD 

f— 

-< 2 

o 

*3 

—« 

CM 

o 

2 

<r 

<£ 

‘D 


"d in 

CO 

2 

o 

~3 2 

<£ 

*3 

2 

2 

<£ 

o 

2 

<£ 

o 

2 

<£ 

o 

2 

<£ 

o 

"3 

J 

vO 

<c 

o 

"3 

"3 




<£ in 




2 

2 



2 





2 

2 





















X 

<£ 





o 

o 

o 

o 

o 

o o 

o o o 

o 

_ 

CM 

CO 

o 

CO 

in 

t- 

o 

CO 

o 

o 

in 

o o 


CM 

in 

o 

o 

m 

o 

in 

vO 

o 

o 

in 

o 

X 

o 

o 

o 

o 

X 

o 

o 

o 

o 

o 

—* 

CM 

CO 

<r in 

'O 

P~ 

o 

-4 

—• 

—t 


CM 

CM 

CM 

CM 

CO 

CO 


in 

in 

vO 

o 

o 

o 

o 

—• 

CM 

CM 

CO 

X 

X 

<r 

in 

in 

vO 

vO 

c- 

o 

o 

—• 

—* 

CM 

X 


O' 

o 

o 

o 

o 

o o 

o 

o o 

o 

o 

o o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 


—• 


—■ 

—• 


o 

—• 

— 

— 

— 

— -• 

—■ 

— 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CO 

CO 

CO 

CO 

CO 

CO 

CO 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

r- 

l> 

t- 


t*- 



XXX 
•» o 
X <£ CO 
2 

O Pu 


* 

X 

CO 

CO 


M h f- 

2 > X 
X S X 


o 

o 


00 

CO 


O <£ 

o co 


o o o o o 
O' o co o CM 


o o o o 


O X O lx, 
o —* o o 




o 

o 


o 

o 


o o 
o o 


o o 
o o 




o 

<£ O 


<£ 

X 

c- 


X 

<t 

X 

Q 

X 



t- 

Q 

X 

X 


<£ 



X 


CM 

_« 


<r 

X 


X 

X 

X 


X 

X 

o 

<£ 

t- 



o 


X 




X 

O CM 


CM 

X 

o 


o 

CM 

X 

CM 

X 



o 

CM 

X 

o 

X 

CM 


o 

p~ 


o 

X 


o 

X 


o 

X 


o 

X 

p- 

o 

X 

o 



X 


X 


X 

o 

X 

CM — 

X 

X 

<£ X 

X 

X 

<c 


X 

_ 

CQ 

X 

X 

CM 

(Q 

X 

<£ 

X 

p- 

X 


X 

X 


X 

X 


X 

X 


X 

X 

CQ 

X 

X 

CM 

X 

X 

o 

X 

o 

X 

O' 

CM 


X 

O CM 


X 

O X 


X 

o 

o 

o 

o 

o 

f- 

X 

o 

Q 

X 

o 

X 


X 

o 


X 

o 

t- 

X 

o 

p- 

X 

o 

o 

X 

Q 

X 

X 

o 

o 

CM 

p- 

X 

O CM 

o 

O Q 

X 

O X 

X 


O' 

o 

X 

X 

— 

•<r 

r- 

<c 

Q 

X 

X 

_ 


X 

X 

CD 

Q 

X 

o 

X 

<r 

X 

O' 

<c 

o 

u. 

o 

CM 

in 

X 

<t 

o 

X 

o 

X 

X 

p- 

X 

<£ CQ 

Q 

o 

o 

o 

—* • 


—• 

—» 

—« 


—• 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

X 

X 

X 

X 

X 

X 

X 

<T 

<r 



<r 




n 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

o 

o 

o o o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 


o o o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 


Page 30 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 


October, 1976 


290 




SCRUNCH (P ass 1): 


3 




s 


A Compactor for 

BASIC in 8080 


&sa 


00IFY-2M: 


—Martin R. Winzenread 




* 


o 

■“ a 
*, * 
^ a 
.a o 


-a 


•o 

a 




a s 

CO 


Scrunch readable source code into a form that only a 
computer could love. Run bigger programs with less memory. 
Input original source code by paper tape, then dump your 
scrunched code to paper tape or cassette for later use. 

I am presently working on PASS 2 which eliminates 
unnecessary line numbers by using the multiple statement 
per line feature. 


K 
o • 


X 

P 


Z 
P 

P ^ X 5> 

•» •* ►“» O S 

QMQo-SX<CK 


X 

O 

O 

CO 

CO 

! a vo 
03 


CQ o 

<2 P o, t no 

0,20002(3)2022022 <£ X 

co X vi <£ 2 

OOOOOOOOOOOOOOOOOO 

coo'o-*c\ino-«cMc y )Nrin\o^i»o-<o] 

oooooooooooooooooo 

iQi/)vO\OvOtot s 'f>r^f'^c^t^p't'COcoco 


o 

o 


Q 

O 


O 

o 


w 

<2 


UO-Q<JOt**CO'OoOO'QOn 

fcOQl/)l/)OMMMQOMBOO 

QU.O — CVJCOvOf'COO 


P O. O ~ CUOvOf~COO<C(noOCd — -*t-- 

O*O'<C<2<2<2<2<2<C<t<i<2<i:<C<2CQmC0 

OOOOOOOOOOOOOOOOOO 

oooooooooooooooooo 


g“fr 

O o 


©o 

S s CQ 

« ao 

§ § g 

Ho ** 
cp <v, 

§11 


«■ 

,8) 


ft} 


o 

lx 

hj 

t-1 


S 8J 

g 

Q 


E-x s 

S s 

I! 

j>i 

02 


I 

CCJ 


.8 • 


8 

■S 

s 


£ £ 


til 


3 

I" 




§*' 

■o o 

aft; 


Sx 

Tati* 

s * 

^ 

^ s Q 
a X, s 
■8^ » 
S' .£p e 




H 

H 

s 

VJ 






































03 


CQ 

H 

03 




CQ 

f- 










vO 


X 

X 

CQ 

X 


CQ 





_ 











m 










X 










fc 


cn 

? 




to 








o 


+ 

X 

<2 <2 


OJ 


H 

03 






s 



£ 






a. 


K 



03 

03 

03 


_ 

> o 



fc 





















f— 

X 


H 

H 

P CM 


CO 

H 



CQ 

» 



CQ 


CQ 



<t 

« 



CQ 

fc 


fc 


Ox 

P CM 


CQ 


CQ 


OQ 


CQ 


p 

CQ 




p 

§ 

o 







p 

<2 

to 

to 

P 


H 


>- 

X 


X 


* -s 

w 

. 

<£ 

U3 

• 

X 



C£ 


X 

03 

• 

X 


• 

X 

<fi - 

X 

03 

o 

X 

03 


X 



p 


1 


p 


X 

03 



X 

X 

52 

* 

■» 

* 

•» 

<2 


03 

P 

p 

CM 

CO 



X 

z 


►H 

Z 

H 




i-4 

*-« 

p 

z 


H 

CQ 

CQ 

CQ 


•s 


X X 

*-« 

Z 

03 

»—i 


s 

*-* 


P 

o <c 

P 




<2 


z 

o 

fc 



Ox 

CM 


'O 

CQ 

x p 

O CL. 

p 

P 


CM 

<c o 

Qx 

Qx 


• 

o 


» 

o 

X 

X 

o 

a 

CQ 


m 

o 




X 


O Qx 

n • 

o 


» 

o 


• 

o 


P 

Z O 

P 

m 

CM 


o 

o 

►H 

CM 


xX 

r- 


ts3 






O 


<2 

p 




o 


J 



P 






o 


p 



P 

P 

P 

X 


O 

o 


P 



p 


CD 

<t 



<2 


z 






CQ 






w 

H 

*—• 


<j: 


M 

o 

p 



£X 


M 

p 

*-» 

tsj 

P 

*—• 

Cvj 

X 

X 

Q. 


M 

p 

M 

N 

P 

P 

P 

»-x 

Qx 

»—• 

tsl 

P 

M 

M 

p 

M 

N 

X 

O 

Ox 

5 

o 



H 

CQ 

Ox 

03 

M 


H 

»-* 

M 


X 

X 

XXK 

o 

z 


<2 Ou 

z 

Z f-* 

Z 

<u 

a 

z 

<C 

Q. 

Z 

o 

o 

s 

w 

Z 

<£ 

0. 

Z 

<C 

<C 

<t 

o 

> 

s x 

M Ox 

z 

< 

0, 

Z 

<e 

Qx 

z 

8 


z 

Qx 

w 

03 

X 

z 


z 

N3 

z 

D 

Z 

0. 

f— 

p 

p 

P 

P 

M 

o 

"D 

o 

o o 

o 

*Q> W 


o 

o 


o 

o 


p 

p 

cr: 


o 

o 

o 

o 

O 

o 

p 

s 

^ p 

O 

"0 

o 

o 


o 

o 

"0 

o 

^ C*3 

CM 

o 

"D 

K 



<2 

"0 

t—1 

o 

<2 

o 

P 





O <3 


<C 
















0, 










CQ 










z 


z 

Z 




o 


ca 







X 

o 

O 

o 

o 

O 

o 

o 

o 

o 

O 

o 

O 

o 

O 

o 

o 

O 

o 

o 

o 

o 

o 

o o 


o 

o 

o 

o 

o 

o 

o 

O 

o o 

O O 

o 

o 

o 

o 

o 

o 

O 

o 

o 

o 

o 

o 

o 

O 

o 

o 

o 

o 

in 

O 

o 

o 

o 

o 

o 

o 

—• 

03 

CO 

to 

CO 

<T 

in 

'O 

f- 

CO 

O' 

o 

—X 

CM 


in 

vO 

CO 

Os 

o 

—4 

CM 

o 

o 

CO 


m 

O' 

o 

—« 

CM 


in o 

— CM 

CO 


v£> 

t" 

CO 

o 

x-S 

CM 

co 


o 

x-4 

CM 

CO 

<7 

CO 

O' 

o 

o 

_* 

CM 

co 

•5 1 

in 

sO 

o 

O 

o 

o 

O 

o 

O 

o 

o 

o 

o 

O 

—« 

-x 

—X 

—* 

-X 

-x 


-x 

CM 

CM 

CM 

m 

in 

in 

in 

in 

in 

vO 

SO 

sO 

vO 

vO o 

O O 

o 

o 

o 

o 

o 

o 

o 

O 

o 

o 

CO 

00 

CO 

CO 

CO 

O' 

O' 

o 

o 

o 

O 

o 

o 

o 

o 






CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM CO 

CO CO 

CO 

CO 

CO 

CO 

CO 

<r 

•=r 

<T 


<r 


<r 

■MT 



<7 

<r 

in 

in 

in 

in 

in 

in 

m 

in 

o 

CQ 

CO 

CO 

O 


O 

o 

O 


o 

O 


O 

O 


O 

O 


O 



O 


O 

o 


o 

o 

O 

O 



o 

O 

o 

o 


O 

o 


o 


o 

o 

o 

o 


o 


o 

o 



o 





o 

o 

CO 

CO 

CO 

O 


O 

o 

O 


o 

O 


o 

O 


o 

O 


O 



O 


o 

o 


o 

o 

o 

O 



o 

O 

o 

o 


O 

o 


o 


o 

o 

o 

o 


o 


o 

o 



o 





o 

c- 

t*x 

o 

o 

CQ 

CM 

CM 

vO 

CQ 

CM 

<r 

in 

o o 

O' 

m 

in 

O' 


in 



o o 

CO 

O' 

CM 

in 

CQ 

CQ 

CQ 


Ox 

in o 

O CM 

in 

O' 

in 

in 

O' 

p 

in 


CQ 

CO 

vO 

OQ 

O 

o 


SO 

o 

o 

o 

P 

-X 

_ 

0x 

CM 

<2 

CQ Ox 

o 

o 

CO 

CM 

CM 

<2 

CO 

CM 

— 

CO 


CO 

C' 


CO 

C" 

in 

CO 



o 

in 

in 

c- 

in 

CO 

CO 

CO 

CO 


CO 

CO CM 

o in 

CO 

r- 


CO 

t- 


CO 


CO 

c- 

<c 

CO 

CM 

r> 


<2 

o 

o 

CM 

co 

o 

o 

e- 

— 

O' 


-X 

— 

-4 

p 

03 

CM 

Q 

P 

W 

CM 

CO 

W CM 

p 

u 

CM 

P 

p 

CM 

CQ 

CQ 

CO 

w 

CM 

p 

u 

CM 

p 

p 

P 

CO 

03 

ro 03 

<t 03 

CM 

P 

p 

CM 

p 

03 

CM 

CO 

p 

co 

p 

P 

03 

<2 

O' 

p 

CO 

CQ 

vO 

<2 m 

CO 

\0 

03 

<2 

CO 

o 

CM 

"■* 

o 

u. 

O 

o 

O 

U, 

O 

o 

CZx 

o 

o 

Ox 

o 

o 

u. 

a 

CM 

CM 

O Ux 

o 

o 

Ox 

o 

o 

o 

O CM 

CO 

O Ox 

O Ox 

o 

o 

fx. 

O 

o 

Ox 

O 

03 

o 

o 

o 

o 

Ox 

o 

o 

o 

o 

P 

03 

o 

P 

P 

w 

Ox 

o 

O CO 

vO 

O' 

o 

0. 

— 


P- <2 

O 

U. 

CM 


c- 

<x 

o 

Ux 

CM 


r~- 

CO 

O' 

o 

Id 


<r 

vO 

O' 

o 

Ox CM 

CO 

in co 

<C P 

Ox 

CM 

in 


<2 

P 

Ox 

CM 

CO 

NO 

O' 

o 

0, 


3 

in 

00 

CQ 

p 

0x CM 

<T 

vO 

CO 

<2 

O 

o 

O 

o 

O 

o 

— 

—< 

—* 

—x 

—« 

—« 

CM 

CM 

CM 

CM 

CM 

CM 

CO 

CO 

co 

CO 

CO 

CO 

CO 







in 

in 

in in 

in in 

in 

vO 

tD 

vO 

SO 

vO 

\D 

C" 

o 

c- 


c- 

CO 

CO 

CO 

CO 

DO 

CO 

O' 

O' 

O' 

O' 

O' 

O 

o 

O O 

o 

o 

O 

o 

o 

O 

o o 

O 

O 

O 

O 

O 

O 

O 

o 

o 

O 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o o 

o o 

o 

O 

o 

O 

o 

o 

o 

O 

o 

o 

o 

o 

o 

o 

O 

o 

o 

O 

o 

O 

o 

o 

o 

o 

o 

O O 

o 

o 

o 

o 

O 

o 

o 

o 

o 

o 

O 

O 

O 

O 

O 

O 

O 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o o 

o o 

o 

O 

o 

o 

o 

o 

o 

O 

o 

o 

o 

o 

o 

O 

o 

o 

o 

o 

o 

O 

o 

o 

o 

o 

o 


October, 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 


Page 31 


291 
















TINY Nl 


by Martin Buchanan 

Dear DDJ, Sept. 2, 1976 

For the past eight months, I’ve worked on designing 
my own programming language. I’ve now conceived sev¬ 
eral clean and fairly powerful procedural languages. The 
simplest is described in the attached article. I also expect 
to specify TINY LISP, and TINY SNOBOL in coming 
months. Core is cheap compared to people, and the 
major economy I want is in syntax, number of data 
types, and number of data structures seen by the user. 

One key to such economy is the elimination of the 
multilevel approach and the specialization that character¬ 
izes much existing system software. Software that is 
“OS dependent” is even less portable than machine code 
on many systems. I don’t want the user to have to 
learn assembler, editor, JCL, file handling packages, etc. 

I want him to see conceptually, and syntactically integra¬ 
ted systems. 

During the latter part of my spinning of imaginary 
languages, I’ve become dissatisfied with my previous defi¬ 
nition of HI, as a procedural language which is both 
cleaner and more useful than PL/1, and incorporating 
associative retrieval, pattern matching, and list processing 
facilities. Several ideas have changed my direction: 

1. A tiny language (or any language) should be extensible. 

2. Most existing extensible languages (LISP, TRAC, 
FORTH) are limited by primitive syntax. 

3. The concept of “set” or “relation” is powerful enough 
to include all the diverse data structures found in 
computer applications, and to manipulate them with 
common tools. 

4. A further equivalence can be established between 
relations and functions; one is defined extensionally; 
the other is defined operationally. 

5. The relational calculus is a powerful form for manipu¬ 
lating such structures. In the past, it has been re¬ 
stricted to data base operations (Codd’s DSL ALPHA). 

6. Declarations make it feasible for the user to see only a 
single data structure, ignoring the different internal 
representations of structures. 

I’m attempting to design an extensible relational 
language with a context-sensitive grammar. Work is pres¬ 
ently stalled by a 50-hour work week, 17 semester-hours 
of school, my home computer, and a promised article. 

FORTH is a fascinating new language ($1000 for 
8080 systems). I’ve ordered manuals, and will report on 
what I find out. 

DDJ is great; things like your floating point routines 
for the 6502 (which MOS Technology did not have avail¬ 
able) really help. 

Design for the future! In 5 years your home com¬ 
puter will be a 64K memory, 16 bit dynamically micro- 
programmable processor, four billion bytes of fast mass 
storage, and goodies I can’t imagine. 

Keep up the good work. 

Martin Buchanan 2040 Lord Fairfax Rd. 

Vienna, VA 22180 
(703) 893-7978 


HI is a family of general purpose programming lan¬ 
guages designed in 1976 by Martin Buchanan. TINY HI 
(TINY) is the simplest version of HI designed, and will be 
implemented on the author's IMSAI 8080 system when I 
find the time. 

TINY is a hybrid interpreter-compiler running on a 
dedicated virtual machine with virtual memory. TINY is 
completely structured. There are no GOTO statements or 
labels. There is no COMMON or RETURN; procedures 
have one entrance and one exit. TINY is a debugging 
translator, insuring that variables are defined, monitoring 
subscript range, etc. 

TINY supports two data types, INTEGER, and 
STRING, and one data structure, the vector. Memory is 
allocated dynamically, and data type is determined at 
execution time, or by context, eliminating declarations. 

The simplicity of TINY syntax, the small number of 
well defined operators, the ability to manipulate vectors, 
convenient input-output, and flexible commenting and 
mnemonic naming facilities, all combine to make TINY a 
very clean, easy to learn and use, language. 

In the examples below, both interpretive sessions and 
programs are excerpted. TINY outputs are underscored. 

4 is used to indicate a carriage return. 

Arithmetic: 

Numbers in TINY are integers i: -2^®< i < 2^-1 

4 infix arithmetic operators are defined: 

+ addition 
- subtraction. 

Multiplication 
/ division 

Division by zero or overflow will produce an error 
message. 

1 prefix arithmetic operator is defined: 


- negation 

Negation cannot produce an error. 

The hierarchy of operators in TINY is: 


highest 

0 

[] nesting or subscripting 


h 

(Blank) concatenation 


# 

* 

(number) - (negation) 

/ 

lowest 

+ 

< > < = >=<> 


Expressions are evaluated from left to right. 
Vectors: 

Numbers may be concatenated to form vectors: 
A + 1 2 
A-f-A34 
A 

12 3 4 


The left pointing arrow, is assignment. Any ex¬ 
pression standing alone on a line is output. Vectors of 


Page 32 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 October, 1976 


292 



equal length may be combined in expressions: 


Tiny 


Control. STRUCTURES 


123+456 

5 7 9 


Vectors of length one may be added, subtracted, etc. 
to another vector and be "distributed": 

1+456 

5 6 7 


The prefix operator # (number) returns the number 
of elements in a vector or string: 

#5 73 -1 
3 

Both integer vectors and character vectors (strings) 
are limited to 255 elements. 

Strings: 

A string is a sequence of characters, other than ", 
enclosed in quotes: 

"THIS IS A STRING" 

A string may contain no characters: 

" " I* the null string */ 

Strings may be concatenated: 

A +- "JOHN" 

B +- "AND" 

C +- "MARY" 

ABC 

JOHNANDMARY 


Subscripting: 

Vectors and strings can be subscripted by integer 
expressions: 

A +- "ALGEBRA" 

A[5 1 3 2] 

BAGL 

Note that: x[i j k] is equivalent to: 

x[i] x[j] x[k] 

Global variables: 

Globals are available to all TINY programs, and nor¬ 
mally exist before and after program execution. I/O 
devices, data files, programs, and convenient system con¬ 
stants (.TRUE) are all good globals. All variables defined 
in the interpreter are globals. Globals are distinguished by 
use of the period prefix when referenced: 

.SIN 

.EMPLOYEE-FILE 

.PRINTER 

Programs: 

TINY programs have only one entrance and one 
exit. Parameters are passed by location. Assignment to 
parameters is prohibited within a program. Programs can 
return vector or string values, and are invoked by use in 



El.se 

co<fi.e_ B 

EW5 



Co 




UNTIL p 
c_o XU. A 


IWHiLE p 
coflt A 






October, 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 Page 33 


293 




























an expression. Sample program: 


BEGIN MOD (A,B) 

/* 

RETURN THE REMAINDER OF A/B 

7 

MOD -e- A—B*(A/B) 

IF MOD<0 
MOD -MOD 
END 
END 

BEGIN GCD 
?X ?Y 
IF X <Y 
T X 
X <-Y 

Y T 
T 

END IF 
R -r- Y 

WHILE R > 0 
R -r- .MOD (X,Y) 

X -r- Y 

Y -r- R 
END WHILE 
"GCD=" Y 

END GCD 


/* 

USE EUCLID'S ALGOR¬ 
ITHM TO FIND GREAT¬ 
EST COMMON FACTOR 
OF X AND Y. 

7 


The program GCD has several unusual features. 

?X ?Y forces the evaluation of the expression ?X ?Y, 
which inputs X and Y, without making any assignment. 

T deletes T, allowing the compiler to reuse the allo¬ 
cated space. As shown by END IF, END WHILE, and 
END GCD, "noise" may be added to END statements; 
normally this is used to indicate the structure ended. /* 
begins the reservation of all columns to the right of, and 
including /* for comments, until 7 is encountered. In 
TINY it is easy to implement Gerard Weinberg's concept 
of placing comments on the right hand side of the page, 
to be covered during debugging. 

The program as shown is unusual; except in intro¬ 
ductory programming classes, main programs do not calcu¬ 
late greatest common factors; also the mnemonic name is 
inconsistent with the use of "greatest common factor," 
rather than "divisor." To rewrite the program as a func¬ 
tion, it should also be changed so that the values of the 
parameters are not changed.*: 


*This change is now required for program correctness 
reasons. 


BEGIN .GCF (XD.YD) 
X -f- XD 
Y YD 
IF X <Y 
T X 
X +- T 

Y -t- T 
T +- 
END IF 

R -t- Y 

WHILE R > 0 
R +- ,MOD(X,Y) 

X <- Y 

Y ■*- R 
END WHILE 

END .GCF 


r 

USE EUCLID'S ALGOR¬ 
ITHM TO FIND GREAT¬ 
EST COMMON FACTOR OF 
XD AND YD. 


Flow of control: 

TINY control is always based on an expression 
which is true or false, called a predicate. TINY does not 
include logical variables or operators. All TINY predicates 
are of the form: 

<exp > < relational > <exp> 

The two expressions must agree in type. Vectors or 
strings must be of equal length to be equal. The first 
element of a string or vector is most significant when 
evaluating a predicate; the last element is least significant. 
TINY has two basic control structures with a total of four 
variants: 

Do one thing or another depending on a predicate; 

Repeat something until a predicate changes. 

These structures are illustrated in the accompanying 
figures. 

input-output: 

To output an expression, simply place it on a sep¬ 
arate line. If a string expression, the string is output. 
Integers are converted to a 6 character string with leading 
zeroes replaced by blanks and any minus sign to the im¬ 
mediate left of the most significant digit. In output, con¬ 
catenation between integer and string expressions is allowed: 

"A+B=" (A+B) 

To input a variable, anywhere, place a question mark 
before the variable. Input is free format. Input and out¬ 
put may be combined in one statement, like the INPUT 
statement of some BASICs: 

"A=" ?A 

A=37 


Operating System (OS): 

TINY is its own operating system. Users run on a 
dedicated machine (their own micro) or a virtual dedicated 
machine. Programs are automatically compiled when 
defined and recompiled whenever source code is changed. 
TINY will include access to a virtual machine level where 
relocatable and reentrant machine code may be written 
using an assembler. This level cannot be defined until 
subroutine linkages and data formats are defined in 
greater detail. TINY has a virtual memory; the user sees 
a single large homogeneous memory space. Files, pro¬ 
grams, utilities, and system variables are all represented 
as global variables in this memory. 

Conclusion: 

I'd appreciate feedback about TINY design and im¬ 
plementation. My address is at the end of this article. 


Program correctness: 

It is straightforward to construct correctness proofs 
for TINY programs. Relevant features include: 

Restricted control structures; 

All programs have only a single entrance and exit; 
Programs return only a single structure; 

Parameters may not be altered by programs; 

No floating point arithmetic (10.0*.l7 t 1.0); 

External variables share a common name table, and 
must be explicitly indicated with the . prefix; 

The deletion feature explicitly delimits the range of 


Paae 34 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 


October, 1976 


temporary variables; 

The simplicity of the language. 

These features do not follow from the desire for a 
small language. GOTOs would be easy to add, and check¬ 
ing for assignment to parameters will actually cost core. 

I maintain that one should not add features to a language 
indiscriminantly, considering only available core or CPU 
time. Psychological factors can also make a language good 
or bad. PL/1, APL, "SUPER FORTRAN", "BASIC PLUS" 
are all baroque languages, whose descriptions occupy size¬ 
able books and whose complete features are rarely mas¬ 
tered. 

"I see a great future for very systematic and very 
modest programming languages." — The Humble Program¬ 
mer by E. W. Dijkstra 

TINY LANGUAGE SUMMARY 

Vocabulary: BEGIN END IF ELSE WHILE UNTIL 
Comments: /* */ 

Arithmetic infix operators: + — * / 

Arithmetic prefix operators: - 
Concatenation: 16 (blank) 

Length operator: # (number) 

Relational operators: 

Assignment: 

Input: ? 


Global: 

Data types: INTEGER, STRING 

Data structures: the vector 

Maximum number of elements in a vector: 255 

Formats: Integers convert to a six character string 

TINY ERROR MESSAGES 

compile: assignment to parameter 

mixed mode 
value undefined 
global undefined 
unmatched parenthesis 
missing end statement 
syntax error 

execution: overflow 

division by zero 
vector too long 
string too long 
subscript out of range 

Direct letters about TINY HI to: Martin Buchanan 

2040 Lord Fairfax Rd. 
Vienna, VA 22180 




TINY HI SYNTAX 

TINY HT 

SYNTAX 

Bottom 

Up 

"Top Down 

K i-crrefC} 

;:= A|B-|2 

^ PROCrfKAt*} *•' 

BEGIN ■[ J (n4Me)} 0 ) 2 

{oicnr} 

■•••= 


{ {pruRAm) 

{.alpha} 



^JCCOD*^ 


:: =Ho f <o ' 4,T> }, 5 


(.GhD^ 





^P.eLAT(onAL/> 

>h»|>=|<«|<> 

(xstmt) 

: {lllp} | 

{haac} 

- f?} 0 {<4LP,A>}* j 

(«•) 

- ENDi 


{. j <I.FTreR> { {alpha}>J* 5 

<-r> 

- X F & Kenp 

Kv«fl 

•• - Knams)” £ [ K/nrc6eA e* p ^J J Q 


Kxcope} 

^/wT«6e/», e*?y 

• • = ^/HT€&eA^> j j CTIO»y | 


{ELSE p 


Kinr€(r€A £*py J 


<,c.«> }' c 


cxr) ^ore^AroK.y {iNreceA exp^J 




KlNTC&fA exp) 




” - <M«f) ( {p*r/C> {j <e»PR>j-” ) 


^xco»e) 

{pKPp} 

• ' — ^/«re<S-€A evp) J fxp) 



{srRWL HXP}> 

• • " ^iT8) N &)| | ^FoMCTf* 

{t-of Type} • : 

= WHILE ) UNTIL 


(srAlUO EXpy "fo ^STA/Nt exp} 


- K.AiriAfti.f) +- {Ks*e«) > J 0 P 

^PfKe.9 tCAT£^> 

**• = expy ^relationA i.y <fiir€6€«. J 


= {c*Pr} {f*Pl<}} 0 P 


■<Csr<UM6- {RELATIONAL} ^STAIHG 


October, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 Page 35 


295 








Book Review 

COMPUTER POWER AND HUMAN REASON 

Reviewed by Dave Caulkins, 437 Mundel Way, Los Altos, 

CA 94022, (415) 948-5753 

Computer Power and Human Reason 
by Joseph Weizenbaum 
W. H. Freeman & Co., 1976 
300 pp. $9.95 

Tins is a book that should be read by anyone seriously 
interested in or affected by computers, a recommendation 
that includes most of the population of the U.S. The broad 
interest of the book is indicated by its selection as a Book- 
of-the-Month alternate. Professor Weizenbaum is a talented 
man who has been doing inpressive work in computer sci¬ 
ence for a long time. In this book he performs the difficult 
feat of humanistic perspective. Weizenbaum’s central theme 
is that the range of human capabilities and concerns is both 
profoundly different from and immensely larger than any¬ 
thing a computer can do. Too many people in the Arti¬ 
ficial Intelligence community of computer science research 
believe that there is no human activity that cannot eventu¬ 
ally be done by a computer. Weizenbaum is strongly criti¬ 
cal of this view; he rightly sees it as the worst kind of blind 
hubris. 

Some quotes from the book give the flavor of Weizen¬ 
baum’s arguments: 

What could be more obvious than the fact that, what¬ 
ever intelligence a computer can muster, however it may 
be acquired, it must always and necessarily be absolutely 
alien to any and all authentic human concerns? The very 
asking of the question, “What does a judge (or a psychia¬ 
trist) know that we cannot tell a computer?” is a mon¬ 
strous obscenity. 

The theories—or, perhaps better said, the root metaphors — 
that have hypnotized the artificial intelligentsia, and large 
segments of the general public as well, have long ago deter¬ 
mined that life is what is computable and only that. As 
Professor John McCarthy, head of Stanford University’s 
Artificial Intelligence Laboratory said, “The only reason we 
Iwve not yet succeeded in simulating every aspect of the real 
world is that we have been lacking a sufficiently powerful 
logical calculus. I am currently working on that problem. ” 

Sometimes when my children were still little, my wife 
and I would stand over them as they lay sleeping in their 
beds. We spoke to each other in silence, rehearsing a scene 
as old as mankind itself. It is as Ionesco told his journal: 
“Not everything is unsayable in words, only the living truth. ” 

In support of this central theme Weizenbaum deals with 
some necessary background material. He presents an explan¬ 
ation of the theoretical basis for the power of machine based 
information processing, including a treatment of Turing 
machines. These sections are not what I would call light 
reading, but attention to them offers even the lay reader 
considerable insight into computer functioning. Weizenbaum 
also has a fascinating theory about the existence of hackers 
(compulsive programmers). As one who enjoys periodic 
fixes of code-writing and debugging, I found this theory es¬ 
pecially interesting. 

Professor Weizenbaum has written a book of substantial 
importance. As man’s information processing machines 
become ever more powerful and pervasive, it is vital that we 
use computers for human purposes, and not the other way 
around. 


TUTORIALS FROM THE IEEE COMPUTER 
SOCIETY 

Minicomputers and Microprocessors: A Tutorial, Gaithers¬ 
burg, Maryland, May 26, 1976—271 pp. 

Review of recent developments in both minicomputer 
and microprocessor technology. 

Each chapter begins with a short section which intro¬ 
duces the topics to be discussed and also highlights the 
significant points found in the chapter. Topic headings 
include technological advances, microprogramming, mini¬ 
computer architectures, microprocessors, mini and micro 
computer system development, and interfacing and peri¬ 
pherals.—$12.00 

Microprogramming: A Tutorial, Long Beach, California, 

May 17, 1975-309 pp. 

Text includes an introduction by the instructors, J. 
Michael Galey of IBM and Richard L. Kleir of Browne and 
Ramamoorthy, Inc., and 19 papers on microprogramming 
in six general categories: introductory papers, micropro¬ 
grammed architecture and languages, production of micro¬ 
programs, emulation and direct execution, microprogram 
applications other than instruction execution, conclusions, 
and perspectives.—$12.00; $15.00 Hardbound 
Minicomputer Realtime Executives, from COMPCON 74 
Fall, September 9, 1974—208 pp. 

Of central importance to the economic realization of 
minicomputer applications is the realtime executive. Appli¬ 
cations such as data acquisition, process control, and com¬ 
munication, are briefly discussed to identify their needs in 
a realtime executive. The main elements of these execu¬ 
tives discussed include memory management, scheduling, 
data structuring, file handling, interprogram communica¬ 
tion, and control structures.—$15.00 
Tutorial on Computer Peripherals, from COMPCON 74 
Spring, February 25, 1974-48 pp. 

Digest presents broad perspective of peripherals industry. 
Excellent preparation for students, generalists, and those 
who have not been working directly in the field. Topics 
include trends in computer hardware and remote terminal 
systems, magnetic recording technology, use of peripheral 
devices in remote systems, and future projections in hard¬ 
ware and software. —Microfiche only, $9.00 
Structured Programming, from COMPCON 75 Fall, Septem¬ 
ber 8, 1975-241 pp. 

This tutorial includes an introduction to the major ideas 
of structured programming, and their theoretical and practi¬ 
cal foundations; a detailed presentation of a major applica¬ 
tion program system, and a presentation of program develop¬ 
ment stressing the top-down evolutionary character of the 
process.—$12.00; $15.50 Hardbound. 

Computer Networks: A Tutorial, Gaithersburg, Maryland, 
June 18, 1975—296 pp. 

The tutorial convers the areas of network topology and 
communications media, network technology and its effect 
on network performance, resource sharing requirements and 
techniques, and new approaches to network performance 
measurement, network access and network management. 

The general approach enables presentation of terminology 
and concepts followed by specific examples. The presenta¬ 
tion stresses breadth rather than depth, and in turn pro¬ 
vides network novices with a firm basis for becoming better 
educated on specific topics.—$12.00 
Send Order To: IEEE Computer Society, 5855 
Naples Plaza, Suite 301, Long Beach, CA 90803 


Page 36 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 October, 1976 


296 



PASCAL, SEXISM, VRAM, STRUCTURED 
PROGRAMS, VARIABLE SPACING & GAMES 


“STM BABY & VIKING VISION” 


Bob, July 29, 1976 

. . . Speaking of neat things, the STM BABY! computer- 
in-an-attache-case [STM Systems, Mount Vernon, NH 03057] 
is the neatest thing I have seen in a long time. Not just a 
computer but also an ASCII-plus-Greek keyboard, cassette 
interface, video display generator, ROM monitor, etc., with 
a loudspeaker for audio output! Now, if they could only 
cut the price to $500 instead of $850 for their 2K system. 
[Photos and write-up in August Byte, pp. 122-124], 

JPL reports that the on-board Viking computer is work¬ 
ing OK. I hope it keeps on working-the nearest customer 
engineer is probably in Helium City. As astronomer Carl 
Sagan pointed out recently, animals on Mars may sleep 
during daylight hours because of the uncomfortably high 
temperatures (-20 F) and harmful ultraviolet rays. No one 
thought to mount a spotlight on Viking to allow pictures 
of Martian nightlife. The Viking camera did spot what 
looked like an inscription on a nearby rock, though; when 
translated (where is John Carter now that we need him?) 
it will probably be found to read, “Vikings go home!” 
Sincerely, 

Jim Day 17042 Gunther Street 

Granada Hills, CA 91344 


Dear Sir: Aug. 23, 1976 

I just received issue no. 7 and back issues 1-6 in the 
mail Saturday and spent all afternoon reading them. 

Specific comments: Vol. 1, no. 4, pg. 4; and no. 6, pg. 

6 refer to PASCAL as being developed by Niklaus Wirth— 
the language was actually developed by Niklaus Wirth and 
Kathleen Jensen. [Hmph! He never mentioned that when 
I took his compiler course at Stanford!] If you insist on 
dropping Kathleen’s name someone might accuse you of 
being sexist and . . . (by the way, it is just coincidence that 
everything published in DDJ so far has come from males, 
isn’t it?). [No. It’s the frustrating fact that we have yet 
to receive any manuscripts from women.] 

It was mentioned that you were planning on writing a 
Small PASCAL [Nope. Just thinking of writing some 
design articles to encourage implementation of something 
better than BASIC.] ; two documents that would be very 
helpful are: The PASCAL ‘P’ Compiler: Implementation 
Notes, by Nori, Ammann, Jensen, and Nageli; and PASCAL-S 
PASCALS: A subset and its Implementation, by N. Wirth. 
These are numbers 10 and 12 from: 

Institut fuer Informatik 
Eidgenossische Technische Hochschule 
Clausiusstrasse 55 
CH-8006 Zuerich, Schweiz 

Institute for Information 
Federal Institute of Technology 
Clausiusstrasse 55 
CH-8006 Zurich, Switzerland 

PASCAL-S is the “semi-official” subset of PASCAL. It con¬ 
sists of one program subdivided into a compiler which gen¬ 
erates code for an abstract stack computer and an interpre¬ 
ter which interprets this code for an actual machine. The 
abstract computer is organized as a stack, 2 stack indexes, 
a program counter, an instruction register, a program status 
register (and a DISPLAY array used to speed up the ad¬ 
dressing mechanism). 

You might also be interested in the PASCAL Users Group 
and especially the PASCAL Newsletter, which contains a lot 
of information about PASCAL implementations, program¬ 
ming, features, etc. The PUG address is Univ. Comp. Ctr., 
227 Exp. Engr., Univ. of Minnesota, Minneapolis, MN 55455. 
If you do finish a PASCAL implementation, please write to 
the Editors of the Newsletter because they are trying to 
keep a complete listing of all PASCAL implementations 
(as far as I know, the PDP series are the smallest machines 
on which PASCAL has been implemented to date). 

From Vol. 1, no. 7, pg. 10—your comment on VRAM: 
there’s another ringer besides the one you mentioned—unless 
this device meets the radiation limits of Part 15 of the FCC 
regulations, it’s an illegal television transmitting station. 

[Not applicable. Matrox VRAMs output video for a video 
monitor; not RF for television.] 

Vol. 1, no. 6, pg. 40-In F. J. Dickey’s letter, he seems 
to equate structured programming with ‘lots of control 
structures.’ This seems to me to be precisely the oppo¬ 
site of the truth; one of the basics of structured program¬ 
ming is the use of only a very few control structures. 
Structured programming usually involves the use of only 
three basic control structures: sequence, if-then-else, and 
loops (usually repeat-until or while-do form). In fact, one 
of the important events in the history of structured program¬ 
ming was the publication of a proof that all programs could 

October, 1976 


be written using only these three control structures. I 
hardly consider three structures “a lot of control struc¬ 
tures.” Perhaps Mr. Dickey was confused by PL/1, 
which he seems to consider as a simple structured 
programming language. PL/1 is most definitely not a 
structured programming language. Indeed, many ad¬ 
vocates of structured programming have strongly 
criticized several aspects of PL/1. 

Vol. 1, no. 6, pg. 28—Jim Day’s article on variable 
character spacing is very interesting and such a scheme 
would be quite useful in producing good looking output. 
However, this must be restricted to use on final, human 
oritented output; it can not generally be used for program 
listings, etc. Variable character width destroys the visual 
character of program, and makes it nearly impossible to 
determine in which column a specific word begins, which 
is a significant factor in most languages. [Not so. Most 
“good” languages are free field format.] There are many 
examples in computer literature of much confusion 
caused by typesetters who reset program listings with 
variable width character spacing. 

I’ve noticed several comments on games in DDJ. While 
I’m more interested in systems tape software being pub¬ 
lished, I’m somewhat upset at the large number of com¬ 
puter people who seem to enjoy running down games. I 
think games are very important as logical exercises. The 
importance of games in developing mental capabilities has 
been frequently pointed out by people ranging from Albert 
Einstein to R. Buckminster Fuller. As an example, the main 
field of study of John Von Neumann, one of the developers 
of the digital computer at the Institute for Advanced Stud¬ 
ies, was in Game Theory. Some every interesting commen¬ 
tary to real world affairs is contained in the introduction to 
Computers, Chess, and Long Range Planning, by Mikhail 
Botvonnik, a book that I highly recommend. [Agreed. But, 
then again, why not just play games for the fun of playing 
games? ] 

Thanks very much for your kind attention in wading 
through this lengthy letter. 

Yours truly, 

Tim Bonham D605/1630 S. 6th St. 

Minneapolis, MN 55454 

Page 37 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 


297 




(AS USUAL) ELECTRONICS HAS A PASSLE 

OF GOOD HARDWARE ARTICLES 

The September 2nd issue of Electronics magazine 
carried the following articles (among many others): 
“Conferees Close in on 16K Standards” (for 16K-bit RAM) 
“Shortage of Field Technicians Looms” (training programs 
for minicomputer techs) 

“Fiber-Optic Data Transmission: A Practical, Low-Cost 
Technology” (Gigahertz bandwidth, noise-free) 

“PROM Decoder Replaces Chip-Enabling Logic” (Design 
details) 

“Check List for 4,096-bit RAMs Flags Potential Problems 
in Memory Design” 

“Microprocessors Dominate Scene at Sold-Out Wescon” 
“Character Generator Fits on One Chip” (Bipolar LSI 
gives 64 alphamerics for CRTs and matrix printers) 
Electronics is published by McGraw-Hill, Inc., Box 
514, Hightstown, NJ 08520. Subscriptions are $ 12/year 
or $30/3-years in the U.S. 


JIM DAY NOTES . . . 

Dear DDJ, September 8, 1976 

I see that Martin Gardner has already reviewed Con¬ 
way’s book in the September issue of Scientific American. 
Note the ad on page 213 of the same issue, offering a 
FREE (for $1) GIANT CATALOG (64 pages) of compu¬ 
ter stuff from Newman Computer Exchange, 3960 Varsity 
Drive, Dept. 23, Ann Arbor, MI 48104. 

“Microprocessors Have Their Problems Too,” by 
Jerry L. Ogdin, on p. 35 of the August issue of Instru¬ 
ments & Control Systems, is an interesting user’s-eye- 
view of the state of the art. But one should keep in 
mind that the criteria of the industrial user are not al¬ 
ways those of the hobbyist or educator. 

Another interesting item is “Things That Go Byte 
in the Night,” on p. 38 of the August issue of Computer 
Decisions. While amusing, this bit of whimsy would 
probably be of more interest to readers of Creative Comput¬ 
ing rather than a dignified, scholarly journal like PCC or 

DDJ - Jim Day 17042 Gunther St. 

Granada Hills, CA 91344 


Another Hobbyist Magazine 


WAYNE GREEN TO START PUBLISHING 
KILOBYTE 

John Craig, Editor—KILOBYTE Magazine 

RFD Box 100 D, Lompoc, CA 93436, (805) 735-1023 

Editor's Note: John Craig, the new Editor of the about-to-be Kilo¬ 
byte magazine, submitted this article to Dr. Dobb’s Journal after a 
conversation with us. We are publishing it because (1) it gives some 
explicit information about what may be expected from the forth¬ 
coming magazine and (2) we wish to support active competition 
among the vendors of products to the computer hobbyist commun¬ 
ity. We believe that such competition in this free marketplace can 
do nothing but benefit the consumers. 

Readers should not take our publication of this article as an 
implication of our endorsement or special support of Kilobyte over 
any of the other excellent periodicals serving our community. We 
enjoy BYTE and Interface and what we have seen of Microtrek. 

We expect to be equally pleased with Kilobyte and Personal Com¬ 
puting. 

We would be happy to publish similar articles from the editors 
of Microtrek and Personal Computing. Our only requirement is 
that they contain explicit information and details about the maga¬ 
zine, along with the unbridled enthusiasm for his publication that 
should be expected from any magazine's Editor. 

Well, Wayne Green [the original publisher of BYTE ] has 
finally got around to doing it! The hobby community has 
been expecting him to start another magazine for quite some 
time . . . and here it is . . . KILOBYTE. If the name of 
this magazine brings about a reaction, don’t worry about it, 
because you’re not alone. The important thing is that it’s 
a name you won’t easily forget . . . and besides, what’s in a 
name? Your reaction when you read the first issue is what 
will really count. (And you certainly ought to plan on get¬ 
ting that first issue, because it will very likely become a col¬ 
lector’s item in the months to come. Look at what hap¬ 
pened to the last magazine Wayne Green started.) Never 
mind getting any of the following issues . . . just get that 
first one! 

Now, for the important question: “What will KILOBYTE 
have to offer that would make me want to shell out my 
hard-earned bucks for a subscription?” One of the most 
important areas we’re going to cover will be basic articles 
concerning both hardware and software. This doesn’t mean 
that KILOBYTE is going to be just a “beginner’s magazine.” 
Most of us are either hardware or software oriented and 
could use some good fundamental material in the “lacking” 
area which will bring us up to speed. And, when I say 
“good material”, I mean just that. We’re not going to be 
publishing articles of a dry, tutorial nature. If there’s a 
hardware or software concept, or “lesson”, to be passed on 
through the pages of KILOBYTE, it will be done using 
practical examples. The approach will not be one of, “This 
is how it is done . . .” but instead, “This is why it is done 
a certain way.” Hardware articles will be related to various 
applications and the software articles will be tied in with 
programming problems and situations. Needless to say, the 
person who is a beginner will benefit from KILOBYTE as 
though it were directed at him exclusively. 

Another area which KILOBYTE will be covering is 
applications. We will take a good look at small computer 
applications in both the home (entertainment, education, 
etc.) and especially in small businesses. 

The KILOBYTE Software Library will be one of our 
big efforts, and probably one of our big headaches. There’s 
a tremendous need for a central distribution point for small 
systems software. Much has already been developed . . . 
but it isn’t getting around! We’re going to be selling pro¬ 
grams at a modest cost on cassettes with the author/pro¬ 


grammer receiving a 15% royalty for his efforts. Hopefully, 
this will provide an incentive to some of those who have 
developed some good programs to share them (and make 
some good cash in the process). 

Standardization is something else KILOBYTE will be 
tackling. There’s no reason why a person shouldn’t be able 
to buy a microcomputer which has standard plugs on the 
back for connecting his serial or parallel peripherals. The 
cassette situation is something which needs looking into, 
also. We’ve got the Kansas City standard for software ex¬ 
change at a rather slow speed, but perhaps we need to come 
up with a standard for high-speed cassette operation, too. 
People sit around and talk about standardization all the 
time . . . others write about how something should be done 
. . . and then there are those who give seminars on the 
subject. The only way anything is ever going to be done 
about tills (and other situations) is for the industry to get 
together and discuss it! Wayne Green and KILOBYTE will 
be working on this. The address is KILOBYTE Magazine. 
Peterborough, NH 03458. Be sure to include the “KILO 
. . .” Subscriptions will be $ 12/year or $25/3 years ($2 at 
the news stand). It will be in circulation around the end of 
December. 


Page 38 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 October, 1976 


298 





dr. dobbs journal of 


$ 1.50 


COMPUTER 


C 


alisthenics 


60 


rthodontia 


Running Light Without Overbyte 


November/December, 1976 


Box E, Menlo Park CA 94025 


Volume 1, Number 10 


A REFERENCE JOURNAL FOR USERS OF HOME COMPUTERS 


Consumer Action 


Product & Software Testing to Become Regular Feature in Dr. Dobb’s Journal 3 

Unresponsiveness from Advanced Micro-Electronics, Stuart Fallgatler & DDJ 4 

SCCS Interface — A Status Report, Southern Calif. Computer Soc. Board of Directors 5 

Thinking of Opening a Computer Store? Budget Estimates & a Map 10 

Jim McCord Reports on the LSI-11, Jim McCord 11 

Tarbell Response, Compliments & Complaints 12 

NEC & IMSAI Incompatible with 8080A, Letters from Glen Tenney, IMSAI & NEC 14 

Product Review: Poly 88 - - AN EXCELLENT SYSTEM, Jef Raskin 16 

Realizable Fantasies 

Machine-Readable Programs & Data, Published in Magazine Format, Editor, DDJ 6 

Use an Acoustic Coupler to Read/Write Tape Cassette, Jim Warren 7 

Software 

It’s a BASIC, It’s an APL . . . It’s CASUAL! Bob Van Valzah 19 

A Homebrewed Language & Interpreter from Chicago - Complete Documentation & Code 
NIBL - - Tiny Basic for National’s SC/MP Kit, Mark Alexander 34 

Complete Documentation c6r Fully Annotated Code Listings 
Upgraded CP/M Floppy Disc Operating System Now Available 51 

Arithmetic Expression Evaluator Mod, Jim Abshire 52 

Dialogue on Design of TINY HI, Martin Buchanan, Greg Townsend 54 

6800 Monitor Relations, Comparisons of MIKBUG and MINIBUG II, Dennis Sutherland, et al. 56 

Floating Point Notes 57 

Assembler Coded Graphics Games on an Alphanumeric Video Monitor, Marvin Winzenread 58 

CHASE: A One or Two Player Video Game 
LIFE on an 8080 with a VDM 

Program Repository & Tape Duplication Facility, Community Computer Center 62 

New PCC Periodical: The Computer Music Journal 63 

- and dozens of other tidbits - 


299 





CONSUMER ACTION 

PRODUCT SC SOFTWARE EVALUATION AND 
TESTING TO BECOME REGULAR FEATURE 

IN DR. DOBBS JOURNAL 


With this issue, we are initiating what we expect to be 
a regular feature in Dr. Dobb’s Journal: reports of indepen¬ 
dent product and software tests and evaluations. We pro¬ 
pose that these will be “independent” in that we have no 
financial ties or obligations to these manufacturers, the pro¬ 
ducers of these products. We carry no paid advertising. 

Ever since the computer hobby began, there have been 
regular pleas for such independent testing and evaluation. 
Until recently, we have been rather haphazard in our at¬ 
tempts to assist consumers in judging the quality of pro¬ 
ducts being marketed to them. We have pursued this pri¬ 
marily through the publication of complimentary and com¬ 
plaining letters regarding products. With such letters, we 
generally have no knowledge of the expertise, fairness, 
honesty or bias of the writers (thus, they have been pub¬ 
lished as “letters” rather than as “articles”). Recognition 
of this fact prompted us to adopt a policy [see Editorial 
in October, 1976, DDJ] regarding the treatment of letters 
of complaint. Though we will continue to publish such 
letters within the constraints of that policy [see several 
examples in this issue], we feel that a formal, orderly 
product testing and evaluation program would be more 
fair and more useful to our readers. It will also be per¬ 
fectly in keeping with the Charter of our publisher, Peo¬ 
ple s Computer Company. PCC is a California-licensed, 
non-profit educational corporation. 

WHO WILL DO THE TESTING? 

We have organized an evaluation team consisting of three people, 
plus the Editor. These are individuals whose qualifications we do 
know. Jef Raskin is the Director of the group. Many of you al¬ 
ready know of him through his critique of a number of hobby 
systems [DDJ, September, 1976 , "A Bit of Wheat Amongst the 
Chaff." This issue carries a second product evaluation by him. 

Jef is currently an independent consultant involved in several "real 
world" applications of small computers. Prior to this, his work 
included serving as Director of the Third College Computation 
Center at the University of California in San Diego, and serving as 
a Professor of Visual Arts there for five years. Before that, he 
was an instructor in Computer and Electronic Music at Pennsylvania 
State University for several years. He holds a B.S. in Philosophy 
(1965) from the University of New York with minors in mathema¬ 
tics and physics, and a M.S. in Computer Science (1967) from Penn 
State. 

The second member of the evaluation group is Dennis McGhie. 

Dennis is currently working for a major biomedical research center in 
the San Francisco Bay Area. He has been a programmer since 1968, 
working on both maxi's and mini's, primarily in the areas of database 
systems, training 

systems, computer graphics, and real-time systems. Though he has no 
formal hardware training, he has a good seat-of-the-pants background 
derived from years of working with experimental real-time computer¬ 
ized biomedical data acquisition and process control. He holds a B.S. 
(1968) in Chemistry from Stanford University. 

The third team member is Michael Heathman, currently a senior 
systems programmer for a new time-sharing system being installed in 
a major Bay Area research institution. He has systems experience with 
maxi's and midi's, including PDP-15's and PDP-11's. He has been a 
programmer for six years, except for a year's leave taken to perform 
graduate studies in computer science at the University of Washington. 

He holds a B.S. (1970) in electrical engineering from Stanford. 

Final responsibility for this program will rest with the Editor of 
Dr. Dobb’s Journal, Jim Warren. Aside from editing the Journal, 
currently, Jim is working as an independent consultant specializing 


in small computers in highly interactive environments. He is also in 
"dissertation mode" in a Ph.D. program through Stanford's Electrical 
Engineering Department. He has worked as a computer consultant for 
most of a decade, with several years of programming experience pre- 
ceeding that. Prior to entering the computer field, he taught mathe¬ 
matics for about ten years, including Chairing the Mathematics Depart¬ 
ment at the College of Notre Dame — Belmont. He holds a B.S. (1959) 
and M.A. (1964) in mathematics, and two M.S. degrees; one in Medi¬ 
cal Information Science and the other in Computer Engineering. 

HOW WILL THE EVALUATIONS BE DONE? 

We will contact producers of products being marketed to the com¬ 
puter hobbyist community, and encourage them to participate in this 
testing and evaluation program. If they choose to do so, this is what 
will happen: 

They will send us a purchase letter — a voucher with which we can 
"blind purchase" an item to be tested. We will then have someone, 
not known to be associated with PCC or DDJ, obtain the desired pro¬ 
duct. In the case of products sold only by mail, a unit will be ordered; 
when it arrives, it will be "paid for" by returning the voucher with the 
invoice. If the desired unit is available through Bay Area retailers, 
our "buyer" will go in; pick out a unit; and, when it comes time to 
pay for the item, will use the voucher to "pay" for it. The voucher, 
of course, will guarantee to immediately replace the unit dr reimburse 
the dealer. In this way, we can be reasonably assured of obtaining 
units for testing that have not been especially "tuned"; they will be 
standard consumer products. 

The product thus obtained will then be evaluated in whatever 
manner is most appropriate (and in whatever ways are possible with 
the test gear available at the time). In the case of kits — where such 
independent examinations are perhaps most badly needed — a team 
member may construct the kit, or we may well have some interested 
novice put the kit together under our observation. In either case, 
careful notes will be kept concerning all aspects of the unit and its 
evaluation. 

Subsystems that are advertised as being plug compatible with some 
particular interface structure will be tested for such compatability. 
Major components will be tested against manufacturer's advertising 
claims and the rated capacities given in the documentation. Other 
testing will be conducted, where appropriate. 

When the testing is completed, the evaluator(s) will write a report 
of their findings — good and bad. Particular attention will be given to 
reporting the following aspects: does the unit perform as advertised? 
Are there inadequacies that are unmentioned by the manufacturer? 
How does the unit compare to its competitors? How does the unit 
compare against "perfection"? (When comparing against perfection, 
the report will explicitly point out that no one else's product meets 
those standards, either.) Are there any "little hidden gotchas"? In 
all cases, as much of the test data as possible will be provided in the 
article, from which the reader will be able to judge the unit for him¬ 
self. Any personal judgements made by the evaluator will be accom¬ 
panied by the hard data he used in reaching that opinion, and/or will 
include an explicit statement of the evaluator's personal bias in the 
matter. 

Once completed, the report will be submitted to the manufacturer 
of the product for their comments. They will have the opportunity 
to offer corrections of fact (the "factual" character will be judged by 
the evaluators and the Editor). If they wish, they may also provide a 
"manufacturer's response" which, if concise and pertinent in the 
judgement of the Editor, will be published along with the evaluation. 
Though the manufacturers will have the right to suggest corrections 
and to provide a response article, they will have no editorial control 
over the report. After giving the manufacturer several weeks to a 
month — and no more than that — to respond, the report and any ap¬ 
propriate response will be published in Dr. Dobb’s Journal 

The products that are tested will become the property of People's 
Computer Company. Often, the evaluators will be "paid" for their 
services by giving them the products they have evaluated. This will 
both assure an active interest in the evaluation on the part of the team 
members, and will also provide us with the opportunity to observe 


Nov./Dec., 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 



the units in operation over some period of time, with supplementary 
reports being given as appropriate. 

WILL THE MANUFACTURERS COOPERATE? 

Both the public and the manufacturers have often noted that com- 
merical magazines rarely if ever publish articles that are really critical 
of products available from companies that are advertising in that maga¬ 
zine. (One publisher, targeting for the computer hobbyist community, 
is widely reputed to consistently publish excellent "evaluations” of 
products from advertisers, and highly critical "evaluations" of pro¬ 
ducts from manufacturers who refuse to advertise in the publication). 

Thus, the public tends to take such evaluations in ad-carrying 
periodicals with a well-deserved grain of salt. Alternatively, Dr. Dobb’s 
Journal — and PCC before it — has had a consistent reputation for 
readily publishing compliments and complaints, including complaints 
about our publications. We believe that carefully done, comprehensive 
product evaluations, published in DDJ, will be accepted as being un¬ 
biased and accurate. 

If we publish a favorable evaluation of a product, it should be of 
significant value to that manufacturer. In particular, we herewith 
grant explicit permission to any manufacturer to reprint such evalua¬ 
tions from Dr. Dobb’s Journal, either in their entirety or a paragraph 
at a time. Such reprinting may be done without further permission 
from DDJ, and without any compensation whatsoever being paid to 
Dr. Dobb’s (other than possession of the products that were tested). 
Publication of less than a paragraph at a time, minimum, will require 
explicit permission from DDJ. We explicitly prohibit reprinting out- 
of-context portions of such a (copyrighted) evaluation, when it fails 
to accurately reflect the results of the evaluation. 

We also hope to — in the not too distant future — develop an ob¬ 
jective rating procedure for home computing products. Once devel¬ 
oped, we will invent and trademark a DDJ evaluation logo that in¬ 
cludes the ratings. Manufacturers may then mark their products as 
"Grade A — Tested in Dr. Dobb's Kitchen", or some such thing. 

We have already spoken with several manufacturers, outlining our 
plans. Reception has varied from an active interest in immediately 
participating, to a total rejection of the proposal. We will report the 
details, whenever it seems fair and appropriate to do so. 


UNRESPONSIVENESS FROM ADVANCED 
MICROELECTRONICS 

I received a AY5-8500 6 Game MOS/LSI chip from 
Advanced Micro-Electronics, P.0. Box 17329, Irvine, CA 
92713. It didn’t operate properly. I wrote them a letter 
in August (two months ago) describing what the chip did 
and have received no answer. 

Thank you for reading my letter. 

Stuart R. Fallgatler 
7910 Rio Vista Dr. 

Goleta, CA 93017 

[We wrote them, saying:] 76-11-7 

We recently received a complaint concerning your company, a 
copy of which is enclosed. Recognizing that there are two sides to 
every story, and in keeping with our published policy (copy en¬ 
closed) [See DDJ, Vol. 1, No. 9] concerning handling of consumer 
complaints regarding vendors' products and services, we wish to offer 
you the opportunity to present your view of the situation. There¬ 
fore, we will withhold any decision concerning possible publication 
of the complaint for at least two weeks from the date of this letter, 
pending the possibility that you may wish to offer a timely response. 

If you do choose to respond, we will, of course, take your com¬ 
ments into consideration in deciding whether or not to publish the 
complaint. If we do decide to publish it, even in light of your com¬ 
ments, we will almost certainly also publish your response — your 
side of the story — unless you explicitly prohibit our publication of 
your reply. 

Also, if you choose to reply, we would appreciate your for¬ 
warding a copy of that reply to the complainant. Many thanks 
for your attention to these comments. We look forward to your 
reply. 

As of Dec. 2, 1977, we have received no reply.—JCW 


r . 


* 

* 

* 

* 

* 

* 

♦ 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

-X 

-X 

-X 

-X 

-X 

-X 

-X 

-X 

■X 

-X 

-X 

-X 

-X 

-X 

X 

X 

X 

X ; - 


BEWARE! THE DOLLAR GOBBLING INFLATION 
INFECTION IS ABOUT TO AFFLICT ONE OF YOUR 
LOVED ONES - - 

Subscription Rates for Dr. Dobb’s Journal 
Increase January 1st 

Almost all of our subscription rates are going up as 
of the start of 1977. This means that our basic sub¬ 
scription rate will now be as much as Byte’s. And, as 
always, a year’s subscription is for 10 issues; we pub¬ 
lish single issues for June/July and Nov./Dec. 

We had to either do this — and remain responsible 
only to our readers — or begin accepting paid adver¬ 
tising, along with its strong though perhaps subtle in¬ 
centive to “keep the advertisers happy.” Considering 
that we have been purusing an active > consumer advo¬ 
cacy role, ever since we started, and considering that 
we are significantly expanding that activity [see edi¬ 
torial on product and software testing and evaluation 
plans], we felt that the subscription increase was the 
preferable alternative. We are still awaiting the results 
of the question concerning whether or not we should 
carry paid advertising (a question posed in the last 
several subscription forms and in the subscription re¬ 
newal notices). 


Prize 


DDJ SEEKS SUPER LOGO! 

Like all massive organizations intent upon changing the 
fabric of society, Dr. Dobb’s Journal has concluded that it 
should have a logo — a symbol by which all people may 
instantly recognize us. It might be our current title mast¬ 
head .. . but that’s so longwinded. Ideally, it should be a 
symbol or figure that in some sense illustrates our activities 
(now, now — be nice). 

Knowing that computer people are delightfully inventive, 
we are coming to you for suggestions. We are looking for a 
logo that we can use in fairly large size in our masthead, 
letterhead stationery, advertisements, etc. We would also 
like for it to be recognizable, even when shrunken down to, 
say, V’xYi”. Thus, it can’t have too much detail in it (or, 
the large version can have details, and the smaller versions 
must be in some way simplified). 

Please forward your suggestions. You can describe them, 
or you can provide a rough sketch, or you can submit an 
oversized camara-ready master. If we pick your suggestion 
as the basis for our logo, then we will thank you by giving 
you a five-year subscription to DDJ (extending your current 
subscription, if necessary). Of course, all suggestions be¬ 
come the property of People’s Computer Company, the 
publisher of Dr. Dobb’s. 


NOW WE CAN BLAME IT ON THE COMPUTER 


At long last, we have switched from manual processing 
of subscription records — so fraught with human error — 
to computerized subscription processing — thereby obtain¬ 
ing even more potential for human error. Therefore, please 
check your address label, and let us know if it is in any way 
incorrect. 


Page 4 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Nov./Dec., 1976 


301 







It must have been a computer error . . . 

CORRECTION TO PHONE NUMBER FOR 
KENTUCKY FRIED COMPUTERS 

Our September issue carried an announcement of a 
10% discount on selected products, available to DDJ 
readers for a limited amount of time, offered by Ken¬ 
tucky Fried Computer Store in Berkeley, CA. We in¬ 
cluded the phone number, only to be told later that it 
was incorrect. When we checked the original copy sub¬ 
mitted by the store owners — a computer-edited article 
— we found that we had correctly copied an incorrect 
number. Tsk, tsk . . . must have been the computer. 

Their correct phone is (415) 549-0858, and they are 
located at 2465 Fourth St. 


NEW LOGARITHMIC CONVERTER 

by Jim Day 

Precision Monolithics, Inc., 1500 Space Park Dr., Santa 
Clara, CA 95050,408/246-9222, recently announced develop¬ 
ment of a D/A converter providing the 72-dB dynamic output 
range of a 12-bit converter from an 8-bit input. Three bits 
select one of eight chords (i.e., ranged approximating a loga¬ 
rithmic function) and four bits select one of 16 linear steps 
within each chord. Resolution near zero is equal to that of a 
12-bit converter, dropping to 5-bits (plus sign) at the extremes. 
Designated the D AC-76, this 18-pin DIP costs $19 in lots of 
100 . 

For high-quality audio output having negligible quantiza¬ 
tion error at low volume levels, 12-bit D/A converters are cus¬ 
tomarily used. These tend to be expensive and awkward to 
drive from an 8-bit MPU. Fortunately, the amplitude response 
of the human ear is logarithmic. This means that greater quan¬ 
tization error is tolerable at high volume, amking an 8-bit 
logarithmic D/A converter ideal for speech synthesis and com¬ 
puter-generated music when used with an 8-bit MPU. 


A SUPER BOOK, FULL OF COMPLETE 
SYSTEMS PROGRAMS 

Dear Dr., September 27, 1976 

A valuable new book is available for the computer 
hobbyist. Software Tools by B. W. Kemighan and P. J. 
Plauger, Reading, MA: Addison-Wesley, 1976 presents 
programs for a test editor, file formatter, macro processor, 
librarian and language preprocessor while teaching struc¬ 
tured programming. These are complete programs avail¬ 
able from the publisher in machine-readable form (cost 
unknown) for a machine with a Fortran compiler. I’ve 
read the book — it’s great! It starts with a simple echoing 
routine and builds and builds very logically. 

A Tiny Fortran compler with integer arithmetic, charac¬ 
ter I/O, the IF statement and FUNCTION and SUBROU¬ 
TINE subprograms could implement an impressive array of 
tools. Tiny BASIC could do it if it were compilable and 
could pass arguments as parameters to subroutines. 

Implementation of these programs would be a big step 
toward having home computers help their owners do use¬ 
ful things; and home microcomputers are admirably suited 
to the word processing tasks the book presents. 

It’s sort of cheap, too: $8.95 in paper. 

Bill Pearson Division of Biology 156-29 

Calif. Instit. of Technology Pasadena, CA 91125 

Nov./Dec., 1976 


Posted 76-10-25 

sees INTERFACE - STATUS REPORT 


Good news! Your regular SCCS Interface will be coming 
again to you soon! This is to bring you further up to date 
on the Southern California Computer Society publication. 

Originally the Society went to an outside service to print 
SCCS Interface on behalf of the Society. Certain differences 
have arisen with the publishing service and efforts at settle¬ 
ment have apparently failed. During our negotiations, the 
outside service printed its own magazine called Interface Age, 
the first copy of which appeared in August. You may have 
received copies of Interface Age in the mail. The Society 
did not mail it to its members. The logotype on Interface 
Age and the format of the magazine are very similar to SCCS 
Interface and you may not have even noticed the change. 
Interface Age is not an authorized publication of the Society. 
We have discussed our legal options with our attorneys. Now 
that we are free to move ahead, the Society has obtained its 
own publishing service. We will resume distribution of SCCS 
Interface next month. Only SCCS Interface will be the au¬ 
thorized publication of the Southern California Computer 
Society. 

We expect SCCS Interface will carry out the spirit and 
policy of the Society — to be objective with regard to ven¬ 
dors’ products and services, to report the activities of our 
Society, to provide an open forum for our members, to ex¬ 
periment and of course, to provide important articles of 
interest. 

We are working hard, fast and enthusiastically on this 
and appreciate your patience. The memberships of those 
who missed any copies will be extended. 

Larry Press has been named to fill the editor’s spot. 

Please send editorial contributions and suggestions, articles, 
announcements, inquiries on ads or distribution, aspirin and 
good wishes to Larry at 1702 Ashland Ave., Santa Monica, 
CA 90405, (213) 399-2083. 

The member authors whose articles appeared in August 
and September issues of Age intended to have their material 
appear in the official Society publication. We assure them 
that in the future no submitted material will appear in 
other than SCCS Interface. 

Very Truly Yours, 

The Board of Directors 
SCCS Interface 
October 18, 1876 


A FIXIT “KIT” FOR MARK-8 DOCUMENTATION 

Dear Jim, Sept. 17,1976 

I have been reading with great interest the issues of DDJ I I 
have an offering for "BUGS & FIXES." I have put together a 
modifications/corrections kit for the MARK-8 to fix up the over 
50 typos in the schematics, errors in design, and errors in instruc¬ 
tions. It includes instructions (11 pgs), complete set of new 
schematics, and a parts kit. The cost is set to only recover costs. 

MARK-8s have suffered in the software marketplace due to lack of 
enthusiasm, which I feel is in part due to the difficulties in getting 
them up. This package should help the problem clear up and create 
more spirit (since I still want BASIC for my 80081). 

MARK-8 Corrections/Mods Package - Fixes those glitches, 
interrupt structure, mem. addr. levels, LED bd., buffered 
CPU, clock phases, console controls, etc. Includes new 
complete schematics, instructions, and parts (even drill 
bit and wire). $10. Ronald Carlson, 14014 Panay Way 
Apt. 225, Marina del Rey, CA 90291. 

Sincerely, 

Ronald E. Carison 14014 Panay Way, Apt. 225 

Marina del Rey, CA 90291 

Page 5 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


302 






BYTE OFFERS AN EXCITING PROPOSAL 

Machine-Readable Programs 
in Magazine Format 

Praise by Jim Warren, Editor, DDJ 

OK, folks ... are you ready to throw away those can¬ 
tankerous and expensive paper-tape readers? Are you ready 
to give up those cat-naps you take while waiting for pro¬ 
grams to load from your kid’s audio cassette player (you 
do have a megabyte of memory, don’t you?)? Then look to 
Byte* for a better way! 

The November issue of Byte magazine carries an article by 
Walter Banks and Roger Sanderson of the University of Wa¬ 
terloo, and Carl Helmers of Byte, proposing an idea that 
should cause the hobbyist to gleefully reposition their prayer 
rugs in the direction of 70 Main Street in Peterborough, 

New Hampshire: a super-neat method for publishing machine- 
readable information. Walter and Carl are proposing that 
the bar-code scanning techniques already in widespread use 
in automated grocery checkout systems are equally appli¬ 
cable to publication of machine-readable programs and data. 

The basic idea is that programs and data that are of wide¬ 
spread interest can be encoded in a standard bar-code format, 
printed in a book or magazine (presumably with the human 
readable form on nearby pages), and loaded into an indivi¬ 
dual’s home computer by simply waving an optical scanning 
wand over the machine-readable pages. Programs and data 
could then be truly “published” — printing them instead of 
using the far more expensive and less convenient punched 
or recorded formats. The reading mechanism — the scanning 
wand — has the advantage of no mechanical parts, depend¬ 
ing on the human hand for its motive power. It’s simple; 
it’s nonmechanical; it should be cheap. Data transfer rates 
are obviously limited only by the speed of the hand and the 
speed of the processor that is interpreting the input from 
the scanner. 

This is not a future fantasy. The technology is already 
well-developed, both for printing of machine-readable infor¬ 
mation and for inexpensive optical scanners. Optical scan¬ 
ning of printed information has been in use for some years 
in the banking industry. There, total reliability is an abso¬ 
lute requirement, and the encoding format and scanner de¬ 
sign they use is considerably more complex than is necessary 
with bar-codes and bar-code scanners. Bar-code techniques 
have proven sufficiently reliable that they are in wide-spread 
use in grocery checkout facilities, where accuracy is a must 
(demanded by the paranoid consumer was well as by the 
food retailers), and where sloppy usage must be assumed. 

This is not an idle proposal or one-shot in the dark by 
Byte. The November article is an explicit, detailed, nuts-and- 
bolts article. The December issue of Byte will include sam¬ 
ples of machine-readable code in several experimental for¬ 
mats, an article on signal processing for optical scanning of 
bar-codes, and the specifics of the software that is necessary 
for reading bar-coded information. Articles in the immediate 
future are sure to include complete details for the construc¬ 
tion of bar-code scanning wands and their interfaces. 

We cannot praise this proposal too highly. If this tech¬ 
nique, in fact, proves feasible and reliable, it will provide a 
significant breakthrough for the problem of distribution of 
machine-readable software arid data. Note: The import of 
this for the forseeable future well may be in its facility for 
distribution of data , rather than programs — e.g., census 
data, voting records, mathematical and engineering tables, 
encyclopedias, want ads, library indices, case law citations, 
you name it — all types of reference materials that it would 
be desirable to be able to search and access via machine. 


COMPUTER CONTROL OF TAPES HAS MUCH 
WIDER USE THAN MERELY FOR MUSIC SYSTEMS 

Dear Jim, Sept. 20,1976 

I read your excellent article: “Computer Control of Music 
Tapes for Your Home Stereo” in DDJ Number 8. I think it is 
really a realizable fantastic fantasy. However, I have some objec¬ 
tion to the title (and the emphasis) of the article. 

Had you titled it: “Computer Control of Bach’s Music Tape 
for Your Home Stereo on the Second Floor,” I would have ob¬ 
jected even more. The hardware you described is a computer 
controlled tape deck that can handle both digital and analog re¬ 
cordings. The software you proposed is also a very general file 
system. As you have mentioned in your “bells and whistles,” 
this system would be ideal for many types of computer-aided 
instruction. I would also use it to play computer games, and 
many many more. Wouldn’t it be great to hear Dr. Spock talking 
when you play Startrek? I would also use the same system to 
save ah the programs and all my secret files. In this case the 
analog part may be of no great value, but my stereo on the 
second floor just might announce: “We are now loading a 
version of TINYPASCAL dated April 1, 1977.” Anyway,my 
point is, don’t limit such a great system to “Music Tapes” or 
to “Home Stereo.” 

Another nitty gritty: On Page 5, you seem to imply that 
the $199 and the $299 packages from Triple I also include two 
tape transports. From what I know, only the $ 189 package 
includes two transports. You get only one transport in the 
deluxe model packages. 

Sincerely yours, 

Iinchen Wang 

I debated phrasing the article in this more general applica¬ 
tions context, but decided to keep the main article “narrow¬ 
minded” and merely point out the much more general applica¬ 
bility of the system I outlined. I did so because I didn’t have 
the time or space to discuss the wider applications in the 
detail that I felt would be necessary to a more generalized 
article. 

Yer right on how many transports are included in each 
package. The $189 package includes two fixed-speed transports, 
but the $199 and $299 packages include only one transport. 
What’s worse, the prices have gone up ... but they’re still a 
good deal (see Phi-Deck article elsewhere in this issue). 


WE HAVE SPEECH SYNTHESIS . . . 

SOON: SPEECH INPUT 

We hear ... straight from the quadraped’s mouth ... 
that a speech recognition experimentation system will be 
placed on the market early next spring. In kit form, it 
will cost well over $500 and will plug into the S100 bus. 


PUBLICATION DETAILS DESIGN OF A 
CONTROL PROCESSOR FOR A MICRO¬ 
COMPUTER NETWORK 

The Computer Systems Synthesis Group out of UCLA’s 
Computer Science Department has recently released a 231 
page tech report by R. Fenchel entitled, “A System Control 
Processor for a Microcomputer Network.” It discusses the 
design of a control processor for such a network, to be used 
as an education tool in a computer science lab. You can 
probably obtain a copy without cost (while they last) by 
writing the CS Department in the School of Engineering 
& Applied Science, UCLA, Los Angeles, CA 90024. 

*Are there any of our readers who don’t know about Byte magazine, 
70 Main St., Peterborough, NH 03458, $12/year? 


Page 6 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Nov./Dec., 1976 


303 






Why Hassle With Those Single-Purpose Cassette Interfaces? 

USE AN ACOUSTIC COUPLER 
TO READ /WRITE TAPE CASSETTES 


Jim Warren, Editor 

Steve Moore* just phoned in a hot idea. Why not use a 
data communications modem or acoustic coupler to read 
from and write to audio cassettes? 

Here are the advantages: By doing so, suddenly all of the 
“recording standards” problems disappear. The standards 
for couplers and modems have been accepted and in use for 
some years — and are well debugged. Why waste our time 
haggling over which homegrown standard to adopt, when we 
can “steal” the standards that have been proven in industrial 
use for well over a decade? 

Couplers and modems are specifically designed to inter¬ 
face to a byte-oriented digital device. Plenty of them are 
around that are already built to plug into a 20 mA current 
loop or RS-232 standard interface. It should be a simple 
matter to modify the master/slave circuitry (see the “gotchas”, 
next section) so they can talk to a computer instead of a ter¬ 
minal. (Quick! — all you hardware fanatics: send in the hard¬ 
ware details to guide us naive systems fanatics in making the 
necessary changes). 

Modems and couplers have been around for so long that a 
number of them are on the used equipment market. Some 
months ago, Walt Gruninger at the Minicomputer Exchange 
(154 San Lazaro Ave., Sunnyvale, CA 94086, 408/733-4400) 
told me that couplers could easily be had for about $100. 

It’s a quick way to gain hardcopy facilities when you have 
no hardcopy device. Here’s how: have your system dump a 
text file into your kid’s $19.95 audio cassette via a coupler 
or modem. Take the whole thing over to anybody’s coupler- 
equipped time-sharing terminal. Play the tape into the coup¬ 
ler (via a telephone handset that you scrounged from a sur¬ 
plus phone), and watch the pretty hardcopy be printed. The 
cassette tape is just acting as a hand-carried “telecommunica¬ 
tions system.” 

Once the coupler or modem is interfaced to your coupler, 
of course it can easily be used for telecommuning with another 
computer or a central program and data storage facility. Such 
central repositories are already being discussed as (1) a good 
solution to the problem of home computers having access to 
continually updated programs and data, and (2) an appropri¬ 
ate project for any of the larger clubs (if “hams” can get to¬ 
gether in constructing co-op relay stations, why can’t we coop¬ 
erate in building machine-accessable central repositories?) 

A quick check with an old analog engineer friend, down in 
Silicon Gulch, assured me that using this technique to handle 
data-rates up to 300 baud would present no problems, even 
when using el-cheapo cassette units and audio tapes. Note 
that tills is the same (rather slow) data-rate as the “Byte 
standard.” It is obviously no problem since, after all, coup¬ 
lers are rated up to 300 baud and are explicitly designed to 
function reliably over scuzzy, unconditioned, lowest-band- 
width telephone lines. Modems are currently available that 
will run up to 9600 baud over conditioned phone lines. My 
analog friend hedged somewhat on whether or not such higher 
data-rates would present problems on audio tapes. Again, I 
call on you hardware types for the necessary details to make 
this fantasy a reality. 

And now, the hidden gotchas: First of all, the garden vari¬ 
ety acoustic coupler is built with the electronic protocols for 
its analog end to slave to a master computer over the telephone 
handset, and its digital end to speak in full-duplex or half¬ 
duplex to a terminal. Its protocol circuitry must be modi¬ 


fied so that its digital port will be the slave to the computer 
and its analog part connect to the “terminal cassette.” Alter¬ 
natively, one might purchase a “master modem” that is nor¬ 
mally connected to a time-sharing computer; however, these 
are considerably more expensive, probably have unneeded 
bells and whistles, and are less available on the used market. 

If trouble appears in the analog end of this system, it will 
be considerably more difficult for the novice to debug and 
fix than is the case with strictly digital circuitry, or with the 
Byte or Tarbell cassette standards. If you use an acoustic 
coupler, you must homebrew a connection between it and 
the record and playback “I/O” of your cassette. This may 
require some amplification circuitry. 

Now it’s up to you. It is an interesting and valuable project 
that is obviously well within the limits of current technology 
and a hobbyist’s budget — a realizable fantasy. When you get 
it up and running, why not share your implementation with 
everyone via an article in DDJ? Incidentally, the quicker a 
computer-coupler interface becomes widely available for 
home computers, the quicker we will see the creation of the 
machine-accessable program and data repositories that I 
mentioned earlier — yet another “realizable fantasy.” 


*Steve Moore is a consultant with Moore Research, P.O. Box 
1562, Sacramento, CA 95814, (916) 441-1890. 

* * * ***** * ***** * * * 4 4MMMMMF tMMMHMMF *■*¥***■** 


U.S. POSTAL SERVICE 

STATEMENT OF OWNERSHIP, MANAGEMENT AND CIRCULATION 

(Required by 39 U.S.C. 3685) 

Dr. Dobb's Journal of Computer Calisthenics § Orthodontic 76Nov8 

3. FREQUENCY OF ISSUE A. NO. OF ISSUES PUBLISHEdI B ANNUAL SUBSCRIPTION 

monthly except for July § December annually ^ | $10 

4. LOCATION OF KNOWN OFFICE OF PUBLICATION (Street, City, County. State and ZIP Code) (Not printers) 

1010 Doyle #9, Menlo Park CA 94025 

same as No. 4 

6. NAMES AND COMPLETE ADDRESSES OF PUBLISHER. EDITOR. AND MANAGING EDITOR 

PUBLISHER (Name and Address) 

People"s Computer Co., 1010 Doyle #9, Menlo Park CA 94025 

EDITOR (Name and Addreu) 

Jim Warren, " 

MANAGING EOITOR (Name and Addreu) 

Jim Warren " 

cn lir (■ ■( J JJ t ti t t J if |i n imm diatrly then _ 1 _• _i „[ ..—t. 

be given.) 

NAME 

ADDRESS 

People's Computer Company 








8. KNOWN BONDHOLDERS, MORTGAGEES, AND OTHER SECURITY HOLDERS OWNING OR HOLDING 1 PERCENT OR MORE OF 
TOTAL AMOUNT OF BONDS. MORTGAGES OR OTHER SECURITIES (If there arc none, so state) 

NAME 

AODRESS 



na 






9. FOR COMPLETION BY NONPROFIT ORGANIZATIONS AUTHORIZED TO MAIL AT SPECIAL RATES (Section 132.122. PSM) 

The purpose, function, and nonprofit status of this organization and the exempt status for Federal income tax purposes (Check one) 

j^jHAVE not changed DURING have changed DURING (If changed, publisher must submit explanation of change 

10. EXTENT AND NATURE OF CIRCULATION 

AVERAGE NO. COPIES EACH 
ISSUE DURING PRECEDING 

12 MONTHS 

ACTUAL NO. COPIES OF SINGLE 
ISSUE PUBLISHED NEAREST TO 
FILING DATE 

A. TOTAL NO. COPIES PRINTED (Net Press Run) 

3125 

5000 

1. SALES THROUGH DEALERS AND CARRIERS. STREET 
VENOORS AND COUNTER SALES 

810 

1426 

Z. MAIL SUBSCRIPTIONS 

1332 

2670 

C. TOTAL PAID CIRCULATION (Sum oflOBl and 10B2) 

2142 

4096 


50 

60 

E. TOTAL DISTRIBUTION (Sum of C and D) 

2192 

4156 


933 

844 

2. RETURNS FROM NEWS AGENTS 

0 

0 

G. TOTAL tSumofR. FI and 2-.hould eauol net pres, run shoum 

3125 

5000 

ii. 1 certify that the statements made by me 
above are correct and complete. 

SIGNATURE AND TITLE' OF EDtJOJe. PUBLISH ER..BUSIN ESS 

— “ LfW-'U 


Nov./Dec., 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 7 


304 















































ITALICS IN VIDEO DISPLAYS 

One possible enhancement of character generation in 
TV typewriters is the incorporation of an italic mode. The 
same ROM could be used to produce the basic dot patterns 
for both italics and non-italics, only the character timing 
would change. Figures 1 and 2 show how text strings 
would look in both modes. In the italic mode, successive 
lines of each character would be displayed with a different 
time delay. Assuming a 7 by 9 dot matrix, the first line 
of each character (i.e., the top line) would be displaced by 
4 dots to the right. Line 2 would be displaced by 3.5 
dots (i.e., three and a half dot-clock cycles), and so on. 

Line 9 would have no displacement. A shift register IC 
could be used to implement the displacement, and an 
embedded control character (such as CTRL I) could be 
decoded to turn the mode on or off. The regular and 
italic modes could both be used in the same line of text 
with appropriate control of transitional timing, although 


this would complicate the 

logic required. , 

by Jim I 

R 

***** 

r* 5 i i 
*•* 

ll 
«• • 

• 

8 •*» 

* ♦ • 

• • • 

• ♦ • 

* •• • 






Figure 1. Regular Mode 


• 



/ * # V 

• * 



©' » 

< 

• 

# 

• © © 
f") /*-•) 

* • 

• . * 


• • M • 

• M 

m m 


Figure 2. Italic Mode 


SCROLLING MOD FOR TVT-2’s 

Dear Sirs, Oct. 7,1976 

The TVT-2 is the most popular video terminal used by computer 
hobbyists today. Until now, the users have had to settle for the 'page 
concept' with their terminals. Your readers might be interested in the 
fact .that now they can add scrolling to their TVT-2. A fully assembled 
scrolling modification board (model SM-2) is available from Lenwood 
Computer Systems, P.O. Box 67, Hiawatha, IA 52233. A complete 
set of instructions is supplied. The cost of the SM-2 is $20.00 plus 
$1.50 for postage and handling. 

Thank you for your time. 

Jay G. Francis P.O. Box 67 

Lemwood Computer Hiawatha, IA 52233 

Systems 


64 X 32 VIDEO DISPLAY KIT 

Gentlemen: 

I thought that some of the DDJ readers interested in video 
displays might want to look into a kit sold locally here in Dal¬ 
las. It is a 2K x 8 bit parallel I/O (32 lines of 64 chars); it may 
be optioned for RS232 also. 

The main reason for going to this unit was because of the 
several control codes that allow blink by code and blank. The 
blank/unblank allowed me to not only not use up my own 
rather limited core (RAM, actually), but to use the screen for 
extra RAM, as the unit will operate at machine speed — I’m 
using the INTEL 8080 prototyping kit. 

Readers interested can write to the company at this ad¬ 
dress: 

IOR 

P.O. Box 28823 

Dallas, TX 75228 

Sincerely, 

D. Moore 
Dallas, Texas 


64-CHAR MOD FOR TVT-II’S, NOW & SCROLLING, 
SOON 


Gentlemen: 

We would like to thank you and your readers for the interest in the 
TVT-11 64 character modification article that you published in your 
No. 6 issue. The response has been tremendous. After experiencing 
some initial problems with typo errors and delayed shipments we are 
now meeting with your 3 week delivery schedule. On November 1 we 
found it necessary to increase the price of our boards to $6.50 for the 
64 character board and $13.50 for the 2K memory boards. Printing 
costs have also required us to charge $2.00 for the instructions if re¬ 
quested without ordering the boards [a corrected copy of the necessary 
instructions is now available]. 

We have received many requests for a scrolling modification for the 
TVT-II and we are happy to announce that we will have one ready to 
ship out before the end of the year. The board is set up such that only 
five jumpers are required to install it. This was accomplished by hav¬ 
ing the board plug into sockets which replace IC's 34 and 41 on the 
mainframe. These IC's are relocated on the mod board. The board 
gives bottom line scrolling with the new line coming up clean. Nor¬ 
mal or scrolling modes are switch selectable with the scrolling not be¬ 
ginning until the page is full. Line feed is disabled when in the scroll¬ 
ing mode. It appears that the board will retail at $20.00 with sockets 
and instructions although this is not yet firm. 

Thank you, 

David O. Valliere Box 4241 

Digital Designs Victoria, TX 77901 


VTT GROUP BUY 

Dear Jim, Oct. 27,1976 

In response to our conversation on the phone today, here are all the 
details on the VT4000 group buy. There are two different buys avail¬ 
able at this time. One is the VT4000B, a complete crt terminal with a 
Motorola 12" monitor, completely assembled, tested and ready to use. 
The second is for the do-it-yourself types. It consists of the five PC 
boards without parts, the power supply and the cabinet for the VT 
4000A. To qualify for the group buy price, we will have to buy at 
least 10 of the buy or buys we choose. To try and clarify further, we 
cannot combine the two to get a total of 10. If the minimum of 10 is 
not reached by 15 January 1977, all money will be returned. To quali¬ 
fy as an order, full payment must be made at time of order. 

Prices: 

VT4000BA Assembled Terminal regular retail 999.95 


less 20% 199.95 

800.00 + 6.5% 
state tax + 2% 

TOTAL 868.00 

Bare bones lit separate parts regular retail 240.00 

less 10% 24.00 

216.00+ 6.5% 
state tax + 2% 
handling fee 

TOTAL 234.36 


The above prices include delivery in the Bay Area, outside the Bay 
Area will be sent freight collect. If shipped outside Bay Area subtract 
% of the handling charge. 

Make checks payable to: Video Terminal Technology. Mark on 
lower left of check: Homebrew Computer Club Buy. Send orders to: 

Norman Walters 
3107 Laneview Dr. 

San Jose, CA 95132 


NEW COSMAC COMPUTER 

At last, someone has come out with a microcomputer based 
on the RCA 1802 (COSMAC) and suitable for many hobbyists. 
Produced by Infinite, Inc. (Box 906, 151 Center St., Cape Ca¬ 
naveral, FL 32920), this machine has a 4-digit hex readout and 
integral hex keyboard. Standard on-board memory comprises 
256 bytes of RAM, externally expandable to 64K. Additional 
features include DMA as well as serial and parallel I/O. Assem¬ 
bled and tested, the price is $395 with case and power supply, 
$249.95 for a complete kit, or $179 for just the MPU board. 


Page 8 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Nov./Dec., 1976 


305 











MILITIA MAY AID HOBBYISTS 
COMPATIBILITY PROBLEMS 


Dear Jim, Sept. 7, 1976 

You are probably aware of the VVESCON Session II paper 
described in the attached extract from Electronic Design (below). 
Looks like the military may be giving us a hand with standard¬ 
ization. 

I enjoyed meeting you at Personal Computing '76. 

Best wishes, 

Joe Gilbreth 1229 Vista Lane 

Birmingham, AL 35216 

Recommendations for use of a common bus system 
will be made in Session 11, but in another context—for 
the standardization of military microprocessor systems. 

That will be proposed in a Session 11 paper, “Compati¬ 
bility Among Families of yPs”, by Hank Malloy, military 
program manager, Intel Corp. Malloy is also chairman of 
a newly organized task force on military microcomputer 
LSI, which is sponsored by the Electronic Industries 
Associates and the National Electronic Manufacturers Asso¬ 
ciation. 

To achieve any kind of standardization it is essential 
that bus structure characteristics be specified, Molloy will 
argue. Also, high-order languages will have to be used. 

An example of how such languages can contribute 
to standardization, Molloy will point to PL/M. Two popu¬ 
lar 8-bit |j Ps are the Intel 8080 and Motorola’s 6800. 
While PL/M was generated by Intel for the 8080, PL/M 
compilers are available to translate the syntax into object 
code for the 6800. [And Signetics 2650.] 

The EIA/NEMA task force will study drafts of two 
new MIL-M-3851 microprocessor detail specs, the /400 
for Motorola’s 6800 and the /420 for Intel’s 8080. 


MORE COMMENTS ON PROC.TOLOGY SOFT¬ 
WARE, PLUS SOME NOTES ON CASSETTE 
TAPE QUALITY 
Dear Jim, 

DDJ has become the best newsletter for the computer 
hobbyist. None of the commercial magazines can approach 
the wealth of information you provide. I enjoy every issue, 
especially the letters. Keep up the good work. [Aww, 
geee fellas . . .] 

Some more comments on Processor Technology software. 
I think the PT people have done a great job providing rea¬ 
sonably priced software. It seems that their programs are 
not thoroughly debugged. The source listings for FOCOL 
and BASIC do agree with the paper tapes. 

The problem with the PT BASIC INT function mentioned 
in DDJ No. 8 can be corrected as follows: 


AINT 

LDAX 

B 


SUI 

129 


JP 

AINT1 


XRA 

A 


MVI 

D,5 

AINT2 

STAX 

B 


DCX 

B 


DCR 

D 


JNZ 

AINT2 


STAX 

RET 

B 


Thanks for Fred Greeb for this fix. 

In addition, I’ve come across two more bugs: 

1. Formatted print will not work with fractional values. 
Example - %Z2% Variable = 1.097 Output =1.10 OK 

Variable = .097 Output = .0010 OOPS! 

Nov./Dec., 1976 


FRIDEN DOCUMENTATION FOR $10 

Dear Editor, Oct. 31,1976 

Some months ago I purchased a Burroughs-Friden 
Printer-Keyboard and the associated interface electronics on 
the surplus market. The model number is 9530-2. The cost 
was in the vicinity of $300, and looked like a pretty good 
deal for a hard copy unit. The major shortcoming is the 
lack of any documentation. For effective use of the unit 
with home computers some changes are necessary, but are 
virtually impossible to accomplish without adequate docu¬ 
mentation. I spent nearly all of my spare time for the last 
half year on the incredible task of deciphering the circuits 
on the interface boards. There are over 300 integrated cir¬ 
cuits (obsolete types) on the boards. It was the hardest 
puzzle that I ever worked on. 

It is likely that there are other computer freaks who have 
bought similar units and are in need of documentation. For 
$10,1 will send a copy of my documentation to anyone for 
his or her personal use. The documentation includes com¬ 
ments on almost all of the inter-board wires and logic diagrams 
of the boards and typewriter switches. It does not include 
explicit instructions for modification of the boards for home 
use, but perhaps I can generate that later. 

Sincerely, 

Robert L. Smith 2300 St. Francis St. 

Palo Alto, CA 94303 

Does anyone have original manufacturer’s documentation for 
these units? — Editor 


$3000 FOR 2,400 LINE PER MINUTE PRINTER 

Houston Instruments has 80-column and 132-column 
printers that print up to 2,400 1pm and up to 1,400 1pm. 
They say their interfacing is explicity designed for easy 
connection to micros. 

Houston Instruments is located at 1 Houston Sq., 
Austin, TX 78753. 


2. When a variable in a FOR/NEXT loop is decremented and 
becomes zero it is not recognized as zero. 

Example - 10 FOR 1=2 TO -2 STEP -1 
20 IF 1=0 THEN . . . 

The relation on line 20 never becomes true. The zero is 
apparently a “negative zero” since 
20 IF ABS(I)=0 THEN . . . 
will work. 

If any of the DDJ readers have a solution I’d like to hear 
from them. A letter to PT regarding these problems has not 
been answered. 

Realistic Supertape has been recommended in some hobby 
magazines as suitable for digital data recording. The October 
76 issue of Consumer Reports contains a test of audio cas¬ 
settes. Recording music and digital data are not directly 
related. However, it is interesting to note that Supertape 
was rated below average in two important factors - output 
uniformity and freedom from dropouts. From personal ex¬ 
perience I’d have to agree with the test findings. 

The four top rated cassettes were BASF Studio Series, 

Maxell UD-XLC60, Scotch Master, and TDK Super Avilyn 
SAC60. I’m not sure this can be printed in DDJ since it 
is copyrighted info. 

Happy computing. 

Adolph P. Stumpf 5639-A Ute 

Glendale, AZ 85307 

[My impression is that one may copyright text, not informa¬ 
tion. — Jim] 

Page 9 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


306 






THINKING OF OPENING A COMPUTER STORE? 


Before you do, consider the following financial figures. 
These were generated in September, 1976, by an independent 
ream of professional cost analysis consultants. They are pro¬ 
jected or “reasonable expectation ” figures for two classes of 
computer stores; a $20K/month store and a $30K/month 
store (gross). They are based on a number of in-person and 
in-depth telephone interviews with a large number of existing 
computer stores. 


NEW CANADIAN COMPUTER STORE 

The Computer Shop (of Calgary) is a brand new store 
serving the Canadian Rockies and western plains area. They 
carry a number of product lines, and hope to offer some of 
their own Canadian-made products in the near future. 

Austin L. Hook, The Computer Shop, 3515—18th St., SW 
Calgary, Alta., T2T 4T9, Canada, (403) 243-0301. 

“PERSONAL” COMPUTERS ARE SHOWING UP 
IN SCHOOLS 

The San Jose Unified School District is busying 14 Western 
Data Handlers, assembled. It already has ten IMSAI’s and a 
Polymorphic. It has originally been considering expanding a 
PDP-8 into a TSS-8 system, but decided to purchase these 25 
computers, instead — for the price of that TSS-8 expansion. 

Furthermore, Bob Albrecht noted, “SMRT won’t hurt 
San Jose.” (SMRT is the Single Message Rate Tariff that 
Pacific Telephone is about to inflict on users of business tele¬ 
phones who make lengthy calls. See August, 1976, DDJ.j 


Average Earnings For An Average Month 


Gross Sales 

$20,000.00 

$30,000.00 

Cost of Goods Sold 

13,600.00 

20.4Q0.0Q 

Gross Profit 
Deductions: 

6,400,00 

9,600,00 

Refunds, Bad Check 

$ 15.00 

$ 25.00 

Sales Expenses: 

Personnel Advertising 

10.00 

15.00 

Salaried Employees (2) 

1500.00 

1500.00 

Bonuses 

150.00 

250.00 

Royalties 

1000.00 

1500.00 

Subtotal 

/$2675.00/ 

/$3240.00/ 

Operating Expenses: 

Advertising (2%) 

400.00 

600.00 

Automotive 

35.00 

50.00 

Dues & Subscriptions 

7.50 

7.50 

Entertainment 

10.50 

25.00 

Equip. Rental 

30.00 

40.00 

Insurance 

75.00 

75.00 

Interest 

7.50 

10.00 

Office Supplies 

10.00 

20.00 

Postage 

17.50 

25.00 

Printing 

20.00 

30.00 

Prof. Service (Ace/Lease) 75.00 

75.00 

Rent 

450.00 

600.00 

Taxes 

35.00 

50.00 

Telephone 

100.00 

150.00 

Travel Expense 

50.00 

75.00 

Utilities 

50.00 

75.00 

Subtotal 

71373.00/ 

/1907.50/ 

Net Profit (11.7%) 
Monthly 

2352.00 

(13.8%) 3462.50 

Yearly 

$28,224.00 

$41,550.00 



Prepared by David Baran 
Age 11 


Page 10 


Sat Antoni 

\ 

Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


Nov./Dec., 1976 


307 










































JIM McCORD REPORTS ON THE LSI-11 

Dear Bob and Jim, Oct. 7,1976 

To follow up my conversation with Bob of a couple of 
weeks ago, this is to tell you about the LSI-11 stuff. 

At last count there were about 15 people in the S. Calif, 
area who were using the LSI-11. I understand that there are about 
an equal number in the Bay Area. Other than those two groups 
I know of no other “large” bodies of hobbyists using the machine, 
although there are undoubtably Isolated people around the 
country who bought them from various distributors. Perhaps an 
announcement in PCC or Dr. Dobb’s will help pull us together. 

The S. Calif, group bought their machines from a company 
called Applied Information Development, a subsidiary of SDC. 

AID is apparently building something that incorporates the 
LSI-11 and is selling the components partly as a way to get 
their own unit costs down. We got a 25% discount of quantity 
one price with a $5K order, and some smaller orders have since 
been filled at the same discount. Whether they would still do 
this for other groups I do not know, but probably they would. 
(Amateurs pay cash.) I have also seen other distributors adver¬ 
tising “club discounts” on the LSI-11. By the way, we went this 
route after trying for almost a year to put together a group of 50 
people to buy directly from DEC and never succeeding. 

There is a common belief that the LSI-11 is too expensive 
for hobbyists. I don’t agree. For about $ IK, you can get a 
processor, 8K bytes of memory and a serial I/O card, and a back¬ 
plane, fully assembled to industrial standards, that works when 
you plug it in. It took me 15 minutes to go from box to teletype. 
The machine has a very nice monitor, and for an extra $100 or 
so you get hardwired fixed and floating point instructions, for 
those who are into that. Plus, you get the very elegant and 
powerful instruction set of the PDP-11, all of the system software 
that has been developed for the 11 (at a price, of course), and 
the DECUS library which is full of 11 software and is going to 
get a lot fuller. All in all, I think it’s a pretty good deal. 

There are some disadvantages, of course. If the machine 
breaks you probably have to ship it back to DEC for repair. 

(DEC claims a very long MTBF, but who knows?). I don’t know 
what a nominal repair charge would be. Until somebody builds a 
LSI-11 — to — Altair bus interface, we won’t be able to use all 
the neat hobby peripheral cards. Memory is somewhat more 
expensive than for hobby machines, although it too comes fully 
assembled and checked out from a variety of vendors. You have 
to supply your own power supply and box, although that isn’t 
a big deal. Also, some of the most desirable software like the 
BASIC interpreter is still pretty expensive. I think DEC should 
consider releasing the papertape stuff to DECUS — probably they 
have recovered the cost by now! In all, though, I think that the 
LSI-11 has a lot to recommend it to the hobbyist, particularly to 
those who are more into programming than hardware. 

So far no really creative applications for the machine have 
emerged from our group, since most of us are still working on 
developing auxiliary hardware like terminals and stuff. Periphe¬ 
rals include a few TVT’s and TTY’S, papertape readers and 
punches, and cassettes. Three of us have buiit the InteColor 8001 
intelligent color terminal kit and are using it as our main I/O 
device (that’s a story for another day). The peripheral that most 
of us would like to get is, of course, a floppy disk, but so far we 
haven’t found anybody who makes an affordable controller for 
the LSI-11. That shouldn’t be too far off, though. 

Anyone who has an LSI-11 or is interested in one is welcome 
to write to me. So far there is no organized newsletter for the 
machine but undoubtedly one will emerge when enough people 
are interested. DEC will create a DECUS Special Interest Group 
(SIG) for hobby users of the 11 or 8 or both, which would take 
care of nuisances like printing and mailing, but we need a few 


POSTSCRIPT TO ‘COPYRIGHT MANIA’ 

Dear Jim, Aug. 25, 1976 

I am writing this letter as a postscript to the article 'Copyright 
Mania' in the May issue of Dr. Dobb’s. I became rather attracted 
to TRAC (trademark of Rockford Research, Inc., and don't you 
forget it) and therefore wrote to Mooers asking for information 
regarding the development of a TRAC processor. Two months 
later, I received a copy of a 'License Agreement for permission to 
use Rockford Research copyrighted writings on TRAC language in 
academic experimentation.' What it consisted of was an agreement 
that Rockford Research would not sue me if I signed the agreement 
and sent them $10. That (the promise that they won't sue me) is 
all I get for my $10 (manuals are another $15). Also, once I 
finished the TRAC processor I could not: "publish, reproduce, 
resell, lease, give, lend, circulate, or license the . . . [TRAC pro¬ 
cessor] . . . or any portion thereof in any manner or on any 
medium, which shall include but not be limited to copies, tapes, 
films, computer program library deposits . . ." (there was about a 
paragraph more). Anyway, that rules out sending to Dr. Dobb’s, 
which was my idea for the processor from the start. The agree¬ 
ment also wanted me to agree not to challenge the Rockford 
copyright. 

In short, I have no objection with a person or group copy¬ 
righting a program, but this seems a bit excessive. 

Thanks for the time, and keep up the good work. 

Yours, 

Chris Pettus PO Box 611 

Malibu, CA 90265 


PRAISE FOR PALO ALTO TINY BASIC & TINY 
TREK, AND A QUIBLET ABOUT THE VDM SOFT¬ 
WARE 

Dear Jim, Oct. 5, 1976 

PALO ALTO TINY BASIC and TINY TREK have to be the best 
$4.00 investment I ever made! I'd like to recommend it to all Dr. Dobb 
Dobb’s readers. (For further details, refer to Dr. Dobb’s, May 1976, 
with an addition of software for a VDM display in June/July 1976.) 

The tapes came back within 4 days from the Community Compu¬ 
ter Centre (which must be a record for 'Trudeau's Turtles'), and every¬ 
thing worked immediately. The abbreviating possibilities of P.A.T.B. 
really make for conpact programming (P. instead of PRINT, for exam¬ 
ple), in conjunction with multiple statements per line. 

One thing I would have liked to have seen would have been simple 
strings for inputting and outputting words, names, etc., but one can't 
have everything in less than 2K, I guess. (Any chance of Li Chen Wang 
re-considering . . .?) 

I haven't had too much use out of TINY TREK — mainly because 
my kids won't let me have a turn! However, the times that I have 
played, I have thoroughly enjoyed it, and it ranks up there with the 
other versions I have played (STARTREK, and STARTREK 3D on an 
AMDAHL 470). As a matter of fact, it is extremely difficult to win, 
and that increased the enjoyment (with the frustration). 

Another problem in using the VDM software given in June/July 
1976Z>. Dobb’s, is that when listing a long program the screen goes 
zzzip! and all you catch is the last few instructions that remain on the 
screen. A delay, or a hold feature would be nice. 

Still, for 6K of memory I have hours of fun — or at least my kids 
do. I'm reduced to playing after lights out for them. What the heck 
can I do with my other 10K? 

Sincerely, 

Basil R. Barnes, VE6BB Box 1226 

Bonnyville, Alberta 
CANADA, TOA 0L0 

P.S. Can I obtain Mr. Wang's address? [Dr. Lichen Wang, 150 
Tennyson Ave., Palo Alto, CA 94301, (415) 321-6983] 


more users before that becomes reasonable. 

See ya, 

Jim McCord 3710 State St. 

SysteMetrics, Inc. Santa Barbara, CA 93105 

P.S. 

Jim, thanks for the stuff on PerSci. They had an ad in Inter¬ 
face this month, offering drive and controller for just over a kilo- 
buck. It’s a really fantastic intelligent controller, requiring prac¬ 
tically no support software in the host machine. If I can’t find a 
compatible controller for my 11,1 may go this route, writing my 
own drivers. 


Nov./Dec., 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 11 


308 





A GOOD RESPONSE TO COMPLAINTS 
ABOUT TARBELL TAPE UNITS 

Dear Jim, Sept. 19,1976 

Thank you for giving me the opportunity to reply to the 
notes about my cassette interface in your Volume 1, Number 
8 issue. 

I believe that no product is ever perfect, so I continually 
revise both the documentation and the interface itself. Since 
I started delivering these units over a year ago, I have gone 
through four revisions of the boards, and at least six revisions 
of the manual. These changes were largely the result of com¬ 
plaints, suggestions, and returned survey forms, which are at 
the end of each manual. The first ten kits especially, were 
followed very closely, and the owners were asked to immedi¬ 
ately inform me of any problems they had with either the 
manual or the board. In this sense, the kits were “tested on 
persons unfamiliar with the device.” 

Although I realize that the term is a relative one, I 
don’t feel that the implementation of this device has been at 
all “sloppy.” Of course, I’ve had my share of problems, like 
any of the other manufacturers, but I’ve made every attempt 
to follow up what I consider good design practices, and to 
make the system as clean as possible. 

Unfortunately, I did have a run of boards that had bad 
plated-through holes, and got through my inspection 
undetected. I have since discontinued my relationship with 
the manufacturer that produced these boards, and selected 
another. My first revision D cassette interfaces were 
delivered September 3,1976 (beforeDr. Dobb’s Number 
8). The boards in these kits, one of which is enclosed, are 
far superior to the previous ones, and the plated-through 
holes look beautiful. Revision D also includes all the latest 
modifications, including several unused inputs connected to 
pull-up resistors. The connector pin alignment has also been 
corrected slightly. 

Several months ago, I contracted with someone to com¬ 
pletely rewrite the manual. The rough draft is now being 
reviewed, so it will probably be ready to print in about a 
month. This manual provides new information, such as 
siagrams for all the integrated circuits, step-by-step instruc¬ 
tions for the beginner, and a more thorough theory of 
operation section. Although my present manual is not in a 
professional format, I am proud of the fact that it is chock- 
full of the kind of information a hobbyist needs to get his 
interface up and running and useful. The new manual will 
be even better, and some of the pages have already been 
added to the present manual. 

One page of the manual starts: “If you cannot make 
at least ten 8K-byte transfers with no errors, you have a 
problem, and the items below may be of some help:” 

This is followed by several items to check. The last two 
items on this page state: “If you still have problems, 
please return the unit, preferably with your cassette recorder, 
and I will get it operating perfectly for you without charge. 

If you are completely dissatisfied, you may return the 
interface for a refund within 90 days after you accepted 
delivery.” 

I don’t know if there’s another manufacturer that 
stands behind his product like this, but I think it attests to 
my confidence in the Tarbell Cassette Interface. I have not 
charged one penny for repairs yet, and in all the units I’ve 
shipped, only one has asked for (and received) a refund. I 
sincerely believe that most of the people with these units 
are completely happy with them. 

I completely support your suggestion to write or phone 
me directly. Please —if you have problems with your interface, 


and we can’t seem to get it going over the phone or by mail, 
send it to me for repair. There have been some units that 
have been difficult enough to repair that I’ve actually supplied 
a replacement unit, at no cost. I don’t really see how you can 
lose when you buy one of my interfaces. 

Sincerely, 

Donald E. Tarbell Tarbell Electronics 

(213) 832-0182 144 Miraleste Dr., No. 106 

Miraleste, CA 90732 

CONFERENCE ON COMPUTERS IN HUMANITIES 

Papers and participation are being sought for the Third International 
Conference on Computers in the Humanities to be held Aug. 2-5, 1977, 
at the University of Waterloo, Waterloo, Ontario. Send papers or ab¬ 
stracts to Prof. Paul Bratley, Dept. DTnformatique, Universite de Mon¬ 
treal, Montreal, Quebec H3T 1J4 by January 15, 1977. 


Tarbell praise, a fancy disassembler, 

& AN APL CHARACTER QUERY 

Dear DDJ, Sept. 26, 1976 

Just a quick note on the Tarbell interface about 
which you say you have been receiving a lot of com- 

f ilaints: mine worked the first time I tried it, and refused 
o drop so much as 1 bit when fed by a tape recorder 
with a variable speed control. I could go 20% slow, and 
about 10% fast, with no trouble. Only by intentionally 
tfying, could I get it to drop a bit to see if my checksum 
routine was working. In daily use for about 2 months, 
it has dropped a bit only once. It is a fantastic peripheral. 
I use it to back up floppy disks as it is the only device 
that is 1) fast enough; 2) cheap enough; 3) reliable 
enough. I had no ‘non-plated-thru hole’ problems. A 
friend says Tarbell left some TTL inputs floating, which 
causes noise susceptibility, but I have not had this prob¬ 
lem. 

Keep up the fantastic work on supplying the 
hobbyist community with public domain software, and 
P.S. are you interested in a disassembler which I wrote 
and commented? It is 8080 based, uses sense switches to 
determine when to generate instructions, when to gener¬ 
ate DB’s with ASCII, or DB’s with hex. It can be used 
as a one-pass process to just see object, or can be used 
as 3 passes: 1) every address reference (JMP, LXI, CCLL, 
etc.) is placed in a symbol table compatible with Processor 
Tech Package No. 1; 2) a pass to edit the symbol table 
and change default labels (Lxxxx) into meaningful ones if 
you have some knowledge of the source code—this pass 
is entirely optional; 3) do the actual disassembly, with 
most labels put in, and all LXI’s, JMP’s etc. referencing 
labels. The output is a source listing, and optionally, 
using a sense switch, writes the source in a format com¬ 
patible with Processor Technology Package No. 1. 

I would appreciate you publishing a note asking if 
anyone knows a source for APL character generators which 
could be retro-fitted to a VDM. 

Sincerely, 

Ward Christensen 688 E. 154th St. 

Dolton, IL 60419 

Yes, Yes, Yes! Send us your super disassembler—including, 
of course, user documentation, at least nominal internal 
documentation, and annotated source code. 

What sort of disc system are you using and how do 
you like it? (And, may we publish your reply?) 

What sort of printer and printer software are you 
using? [The original of this letter had an unusual type 
face, and was left & right justified.] 

—Jim 


Page 12 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Nov./Dec., 1976 


309 





TARBELL TOUTED 

About the Tarbell interface: I have two of them (since I have two 
machines) and they both work great. I recommend them. 

However, neither of them worked right off. One was an early type 
and needed fixes; the other had a bad board and needed fixing. But 
Tarbell gets them right back (a couple of weeks) and they're great! 

In fact, most of this stuff doesn't work immediately. None of my 
stuff has worked right off. That's why you should buy from someone 
who will back his merchandise. I've bought some used equipment and 
have regretted it. When you buy, buy quality and mentally add 25% 
for repairs unless you know at lot about this stuff that I don't know. 

Say, what’s your experience with molex pins for 1C chips? I've 
not used them but I hear they work okay. Sure sounds better than 
buying sockets at 50 cents each. 

Jim Leek 2801 F 

Bakersfield, CA 93301 


TARBELL TRICKY 


A CLUB SURVEY: TOO SMALL FOR STATIS¬ 
TICAL SIGNIFICANCE, BUT WE LIKED IT 

Dear Mr. Warren, October 3, 1976 

Thought you might be interested in the enclosed results 
of our first membership survey. 

Sincerely, 

Robert R. Wier Texas A&M University Micro- 

Survey Chairman computer Club, Box M-9 

Aggieland Station, TX 77844 


These are the results of the first periodical Texas A&M Micro¬ 
computer Club Consumer Survey and Opinion Poll taken in Sept., 
1976. 


Dear Jim, Oct. 8,1976 

A few weeks back you asked for user comments on the Tarbell 
Cassette Interface. Here are mine, based on a not-yet-up-and-running 
board. 

When I first put the thing together, I had trouble getting the 
sync light to come on at ail. So I sent the board back to Don Tarbell, 
asking for help. He corrected a few errors, made some modifications to 
the circuit, and sent it back to me — no charge. I still had some trouble 
getting the unit to read in data, even after setting it up with the aid of 
the sync light, and set it aside until I could get hold of a scope. The 
scope showed that adjustment was even more critical than the instruc¬ 
tions would indicate. I was getting a good sync light reading over a 
wide range of settings, but the waveform was stable for only a very 
small range. That problem corrected, I could read in data, but still 
had substantial numbers of errors. I've pretty well stopped at that point, 
since business is taking me out of town too much to concentrate on a 
solution. 

My observations: 

— The interface is sensitive and error-prone. I assume this is the 
price one pays for the high speed. 

— A scope is nearly essential to correct problems. This is true for 
all computer applications, actually, but this was the first of six boards 
I've assembled that required more than a little initial prodding. 

— Don is good to his customers. I have no qualms about calling 
him if I can't get the error problem corrected, but want to put in my 
own best efforts before bothering him further. 

— An article in DDJ mentioned that the user has to figure out 
that a start byte is essential. True. This can be a real problem if you 
don't use Don’s programs, because that's the only place mention is made 
of it. 

in short, I have mixed emotions. I appreciate the potential speed 
of the interface and Don's integrity in backing his product. But I would 
have been much farther along in getting a system running with a slower, 
but more fool-proof (literally) unit. Right now, I'm still using console 
switches, since I can't use the keyboard effectively without reloadable 
software. 

Sincerely, 

Jim Wilson San Diego, CA 


Dear Jim, Oct. 14,1976 

A P.S. to a letter I wrote a few days ago about my experiences with 
the Tarbell cassette interface unit: 

It is now up and running, apparently reliably. My solution finally 
was to hook it up to my hi-fi tape deck through an old Lafayette stereo 
amplifier that was going unused. I then used an oscilloscope to remove 
as much of the distortion as possible by adjusting the bass and treble 
controls. 

This is obviously a pretty unwieldy solution. So when I finish some 
more important things, I plan to buy a cheap audio amplifier with tone 
controls (something less than 10 bucks), and use it for a more perman¬ 
ent installation. 

Sincerely, 

Jim Wilson 
San Diego 


Seymour Cray, designer of giant machines for CDC, and 
[ designer of the monster CRA Y-I, is said to often refer to his 
I machine as a “back-end processor. ’ 


Nov./Dec., 1976 


Dr. Dobb's Journal of Computer Calisthenics 


HOW TO READ IT: Companies are listed in each division in de¬ 
scending order of rating. Entries are of the form NAME (rating/ 
no. of respondees). The ratings are determined from a number of 
ratings based on response speed, quality of product, pricing, com¬ 
plaint satisfaction, and overall quality. Companies which received 
less than 2 ratings are not listed. Note that it could be "safer" to 
deal with a company which has a rating slightly lower than some 
others if a large number of persons found it favorable. 

In all categories, most favorable rating was 5, least favorable was 1. 

COMPONENTS: 

DIGI-KEY (4.58/4) 

TRI-TEK (4.5/2) 

JAMES (4.42/10) 

S. D. SALES (4.42/6) 

NEWARK (4.36/3) 

ALTAJ (4.04/5) 

FORMULA INT'L (4.00/2) 

GODBOUT (3.9/4) 

MESHNA (3.82/6) 

DELTA (3.54/4) 

BABYLON (3.36/3) 

SOLID STATE SALES (2.89/5) 

POLYPAKS (2.62/8) 

OLSON (2.35/5) 

B-A (2.28/5) 

RADIO SHACK (1.92/11) 

PUBLICATIONS: 

Dr. Dobb’s (4.38/4) 

Byte (4.23/10) 

73 (4.18/3) 

Ham Radio (4.16/4) 

People’s Computer Company (4.10/4) 

Computer Hobbyist (3.75/2) 

Popular Electronics (3.65/10) 

Interface (3.08/3) 

Radio Electronics (2.92/9) 

Creative Computing (2.88/3) 

KITS AND MAJOR COMPONENTS: 

SWTPCO (4.16/8) 

HEATHKIT (4.16/9) 

PROCESSOR TECH (3.90/2) 

IBM (3.75/2) 

MOS TECHNOLOGY (3.74/3) 

IMS (3.73/4) 

MITS (2.82/5) 

"Should software be included in the price of the hardware?" 

YES: 82% NO: 18% 

Computer Stores: "Good, but expensive" was the general response. 

Selected comments from "What do you think is the biggest problem 
facing personal computing now?": 

“Information spreading”, “mercenaries”, “need free software”, 
“long mailing waits”, “number of software compilers, price”, “soft- 
ivare for the 6800”. 


& Orthodontia, Box E, Menlo Park, CA 94025 


Page 13 


310 






IMSAI “INCOMPATIBILITY” 

Dear Jim, Oct. 14,1976 

I have just entered a real-life description of “compati¬ 
bility”. While trying to figure out why a simple three instruc¬ 
tion program would not work as documented in the Intel 
8080A manual being executed on my IMSAI 8080,1 dis¬ 
covered that the flag bits (as stored in memory via PUSH PSW) 
were not as Intel describes. 

For openers, bit-5 and bit-3 are supposed to be ‘O’. On my 
IMSAI 8080 bit-3 was always *1’, and bit-5 fluctuated with, 
as yet, no pattern sometimes being ‘0’ and other times being 
T. At this time I played around a bit and found that the 
XRA A instruction did not work as documented. At this 
point, I contacted IMSAI. 

Very quickly, I was put in contact with Mr. Bruce Hollo¬ 
way of IMSAI. After Bruce confirmed that strange things 
were happening with his IMSAI 8080, he researched the 
problem and reported the following: (my interpretation 
follows) 

These IMSAI 8080’s use a NEC 8080A chip instead of an 
Intel chip. NEC reported in a confidential letter to IMSAI 
some “minor” differences between their chip and Intel’s. 

At all times, the chips were stated as being software compat¬ 
ible. The software differences are: (1) Flag bit-3 is always 
‘1’; (2) Flag bit-5 is set ‘1’ on subtract-type operations, and 
is reset ‘0’ on add-type operations; (3) The CY (carry) and 
AC (auxiliary carry) flags are now properly set for both adds 
and subtract operations; (4) The DAA (decimal adjust) opera¬ 
tion now works properly following either an add or a subtract 
(using flag bit-5); (5) THE AC FLAG IS NO LONGER 
CLEARED BY LOGICAL OPERATIONS. Additionally, 

Bruce mentioned that there are also some “minor” hardware 
differences, having to do with data on the same bus not being 
present at the same states as with the Intel chip (I wonder 
what problems this might cause?). 

When I heard all of this, I informed Bruce that the fact that 
the AC flag is not cleared means that software written for an 
Intel chip would not work on the NEC chip. For example: 

MVI A,9 

ADD A this forces the AC to be set 

XRA A this is supposed to clear AC and CY 

DAA this should result in ‘00’ but produced ‘06’ 
with the NEC chip!! 

At this point Bruce agreed with me since he has written 
similar code that would not function properly with the NEC 
chip. Bruce has informed me that this incompatibility was 
not known previously. 

Well, in the span of the last three days, I have uncovered an 
8080A “compatible” chip that is, for all purposes, as incom¬ 
patible to the Intel 8080A as is the Z-80: programs can be 
written that will run properly on the Intel 8080A, but will 
run properly on the MiC 8080A, and vice-versa. 

I am now waiting for the Intel 8080A IMSAI will be ship¬ 
ping shortly. What really disturbs me is not the imcompatibil- 
ity itself, but not being informed. I don’t believe that NEC 
should claim their chip to be “compatible”, but I abhor the 
fact that their letter describing these differences was labeled 
CONFIDENTIAL and not released to the end user of their 
chips. 

I hope that this letter may save some people untold hours 
debugging a program that doesn’t work because of the NEC 
chip. Hopefully, IMSAI will refrain from using such incom¬ 
patible chips on MFU boards, and will exchange customers’ 


NEC chips for truly compatible chips, or at least distribute the 
NEC ‘confidential’ documentation. 

Sincerely, 

Glenn S. Tenney Compro 

Sr. Designer 2111 Ensenada Way 

(415) 574-3420 San Mateo, CA, 94403 

IMSAI RESPONDS 

Dear Mr. Warren, Oct. 18, 1976 

Following is the letter promised per our telephone conversation of 
October 15, 1976. We will be sending this information to all past and 
future customers who may have the NEC chip. > 

All of the features described in the following synopsis were desiqned 
by NEC to improve the 8080A chip. 

Thank you for your cooperation. 

Very truly yours, 

IMS ASSOCIATES, INC. 14860 Wicks Blvd. 

Marvin Walker San Leandro, CA 94577 

General Manager (415) 483-2093 

SUMMARY OF DIFFERENCES BETWEENI8080A AND uPD8080A 

1. During an interrupt, an RST or CALL instruction is accepted by both 
both processors. With the uPD8080A during M2 and M3 of a CALL 
instruction, the INTA status signal remains active. The 18080A re¬ 
quires the use of an 8228 to generate INTA by decoding 02H (all 
status inactive). Both I8080A and uPD8080A work correctly with 
Intel and NEC 8228/38. 

2. Interrupt during HALT state, with the UPD8080A INTE is reset at 
T2.02 of the next clock period following the sampling of I NT, as 
opposed to the I8080A where INTE is reset at Ml ,T1.02 of the 
interrupt instruction fetch. 

3. Instruction Execution Times: All instruction execution times are 
the same except the following, which require the listed number of 
T (clock) states assuming no wait cycles. 



I8080A 

UPD8080A 

MOV r,r 

5 

4 

RET 

10 

11 

DAD 

10 

11 

XTHL 

18 

17 

SPHL 

5 

4 

4. Data on 

Address Bus during Ml, T4 and T5 with uPD8080A is the 

same as during T1-T3. With the I8080A, the Address Bus is unde- 

fined during T4 and T5. 


5. Subtraction is performed as a direct binary operation in the 


uPD8080A and the carry. Auxiliary Carry and subtract flags are 
properly set to indicate the subtract operation and borrows from 
each four bit nibble for use with the DAA instruction. 

6. DAA instruction works correctly, directly following both addition 
and subtraction operations with uPD8080A, while I8080A BCD 
subtraction must be performed by a sequence of additions and 
subtractions. 

With uPD8080A, three flags. Carry, Auxilliary Carry and SUB, 
are used for DAA operation, both for addition and subtraction 
(see Section 8). Carry and Auxiliary Carry are properly set to 
indicate borrows/carries from each four bit nibble for use with 
the DAA instruction. SUB flag is used to determine whether 
required DAA is for addition or subtraction. BCD arithmetic 
programs written to run on I8080A will also run on uPD8080A 
unless the operations ORA, XRA, ORI, XRJ, INR, DCR or DAA 
are depended on to affect the AC flag. Also see Section 7. * 


7. Flag Registers 

for I8080A and uPD8080A 

are as follows: 


D 0 

Di 

d 2 

°3 

d 4 

d 5 

°6 

D? 

I8080A c 

1 

P 

0 

AC 

0 

z 

s 

UPD8080A c 

1 

P 

1 

AC 

SUB 

z 

s 


Note that if the flag byte is pushed on the stack to be used as a byte 
in any operation such as a compare, that the value will be different 
for the I8080A and the uPD8080A. 

8. All flags are set the same for I8080A and uPD8080A except as 
noted. 

A. Number of Flags: 

I8080A: Five flags 

Zero, Carry, Sign, Parity and Auxiliary Carry 
uPD8080A: Six flags 

SUB is sixth flag (subtract) 

*We suggest the use of a SUB A to clear the AC and Flags, since the 
common XRA A does not clear the AC flag on the uPD8080A. 

Nov./Dec., 1976 


Dr. Dobb's Journal of Computer Calisthenics 8i Orthodontia, Box E, Menlo Park, CA 94025 


311 



SUB flag is: 

set by . . . DCR, SUB, SBB, CMP, SUI, SBI 
and CPI 

reset by. INR, ADD, ADC, ADI, ACI and 
DAD 

affected by POP PSW 

B. Affect on Flags: 

Except as noted, the affect on the five common flags (Z, C, S, 

P and AC) are all the same for I8080A and uPD8080A. 

I8080A: AC is affected by I NR, DCR and DAA 

AC is reset after logical operations ORA, XRA, 
ANI, ORI and XRI 

AC is not always set correctly to indicate bor¬ 
row from bit 4 after subtraction. (Subtract 
is performed by two's complement and 
only Carry is complemented to indicate 
correct borrow.) 

UPD8080A: AC is not affected by INR, DCR and DAA 
AC is not affected by logical operations 
AC is always set correctly to indicate borrow 
from bit 4 after subtraction. 

9. Status information for I8080A and UPD8080A is the same except 
as follows: During HALT Acknowledge, D7 (MEMR) I8080A= 1, 
UPD8080A = 0; during Interrupt Acknowledge while HALT, D3 
(HLTA) I8080A = 1, uPA8080A = 0; and during CALL instruction 
following interrupt, DO (INTA) during M2 and M+ for I8080A = 

0 and for uPD8080A = 1. 

10. Pull-Up Resistors on the Data Bus: The uPD8080A does not 
utilize active pull-up resistors on the Data Bus. To make inter¬ 
facing easier on the DATA BUS V||\| min = 3.0 volts for the 
uPD8080A vs. 3.3 volts for the I8080A. With uPD8080A, DATA 
BUS input leakage current is the same as any other input. 

11 .The temperature range for the 18080A is 0—70 degrees C. and for 
the uPD8080A is -10 to +70 degrees C. 

12. DC characteristics are the same except as noted: 


V|H 

18080A 

3.3 Min. 

uPD8080A 

3.0 Min. 

v OH 

- 

3.5 Min. @ Ioh = -1-0 ma 

'DD (AV) 

Typ = 40 

Typ = 55 

'DD (AV) 

Max = 70 

Max = 75 

'CC (AV) 

Typ = 60 

Typ = 50 

'CC (AV) 

Max = 80 

Max = 70 

'dl 

-2.0 ma Max. 

±10 ua Max. 

'fl 

-100 ua Max. 

- 10 ua Max. (s> Vm = 

V SS + 0.45V 

13. AC characteristics are the same except as noted. See data sheet for 

details: 

I8080A 

tool output delay from 

01 low (SYNC.DBIN) - 

UPD8080A 

160ns Max. 

t DS2 data setup time to 

02 during DBIN 150 ns Min. 

- 

iRSOI ready setup time 

to 01 high 

— 

240ns Min. 

t|s INT set up time 

During 02 for 

During 02 for 

all modes ex¬ 
cept HALT 
mode 

During 01 in 
HALT mode 

all modes 


14. All instructions are executed in the same sequence except XTHL. 
The uPD8080A first reads the top of the stack then writes the 
contents of the L register into the top of the stack, next it reads 
the data at the stack pointer +1, and then writes the contents of 
the H register into the stack pointer +1. The I8080A reads the 
stack twice then writes the stack twice. 

15. Data on Data Bus During T4 and T5: 

I8080A: The contents of the internal bus during T4 and T5 

are available at the data bus. 

uPD8080A: Data Bus is in the high impedence state during T4 
and T5 

16. HOLD Operation while DAD: 

I8080A: Same timing as HOLD in Write mode, i.e., HLDA 

appears from 01 of the state following T3, and 
Address/Data Bus goes into floating state from 02 


of the state following T3. 

uPD8080A: Same timing as HOLD in Read mode, i.e., HLDA 
appears from T3-01 and Address/Data Bus goes 
into floating state frqm T3-02. 


NEC RESPONDS 

Dear Mr. Warren: Nov. 2,1976 

We recently received a copy of a letter sent to you by a Mr. 
Tenney, and feel that it is appropriate for us to respond. We 
hope that this will eliminate any concerns your readers may 
have about the use of the NEC ]j PD8080A. 

All the differences between the Intel I8080A and the NEC 
yPD8080A are clearly stated in our y PD8080A Family data 
sheet and y COM-8 Software Manual. These documents are 
available through any of our distributors, representatives or 
NEC Microcomputers, Inc. These documents clearly enumer¬ 
ate the additional features which lead to the improved per¬ 
formance of the yPD8080A, both in simplified code and 
faster execution. 

However, a user need not utilize these features in his pro¬ 
gram. If the application program is written for the Intel 
8080A, it will run on the NEC part except for a few very 
limited situations. For an example, all NEC PDA-80 and 
Intel MDS-800 programs operate properly using either part, as 
do all system programs in the IMSAI 8080 and the Altair 8800 
to the best of our knowledge. It is obvious from the differ¬ 
ences that one can create sequences of code that do operate 
differently in several of the 8080A’s on the market today, 
but most of these do not represent useful sequences of appli¬ 
cation programs. 

As far as the CEAIMS we make as referred to in Mr. Ten¬ 
ney’s letter, we do claim as explained above that the yPD- 
8080A is “compatible”, Upward Compatible! This is an im¬ 
proved part and we do not believe that our or IMSAI’s cus¬ 
tomers should be limited to the functionability of the 8080A 
when an improve part is available. We are concerned that 
some people do not understand the advantages of the yPD- 
8080A. Therefore, we encourage you to print this letter for 
your readers. 

If there is anything else we can do to help you in this 
matter, please contact me. 

Very truly yours, 

David F. Millet NEC Microcomputers, Inc. 

Technical Staff 5 Militia Dr. 

Microprocessors Lexington, MA 02173 


TSK, TSK . . . OUR HEADLINE WAS ONLY 
OFF BY A FACTOR OF 1000 


Dear Jim, Oct. 12, 1976 

Many thanks for your nice article about our super duper, low 
priced magnetic tape storage products on Page 6 of your September 
issue. Only one thing wrong with it: You're guilty of overbyte in 
the headline. Our maximum capacity is 60 Kilobytes, not Mega¬ 
bytes. The text had it right. [Must have been "a computer error." 
- Ed.] 

Two problems, come to think of it. Your second paragraph says 
that we manufacture only the drive and cartridges. Not true. In 
addition to the drive and cartridges, we also make what we call a 
digital OEM system. Unfortunately, the OEM system sells for $390 
in single quantity, which is a byte much for the non-manufacturer 
to chew. 

Yours very truly, 

Irma R. Johnson Micro Communications Corp. 

Vice President 80 Bacon St. 

Waltham, MA 02154 


Nov./Dec., 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia. Box E, Menlo Park, CA 94025 


Page 15 


312 




Product Review: POLY-88 
AN EXCELLENT SYSTEM 

PLUS NOTES ON SOME S-l 00 " GOTCHAS” — CATCH 1 6 HE x 


by Jef Raskin 

Box 511, Brisbane CA 94005 
(415) 467-4674 


In our last Gotcha” a few manufacturers were taken to 
task, and fewer still were praised for the quality of their 
products and documentation. This time we take a brief look 
at the familiar Altair and IMSAI chassis, and a long look at 
the very interesting Poly 88. 

I refuse to revive the old Altair vs. IMSAI debate. As 
everybody now knows, the old Altair power supply was 
feeble. My Altair worked fine after I had replaced its supply 
with a custom 40 amp at 8 volt wonder. [In an external box 
that should never land on your foot.] I actually liked the 
Altair case better than IMSAI’s, and am glad to see MITS 
has carried the design over to its new machine. Just two 
screws and the top slides off. If the screws are omitted, the 
case is just as strong to top loading. On the IMSAI there 
are four load bearing screws which I could never get at 
because something was always sitting alongside the computer. 
If the screws are omitted, the top sits rather low. Not good. 

Since I get letters asking: Yes, the heavy duty supply on 
the IMSAI is excellent. I haven’t tested the new MITS supply, 
but it looks good. I don’t think they’ll make the same mistake 
twice. After all, if they’re smart enough to make a computer 

I find a serious flaw in the IMSAI front panel. Those big 
paddle switches that make the IMSAI look sort of like a PDP- 
11 have a small space between their tips. IMS should take 
note, as it prevents errors, and still makes it easy to hit two 
at once on purpose. 

The Poly 88’s almost S-l 00 bus (hobbyist bus, Altair bus, 

I could care less) has the best switches of all: there aren’t any. 
Polymorphic Systems, in Goleta (rhymes with “Lolita”) 
California makes this very unassuming little box that does a 
lot of things right, which the bigger names (with bigger boxes 
and price tags) are doing wrong. Not that Poly is perfect. My 
corrections to their manuals were extensive and numerous. 

But they listen harder. For example, when I called up IMS 
with a long list of carefully annotated errors in their manuals, 
they put me off, promised to call back, never did, put me off 
when I called again, etc. In the end, my careful documenta¬ 
tion of their manuals did them no good at all, and frustrated 
me. Polymorphic Systems listened, sent me extra manuals so 
that I could send them mine with corrections and the like. 
They’re not dumb; they’ve got a proof reader working for 
free. It is my opinion that manufacturers should hire a proof 
reader before sending manuals out, but the way that is now 
used is cheaper and only has the drawbacks of having a few 
hundred frustrated customers out there. And, they get hun¬ 
dreds of phone calls of the form, “Where does R21 go?” 
(Maybe the phone company is behind the bad manuals.) 

The Poly-88 system — which has replaced my Altair 8800 and 
my IMSAI 8080 — has but two controls on the box. An on- 
off switch with a power-on indicator light, and a reset button 
with a halt light. That’s all you get; that’s all you need. It 
surely doesn’t look impressive. Sort of like a toaster in size 
and shape. The Poly is by far the easiest of the S-l 00 bus 
computers to build. The backplane and power supply are all 
on one well-designed motherboard. The only wires leading to 
it are from the transformer and the front panel button via 
two Molex connectors. It is all very neat with almost no 
point-to-point wiring. Someone was thinking when they 
designed this one. To take the backplane/motherboard out, 
just pull the two connectors and undo six easy screws (which 
go into captive nuts on the board, nothing to get lost inside). 
Have you ever tried to take out an IMSAI backplane? More 

Page 16 


screws than an X-rated movie, and then there are wires screwed 
onto the board. Dumb. 

For some reason Poly’s tiny little case requires eight screws! 

A bother. The kind of thinking that went into the electronic 
design was absent when the case was created. It is on such 
small shoals that great ships are wrecked. There are more 
bolts than slots. There are 5 slots. Is that enough? Let’s see, 
one for the CPU, one for the video board (it’s a dandy), one 
for a ROM board to hold something comfy, like BASIC, and, 
say, a 16K RAM board. With a Pixie Verter and a keyboard 
you’re ready to go into any American household with a TV, 
plug in and program away. And you’ve a lot left over — 
another 16K? Voila! (or ’Cello! for that matter) we have a 
32K computer with serial port, cassette interface, video 
interface, and software aplenty, power supply and on/off 
switch tucked away in our viola case. I must mention that 
a two-port serial interface is built into the CPU, and the RS- 
232 and cassette interface cards are snug against the connec¬ 
tors in the back of the case. That is a lot of computer in an 
itty-bitty base. 

That isn’t enough? You say you have a pile of old 4K 
boards? I do. Poly has the Idea of the Year (at the rate 
we get new ideas in this business, maybe the idea of the 
month): At one side of the chassis the backplane terminates 
in a male S-l00 bus connector. On the other side of the 
chassis is a female connector. Aha. You can buy another 
chassis, put it alongside the one you already have, sort of 
nudge them together and guess what. Nope, you don’t get a 
litter of 4040’s. You push them together and you get... 
a ten-slot chassis. Actually, eleven slots ’cause you can put 
a card into the end and let it stick out instead of yet another 
chassis. This is useful and saves need for an extender board. 

The power supplies are separate and not bussed together. Like 
the IMSAI this machine has a substantial power supply. They 
rate it 6 amps at 5 volts. I loaded it down with 9 amps worth 
of boards and a length of nichrome wire and it was still putting 
out 8.2 volts. The point is, as you expand the chassis, you 
expand the power supply as well. Each expansion chassis 
costs $155. Takes two or three hours to build. Polymorphic 
Systems forgot (so typical of manuals) to tell you that R6 
should be omitted on slave chassis. So I tell you. 

Before I find some drawbacks (I am not in the employ of 
Poly) there was an advantage to the multiple chassis that I 
hadn’t suspected when I ordered the miniature monsters. 

When working on a board, sometimes it’s handy to have a 
program sitting around, but it disappears when you turn off 
the power to make a change on the board. But with the 
separate chassis idea, you put the CPU and memory in one 
box, the board under test in another. Just turn off the one 
chassis to remove the board, make the changes, replace and 
turn on the chassis. Program still there, testing continues. 

Not all is peaches and cream . . . The diodes supplied 
with three of the four I’ve built—you know, the little ones 
for the plus and minus 16 volt supphes—were small signal 
diodes instead of power rectifiers. The smoke 'test lived up 
to its name. A quick trip to Radio Shack (it was Sunday) 
got me a handful of diodes of the right rating. 20 for $1.98 
or something like that. The first one I tested was bad. But 
there were 21 in the bag! The other 20 were good, so no 
complaint there. But, dear reader, always test. 

The assembly instructions were terrible. There were as many 
many errors as the other brands had [see DDJ, Vol. 1, No. 8]. 

Nov./Dec., 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


313 



Lots. They say they’re coming out with a new manual. If 
it’s any good, I’ll probably write it up. Volume II of the 
instructions, however, is on the side of the Angels. This is the 
clearest manual on the 8080 instruction set I have ever seen. 

I leave it on the living room floor for people to pick up and 
read. It’s that good. Someday I may even get a coffee table 
for it. So if you want to learn the 8080, get that manual. 
Maybe some magazine will serialize it (in good serial style: 

“Last month our hero got saved from the evil Dr. Halt when 
an interrupt arrived in the nick of time . . .”). 

What is life like without a front panel? Sheer joy, my 
friends, sheer joy. You can deposit, examine, single step, 
everything. You can do it in style, from a keyboard. When 
you single step you see not only the address and the con¬ 
tents (and in hex, not in binary [less than joyful to those 
who prefer octal]) but you also see: the accumulator, the 
flags, the B-C register, the D-E register, H and L, the program 
counter and the stack pointer. 

And you also see the first eight bytes of the stack, the 
location the PC points to, the next seven bytes thereafter, 
and the eight bytes pointed to by each of the B, D and H 
registers. It certainly beats lights; it also beats the hex displays 
found on a few other machines. 

I hate to say this, but the Polymorphic advertisements 
understate the advantages of their machine. Too bad for 
them. It should be clear that the conventional front panel 
is a holdover from an earlier era. It’s too bad that those 
lights and mysterious switches appeal to so many of our 
computer cult. Like those famous tailfins on cars, it im¬ 
presses the neighbors, but doesn’t make the machine run 
better. Of course this goes for all the ROM replacements 
for front panels. Having both a front panel and a ROM 
monitor is fine; you just have to pay for it. 

For just under $600 you get, with the Poly system, 
the bos, power supply, video board, the monitor in ROM, 

512 words of RAM, room for 3K more of ROM, and all the 
sockets you need for the ICs. Of the S-100 bus machines, it 
is the only one where the minimal system has to do real 
programming. (O’ course, you have to add a keyboard and 
a TV monitor — but nobody includes them for the price.) 
Enough free advertising for Poly. I am not so much interested 
in selling computers for them as I am in seeing my computer 
cousins not wasting their time flipping switches and misread¬ 
ing lights. Any system (as I said) with HEX display is better 
for a human being than the same system with a BINARY 
display, and of the S-100 systems available this week, the 
Poly will get more done per your hour than any of the others — 
that’s building hour, programming hour, and even earning 
hour. Other manufacturers, if you’ve got a better system, 
tell me about it. Don’t bother, unless you use the S-100 bus 
(so we can go to others than just you for add-ons). But, do 
tell me if you’ve got something really different like 8K for 
$50. 

A disadvantage of not having the conventional front 
panel (after all this, I do know one disadvantage) is that 
the CROMEMCO Bytemover program won’t work. It 
needs switches. You can get a parallel port and eight switches 
and wire it up for port address FF, but that’s a bother. So I 
called up CROMEMCO (if their documentation had been 
better this would not have been necessary) to find out how 
to write a 2707 EPROM without their program. The method, 
they told me, consists of writing each PROM in its entirety, 
from beginning to end, a number of times. Say a hundred to 
three hundred times. “How many times does the Bytemover 
write each PROM?” I asked. “Thirty-two,” I was told. Sol 
wrote a little program that wrote the stuff into all the PROMS 
255 times (you can guess why). It worked. I sold my PROM 
containing the Bytemover program. [Another disadvantage 
of no switch register is that it means the user has no sense 

Nov./Dec., 1976 


switches, often useful in man-machine interacting programs. 

- Editor] 

There are a few devilish “gotchas” in the Poly system. The 
first problem showed up in trying to run MITS BASIC (duly 
purchased from MITS). .Since the monitor likes to reside in 
low memory, and so does BASIC, there was a conflict. The 
solution: Poly provides a jumper to cut, and one to add to 
allow you, under program control, to switch back and forth 
between the processor-boardmemory (3K ROM, ViK RAM) 
and other memory having the same address. In my case the 
program that copied BASIC from PROM resided at location 
E400, so I used the following program to get BASIC up: 

3E 20 D3 04 C3 00 E4 

The seven bytes say: put 20 (hex) into the accumulator, then 
send it to port 4. Sending the 20 to port 4 turns the onboard 
stuff off. The next three bytes of the program jump to E400 
to get the program started. Now, of course, that little program 
is on the PROM. 

The next problem was with the old MITS serial board. 

I’ve always wondered why some serial boards have a crystal- 
stabilized clock of their own since they could just count down 
from the CPU’s clock signal which is on the bus. That’s what 
the old serial board did — it counted down. PROBLEM! The 
clock rate on the Poly system is a few percent slower than 
the MITS and IMSAI clock. So the old MITS serial I/O 
counts down to the wrong baud rate. You have to (as I did) 
rewire all the counter presets. You will have to calculate the 
proper values. Since my computer wasn’t up ’til this was 
fixed, I was glad to have my Model-T vintage HP-35 to do 
the necessary calculations. The newer MITS 88-2SI0 (a 
fine board in my book) does it right and has its own crystal 
(and works like a charm in my Poly, without modification). 

And another, almost unforgivable error on the Poly: it 
is not quite an S-100 system. Sure, everything I tried with 
it worked except for that one board. But when a manufac¬ 
turer came by my place with a prototype of their new 16K 
board and plopped it into the Poly it didn’t work. A few 
“unimportant” outputs and inputs to the CPU were left off 
the bus. More importantly the WAIT signal is not on the 
bus. This let the memory know that the computer was in the 
HALT state, which the memory needs to know. This is not 
the place to go into that (gotta leave something for other 
articles). This particular device did not need the other signals 
but some new board might. The point is this: you are either 
on a standard or not on a standard. There is no in-between. 
Polymorphic Systems’ Poly 88 is not really an S-100 compu¬ 
ter. You have to ask first: does the board you wish to use 
with it require separate disables (address, status, data out)? 

Does it need HLDA, INTE, WAIT? If it does, then the Poly 
won’t do. The disables are on the bus, in non-standard loca¬ 
tions, but they can only be disabled as a group (as required 
by DMA’s). One of the output signals such as WAIT can be 
fed through a spare buffer on the board to the bus. (For your 
information it’s IC 8, an 8T97. Because this is DDJ I’m sure 
the editor will permit the gory details.) Bus lines 22,18, 23, 

26,19,28 and 27 are not on the bus. To put WAIT on the 
bus, jumper pin 24 on the 8080 to pin 2 of IC 8, and pin 3 of 
IC 8 to bus fine 27. I don’t know if I’ve missed something else 
that should have been on the bus. I called Polymorphic Sys¬ 
tems; they tell me that are putting out a fist of differences, and 
plan to connect the WAIT as I suggest. It’s the least they can 
do. 

Another problem with the Poly is that when a number of 
chassis are plugged into one another, the cooling, adequate 
with a single system, becomes inadequate. Not only does the 
system look like a toaster,... My friend, Kent Strother, made 
a cardboard enclosure with a super quiet ROTRON fan (as per 
the IMSAI). Now even the regulators run cool. The secret: 
put the fan on top, sucking up, thus forced air aids natural 

Page 17 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


314 


convection. There are slots around the periphery at the bottom 
of the case, and all other openings are sealed, forcing the air to 
pass the boards and transformer. Not enouth attention has 
been given to air flow in the IMSAI or the ALTAIR 8800 which 
both have a lot of stagnant air spots even with the fan going. 
Kent also designed a cardboard case for the keyboard that used 
to He around naked. Call us the Cardboard Computer Com¬ 
pany. It’s cheap, in keeping with our homebrew budget, and 
if done carefully looks surprisingly good. 

Second, a word for the Poly video board, but first, a word 
for the Processor Technology video board. The PT VDM is a 
top-notch piece of equipment. Their check-out procedure as 
you put in the chips is a classic of good manual writing. The 
VDM board I built worked perfectly. The Poly video board 
suffers from drawing current at the hairy edge of what the 
regulator can handle. What I like about it is the relatively 
fine graphics it allows: a 128 by 48 bit resolution. The 
graphics can be mixed with alphanumerics in any arbitrary 
way. It is a good use of that eighth bit that the ASCII code 
doesn’t require. Use of the Motorola MCM6571AL character 
generator gives me upper and lower case Roman characters 
as well as the Greek alphabet and a gaggle of other special 
characters, including the entire official ASCII set, the square 
root symbol, etc. 

I don’t know enough to write articles like this without 
some help from my friends so: thanks to Doug Wyatt, my 
constant colleague on microcomputers, Kent Strother for 
the cardboard craftsmanship, Steve Calebotta for finding 
the problem with the missing WAIT, and out editor Jim 
Warren for the phrase “Hidden Gotchas” that graces these 
articles [who plagerized it from Dave Wyland at RatheonJ. 

If you find any hidden, or just plain hanging out gotchas, 
send them to me. I’ll check them out and include them in 
a future article. You’ll get credit in the mag, and as much 
moola as I get. Zilch. [Ahhh ... but such glory and fame 
you get!] 

PRAJS^FO^RASKI^^UGGES?ION^™"^™" 

FOR DDJ 

Dear Jim, Sept. 25, 1976 

I just read the very informative articles by Jef Raskin 
["A Bit of Wheat Amongst the Chaff"—a critique of problems 
found in a number of kits] in the September issue and think it 
is the greatest aid to the hobbyist planning on purchasing his com¬ 
puter system. I certainly feel that both Dr. Dobb’s and Jef Ras¬ 
kin have done a great service for the hobbyist. Please publish more 
articles like this one. If Jef has inputs on software by all means 
let's hear them. Jef's appraisal was, I believe, very objective. 

In order to make more room for articles of value I would 
like to see you eliminate as much as possible the references to 
new clubs and new stores which I feel are more than adequately 
covered elsewhere, i.e.. Byte, Interface, On Line, etc. If you must 
how about a one-liner like On Line. [These items are used only as 
"filler" items.] 

You might consider using smaller type for all articles in 
order to make room for your backlog of articles to be published. 
[We're willin'. Are there any objections to dropping from 10-point 
type to 8-point type?] 

It might also be appropriate to eliminate items such as the 
article on Energy Publications which does not seem to be per¬ 
tinent to the subject matter of Dr. Dobb’s. [This also happened 
to be a filler article of the right size. However, we do admit to a 
soft spot in our hearts for the topic of energy problems and 
people-oriented alternative energy sources. Our only excuse for 
its inclusion is that it is a technology-related subject closely 
associated with consumer advocacy.] 

Also, did you really need two pages for the PCC ad? 

IPCC newspaper was Dr. Dobb’s mama. Would you have us 
ignore our ma? Anyway, it's a "product" we think is well worth 
the attention of hobbyists, and as such, we published details 
about it.] 

All in all, I think Dr. Dobb’s is great, but it can be better. 

[We agree.] 

Very truly yours, 11 Linda Rd. 

R. I Demrow Andover, MA 01810 

Page 18 


SWTPC KEYBOARD IMPROVEMENTS 
Dear Jim, 

Here’s a plug for the latest in keyboards from SWTPC. 

For those of us whose only experience with SWTPC key¬ 
boards is with the original ones, the bad memories may make 
one a bit leery about giving them another chance. The new 
KBD-5 has much better contacts than before, and it uses the 
2376 keyboard encoder which makes it a cinch to redefine 
keys. At $50, plus another 10 for a UART+ to make it 
standard serial RS-232, this is the best possible buy I can 
imagine. 

Bob Powell 22 Bunker Hill Run 

E. Brunswick, NJ 09916 


A [WELL DESERVED] RAVE REVIEW FOR 
THE APPLE COMPUTER SYSTEM & FACTORY 
RESPONSIVENESS 

Editor, Journal of Dentistry Oct. 11, 1976 
Dear Jim, 

Last July I found out about the miracles the silicon engineers were 
performing. I was immediately hooked on home computing. But 
since I had very little experience with computers, I was worried about 
all the delays that everyone seemed to complain about when they 
returned equipment for serving or clearing up the inevitable bugs. 

After spending the summer carefully examining the systems avail¬ 
able, I went to the PerCom convention in Atlantic City at the end 
of August. There I saw an Apple computer working. Well, it was 
love at first sight. I bought one from Itty Bitty in Evanston and 
took it home with me to New York. Well, it took them three weeks 
to send me two cables and two transformers and a keyboard that 
were needed to run it! When they finally arrived (after a prompting 
phone call), my Apple developed a glitch almost immediately (the 
only Apple that the Computer Mart of NY has ever seen with a 
problem!). Fearfully anticipating a two-month delay, I sent it to 
Steve Jobs at Apple Computer Co. He got it back into my hands in 
two weeks working perfectly!! He even explained an elementary 
error in a simple program I had tried! Since it took me over a 
month to even get literature from Sphere (and I wrote them a 
personal latter) or the Digital Group, this must be a record for a 
personal computer company. 

My Apple is terrific. Last night I loaded your 6502 floating 
point routine and can now multiply, etc. Unfortunately all the 
answers are complemented. I've got an 8K system with a cassette 
storage unit, keyboard, (used) TV monitor, and a 4K BASIC (that's 
not quite finished yet but does run) for less than $1 K. Moreover 
Apple promises (and I'm now a believer) to replace my current 
memory chips with the new 4K dynamic chips sometime next spring 
for about $500. The Apple was designed to be pin compatible with 
the new chips and so I'll have 32K on board. 

Any company that can produce equipment like this and then match 
it with their service is really great. Companies like them and magazines 
like yours make home computing an accessible field for everyone. 

Yours, 

Raymond T. Hoobler 789 West End Ave. 

New York, NY 10025 

[Apple Computing is at 770 Welch Rd., Palo Alto, CA 94304, (415) 
326-4248] 


PRAISE FOR SUNSHINE COMPUTER CO. 


Dear Editor, Nov. 24, 1976 

A commendation is in order for Sunshine Computer Company of 
Carson, California. I bought a Sanyo cassette recorder from them 
on Saturday, Nov. 20. They forgot to pack in the AC cord. When I 
discovered the omission Saturday night, I made a note to call them 
Monday about it. Sunday night they called and apologized, and 
said they'd mail it Monday. Received it Tuesday, postmarked Mon¬ 
day, as promised. Total time to resolve my query: minus one day. 
Sincerely, 

Jim Raehl 943 Begonia 

Escondido, CA 92027 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Nov./Dec., 1976 


315 






It’s a BASIC ? 


Bob Van Valzah 
1140 Hickory Trail 
Downer’s Grove, IL 60519 


It’s an APL . . . 


Dear Jim, Sept. 12,13,15, & Oct. 2,1976 

Here is my entry in the hobby software field. It’s a tiny 
language called CASUAL. That’s the Chicago Area Small Users 
Algorthmic Language. Here are the design goals used: 

• Must run on any 8080 system with a terminal and 2K 

of RAM starting at 000 000. 

• Complete machine control is possible — inputting from 

and outputing I/O ports, memory READ and 
WRITE (PEEK and POKE), machine language 
CALL. 

• 16 bit everything — line numbers, expression values. 

• Arrays 

• String I/O 

• One tape works on any system — POKE’S itself for 

most popular I/O boards (like MITS BASIC). 

• Deletion of unwanted features at initialization time. 
Note: The source tape alone is 2% inches think (fan fold), 
somewhat greater than 75000 characters at this time. 

I am currently at version .164. Version .09 was 
distributed to local hobbyists three weeks ago. That version 
was 200 bytes longer and had some small bugs. 

While I don’t have the time or the means for mass 
distribution of CASUAL, binary paper tapes and documenta¬ 
tion are available from: 

1. CACHE Software Library, Lloyd Smith, 530 Pierce Ave., 

Dyer, IN 46311 

2. Chicago Computer Store, Lou Van Eperen, 517 Talcott 

Rd., Park Ridge, IL 60068 

3. Itty Bitty Machine Company, 1316 Chicago Ave., Evan¬ 

ston IL 60201 

4. American Microprocessor, Ed Cooper, at the Chicago 

Land Airport, 20 N. Milwaukee Ave., Prairie View, 

IL 60069. 

Converting CASUAL to other CPU’s: 

If you’re using a machine without a hardware stack, I’d 
say start from ground zero. CASUAL makes extensive use of 
the stack and almost no use of memory direct instructions. 

By putting CASUAL’S stack on my VDM, I was able to count 
48 bytes on the stack while LIFE was running. Perhaps an 
8008 with hardware stack mod wouldn’t be too bad, but it 
would take a lot more than 2K. 

Memory Info: If all features are retained at initializa¬ 
tion, 403 bytes are left in a 2K system. If all features are 
deleted, 610 bytes are left (slightly over !4K). The code for 
the interpreter, I/O drivers and all buffers except the 
CASUAL Program buffer takes 1.61K. If all functions are 
deleted, it takes 1.40K. The first IK can be ROM or protected- 
after initialization. 

The mnemonics for the assembler have been significantly 
modified from the “Intel Standard” mnemonics. 

Loading Time: It takes about 5 minutes to load and 
initialize itself at 10 CPS. Using a Tarbell Cassette Interface 
at maximum baud rate, it should take about 4 seconds. 

Dr. Dobb’s is superb!!! Keep up the fine work! 

Bob Van Valzah (312) 852-0472 (Home) 

1140 Hickory Trl. (312) 971-2010 Ext. 231 (Work) 

Downers Grove, IL 60519 

P.S. I’m 18 years old and entering my second year working 
for an EE degree. 


It’s CASUAL! 


NOTES ON MY ASSEMBLER 


MY OPCODE 

INTEL STANDARD 

LB H 

MOV 

B,H 

SP <> HL 

XTHL 


DE <> HL 

XCHG 


SP <HL 

SPHL 


LXI HLLABL 

LXI 

H,LABL 

JFZ 

JNZ 


JFS 

IP 


JTS 

JM 


JTZ 

JZ 


LCI 010 

MVI 

C,10 

ND E 

ANA 

E 

OR A 

ORA 

A 

STHL 

SHLD 


LDHL 

LHLD 


LAI ”G 

MVI 

A,’G’ 

CAL 

CALL 


XR A 

XRA 

A 

SUE 

SUB 

E 

SB D 

sue 

D 

DSD 

DW 


DSS 

DB 


177 

177Q 


0100 

100 


LBUL=072 

LBUL 

EQU ' 

NDI 300 

ANI 

300Q 

CP M 

CMP 

M 

* 200 

ORG 

200Q 

INA 

INR 

A 


NUMBERS 

All numbers without leading zeros are taken as octal, all 
with leading zeroes are taken as decimal. preceding a 
number causes it to be taken as hex. 

REGISTER SYMBOLS 

Eight bit registers are referenced with the letters A, B, C, 
D, H, and L. Register pairs are designated by PSW, BC, DE, 
HL, and SP. 

OPERATORS 

— Subtraction or unary minus 

+ Addition or unary plus 

Swaps the first and second bytes of a 16 bit quantity 
Evaluates to the ASCII equivalent of the character fol¬ 
lowing it, with the eighth bit low 
. Evaluates to the address of the first byte of the instruc¬ 
tion about to be assembled 


Nov./Dec., 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 19 


316 


CASUAL 


CASUAL STATEMENTS 


GOOD AND BAD POINTS 

16 BIT LINE NUMBERS, 1 - 65534 
LINE-NUMBERED "BASIC-LIKE" TENT EDITOR 
CONTROL C (*C) ABORTS EXECUTION AND LISTING 
3 BYTE LINE OVERHEAD 
IMMEDIATE EXECUTION MODE 

MULTIPLE STATEMENTS PER LINE WITH COLON (" : ") 

PRINTS LITERAL STRINGS, EXPRESSIONS, OR CHRf FUNCTION 
CRLF SUPPRESSION AVAILABLE 

ONE LEVEL OF SUBROUTINE NESTING BUILT IN, EASILY EXPANDED 

PEEK POKE FUNCTIONS FOR READING OR MODIFYING MEMORY 

INF / OUT FUNCTIONS FOR I/O PORT CONTROL 

SINGLE AND DOUBLE BYTE ARRAYS - SINGLE DIMENSIONAL 

SELECTABLE ARRAY BASE ADDRESSES FOR MULTIPLE ARRAYS 

SIMPLE VARIABLES A - Z, 26 OF THEM 

USER DEFINABLE FUNCTION, LIKE DEF FNAOO 

RUB-OUT TAKES BACK LAST CHARACTER TYPED 

CONTROL U i + U) ABORTS LINE BEING TYPED 

72-CHARACTER LINE INPUT BUFFER 

FOUR (4) RELATIONAL OPERATORS, <, = , >, # (NOT EQUAL) 

NO OVERFLOW CHECKING ON MATH FUNCTIONS 

15-BIT SIGNED ADD, SUBTRACT, MULTIPLY, AND DIVIDE 

STANDARD EXPRESSION HIERARCHY, RELOPS THEN / THEN +, - 

PARENTHESIS TO ALTER HIERARCHY, NO LIMIT ON NUMBER 

SPACES MAY BE INSERTED FREELY TO IMPROVE CLARITY 

OPERATOR TO PROVIDE REMAINDER AFTER LAST DIVISION 

OPERATOR TO PROVIDE RESULT OF LAST EXPRESSION 

MACHINE-LANGUAGE CALL FUNCTION 

SINGLE-CHARACTER KEYBOARD INPUT FUNCTION 

RUN, AND RUN LINE NUMBER COMMANDS 

LIST, AND LIST LINE NUMBER COMMANDS 

NEW COMMAND CLEARS PROGRAM STORAGE AREA 

NOTHING CLEARS VARIABLE VALUES, NOTHING !! 

JUMP TO OPERATING SYSTEM PROVIDED 
INITIALIZATION DIALOGUE A LA MITS 

COMPLETE WITH BOOTSTRAP AND BINARY LOADERS (AUTO TRANSFER) 
GOOD ERROR MESSAGES 

RUNS IN 2K COMPLETE, > 400 BYTES LEFT IN A 2K SYSTEM 
CASUAL IS SLOW 

CASUAL DOCUMENTATION 


CASUAL IS AN INTERPRETER WRITTEN IN 8080 ASSEMBLER. 
CASUAL IS ALSO THE NAME OF THE SYNTAX WHICH IS ACCEPTED BY 
THE INTERPRETER. 

ONCE CASUAL HAS BEEN LOADED AND THE INITIALIZATION 
DIALOGUE COMPLETED, IT WILL TYPE OUT "CASUAL V .XX", 

WHERE XX IS THE VERSION NUMBER. THEN CASUAL WILL ENTER THE 
COMMAND INPUT MODE. THIS IS INDICATED BY THE PRINTING OF A 
PERIOD (".") AS A PROMPT CHARACTER. CASUAL IS NOW 
READY TO ACCEPT A LINE OF INPUT FROM THE USER. THE USER MAY 
BACKSPACE OVER TYPING ERRORS WITH THE RUB-OUT KEY. 

HE MAY ELECT TO START THE LINE OVER BY STRIKING THE CONTROL 
U C+U) KEY. WHEN THE USER IS DONE WITH A LINE, HE STRIKES 
THE CARRIAGE RETURN KEY, TELLING CASUAL TO PROCESS THE LINE 
JUST TYPED. DURING LINE INPUT, ALL OTHER CONTROL 
CHARACTERS WILL BE IGNORED, EXCEPT CONTROL G C + G) (BELL). 

CASUAL HAS THE ABILITY TO EXECUTE COMMANDS IMMEDIATELY 
AFTER THEY ARE TYPED, OR TO STORE THEM AWAY FOR LATER 
EXECUTION AS A PROGRAM. CASUAL WILL SCAN THE INPUT LINE 
FOR THE FIRST NON-BLANK CHARACTER. IF THIS CHARACTER IS A 
NUMBER, CASUAL WILL SAVE THIS LINE IN THE CASUAL PROGRAM BUFFER 
IF IT IS NON-NUMERIC, CASUAL WILL ACCEPT THE LINE AS AN 
IMMEDIATE-MODE COMMAND, AND ATTEMPT TO EXECUTE IT. 

EDITING 


IF LINES ARE INPUT TO CASUAL STARTING WITH NUMBERS, 
THEY WILL BE EDITED INTO THE CURRENT PROGRAM IN THE 
PROGRAM BUFFER. LINES ARE ALWAYS STORED BY LINE NUMBER 
IN ASCENDING ORDER. THE INPUT: 

30 . =65535 
10 ?/ING/ 

20 7/TEST/; 

WILL BE SAVED AS: 

10 7/INC/ 

20 7/TEST/; 

30 .=65535 

CORRECTIONS CAN BE MADE AFTER A LINE HAS BEEN 
ENTERED BY RETYPING THE CORRECTED LINE WITH THE SAME 
NUMBER AS THE BAD ONE. THE NEW LINE WILL REPLACE THE 
OLD ONE OF THE SAME NUMBER. NEW LINES MAY BE INSERTED 
BETWEEN OTHER LINES, AT THE BEGINNING, OR END OF THE PROGRAM 
BUFFER. THE USER SIMPLY GIVES THE NEW LINE A NUMBER 
BETWEEN THE NUMBERS OF THE LINES ABOVE AND BELOW IT. 

LINE NUMBERS MAY BE IN THE RANGE 1 TO 65534 INCLUSIVE. 

THE USER MAY LOOK AT ALL OR PART OF THE PROGRAM 
CURRENTLY STORED IN THE CASUAL PROGRAM BUFFER BY USING THE 
LIST COMMAND. WHILE IN THE COMMAND MODE, TYPING "L" <CR> 
WILL START LISTING WITH THE LOWEST-NUMBERED LINE, AND 
STOP AT THE END OF THE BUFFER OR WHEN CONTROL C <+C) 

IS TYPED. TYPING "LXXXXX" WILL START LISTING AT LINE 


THE FOLLOWING SECTION WILL COVER ALL THE STATEMENTS 
WHICH ARE LEGAL IN CASUAL. AS EACH STATEMENT IS PRESENTED, 
EXAMPLES WILL BE GIVEN OF ITS USE. IF POSSIBLE, I RECOMMEND 
TRYING THESE EXAMPLES AS THEY ARE ENCOUNTERED. 

CASUAL HAS BASICALLY ONLY THREE (3) TYPES OF STATE¬ 
MENTS: PRINT, ASSIGNMENT, AND STRING INPUT. THIS IS ONE OF 

THE REASONS FOR ITS INHERENT SIMPLICITY. VARIATIONS OF THESE 
THREE STATEMENT TYPES PROVIDE A WIDE RANGE OF FUNCTIONS. 

THE PRINT STATEMENT 


THE FUNCTION OF THE PRINT STATEMENT IS TO SEND DATA 
TO THE USER'S TERMINAL. SINCE THE WORD "PRINT" IS MORE 
DIFFICULT TO RECOGNIZE THAN A SINGLE CHARACTER, A 
QUESTION MARK <"?") IS USED TO SPECIFY THE PRINT FUNCTION. 
TRY THIS: 

710-4 CCR) 

CASUAL WILL IMMEDIATELY PRINT: 


AS YOU CAN SEE, CASUAL RECOGNIZED THE "7" AS BEING 
A PRINT STATEMENT, EVALUATED THE FORMULA FOLLOWING 
IT, AND TYPED OUT ITS VALUE (IN THIS CASE 6). 

OF COURSE, CASUAL CAN DO MORE THAN SUBTRACT. 

TRY THIS: 

710+4;10+4;10/4 (" + " MEANS MULTIPLY, "/" MEANS DIVIDE) 

CASUAL WILL TYPE: 

14 40 2 


NOTE THAT A SEMICOLON <"; ") IS USED TO 
SEPARATE THE FORMULAS. 

NOTE TOO, THAT IN THE EXAMPLES, A SPACE IS PRINTED 
BEFORE AND AFTER EACH NUMBER. IF IT HAD BEEN A NEGATIVE 
NUMBER, THE LEADING SPACE WOULD BE A MINUS SIGN <"-"). 

LITERAL STRINGS MAY BE PRINTED BY ENCLOSING THEM 
IN SLASHES. TRY THIS: 

7/THIS IS A CASUAL LITERAL STRING/ 

CASUAL WILL TYPE: 

THIS IS A CASUAL LITERAL STRING 


A COMMA IN A PRINT STATEMENT CAUSES A SINGLE 

BYTE TAB CHARACTER TO BE SENT (011 OCTAL). A COMMA OR 
SEMICOLON ON THE END OF A STATEMENT WILL SUPPRESS THE CRLF 
AT THE END OF STATEMENT. SEE APPENDIX G FOR MORE INFORMATION. 
THE ASSIGNMENT STATEMENT 


NOTE: THIS SECTION IS DIVIDED INTO TWO PARTS: THE 

MEANING OF CHARACTERS WHEN THEY APPEAR ON THE LEFT OF 
AN ASSIGNMENT, AND THE MEANING ON THE RIGHT. THEY DON'T 
ALWAYS MEAN THE SAME THING. 

LEFT SIDE 


CHR. MEANING 

THE NUMBER OF THE NEXT LINE TO BE EXECUTED. .=350 
CAUSES CASUAL TO EXECUTE LINE 350 AND CONTINUE FROM 
THERE. .=0 CAUSES CASUAL TO EXECUTE THE LINE 
AFTER THE CURRENT LINE. .=-1 CAUSES CASUAL 
TO STOP EXECUTION AND RETURN TO THE COMMAND MODE. 

CONDITIONAL BRANCHING IS DONE LIKE THIS: 

=940+(X<10) 

THE EXPRESSION ON THE RIGHT EVALUATES TO 940 IF THE 
CONDITION IS TRUE (X IS LESS THAN TEN). IF IT IS 
FALSE (X IS GREATER THAN OR EQUAL TO TEH), IT 
EVALUATES TO ZERO, AND THE NEXT LINE IS EXECUTED, 

HAS THE SAME EFFECT AS "." (PERIOD). IN ADDITION, 
BEFORE CONTROL IS TRANSFERRED, THE NUMBER OF THE LINE 
FOLLOWING THE CURRENT LINE IS SAVED BY CASUAL. THE 
MOST RECENTLY SAVED VALUE IS RECALLED WHEN 
IS FOUND ON THE RIGHT SIDE OF AN ASSIGNMENT. 

THIS IS USED TO BRANCH TO SUBROUTINES. 

THIS CODE: 

40 X=5:?X;:$=100 
50 7=7X+2; : f=100 
60 ?/' PLUS TWO/ 

70 .=-1 

100 ?/IS YOUR NUMBER/; 

110 .=$ 

WILL PRINT: 

5 IS YOUR NUMBER 


Page 20 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Nov./Dec., 1976 


317 








7 IS YOUR HUMBER PLUS TUO 


EXPRESSION. BRACKETS ARE MANDATORY ON THE LEFT SIDE. 


IN LINE 40, X IS ASSIGNED THE VALUE 5, THEN 
THE VALUE OF X IS PRINTED. "#=100" CAUSES CASUAL TO 
BRANCH TO LINE 100 AND SAVE THE NEXT LINE NUMBER 
TO BE EXECUTED <50). UHEN THE SUBROUTINE IS 
FINISHED, IT RETURNS BY IN THIS CASE HAS 

A VALUE OF 50 SO LINE 50 IS EXECUTED. HERE, ANOTHER 
VALUE IS PRINTED, AND "$=100" CAUSES CASUAL TO 
SAVE THE NUMBER OF THE NEXT LINE (70). THIS TIME 
WHEN LINE 110 IS EXECUTED, "*" WILL BE EQUAL 
TO 70 AND CASUAL WILL CONTINUE EXECUTION AT LINE 
70. NOTE THAT A ROUTINE CALLED IN THIS MANNER ALWAYS 
RETURNS TO THE LINE FOLLOWING THE LINE CONTAINING 
THE CALL TO IT. 

SETS THE MEMORY ADDRESS WHERE "PEEKING" AND "POKING" 

IS TO BE DONE. THE ADDRESS WILL REMAIN SET UNTIL 
ANOTHER "!" IS FOUND ON THE LEFT SIDE OF AN 
ASSIGNMENT STATEMENT. UHEN LOADED, CASUAL 
SETS "!=0", THEREFORE YOU MUST SET THIS ADDRESS 
BEFORE POKING, OR YOU MAY POKE CASUAL TO DEATH. 

SEE "&" AND "!" BELOW. 

IS USED TO STORE THE VALUE ON THE RIGHT OF 
THE ASSIGNMENT STATEMENT IN THE LAST MEMORY ADDRESS 
GIVEN WITH "!". THE VALUE WILL BE TRUNCATED TO 8 
BITS BEFORE IT IS STORED. THIS FUNCTION IS 
SOMETIMES CALLED "POKING". 

IS USED TO SET THE BASE ADDRESS FOR THE SINGLE 
BYTE ARRAY. THE BASE ADDRESS WILL BE SET TO THE 
VALUE ON THE RIGHT OF THE ASSIGNMENT STATEMENT. 

NO VALUE SHOULD BE ASSIGNED WHICH IS LESS THAN 
THE NUMBER TYPED IN RESPONSE TO "MEN SIZ?” 

PERFORMS THE SAME FUNCTION AS "' EXCEPT THAT 
IT SETS THE DOUBLE-BYTE ARRAY BASE ADDRESS. 

DEFINES THE USER-DEFINABLE FUNCTION. IT IS EXECUTABLE, 
THEREFORE, MORE THAN ONE FUNCTION CAN BE USED 
IN THE SAME PROGRAM, BUT NOT AT THE SAME TIME. 

THE VALUE ON THE RIGHT BECOMES THE NEW USER-DEFINABLE 
FUNCTION. AT THE TIME IT IS DEFINED, IT IS 
EVALUATED. 

SENDS THE VALUE ON THE RIGHT SIDE OF THE ASSIGNMENT 
STATEMENT TO THE OUTPUT PORT GIVEN BY THE LAST 
"@ = " ASSIGNMENT. SEE "0" BELOW. 


SETS A NEW OUTPUT PORT NUMBER. 
RIGHT IS SAVED FOR USE WITH 


THE VALUE ON THE 
AND "&" 


SETS THE VARIABLE A THRU Z TO THE VALUE ON THE 
RIGHT SIDE OF THE ASSIGNMENT STATEMENT. 

THE OLD VARIABLE VALUE IS LOST. 

SETS THE X ‘ TH ELEMENT OF THE SINGLE-BYTE ARRAY TO 
THE VALUE ON THE RIGHT OF THE ASSIGNMENT STATEMENT. 

SETS THE X'TH ELEMENT OF THE DOUBLE-BYTE ARRAY TO 
THE VALUE ON THE RIGHT OF THE ASSIGNMENT STATEMENT. 
THE RIGHT SIDE 


"CX] SAME AS 'LX] EXCEPT THIS IS THE DOUBLE BYTE ARRAY. 

* TAKES ON THE VALUE OF THE LAST EXPRESSION EVALUATED. 

THIS INCLUDES EXPRESSIONS IN SUBSCRIPTS AND IN PAREN¬ 
THESIS. <2+3)*<- IS EQUAL TO 25. 

0 THE USER FUNCTION. TAKES ON THE VALUE PASSED TO IT 

BY THE MACHINE-LANGUAGE SUBROUTINE IN DE REGISTER. 
INITIALLY, IT IS SET UP TO RETURN THE NUMERIC VALUE 
OF THE CHARACTER FOLLOWING THE "0". 

SEE APPENDIX F. 

\ SINGLE CHARACTER INPUT FROM THE KEYBOARD. EXECUTION 

WILL STOP UNTIL A CHARACTER IS INPUT. NO PROMPT IS 
PRINTED. RETURNS A VALUE 0 TO 127. PARITY MASKED. 

A - Z TAKES ON THE VALUE OF THE VARIABLE A THRU Z. 

0-9 DIGITS OF NUMBERS INTERPRETED TO BE DECIMAL. 
EXPRESSIONS 


EXPRESSIONS ARE MATHEMATICAL FORMUALS WHICH EVALUATE 
TO 15-BIT SIGNED INTEGERS. THEY ARE USUALY FOUND ON THE 
RIGHT SIDE OF AN ASSIGNMENT STATEMENT, AND SEVERAL OTHER 
PLACES. EXPRESSIONS CONSIST OF OPERANDS WHICH GET 
OPERATED UPON, AND OF OPERATORS WHICH SPECIFY THE 
OPERATION TO BE DONE. ALL THE LEGAL OPERANDS HAVE JUST 
BEEN GIVEN IN THE SECTION COVERING THE RIGHT SIDE OF AN 
ASSIGNMENT STATEMENT. 

EXPRESSIONS ARE EVALUATED USING THE STANDARD 
MATHEMATICAL HIERARCHY. THE ORDER OF EVALUATION MAY BE ALTERED 
BY USING PARENTHESIS. THIS IS A LISTING OF LEGAL 
OPERATORS AND THE HIERARCHY: 

EVALUATED FIRST < ) 

<, >, =, # 

*, / 

EVALUATED LAST +, - 

THE FOUR RELATIONAL OPERATORS EVALUATE TO 
EITHER A ONE <1) IF THE CONDITION IS TRUE, OR A ZERO C0) IF 
THE CONDITION IS FALSE. NOTE: IS NOT EQUAL TO. 

THE "*" AND "/" OPERATORS EVLUATE TO THE PRODUCT 
AND QUOTIENT OF THEIR OPERANDS RESPECTIVLY. 

THE "+" AND OPERATORS EVALUATE TO THE SUM AND 

DIFFERENCE OF THEIR OPERANDS RESPECTIVLY. 

THE "+" AND OPERATORS ARE ALSO USED TO 

INDICATE UNARY PLUS AND MINUS RESPECTIVLY. THE FUNCTION 

IS DETERMINED BY CONTEXT. 

WHEN EXPRESSIONS APPEAR IN PRINT STATEMENTS, CARE 
MUST BE TAKEN TO ENSURE THE MEANING OF THE " ) " AND "/" 

OPERATORS ARE NOT MISINTERPRETED. BOTH OF THESE CHARACTERS 
DO A DOUBLE DUTY AND ARE EAI SLY MISUNDERSTOOD BY CASUAL. 

FOR INSTANCE, "? A /MILES PER GALLON/" WILL PRODUCE 
ALL SORTS OF GARBAGE BECAUSE THE SLASH (/> IS TAKEN TO MEAN 
DIVISION AND NOT THE START OF A LITERAL STRING LIKE THE USER 
WANTED. HERE IS THF FIX: "? A;/MILES PER GALLON/" HERE 
IT IS CLEAR THAT THE VALUE OF A IS TO BE PRINTED, 

FOLLOWED BY A LITERAL STRING. 

ARRAY REFERENCES ARE NOT LEGAL ELEMENTS OF AN 
EXPRESSION WHICH IS ITSELF THE SUBSCRIPT OF AN ARRAY. 

APPENDIX A 


HOLDS THE VALUE OF THE LINE CURRENTLY BEING 
EXECUTED. IF IT APPEARS IN LINE 130, IT HAS THE 
VALUE 130. IF IT APPEARS IN A DIRECT STATEMENT, 

IT HAS THE VALUE -1. 

CAUSES PROGRAM EXECUTION TO STOP FOR USER INPUT. 

A QUESTION MARK AND SPACE ARE PRINTED ON THE 
TERMINAL AS A PROMPT. THE USER INPUTS A LINE 
WITH A SINGLE EXPRESSION ON IT. THE VALUE 
OF THIS EXPRESSION IS GIVEN TO THE LEFT SIDE OF 
THE ASSIGNMENT. "X=?" CAUSES CASUAL TO STOP 
AND ACCEPT INPUT, WHICH IS THEN ASSIGNED TO THE 
VARIABLE X. DO HOT TYPE A QUESTION MARK IN RESPONSE 
TO THE INPUT PROMPT!! IF THE USER TYPES A RETURN 
INSTEAD OF AN EXPRESSION, CASUAL RETURNS TO 
COMMAND LEVEL. 

SEE DISCUSSION FOR LEFT SIDE. 

REMAINDER AFTER LAST DIVISION. IF 20/6 ■ THE LAST 

DIVISION PERFORMED, V. WOULD BE EQUAL TO _ 

PEEK FUNCTION. TAKES ON THE VALUE OF THE CONTENTS 
OF THE - MEMORY LOCATION ADDRESSED BY THE LAST ASSIGNMENT 
TO "!". SEE "!" FOR LEFT SIDE. RETURNS A VALUE 
0 TO 255. 

INP FUNCTION. TAKES ON THE VALUE OF THE DATA AT THE 
INPUT PORT WHOSE NUMBER WAS LAST SET WITH "0=". SEE 
"0" FOR LEFT SIDE. RETURNS A VALUE 0 TO 255. 

RETURNS THE VALUE OF THE X'TH ELEMENT OF THE SINGLE 
BYTE ARRAY. X MAY BE AN EXPRESSION. THE BRACKETS 
ARE OPTIONAL IF AND ONLY IF THEY ARE NOT NEEDED TO 
SEPARATE THE SUBSCRIPT FROM THE REST OF THE 


LOADING PROCEDURE 

THE PURPOSE OF A BOOTSTRAP LOADER IS TO READ 
A LARGER BINARY LOADER INTO MEMORY WHICH IN TURN LOADS 
CASUAL. THE BOOTSTRAP PROGRAM MAY 

BE LOADED FROM THE FRONT PANEL SWITCHES OR BY USING THE 
SYSTEM MONITOR ROM. IT IS 21 BYTES LONG AND GOES 
IN VERY QUICKLY. THE BOOTSTRAP LOADER IS SO NAMED 
BECAUSE IT IS FREQUENTLY USED TO BRING THE SYSTEM 
UP AFTER A POWER-OFF CONDITION. THUS, IT IS PULLING THE 
SYSTEM UP BY ITS BOOTSTRAP. 

THE BOOTSTRAP PRESENTED HERE IS IN A NO-CHECKSUM 
FORMAT, BUT IT DOES ALLOW LEADER. IT SHOULD WORK EQUALLY 
WELL FOR PAPER TAPE OR CASETTE INPUT. THIS BOOTSTRAP 
WILL LOAD A BINARY LOADER AND THEN TRANSFER CONTROL TO 
THE BINARY LOADER AUTOMATICALLY. THE BINARY LOADER LOADS 
A CHECKSUMMED-FORMAT TAPE AND ALSO TRANSFERS AUTOMATICALLY 
WHEN DONE LOADING. THERE ARE TWO POSSIBLE ERRORS 
WITH THE BINARY LOADER: CHECKSUM ERROR AND MEMORY 
ERROR. THE FIRST OCCURS WHEN THE CHECKSUM READ FROM THE 
TAPE DOES NOT MATCH THAT CALCULATED DURING LOADING 
BECAUSE A BYTE WAS READ FROM TAPE INCORRECTLY. 
h MEMORY ERROR OCCURS WHEN DATA READ FROM TAPE IS 
LOADED INTO MEMORY AND CAN'T BE READ BACK. THIS CAN 
BE CAUSED BY BAD MEMORY, PROTECTED MEMORY OR NON-EXISTENT 
MEMORY. WHEN EITHER ERROR OCCURS, THE LOADER STOPS 
READING TAPE AND ENTERS AN INFINITE LOOP. AN ASCII 
CHARACTER IS PUT OUT OH PORTS 1, 10, 21, AND 23 (OCTAL): 

AN "M" FOR MEMORY ERROR, A "C" FOR CHECKSUM ERROR. 

THIS CHARACTER IS ALSO STORED IN THE HIGHEST LOCATION 
OF THE FACE WHERE THE BINARY LOADER RESIDES < 007 377). 
AFTER A MEMORY ERROR, THE HL REGISTER WILL CONTAIN THE 
ADDRESS OF THE BAD MEMORY LOCATION. 

TO READ IN A TAPE: 


Nov./Dec., 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 21. 


318 





1. LOhB THE BOOTSTRAP FOR YOUR I/O CONFIGURATION. LANGUAGE SUBROUTINES OR TO SET ASIDE MEMORY FOR CASUAL ARRAY 

CHECK THE TABLE TO FIND WHICH ONE TO USE. STORAGE. 

2. VERIFY THAT THE BOOTSTRAP IS IN MEMORY CORRECTLY. 

3. EXAMINE 008 000 AND THE SET THE SENSE SWITCHES THERE ARE 4096 BYTES IN A 4K SYSTEM, 8192 IN AN 8K 

FOR THE TYPE OF I/O BOARD YOU ARE USING. LOAD THE SYSTEM, 2048 IN A 2K SYSTEM. 

CUSTOM I/O TABLE AT THIS TIME IF NECESSARY. 

4. PLACE THE TAPE IN THE READER. IF YOU ARE USING THE ADDRESS GIVEN IN RESPONSE TO "MEM SIZ?" 

PAPER TAPE, MAKE SURE THE BOOTSTRAP LEADER IS IN MUST BE RAM, OR ELSE CASUAL WILL REPEAT THE QUESTION. THERE IS 

THE READER. THIS IS THE FIRST SECTION OF TAPE ALSO A CERTAIN MINIMUM AMOUNT OF MEMORY CASUAL MUST HAVE TO 

WITH THREE OF THE EIGHT DATA HOLES PUNCHED. OPERATE. IF THE RESPONSE IS LESS THAN THIS MINIMUM, 

IF YOU ARE USING CASETTE, LOAD AND REWIND THE CASUAL WILL REPEAT THE MEMORY SIZE QUESTION. IN VERSION .16, 

TAPE AND START IT PLAYING. WAIT 15 SECONDS, THIS MINIMUM IS ABOUT 1700. 

AND PROCEED TO STEP 5. 

5. START THE BOOTSTRAP AT LOCATION 000 000 (SPLIT CASUAL WILL NOW ENTER A DIALOG WHICH ALLOWS 

OCTAL). NOTE: LOADERS G AND H START AT ADDRESSES YOU TO DELETE SOME COMMANDS AND FEATURES. IF FEATURES 

OTHER THAN ZERO, CHECK THE TABLE. ARE DELETED, THIS WILL LEAVE MORE FOR YOUR PROGRAM. 

5. WHEN THE BINARY LOADER HAS BEEN READ IN, THE HOWEVER, ATTEMPTING TO ACCES THESE FEATURES WILL GIVE 

ADDRESS LIGHTS WILL CHANGE AND THE TAPE AN ERROR, USUALLY THE SYNTAX ERROR. THE ONLY TO RESTORE 

SHOULD KEEP READING. A FEATURE WHICH HAS BEEN DELETED IS TO RELOAD CASUAL. 


ONCE THE BINARY LOADER HAS BEEN READ IN, THE ADDRESS 
LIGHTS WILL DISPLAY 007 277 WHILE NORMAL LOADING IS GOING 
ON. IF AH ERROR OCCURS, 007 237 WILL BE DISPLAYED. IF THE 
TRANSFER ADDRESS WAS HOT READ PROPERLY, 007 257 WILL BE 
DISPALYED. IF EITHER OF THE LAST TWO CONDITIONS OCCUR, 

GO BACK TO STEP 1 AND RELOAD. 


THIS IS THE DIALOG WHICH WILL OCCUR: 

WANT SAVE/TAPE? ANSWER "Y" TO RETAIN SAVE AND 

TAPE COMMANDS. IF YOU ANSWER 
"N", ASKS NEXT QUESTION. 


WANT STR I/O? ANSWER "Y" TO RETAIN STRING 


LOC. 

A 

B 

C 

D 

E 

F 

G 

H 


INPUT AND OUTPUT. IF YOU 

— 

— 

— 


— 


— 

— 

— 


ANSWER "N", ASKS NEXT QUESTION. 

000 

041 

041 

041 

041 

041 

041 

041 

041 



001 

3G2 

302 

302 

302 

302 

302 

302 

302 

WANT ARRAYS? 

ANSWER "Y" TO RETAIN SINGLE 

002 

007 

007 

007 

007 

007 

007 

007 

007 


AND DOUBLE BYTE ARRAYS. IF YOU 

003 

061 

061 

061 

061 

061 

061 

061 

061 


ANSWER "N", BOTH ARRAYS 

004 

023 

023 

023 

023 

023 

023 

023 

023 


ARE DELETED. 

005 

000 

000 

000 

000 

000 

000 

800 

000 



006 

333 

333 

333 

333 

■i si 

333 

333 

333 

ONCE THIS DIALOGUE IS 

COMPLETE, CASUAL TYFES OUT: 

007 

001 

005 

000 

000 

006 

000 

020 

020 



010 

346 

346 

346 

346 

346 

346 

346 

346 

XXXXX BYTES FREE 

XXXXX IS THE NUMBER OF BYTES 

01 1 

001 

001 

001 

040 

001 

040 

001 

100 

CASUAL V. YY 

AVAILABLE FOR PROGRAM 

012 

310 

310 

300 

310 

300 

310 

310 

310 


STORAGE AND STACK SPACE. 

013 

333 

333 

333 

333 

333 

333 

w' 

333 


YY IS THE CURRENT VERSION 

0 1 4 

000 

004 

001 

001 

007 

001 

021 

021 


NUMBER. 

015 

275 

275 

275 

275 

275 

275 

275 

275 



016 

310 

310 

310 

310 

310 

310 

310 

310 

DELETING SAVE AND TAPE COMMANDS WILL FREE UP AN 

017 

055 

055 

055 

055 

055 

055 

055 

055 

ADDITIONAL 106 BYTES, STRING 

I/O ANOTHER 34, AND 

020 

167 

167 

167 

167 

167 

167 

167 

167 

DELETE ING ARRAYS GIVES ANOTHER 62 BYTES. 

021 

300 

300 

300 

300 

300 

300 

300 

300 

APPENDIX C 


022 

351 

351 

351 

351 

351 

351 

351 

351 



023 

003 

803 

003 

003 

003 

003 

003 

003 

ERROR MESSAGES 


024 

000 

000 

000 

000 

000 

000 

000 

000 



025 







076 

257 

WHEN AN ERROR OCCURS, 

CASUAL RETURNS TO COMMAND LEVEL 

026 


NOTE: 

LOADERS A 

- F 

START 

003 

323 

AND TYPES THE PROMPT PERIOD " 

VARIABLE VALUES AND 

027 


AT 000 

000. 

LOADERS 

G & H 

323 

020 

THE CRSUftL PROGRAM REMAIN INTACT. AFTER THE ERROR HAS BEEN 

030 


START 

AT 000 025. 



020 

000 

CORRECTED, EXECUTION MAY BE CONTINUED WITH NO LOSS OF CONTEXT. 

031 







076 

323 



032 







021 

021 

WHEN AH ERROR OCCURS 

IN A DIRECT STATEMENT, NO LINE 

033 







323 

876 

NUMBER IS PRINTED. 


034 







020 

004 



035 







307 

323 

FORMAT OF ERROR MESSAGES: 

036 








020 



037 








307 

DIRECT STATEMENT ERROR XXX LL7LL 


BOOTSTRAP I/O FORMAT 


INDIRECT STATEMENT 


ERROR XXX IN YYYYY LL?LL 


A. CONTROL LOGIC LOW SPEED READER 

B. CONTROL LOGIC HIGH SPEED READER 

C. MITS SIOA, B, C BUT NOT REV. 0 

D. MITS REV. 0 WITH UPDATE, USE C WITHOUT UPDATE 

E. MITS ACR (AUDIO CASSETTE) 

F. MITS 83-PIO VER. 3.2 AND LATER 

G. MITS 2SI0 VER. 3.2 AND LATER 

H. MITS 4PI0 


IN BOTH CASES, "XXX" IS THE ERROR NUMBER. "LL?LL" IS 
THE STATEMENT IN WHICH THE ERROR OCCURRED. A QUESTION 
MARK IS INSERTED AT THE POINT OF THE ERROR SOMETIMES. THE 
"YYYYY" WILL BE THE LINE NUMBER WHERE THE ERROR OCCURRED 
FOR THE INDIRECT STATEMENT. 

THE FOLLOWING ARE THE KNOWN ERROR NUMBERS AND THEIR 
MEANINGS: 


NOTE: THE BINARY LOADER POKES ITSELF TO USE THE SAME 

DEVICE AS THE BOOTSTRAP; THEREFORE, YOU MUST USE A BOOT¬ 
STRAP OF THIS FORM, OR REWRITE THE BINARY LOADER. 

TO MAKE YOUR OWN BOOTSTRAP-. PUT YOUR STATUS PORT 
NUMBER INTO LOC. 007. PUT A MASK WHICH WILL LEAVE THE READER 
READY BIT INTO LOC. 011. IF READY IS ACTIVE HI: PUT 310 INTO 
LOG. 012. IF READY IS ACTIVE LO: PUT 300 INTO LOC. 012. 

PUT THE INPUT DATA PORT NUMBER INTO LOC. 014. LEAVE ALL OTHER 
LOCATIONS THE SAME AS LOADER A. 

APPENDIX B 

INITIALIZATION DIALOGUE 

AFTER CASUAL HAS BEEN LOADED (PER INSTRUCTIONS IN 
APPENDIX A) AND ANY I/O PATCHES HAVE BEEN MADE, IT WILL ASK: 

MEM SIZ? 

IF YOU TYPE A CARRIAGE RETURN, CASUAL WILL USE ALL THE 
CONTIGUOUS MEMORY UPWARDS FROM ZERO THAT IT CAN FIND. 

CASUAL WILL STOP SEARCHING WHEN IT FINDS ONE BYTE OF ROM OR 
NON-EXISTENT MEMORY, IE. MEMORY WHICH WILL HOT ACCEPT AND SUC¬ 
CESSFULLY READ BACK A TEST BYTE. THIS IS A NON-DESTRUCTIVE 
TEST SO I/O PATCHES AND SUCH WON'T BE DESTROYED 

IF YOU WISH TO ALLOCATE ONLY PART OF YOUR COMPUTER'S 
MEMORY TO CASUAL, TYPE THE DECIMAL ADDRESS OF THE FIRST 
BYTE WHICH CASUAL IS NOT TO USE. THIS MIGHT BE DONE, 

FOR EXAMPLE, IF YOU WERE USING PART OF MEMORY FOR MACHINE 


98 SYNTAX ERROR. MISSING PARENTHESIS, ILLEGAL 

CHARACTER IN A STATEMENT, OR UNRECOGNIZABLE 
STATEMENT TYPE. 

291 ILLEGAL CHARACTER TERMINATING A STATEMENT. FOR 

EXAMPLE: X=3) GIVES ERROR 291. 

346 MISSING CLOSING SLASH IN A LITERAL STRING. 

410 UNDEFINED STATEMENT. AN ATTEMPT WAS MADE TO BRANCH 

TO A LINE NUMBER WHICH DOES NOT EXIST. THIS 
ERROR MAY OCCUR IN THE RUN XXXXX COMMAND, WHERE XXXXX 
DOES NOT EXIST. 

516 OUT OF MEMORY. PROGRAM TOO LARGE OR TOO 

COMPLICATED AN EXPRESSION OR A COMBINATION OF BOTH. 
SEE APPENDIX D. 

761 DIVISION BY ZERO. 

801 MISSING EXPRESSION. A STATEMENT TERMINATOR WAS 

FOUND WHERE AH EXPRESSION WAS EXPECTED. 

APPENDIX D 


SPACE HINTS 

IN ORDER TO MAKE YOUR PROGRAM SMALL AND SAVE SPACE, 
THE FOLLOWING HINTS MAY BE HELPFUL. 


22 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Nov./Dec., 1976 





1) USE MULTIPLE STATEMENTS PER LINE. THERE IS 

A SMALL AMOUNT OF OVERHEAD <3 BYTES) ASSOCIATED WITH 
EACH LINE IN THE CASUAL PROGRAM. TWO OF THE BYTES CONTAIN 
THE LINE NUMBER IN BINARY. THIS MEANS THAT NO MATTER 
HOW MANY DIGITS YOU HAVE IN YOUR LINE NUMBER, IT TAKES THE 
SAME AMOUNT OF SPACE. PUTTING AS MANY STATEMENTS AS POS¬ 
SIBLE ON A LINE UILL REDUCE THE NUMBER OF BYTES USED BY 
YOUR PROGRAM. 


10 *xC/100*64-KC-C/100*100)/10*8+C-C/10*10 
20 C = 377: ?* PRINTS 255 

DECIMAL TO OCTAL: THIS FUNCTION ACCEPTS A DECIMAL NUMBER 
<0 - 255) IN THE VARIABLE D, AND RETURNS AN OCTAL REPRES¬ 
ENTATION OF IT AS A DECIMAL NUMBER 0 - 377. 

30 + = D/64+100 + (D-D/64*64)/'8*10 + D-D/8 + 8 
40 D=255: ?+ GIVES 377 


2) DELETE ALL UNNECESSARY SPACES FROM YOUR 
PROGRAM. SPACES ARE ALLOWED OH THE RIGHT SIDE OF A CASUAL 
STATEMENT FOR CLARITY, BUT THEY ARE IGNORED. NOTE: 

ALL SPACES BETWEEN THE LINE NUMBER AND THE FIRST 
NON-BLANK CHARACTER ARE IGNORED. 

3) DELETE ALL REMARKS FROM THE PROGRAM. 

4) USE VARIABLES INSTEAD OF CONSTANTS. 

5) THE LAST STATEMENT OF A PROGRAM NEED NOT 
BE AN END STATEMENT. CASUAL UILL RETURN TO COMMAND 
MODE AUTOMATICALLY IF IT RUNS OUT OF PROGRAM TO 
EXECUTE. 

6) USE SUBROUTINES TO EXECUTE SECTIONS OF CODE 
WHICH APPEAR IN A PROGRAM MORE THAN ONCE. 

7) USE RELATIONAL OPERATORS INSETAD OF GOTOS. 

FOR INSTANCE: IF YOU WANT X = 10 IF Y = 10, AND X=0 IF 

Y # 10 : DO IT LIKE THIS: X=Y#10. 

8) USE THE OPERATOR INSTEAD OF 

REPEATING AN EXPRESSION. 


STORAGE ALLOCATION INFORMATION 


THE USER-DEFINED FUNCTION USES NO MEMORY 
TO STORE THE DEFINITION. 

WHILE A PROGRAM IS BEING EXECUTED, SPACE IS ALLOCATED 
ON THE STACK. EACH LEVEL OF PARENTHESIS ENCOUNTERED IN 
AN EXPRESSION TAKES 8 BYTES OF STACK SPACE. 

APPENDIX E 


BASIC TO CASUAL STATEMENT CROSS REFERENCE 


BASIC 

CASUAL 



RUN 

R 




LIST 

L 




NEW 

N 




350 DEF FNftOO=X*X+V*Y 

350 

+=X*X+Y*Y 



999 END 

999 

. =-l 



50 GOTO 100 

50 . 

= 100 



10 GOSUB 910 

10 t 

;=910 



16 IF X+10 > Y/2 THEN 214 

16 . 

=214 * CX+10 > Y/2) 



20 IF X>3 AND X<10 THEN 250 

20 . 

=250 * CX > 3) * CX 

< 

10) 

140 INPUT X 

140 

X = ? 



145 INPUT Y,Z,A 

145 

Y = ?: Z = ? : A = ? 



147 LET A = B = 0 

147 

A = 0 : 6 = 0 



107 LET W = C2 + 3)*4 

107 

W=(2+3)*4 



100 OH I GOTO 10,20,30,40 

100 

.=I*10*CI > 0)*(I < 

5) 


105 ON SGN CX1+2 GOTO 40,50,68 

105 

.=50+10*(CX > 0)-CX 

< 

0) ) 

110 ON I GOSUB 50, 60 

110 

$ = 40+1*10*Cl > 0)*CI 

< 

3) 

355 OUT I,J 

355 

0=1: +=J 



357 POKE I,J 

357 

1=1: &=J 



360 PRINT X,Y;Z 

360 

?X,Y;Z 



370 PRINT 

370 

? 



380 PRINT X,Y; 

380 

?X, Y; 



390 PRINT "I THINK IT'S";A 

390 

?/I THINK IT'S/;A 



400 PRINT A,B, 

400 

?A, B, 



410 PRINT CHR$<Z-INT(3/64>*64),' 

410 

?>Z-Z/64*64 



500 REM SMALL IS GREAT ! ! 

500 

.=510 SMALL IS GREAT 

! 

! 

50 RETURN 

50 . 

= $ 



9000 STOP 

9000 

i . =-l 




APPENDIX F 


APPENDIX G 


CASUAL/MACHINE LANGUAGE INTERFACE 

CASUAL HAS THE ABILITY TO LINK TO MACHINE-LANGUAGE 
SUBROUTINES, AND RECEIVE DATA FROM THEM. FIRST, YOU MUST 
SET ASIDE ENOUGH MEMORY TO HOLD THE MACHINE-LANGUAGE ROUTINE. 
WHEN CASUAL ASKS "MEM SIZ?", DON 'T TYPE A RETURN, BECAUSE 
CASUAL WOULD USE ALL THE MEMORY IT COULD FIND, AND NONE UILL 
BE LEFT FOR YOUR MACHINE-LANGUAGE ROUTINE. 

YOU SHOULD NOT ATTEMPT TO USE ANY MEMORY BETWEEN 
LOCATION ZERO AND THE LAST ADDRESS ALLOCATED FOR CASUAL, AS 
IT IS CONSTANTLY BEING MODIFIED BY CASUAL. 

SINCE CASUAL MUST USE CONTIGUOUS BLOCKS OF MEMORY 
STARTING AT ZERO, IT IS BEST TO RESERVE HIGH LOCATIONS IN 
MEMORY FOR YOUR SUBROUTINES. 

FOR EXAMPLE, IF YOU HAVE A 3K SYSTEM, THERE ARE 
3072 BYTES IN YOUR MACHINE Cl024 * 3). THEY ARE NUMBERED 
0 - 3071. IF YOU WANTED TO USE A 50 BYTE SUBROUTINE, 

YOU WOULD TYPE 3022 IN RESPONSE TO "MEM SIZ?" THIS WILL 
ALLOCATE LOCATIONS 0 - 3021 FOR CASUAL, AND 3022 - 3071 
FOR YOUR SUBROUTINE. 

THE STARTING ADDRESS OF YOUR ROUTINE MUST BE STORED 
IN A LOCATION KNOWN AS "USRL". THE ADDRESS OF USP.L IS FOUND 
AT ADDRESS 000 003 , SPLIT OCTAL. 

WHEN LOADED, USRL CONTAINS THE ADDRESS OF 
A ROUTINE TO RETURN THE NUMERIC VALUE OF THE ASCII CHARACTER 
FOLLOWING THE "0". USRL 

CONTAINS THE TWO BYTE ABSOLUTE ADDRESS CASUAL CALLS WHEN 
IT ENCOUNTERS AN AT SIGN C"@") IN AN EXPRESSION. 

WHEN YOUR ROUTINE IS CALLED, THE STACK POINTER IS SET 
UP AND YOU ARE ALLOWED TO USE UP TO 11 LEVELS OF STACK SPACE 
C22 BYTES). TO USE MORE, YOU'LL HAVE TO SAVE CASUAL’S 
STACK POINTER AND SET YOUR OWN. YOU MAY USE ALL OF THE CPU 
REGISTERS EXCEPT HL. HL CONTAINS THE ADDRESS OF THE CHARACTER 
FOLLOWING THE "0". 

THE RESULT OF THE 0 FUNCTION IS PASSED BACK TO 

CASUAL IN THE DE REGISTER AS A 15 BIT SIGNED NUMBER. THE MOST 
SIGNIFICANT BITS ARE IN THE D REGISTER. 

YOU MAY RECIEVE ARGUMENTS PASSED TO YOUR 
ROUTINE BY CALLING A ROUTINE CALLED SUBS. THE ADDRESS OF 
THIS ROUTINE IS HELD IN LOCATIONS 5 AND 6. THE ARGUMENT 
SHOULD BE ENCLOSED IN BRACKETS ("[" AND "]"). 

THE USERS ROUTINE MAY ENABLE INTERRUPTS, AS LONG AS 
THE USER USES ONLY RST 7 INTERRUPTS. INTERRUPTING TO OTHER 
LOCATIONS UILL CAUSE TROUBLE. THREE BYTES HAVE BEEN LEFT 
AT LOCATION 56 DECIMAL, 70 OCTAL, 38 HEX. THESE LOCATIONS 
ARE LEFT SO THE USER CAN INSERT h JUMP TO AN INTERRUPT SERVICE 
ROUTINE. 

CARE MUST BE TAKEN IN INTERRUPT SERVICE ROUTINES TO 
SAVE ALL OF THE CPU'S REGISTERS. 

DON'T FORGET TO ENABLE INTERRUPTS BEFORE RETURNING, 

OR YOUR MACHINE WILL NEVER SEE ANOTHER INTERRUPT. 

SUPPOSE YOU HAVE A 2K COMPUTER, AND NEED A ROUTINE 
TO READ THE NUMBER ON THE FRONT PANEL SWITCHES. 

NOTE: THIS FUNCTION CAN BE DONE DIRECTLY IN CASUAL. 

YOU HAVE 2048 BYTES OF MEMORY MINUS 6 BYTES FOR THE 
ROUTINE LEAVES 2042 FOR CASUAL. THIS IS THE NUMBER 
YOU WOULD TYPE IN RESPONSE TO "MEMORY SIZE?". LOAD 
THIS INTO MEM.ORY: 


LOC. 


DATA 

OPCODE 


007 

372 

333 

IN 

377 

007 

373 

377 



007 

374 

137 

MOV 

E, A 

007 

375 

026 

MV I 

D, 0 

007 

376 

000 



007 

377 

311 

RET 




APPENDIX 

: H 



BASIC TO CASUAL FUNCTION CROSS REFERENCE 


ASCII CHARACTER CODES (DECIMAL) 


THE FOLLOWING TABLE CAN BE USED TO MAKE CASUAL'S 
USER-DEFINABLE FUNCTION EQUIVALENT TO THE CORRESPONDING 
INTRINSIC FUNCTION OF BASIC. 


BASIC 


CASUAL 


ABS CX) 
SGN CX) 
USR CX) 
PEEK CX) 
INP CX) 
MOD CX) 
MAX CX,Y) 
MIN CX,Y) 


+ = X*C(X>0-(X<0)) 
+=CX>0)-CX<0) 

-t=@ 

! — X: + =! 

@=X:+ = & 

+=X/Y*0+X 

+= C X >Y)*X+ C X-1<Y)*Y 
♦=CX<Y)*X+(Y-1<X)*Y 


OTHER USEFUL FUNCTIONS 


4 

CHR. 

# 

CHR. 

# 

CHR. 

# 

CHR. 

32 

(SPACE) 

33 

i 

34 

"n __ 

35 


36 

$ 

37 

y. 

38 

& 

39 


40 


41 

) 

42 

* 

43 

+ 

44 

, 

45 

- 

46 


47 

/ 

48 

0 

49 

l 

50 

2 

51 

3 

52 

4 

53 

5 

54 

6 

55 

7 

56 

8 

57 

9 

58 


59 


60 

< 

61 

= 

62 

> 

63 

? 

64 

0 

65 

A 

66 

B 

67 

C 

68 

D 

69 

E 

70 

F 

71 

G 

72 

H 

73 

I 

74 

J 

75 

K 

76 

L 

77 

M 

78 

N 

79 

0 

80 

P 

81 

Q 

82 

R 

83 

s 

84 

T 

35 

U 

86 

V 

87 

w 

88 

X 

89 

Y 

90 

z 

91 

c 

92 

\ 

93 

] 

94 

t- 

95 



OCTAL TO DECIMAL. THIS FUNCTION ACCEPTS A THREE 
DIGIT OCTAL NUMBER IN DECIMAL PRINT FORMAT IN THE VARIABLE C. 


NOTE: SOME TERMINALS PRINT CODE 95 AS A BACK 

SOME PRINT AN UNDERLINE. 


AND 


Nov./Dec., 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia. Box E, Menlo Park, CA 94025 


Page 












CONTROL FUNCTIONS 


LINE FEED = 10 TAB = 11 FORM FEED = 12 

CARRIAGE RETURN = 13 BELL = 7 

THESE CODES ARE USED WITH THE ">" FUNCTION OF THE "?" 
STATEMENT. ">" FOLLOWED BY AN EXPRESSION RETURNS A ONE 
CHARACTER STRING WHICH CONTAINS THE ASCII EQUIVALENT 
OF THE EXPRESSION. 

APPENDIX Z 


THANKS TO: 

THE FOLLOWING PEOPLE FOR DEBUGGING EARLY VERSIONS: 

BILL SAINDOH, AL BAKER, MR. ZIEGLER, AND SEVERAL OTHER 
CACHE MEMBERS. 

THE FOLLOWING PEOPLE FOR PROOFREADING: 

BILL PRECHT, MARK DAVISON AND MY FAMILY. 

GARRY SHANNON FOR PROPOSING THE SYNTAX. 

BYTE MAGAZINE FOR THE DECIMAL PRINT ROUTINE. 

LOU VAN EPREN OF THE CHICAGO COMPUTER STORE FOR THE USE OF 
HIS EQUIPMENT. 


PROGRAM NAME: CASUAL 
PATCH SHEET 


An optional patch to replace the RUN command with a 
CLEAR command. This command allows the user to 
allocate more or less memory for CASUAL after initializa¬ 
tion. The argument is an expression which is the first 
location that CASUAL is not to use. This location must 
be RAM, and must be > = 1703-j q. Returns to command 
mode when done. To run programs, you'll have to type 
. = <EXPR >, where <EXPR> is the first line number to 
be executed. 

LOCATION DATA OPCODE 


HI 

LOW 

OLD 

NEW 

OLD 

NEW 

004 

037 

317 

317 

TST"R 

TST"C 

004 

040 

122 

103 



004 

041 

173 

173 

IFNOT 

IFNOT 

004 

042 

005 

005 

OS? 

OS? 

004 

043 

312 

337 



004 

044 

024 

353 

JTZ 

EXPR 

004 

045 

004 

042 

RSSP 

DEOHL 

004 

046 

337 

377 


STHL 

004 

047 

303 

004 

EXPR 

STRS 

004 

050 

207 

307 

JMP 



GOTA 


RAW ROCKWELL RUMORS 

REVEAL ZILOG COMPETITOR 9/21/76 

Rockwell International had been considered by Zilog as 
a potential second source for the Z80 parts. Since Rock¬ 
well was not chosen, they went ahead with the develop¬ 
ment of their own Z80-type CPU chip (R80). It will be 
ready sometime in 1977. 

The words is that the chip will be pin compatible and 
software compatible. The device is mask microprogram- 
mable, similar to Western Digital’s 16-bit CPU chip set. 
Some of the instructions execute much faster than Zilog’s 
Z80, e.g., block move Z80 in 21 cycles/byte, vs. R80 in 
5 cycles/byte. Finally, there will be some instruction 
enhancements over the Z80 which include a hardware 
multiply and divide. 


MOSTEK AND FAIRCHILD TO SECOND 
SOURCE EACH OTHER 

Mostek is already the second source for Fairchild’s 
F-8 microprocessor chips. Now, Fairchild will become 
the second source for Mostek’s 4K-bit fast RAM, the 
16-pin MK4027 that runs at less than 200 ns. 


Dear Jim, Oct. 16, 1976 

I am still attempting to locate more information on a Chicago 
computer-fest. 

Scott Meaden (a local CASUAL user) has just written a neat 
game in CASUAL. It's called "Zapp the Moonman". It runs with 
a VDM by "poking" the screen, a moving target (a moonman) moves 
back and forth across the top of the screen. You shoot lightning 
bolts at him from your gun at the bottom. I am now twisting his 
arm to finalize it and send you a copy. 

Sincerely, 

Bob Van Valzah 1140 Hickory Trl 

(312) 852-0472 Downers Grove, IL 60515 

(312) 971-2010 x231 

ZAPP THE MOON MAN 

Dear Dr. Dobbs, Oct. 21, 1976 

I’ve been using a nifty little language called “CASUAL” 
on my IMSAI (which is only 4K smart at the moment) 
with a VDM and came up with a program you might con¬ 
sider for publication. I call it “Zapp the Moon Man”. 

It starts a moonman (VDM character 7) moving from left 
to right and then back again across the top of the screen. 
Your job is to try to zap him with a lightning bolt (VDM 
character 4) that moves from the bottom of the screen to 
the top. The bolts are fired by the sense switches on the 
front panel of my IMSAI. The program also keeps track of 
how many bolts you have left and how many moonmen 
you’ve zapped. 

The start of the VDM screen must be set in line 3. My 
VDM is set up for CC(hex) 314(octal) which, in CASUAL 
decimal notation, is equal to —13312. You can use CASUAL 
to help you figure out what number to set Z to. For ex¬ 
ample, if your screen starts on page 364 (octal), type in 
?256*(3*64+6*8+4), hit return and CASUAL will print 
—3072. This is Z for that system. Also, if you want to use 
a different trigger source (say, passing your hand over an 
OP-80 papertape reader) you’ll have to change lines 11 and 
110 for port numbers and Ready bit. But remember, once 
that bit is ready you’ll have to give the data port an & to 
clear it. 

The game is set up so when a bolt gets to the top of the 
screen it checks 2 places to see if it hit (line 210). To make 
him harder to hit, type in: 

210 =240*(((X-2=P)*(B=0))+((X+2=P) *(B= 1))) 

Happy zapping! 

Scott Meadow 116 Surrey Dr. 

Glen Ellyn, IL 60137 

■ L 

3 Z=-13312 
■4 ?>1£ 

5 ?-HOIJ MANY BOLTS DO YOU WANT/!: S-?: . -5. <S<1> 

6 .=5»<S>99> 

10 U=Z+754:L=Z+864:M=L:P=Z+32:N=Z-32:J=Z+722 

11 3=255 

15 ?>125:!=Z:e=32:H=0J1=0:!=L+128:&=160:L=L+128 

20 '=Z+592:'ClI =90:'C23 =65*'[31=80:'[43 *83 

30 '[323=66:'[333=79:'[343=76:'[353=84:'[363=83 

40 '[973=76:'[983=69*'[993=70*'[1003=84:S-S+l:$=400 

50 B=0:X=Z:Y=Z+64 

100 $=3000 

110 .=100^ <0=&) 

120 $=400 

130 !=L+64:&=32*!=L:&=4:L=L-64*$=3000 
150 .=130»<L«N> 

200 !=P:&=32 

210 .=24 0» < < <(X-1=P) + <X-2=P>)♦CB= 0)> + < < <X+1=P) + <X+2=P)>♦ <B= 1)> > 

220 .=5*<S<1> 

230 .=110 

240 H=H+1: I=H^10: ! =J+1:&=5'+48: !=J:&=I+48: I=H 
242 '=Z+32:'[13=90:'[23=65:'[33 =80: ' [41 =80:"[53=33 

244 X=Z: !=X:LI=0 

245 8«=32: X=X+1:! =X: W=UJ+1:. =245^ <W«5 0) 

250 .=50 

400 S=S-l:L=M: V=S/10: !=U+1 :*,=5'+48: ! =U: &=V+48: V=S* .=$ 

3000 .=3900^<B=1) 

3100 ! =X-1: &=32:! =X: X«=7:X=X+1:. =$♦ <X«Y> 

3200 X=X-1:B=1:.=$ 

3900 !=X+1:&=32s!=X*&*7:X=X-1*.=$♦<X“Z) 

4000 X=X+1:B=0:.=$ 


Page 24 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia. Box E, Menlo Park, CA 94025 


Nov./Dec., 1976 







/'ABBREVIATIONS USED IN COMMENTS: 


/-> 

/ABS( ) 

/'ADR 

/ARG 

/BUF 

/BOTX 

/CR 

/CRLF 

/CHR 

/'CMPR 

/DECR 

•''EOF 

/EXPR 

/-EOS 

/EOTX 

/ EOB 

/EOL 

/FC 

/FUN 

/FZ 

/1NIT 

/INFO 

/I NCR 

/INST 

/INP 

/LANG 

/LF 

/LINE # 
/LL 

/NEOTX 

/OEOTX 

/OP 

/OS 

/PS 

/PGM 

/QUO 

/RETADR 

/RELOP 

/REG 

/ROT 

/STK 

/STMT 

/SONL 

/SO >L 

/SO<L 

/SOL 

/SUB 

/SOS 

/SR 

/SIG DIG 
/TXA 
/TST 
/TZ 
/VAL 
/VAR 
/VARNAM 
/ 


000 030 
367 


010 000 
000 010 176 
00© 011 343 
000 012 276 
080 013 043 
000 014 303 113 


020 000 
003 020 043 
003 021 176 
000 022 376 072 
000 024 320 

Nov./Dec., 1976 


INTO 

ABSOLUTE VALUE OF ( > 

ADDRESS 

ARGUMENT 

BUFFER 

BEGINNING OF TEXT 

CARRIAGE RETURN 

CARRIAGE RETURN, LINE FEED 

CHARACTER 

COMPARE 

DECREMENT 

END OF PROGRAM 

EXPRESSION 

END OF STATEMENT, OR END OF STRING 

END OF TEXT 

END OF BUFFER 

END OF LINE 

FALSE CARRY 

FUNCTION 

FALSE ZERO 

INITIALIZE 

INFORMATION 

INCREMENT 

INSTRUCTION 

INPUT 

LANGUAGE 

LINE FEED 

LINE NUMBER 

LINE LENGTH 

NEW END OF TEXT 

OLD END OF TEXT 

OPERATOR 

OPERATING SYSTEM 
PARTIAL SUM 
PROGRAM 
QUOTIENT 
RETURN ADDRESS 

RELATIONAL OPPERATOR <<,>,=,#) 

REGISTER 

ROUTINE 

STACK 

STATEMENT 

START OF NEXT LINE 
START OF GREATER THAN LINE 
START OF LESS THAN LINE 
START OF LINE 
SUBTRACT 

START OF STATEMENT 
SUBROUTINE 
SIGNIFICANT DIGIT 
TEXT ADDRESS POINTER 
TEST 

TRUE ZERO 
VALUE 
VARIABLE 
VARIABLE NAME 


303 154 006 
007 005 
272 005 


/ CHICAGO AREA SMALL USERS ALGORITHMIC LANGUAGE 
/ 

/ WRITTEN BY-. ROBERT A. VAN VALZAH 
/ 1140 HICKORY TRAIL 

/ DOWNERS GROVE, IL. 

* 60515 


H (312) 852-0472 
W (312) 971-2910 X 227 

/WILL BE POKED TO JMP ENTR 
/ADR OF ADR OF ADR OF USERS ML ROT 
/ADR OF ROT USED TO GET USR FUN ARG 


JMP INIT 
DSD USRL 
DSD SUBS 


/RESTART SUBROUTINES. 
/1-6 ARE USED. 


0 IS SYSTEM RE-ENTRY. 7 IS OPEN. 


*10 


INX HL 
JMP TST1 


/FETCH TEST CHR 

/TXA ON STK, REFERENCE ADR 

/COMPARE WITH REFERENCE 

/'MOVE RETADR 

/CONTINUES AT TST1 


/RESTART 2 IS THE FETCH THE NEXT CHR ROUTINE. HL IS BUMPED 
/BEFORE THE FETCH. SPACES ARE IGNORED. ON RETURN, FC 
/'MEANS NON-NUMERIC (NOT 0 - 9), TZ IF A STATEMENT TERMINATOR 
/(COLON OR END OF LINE NULL). STACK USAGE: 2 BYTES. 


CPI 

RFC 


/BUMF TXA TO NEXT CHR 
/FETCH IT 
/IS IT 0 - 3 
/>9 CARRY FALSE 


025 303 100 000 JMP NXTD /CONTINUED AT NXTD 

/ 

/RESTART 3 IS THE EXPRESSION EVALUATOR. THE VALUE IS 
/RETURNED IN THE DE REG. SEE CONTINUATION FOR MORE INFO. 


030 000 

030 313 107 002 
033 353 

034 303 073 000 


*30 

CAL EXPA 
DEOHL 
JMP EXP1 


/GET THE VALUE OF EXPR -> 
/RESULT -> HL, TXA -> DE 
/CONTINUED AT EXP1 


/RESTART 4 IS THE DEVO (DEVICE OUTPUT) ROUTINE. THE CHR 
/IN THE A REG IS SENT TO THE OUTPUT DEVICE. DOESN'T 
/MUNCH ANY REGS OR FLAGS. STACK USAGE, 4 BYTES. 


040 000 
040 363 
041 333 001 
043 346 002 
045 303 306 005 


*40 

PSHX PSU 
DEVQ, INP 1 

TORM, NDI 2 

JMP DEVP 


/SAVE A AND FLAGS 
/GET READY STATUS -> A 
/MASK TO THE BIT WE WANT 
/CONTINUED AT DEVP 


050 800 
000 050 343 
000 051 176 
000 052 347 
000 053 043 
000 054 267 
000 055 303 132 I 


060 080 
000 060 174 
000 061 222 
000 062 300 
000 063 175 
000 064 223 
000 P65 311 
000 066 377 004 


000 070 311 


000 073 042 001 
000 076 353 
000 077 311 

000 100 376 040 
000 102 312 020 1 
000 105 376 060 
000 107 077 
000 110 074 
000 111 075 
000 112 311 
000 113 302 124 i 
000 116 043 
000 117 043 
000 120 343 
000 121 303 020 i 
000 124 176 
000 125 043 
000 126 146 
000 127 157 
000 130 343 
000 131 311 


/'RESTART 5 IS THE MESSAGE PRINTER. IT SENDS CHRS 
/FROM MEMORY IMMEDIATLY FOLLOWING THE CALL TO IT UNTIL ONE 
/WITH BIT 7 HI COMES ALONG. THE RETURN ADDRESS IS 
/MODIFIED. STACK USAGE, 6 BYTES. 

*50 

MSG, SPOHL /PRINT ADR -> HL 

MSG1, LA M /FETCH A CHR 

DEVO /SEND IT 

INX HL /BUMP TXh AND RETURN ADDRESS 

OR A /BIT 7 HI YET ? 

JMP MSG2 /CONTINUED AT MSG2 

/'RESTART 6 IS A 16 BIT UNSIGNED COMPARE (CMPR). FLAGS ARE 
/'SET LIKE HL - DE. STACK USAGE: 2 BYTES. 


DSD SPRS 


/ADR OF ADR OF ADR OF STACK RESET 


/RESTART 7 IS OPEN FOR INTERRUPT USE. 

/A RETURN IS PUT THERE SO INTERRUPTS WILL BE IGNORED TILL 
/IT IS PATCHED OUT. THREE BYTES ARE LEFT FOR A JUMP 
/'TO AN INTERRUPT SERVICE ROUTINE. 

*70 

RET 


132 362 051 

135 343 

136 311 


000 MSG2, 


STHL LRES 

DEOHL 

RET 

CPI " 

JTZ NXTC 

CPI “0 

CMC 

INA 

DCA 

RET 

JFZ NGOT 
INX HL 
INX HL 
SPOHL 
JMP NXTC 
LA M 
INX HL 
LH M 
LL A 
SPOHL 
RET 

JFS MSG1 

SPOHL 

RET 


/SAVE RESULT 
/RESTORE TXA 


/IGNORE BLANKS 
/< 0 ? 

/SET FLAG WTIHOUT AFFECTING CARRY 


/NO MATCH 

/MATCH - IGONRE IFNOT ADR 
/RESTORE TXA 

/FOUND IT, INCR TXA AND SET FLAGS 
/LOW ORDER IFNOT ADR -> A 

/IFNOT ADR ON STK, RESTORE TXA 


/BIT 7 WAS LOU, PRINT MORE 
/WAS HIGH, TIME TO RETURN 


/THE EQUIVALENCES BELOW SUBVERT MY ASSEMBLER INTO ASSEMBLING 
/SINGLE BYTE CALL INSTRUCTIONS (RESTARTS) WHENEVER THEY 
/APPEAR ON A LINE. 

/ 

TST=@3172 
FETCH=RST @200 
IFNOT=02 
CMPR=RST @600 
EXPR=RST @300 
DEVO=RST @400 
MSGP=RST @500 
/ 

/RESTART 1 IS THE TST FUNCTION. IN SOURCE CODE IT MUST 
/BE FOLLOWED BY AN IFNOT PSEUDO - OP. IT APPEARS LIKE THIS: 

/ 

/ TST “+ 

/ IFNOT TRY- /CHR AT HL IS NOT "+ H , JUMP TO TRY- 

/ /FALLS THROUGH TO HERE IF CHR AT HL IS " + “ 

/'THE CHR FOLLOWING THE RESTART INSTRUCTION IS FETCHED AND 

/COMPARED TO THE CHR POINTED TO BY HL. IF THE 

/TEST IS TRUE, THE IFNOT ADDRESS IS IGNORED AND TST RETURNS. 

/ALSO HL IS BUMPED AND IT FALLS THROUGH TO NXTC TO SET FLAGS 

/'IF THE TEST IS FALSE, THE RETURN ADDRESS ON THE STACK 

/IS IGNORED AND THE IFNOT ADDRESS IS RETURNED TO, 

/WITHOUT BUMPING HL. 

/STACK USAGE, 2 BYTES. MUNCHES A «, FLAGS. 


/ERRO IS THE ERROR MESSAGE PRINTER. IT MUST ALLWAYS BE 
/CALLED, THE RETURN ADDRESS IS USED AS THE ERROR NUMBER. 


000 

000 

000 


137 315 

142 357 

143 015 

144 012 

145 105 

146 122 

147 122 

150 117 

151 322 

152 343 

153 315 064 
156 315 052 
161 052 011 

164 053 

165 321 

166 367 

167 302 174 
172 357 

277 


000 SNER, 
ERRO, 


004 

004 

005 


174 327 


175 

200 

201 


312 204 


J03 166 000 


CAL ERRO 
MSGP 

DSS 15, 12, "E, 


SPOHL 
CAL HLPT 
CAL INPT 
LDHL SSTM 
DCX HL 
POPX DE 
CMPR 

JFZ ERRQ 
MSGP 

DSS "?+200 
FETCH 
JTZ ENTR 
DEVO 

JMP ERRP 


/SYNTAX ERROR TO BE JUMPED TO 
/PRINT "ERROR" 

R, “R, "0, "R+200 


/PRINT ERROR ADDRESS 

/FRINT LINE HUMBER OF ERROR 
/START OF LAST STATEMENT -> 

/ERROR TXA -> DE 
/AT BAD SPOT YET? 

/NOPE - PRINT A CHR 
/YUP - INSERT A "?" 

/END OF STMT? 

/YUP - BACK TO COMMAND MODE 
/NOPE - PRINT ONE CHR AND 
/KEEP TRYING 


/MAIN INTERPRETER ENTRY AND RE-ENTRY POINT. ENTR SENDS CRLF 
/AND ENTERS LINE INPUT MODE. NOCR DOES SAME, WITHOUT CRLF. 
/NUMBERED LINES ARE EDITED INTO TEXT BUFFER. 

/UN-NUMBERED LINES ARE PASSED TO STMT FOR EXECUTION. 


000 204 315 154 005 ENTR, 

000 207 315 024 004 NOCR, 

000 212 357 

000 213 256 

000 214 041 377 377 

000 217 042 262 004 

000 222 315 016 0Q2 

000 225 327 

060 226 312 207 000 

060 231 322 055 081 


/RESET 8080 STACK 
/PRINT FROMPT PERIOD 


CAL CRLF 
CAL RSSP 
MSGP 

DSS ".+200 

LXI HL '377 377 /SET IMMEDIATE MODE FLAG 
STHL CURL 

CAL GETL /FETCH AN INPUT LINE 

FETCH /BLANK LINE? 

JTZ NOCR /YUP - IGNORE 

JFC STMU /NOT NUMERIC - EXECUTE IT 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 25 


322 


/START OF LINE TEXT EDITOP 

/TEXT BUFFER FORMAT: 

/ 

/ 000 
/BOTX, LINE 1 
/ LINE 2 

/ LINE 3 

/ 000 
/EOTX. 000 
/ 

/LINE STORAGE FORMAT: 

/ LINE NUMBER LOU 8 BITS 

/ LINE NUMBER HIGH 8 BITS 

/ CHRS UHICH APPEAR ON LINE 


000 

000 


234 

237 

240 

241 

242 

243 

246 

247 

250 

251 

254 

255 

236 

237 
262 
263 
266 
267 

272 

273 

274 
273 

276 

277 


313 203 004 

345 

323 

363 

001 002 000 

176 

267 

043 

003 

302 245 000 

361 

305 

365 

315 370 000 
305 

322 310 000 
353 

052 260 004 
032 
002 
003 
023 


303 

304 

305 
310 
31 1 

312 

313 
320 


131 

033 

042 260 004 

321 

361 

312 207 000 
052 260 004 


343 

301 

011 


000 324 313 : 
000 327 305 
000 330 343 
000 331 301 
000 332 367 
000 333 176 


033 

302 332 


343 042 260 004 


347 

350 


000 

000 

000 

000 

000 


043 

162 

043 


302 355 000 

303 207 000 


CAL DEINT 
PSHX HL 
PSHX DE 
PSHX PSU 
LXI BC 2 
LA M 
OR A 
I N£ HL 
I NX BC 
JFZ EDT 
POPX PSU 
PSHX BC 
PSHX PSU 
CAL LFND 
PSHX BC 
JFC EDT2 
DEOHL 
LDHL EOTX 
LDAX DE 
STAX BC 
I NX BC 
INX DE 
CMPR 

JFC EDT1 
LH B 
LL C 
DCX HL 
STHL EOTX 
POPX DE 
POPX PSU 
JTZ NOCR 
LDHL EOTX 
SPOHL 
POPX BC 
DADX BC 
PSHX HL 
CAL EOM? 
PSHX BC 
SPOHL 
POPX BC 
CMPR 
LA M 
STAX BC 
DCX BC 
DCX HL 
JFZ ED21 
POPX HL 
STHL EOTX 
DEOHL 
POPX DE 
LM E 
INX HL 
LM D 
INX HL 
POPX DE 
LDAX DE 
LM A 
INX HL 
INX DE 
OR A 

JFZ EDT3 
JMP NOCR 


/GET LINE # -> DE 
/FIRST CHR ADR SAVE 
/SAVE LINE 4 

/ZERO TRUE IF BLANK LINE 
/LINE LENGTH 3 BYTE OVERHEAD 
/COUNT UP LINE LENGTH -> BC 


/KEEP COUNTING 
/RESTORE FLAGS 
/SAVE LINE LENTH 
/SAVE FLAGS 

/INSERT ADR -> BC, SONL -> HL 
/SAVE INSERT ADR 
/COULDN'T FIND, SO INSERT ONLY 
/SONL -> DE 

/DELETE OLD LINE 


/DONE YET? 
/NOFE 

/SAVE NEU EOTX 


/INSERT ADR -> DE 
/ANYTHING TO INSERT? 

/NOPE - EXIT EDITOR 

/EOTX -> BC, LL -> HL 

/NEU EOTX -> HL 
/SAVE IT 

/ROOM FOR THIS LINE? 

/OEOTX -> HL. NEOTX -> BC 

/MOVE UP FOR NEU LINE 
/FROM OEOTX -> NEOTX 


/NOT DONE YET 
/RESTORE NEOTX 

/INSERT ADR -> HL 
/LINE # -> DE 
/PUT IN NEU LINE # 


/ADR OF TEXT OH LINE 
/PUT IT IN BUFFER 


/NOT DONE INSERTING 
/GET ANOTHER LINE 


/LFND IS THE LINE FINDER. 

/TRIES TO FIND THE LINE # IN DE IN THE BUFFER 
/IT UILL EITHER FIND IT, OR HIT THE EOB FIRST 
/ONE LINE PAST BUT NOT HIT EOB 

/ IF 


OR GO 

RETURN CONDITIONS FOLLOU: 


GOT IT NEXT > 


ZERO 


EOB 

EOB 

FALSE 

TRUE 


SONL 

SOL 

TRUE 

TRUE 


SO<L 

FALSE 

FALSE 


/USES ALL REGS AND FLAGS EXCEPT DE. 


CLTOTK IIRAGF 


CL BVTFS 


000 370 052 256 004 LFND, 

000 373 104 LFNE, 

000 374 115 

000 375 176 

000 376 043 

000 377 266 

001 000 053 


001 002 176 
001 003 043 
001 004 343 


005 146 
006 157 
007 367 
010 341 
011 363 
012 043 

013 313 355 001 

016 361 

017 077 

020 310 

021 077 

022 320 

023 303 373 000 


LDHL BOTX 
LB H 


DCX HL 
RTZ 


INX HL 
PSHX HL 
LH M 
LL A 
CMPR 
POPX HL 
PSHX PSU 
INX HL 
CAL FSNL 
POPX PSU 
CMC 
RTZ 
CMC 
RFC 

JMP LFNE 


/START AT BEGINNING OF TEXT 
/SAVE START OF LINE -> BC 

/EOB? 


/YUP - ZERO TRUE, CARRY FALSE 
/RELOAD LOU ORDER A 

/SAVE SOL TXA+1 
/LINE # -> HL 

/LINE # UE UANT ? 

/SOL+1 -> HL 

/SAVE RESULT OF COMPARE 

/START OF NEXT LINE -> HL 

/RESTORE RESULT OF COMPARE 
/FOUND IT? 

/YUP - CARRY, ZERO TRUE 
/PAST IT? 

/YUP - CARRY. ZERO FALSE 
/NOPE - KEEP LOOKING 


/THIS IS THE INTERPRETER CONTROL SECTION. 


/STMT IS THE STATEMENT EXECUTOR ENTER IT WITH THE TXA 
/OF THE STRING TO BE EXECUTED -1 IN HL KEEPS GOING TILL: 
/IT FINDS LINE # 0, CONTROL C <+0 ABORT, OR GOTO 
/-I <MINUS ONE). IT PUSHES THE ADDRESS OF RTRN 
/BEFORE LEAVING, SO UHEN THE STMT HANDLER RETURNS, IT SHOUS 
/UP AT RTRN. AT RTRN, TXA SHOULD POINT TO COLON <=> OR 
/END OF LINE NULL. 


001 026 313 
001 031 176 
001 032 376 
001 034 312 
001 037 267 
001 040 304 
001 043 043 
001 044 315 
001 047 353 
001 050 042 
001 0-53 353 
001 054 327 
001 055 042 
001 06O 021 
001 063 325 
001 064 310 
001 065 317 
001 067 363 
001 071 312 
001 074 310 
001 075 317 
001 077 304 
001 101 303 
001 104 317 
001 106 116 
001 110 076 
001 112 347 
001 113 303 
001 116 176 
001 117 376 
0O1 121 302 
0O1 124 043 
0O1 125 176 
001 126 267 
001 127 314 
001 132 043 
O01 133 376 
001 135 312 
001 140 347 
001 141 303 
001 144 317 
001 146 340 
001 150 337 
001 151 173 
001 152 347 
001 153 303 
001 156 337 
001 157 345 
001 160 353 
001 161 315 
001 164 341 
001 165 053 
0H1 166 327 
001 167 303 
001 172 345 
001 173 043 
001 174 317 
001 176 313 
001 200 337 
001 201 343 
001 202 317 
001 204 232 
001 206 341 
001 207 172 
001 210 263 
001 211 310 
001 212 172 
001 213 243 
001 214 074 
001 215 312 
001 220 315 
001 223 140 


160 005 RTRN, 

072 COLN, 
054 001 

142 000 

100 002 

262 004 

STMT, 
011 005 STMU, 
026 081 


077 

005 SIPK, 

154 005 PRT1, 
CR?, 

073 

081 

074 001 

054 PCOM, 

001 

01 1 

074 001 

6U0T, 

057 

144 001 

QUOS, 

142 000 
057 

165 001 

125 001 
076 PXCL, 

085 PXPK, 


165 001 

PEXP, 


17G 004 

PEXQ, 

071 001 

HFRU, 

075 

003 


056 

081 

GOT. 

GOTA, 


284 000 
370 000 GOTB, 


CAL ABRT 
LA M 
CPI ", 

JTZ STMT 
OR A 

CFZ ERRO 
INX HL 
CAL FELN 
DE<>HL 
STHL CURL 
DEC >HL 
FETCH 
STHL SSTM 
LXI DE RTRN 
PSHX DE 
RTZ 

TST "? 

IFNOT NFRT 
JTZ CRLF 
RTZ 

TST "i 
IFNOT PCOM 
JMF CR? 

TST ", 

IFNOT QUOT 
LAI 1 1 
DEVO 
JMP CR? 

LA M 
CPI "/ 

JFZ PXCL 
INX HL 
LA M 
OR A 

CTZ ERRO 
INX HL 
CPI "/ 

JTZ PEXQ 
DEVO 

JMP QUOS 
TST " > 

IFNOT PRI) 
EXPP 
LA E 
DEVO 

JMP PEXQ 
EXPR 
PSHX HL 
DEOHL 
CAL SHLF 
POPX HL 
DCX HL 
FETCH 
JMF PRT1 
PSHX HL 
INX HL 
TST " = 

IFNOT CMD? 
EXPR 
SPOHL 
TST ", 

IFNOT LEF* 
POPX HL 
LA D 
OR E 
RTZ 
LA D 
ND E 
IMA 

JTZ ENTR 
CAL LFND 
LH B 


/TEST FOR CONTROL C OC) 

/MORE ON THIS LINE? 

/YUP - EXECUTE IT 
/END OF LINE? 

/NOFE - ILLEGAL TERMINATION CHR 
/MOVE TO SONL 

/LINE # -> DE, RE-ENTER IF EOB 
/MAKE IT CURRENT LINE 


/SAVE THE START OF THIS STATEMENT 
/PUSH DESIRED RETURN ADR 


/A PRINT STMT? 

/MIGHT BE POKED TO NPRU 

/RETURN WITH NO CR IF TERMINATOR 


/IGNORE SEMICOLONS - NO CR IF EOS 
/A COMMA ? 

/YUP - SEND A TAB 

/NO CR IF EOS 

/LEADING SLASH FOR LITERAL ? 

/NOPE - TRY CHR* 

/YUP - MOVE OVER SLASH 
/FETCH A CHR 
/END OF LINE ? 

/YUP - NO CLOSING SLASH ERROR 

/FINAL SLASH? 

/YUP 

/NOPE - SEND IT 
/DO MORE 

/A CHR* FUNCTION ? 

/TRY STRING PRINT, MIGHT BE POKED 

/TRUNCATED EXPR -> h 
/SEND IT 

/MUST BE AH EXPRESSION 
/SAVE HL DURING PRINT 
/NUMBER TO PRINT -> HL 
/PRINT THE SIGNED NUMBER 
/RESTORE TXA 
/SET Z FLAG IF EOS 


/SAVE SOL TXA ON STK 


/SECOND CHR "=" ? 

/NOPE - MUST BE A COMMAND OR ARRAY 
/YIJP - EVALUATE RIGHT SIDE 
/SOL -> HL, EOL ON STK 
/A GOTO STMT ? 

/EOS -> HL 
/GOTO LINE ZERO? 

/YUP - FALL THRU TO NEXT STMT 
/GOTO LINE 65535 ? C-l) 


/YUP - THIS IS A STOP 
/FIND HIS LINE 
/NEW LINE TXA -> HL 


001 224 
001 225 
001 226 
001 227 


151 


330 

315 142 000 


LL C 

DCX HL /MOVE TO PRECEDING LINES HULL 

PTC /FOUND THE LINE - EXECUTE IT 

CAL ERRO /NO FIND ERROR 


001 232 317 044 LEF*. 

001 234 253 081 

001 236 315 355 001 

001 241 176 

001 242 043 

001 243 146 

001 244 157 

001 245 042 003 005 

001 250 303 206 001 

001 253 317 041 MEMA, 

001 255 265 081 

001 257 353 

001 260 042 016 005 

001 263 341 

001 264 311 

001 265 317 046 POK?, 

001 267 277 0O1 

001 271 852 016 005 

001 274 163 

001 275 341 

001 276 311 

001 277 317 137 OUT?, 

001 301 315 001 

001 303 076 323 

001 305 062 013 005 

001 310 173 

001 311 341 

001 312 303 ei3 005 

001 315 317 100 PAD?, 

001 317 327 001 

001 321 173 

001 322 062 014 005 

001 325 341 

001 326 311 

001 327 317 136 DEF?, 

001 331 310 005 DFPK, 

001 333 043 

001 334 042 005 005 

001 337 341 

001 340 311 


TST "* 

IFNOT MEMA 
CAL FSNL 
LA M 
INX HL 
LH M 
LL A 

STHL DLAD 
JMP GOT 
TST " ! 

IFNOT POK? 
DE<>HL 
STHL MADR 
POPX HL 
RET 

TST "& 

IFNOT OUT? 
LDHL MADR 
LM E 
POFX HL 
RET 

TST "<• 

IFNOT PAD? 
LAI 323 
STA RAM10 
LA E 
POPX HL 
JMF RAM 10 
TST "0 
IFNOT DEF? 
LA E 

STA RAM 10+1 
POPX HL 
RET 

TST "* 

IFNOT BSES 
INX HL 
STHL DEFF 
POPX HL 
RET 


/A GOSUB ? 

/FIND START OF NEXT LINE 
/SAVE ITS LINE HUMBER 


/DO A GOTO 

/SET A MEMORY ADDRESS ? 

/STORE NEU MEMORY ADDRESS 
/RESTORE EOS TXA 
/A POKE ? 

/GET THE SET MEMORY ADDRESS 
/POKE IT WITH LOU ORDER EXPR 
/RESTORE EOS TXA 

/AN OUT INST ? 

/NOFE 

/OUT INST BINARY -> MEMORY CRAM) 

/DATA TO OUTPUT -> A 
/RESTORE EOS TXA 
/DO THE OUT, AND RETURN 
/SET PORT NUMBER ? 

/TRUNCATED EXPRESSION -> A 
/SET NEU PORT NUMBER INTO RAM 
/RESTORE EOS TXA 

/DEFINE A FUNCTION ? 

/MIGHT BE POKED TO LETS 
/MOVE TXA TO EXPRESSION 
/SAVE FUNCTIONS TXA 
/RESTORE EOS TXA 


Page 26 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Nov./Dec., 1976 


323 


001 

001 


001 332 
001 353 


202 005 LETS, 


02 252 001 


001 354 311 


JFZ LETT 
I NX HL 
LM D 


/GET THE INDES OF THE VAR 
/STORE THE VAL IN MEMORY 
/DON'T WRITE HI BYTE IF SINGLE 


/IGNORE TXA FROM LOKU 
/RESTORE EOS TXA 


LETT, POPX HL 
POPX HL 
RET 

/FSNL FINDS THE START OF THE NEXT LINE IN MEMORY. 

/HL IS BUMPED TO POINT TO THE LO ORDER LINE NUMBER OF THAT 
/LINE. A & PSU GET MUNCHED. STACK USAGE: 2 BYTES. 


002 141 151 0O2 
002 143 315 163 002 
002 146 3O0 
0O2 147 137 


002 150 
002 151 
O02 153 
002 155 
002 !60 
002 161 
032 162 


RET I, 
TRYN, 


315 163 002 


IFNOT TRYN 
CAL RSUM 
RFZ 
LE A 
RET 

TST "# 
IFNOT RET I 
CAL RSUM 
RTZ 
LE A 
RET 


/GET RIGHT SUM 
/NOT EQUAL IS FALSE 


/NOT EQUAL TO ? 

/NO RELOPS - RETURN 
/GET RIGHT SUM 


301 355 176 
061 356 043 
001 357 26? 
001 360 302 
001 363 311 


FSNL, 

355 001 


LA M 
I NX HL 
OR A 

JFZ FSNL 
RET 


/ENDING NULL YET? 


/RSUM GETS THE RIGHT SUM AFTER A RELOP HAS BEEN FOUND. 
/ENTER WITH LEFT SUM IN DE. AFTER FETCHING THE RIGHT SUM, 
/RIGHT AND LEFT ARE COMPARED WITH A 16 BIT SIGNED COMFARE. 
/ON EXIT: FLAGS ARE SET LIKE LEFT - RIGHT, 

/DE =0, A = 1, TXA POINTS TO END OF EXPRESSION. 


/EOM AND EOM? CHECK TO MAKE SURE THAT THERE IS AT LEAST 24 
/BYTES OF STK SPACE LEFT FOR NORMAL OPERATIONS. EOM? LOOKS 
/FOR 24 BETWEEN HL AND CURRENT SP. EOM LOOKS FOR 24 BETWEEN 
/CURRENT EOTX AND SP. BOTH MUNCH PSU & A. 


001 364 052 
001 367 325 

801 378 353 
081 371 041 
001 374 071 
081 375 367 
001 376 253 
001 377 321 

802 000 320 
002 801 315 


004 


080 


EOM, 

EOM?, 


LDHL EOTX 

PSHX DE 

DEOHL 

LXI HL -024 

DADX SP 

CMPR 

DEOHL 

POPX DE 

RFC 

CAL ERRO 


/CURRENT EOTX 
/SAVE DE 
/SAVE HIS HL 
/LOOKING FOR 24 BYTES 
/ADD IN CURRENT SF 
/SUBTRACT PASSED HL 
/RESTORE HIS HL 
/RESOTRE DE 

/PLENTY OF ROOM LEFT - RETURN 
/OUT OF MEMORY ERROR 


002 

002 

002 

002 

002 

002 

002 

002 

002 

002 

002 

002 


163 

164 
167 

170 

171 

172 

175 

176 

177 
280 
203 
205 


325 RSUM, 

315 206 002 

343 

174 

252 

362 176 082 
353 

367 SAMS, 

341 

021 080 000 
076 001 
31 1 


PSHX DE 
CAL SUM 
SPOHL 
LA H 
XR D 

JFS SAMS 
DEOHL 
CMPR 
POPX HL 
LXI DE 0 
LAI 1 
RET 


/LEFT ON STK 

/GET RIGHT SUM -> DE 

/LEFT -> HL, TXA ON STK 

/COMPARE SIGN OF LEFT AND RIGHT 

/SAME SIGN - DON'T SWAP 

/DO THE COMPARE 
/RESTORE TXA 
/SETUP RESULT OF RELOP 
/DO A LE A IF TRUE 


/SUM EVALUATOR. 

/<SUM> =:= <TERM> I <SUM> + <TERM> I <SUM> - <TERM> 


/THIS ROUTINE INPUTS A LINE OF TEXT AND PLACES IT 
/AT LIMB WHEN ENTERED AT GETL. RUBOUT 
.-DELETES THE PREVIOUS CHR. CONTROL U C+U) DELETES THE 
/ENTIRE LINE BEING TYPED AND STARTS OVER. A MAXIMUM 
•OF LBUL CHRS WILL BE ACCEPTED AFTER WHICH THE 
/BELL WILL RING INSTEAD OF ECHOING CHRS AS NORMAL. 
/CONTROL CHRS OTHER THAN CONTROL U, CONTROL G (BELL), 

/AND CARRIAGE RETURN WILL NOT BE ECHOED BUT IGNORED. 
/ROUTINE RETURNS ON ENTRY OF A CARRIAGE RETURN BY 
/ECHOING A CRLF AND PLACING 3 NULLS AT THE END OF BUFFER. 
/ON EXIT, HL POINT LINB-1. STACK USAGE: 10 BYTES. 


002 

002 


002 


002 

002 

002 

002 

002 

002 

002 

002 

002 


002 

002 


002 

002 

082 

0O2 

002 

0O2 

002 

002 

002 

002 

002 

002 


004 053 
0O5 357 
006 334 
007 085 

010 302. 023 002 
013 315 154 085 
016 041 264 004 
021 086 001 
023 315 117 085 
026 376 097 
030 312 057 002 
033 376 015 
035 312 143 005 
040 376 025 
042 312 013 002 
045 376 040 
04? 332 023 002 
052 376 177 
854 312 084 002 
057 1 17 
060 170 
861 376 111 
063 076 007 
865 322 074 002 
070 171 
071 161 
072 043 


GET J, 


GETK, 

GETL, 

GETM, 


GETH, 


073 084 

074 347 GETO, 

075 383 023 002 


DCX HL 
MSGP 

DSS “\+200 
DCB 

JFZ GETM 
CAL CRLF 
LXI HL LINE 
LBI 1 
CAL TTY I 
CPI 7 
JTZ GETN 
CPI 15 
JTZ CRLE 
CPI 25 
JTZ GETK 
CPI " 

JTC GETM 
CPI 177 
JTZ GET J 
LC A 
LA B 

CPI LBUL+1 
LAI 7 
JFC GETO 
LA C 
LM C 
I NX HL 
INB 
DEVO 

JI1P GETM 


/DECR CHR POINTER 
/SEND A BACK SLASH 

/DECR CHR COUNTER 
/DELETED TOO MANY? - NOPE 

/CHRS WILL GO HERE 
/INITIALIZE CHR COUNT 
/GET CHR -> A 
/A BELL? 

/YUP - PUT IN BUFFER 
/A CR? 

/YUP - EXIT THRU CRLF 
/CONTROL U? 

/YUP - START OVER 
/< SPACE, CONTROL CHR ? 

/YUP - IGNORE 
/RUBOUT? 

/YUP - IGNOR LAST CHR 
/SAVE CHR 

/GET LINE LENGTH -> A 

/COMPARE WITH MAXIMUM 

/GET READY TO RING BELL IF TOO LONG 

/RING IT 

/RESTORE CHR 

/PUT IT IN BUFFER 

/INCR BUFFER POINTER 

/INCR CHR COUNTER 

/ECHO CHR 

/DO SOME MORE 


/THIS ROUTINE FETCHES A LINE NUMBER FROM MEMORY -> DE. 

/IF IT IS LINE 0 (ZERO), THIS MEANS EOB AND IT GOES TO ENTR. 
/IF NOT 0, JUST RETURN. MUNCHES DE & A & FLAGS, BUMPS HL. 
/HL POINTS TO LOU ORDER ON ENTRY, HI ORDER ON EXIT. 

/STACK USAGE: 2 BYTES. 

002 
0O2 
802 
002 
O02 
002 
0O2 


/LO ORDER -> E 


103 172 

104 263 

105 380 

106 307 


/HI ORDER -> D 
/IS DE = 0 ? 


/NOPE - RETURN 

/YUP - BACK TO COMMAND MODE 


/EXPRESSION EVALUATOR. USES ALL REGISTERS. RESULT IS LEFT 
/IN THE DE REGISTER. WILL PROBABLY RECURSE AT LEAST ONCE 

/ HIERARCHY 

/EVALUATED FIRST ( ) 


/EVALUATED LAST <, >, =, # 

/OPERATORS ON THE SAME LEVEL ARE EVALUATED LEFT TO RIGHT. 


/ < EXPR > ::= < SUM > I <SUMX<3UM> I <SUM>XSUM> 

/ < SUM >=< SUM > I (SUM)#<SUM> 

/STACK USAGE: >= 10 BYTES. CALLS EOM BEFORE RECURSING. 


002 187 315 
002 112 317 
002 114 124 
002 116 315 
002 121 320 
002 122 137 
0O2 123 311 
0O2 124 31? 
002 126 13? 
0O2 130 315 
002 133‘330 
002 134 310 
002 135 13? 
002 136 311 
002 137 31? 


206 002 EXPA, 
074 EXPS, 
002 

163 002 


076 TRY), 

002 

163 002 


075 TRYE,_ 


CAL SUM 

TST “< 

IFNOT TRY) 

CAL RSUM 

RFC 

LE A 

RET 

TST "> 

IFNOT TRYE 

CAL RSUM 

RTC 

RTZ 

LE A 

RET 

TST H = 


/GET LEFT SUM 
/FOLLOWED BY "<" ? 

/GET RIGHT SUM AND COMPARE 
/FALSE - DE = 0 
/TRUE - MAKE DE = 1 

/GREATER THAN ? 

/GET RIGHT SUM 
/FALSE 

/EQUAL IS FALSE 
/TRUE 

/EQUAL TO ? 


/THE VALUE OF THE SUM IS LEFT IN DE ON EXIT. 


002 206 315 
002 211 31? 
002 213 230 
002 215 325 
002 216 315 
002 221 343 
002 222 031 
082 223 353 
002 224 341 
002 225 303 
002 230 317 
002 232 150 
002 234 325 
002 235 315 
002 240 315 
002 243 303 


246 002 SUM, 
053 SUMA, 
002 

246 002 

SUM 1, 


211 002 

055 SUN, 

002 

246 002 
246 004 
221 002 


CAL TERM 
TST “ + 
IFNOT SUN 
PSHX DE 
CAL TERM 
SP< >HL 
DADX DE 
DE<>HL 
POPX HL 
JMP SUMA 
TST 

IFNOT RET I 
PSHX DE 
CAL TERM 
CAL COMD 
JMP SUM 1 


/GET LEFT TERM 
/FOLLOWED BY A "+" ? 

/SAVE LEFT HALF 

/GET RIGHT HALF 

/LEFT -) HL, TXA ON STACK 

/RIGHT + LEFT -> HL 

/RESULT -> DE 

/RESTORE TXA 

/CHECK FOR MORE SUMS 

/FOLLOWED BY ? 

/NOPE - DONE WITH ALL SUMS 

/SAVE LEFT TERM 

/GET RIGHT HALF 

/DE = -RIGHT 

/RESULT = -LEFT + RIGHT 


/ EP 11 

/TERM EVALUATOR. 

/<TERM> ::= <FACT) I (TERM) * (FACT) I (TERM) / (FACT) 


002 

002 


082 

002 

002 

002 

002 

002 

002 

002 

002 

002 

002 

002 

002 

002 

002 

0O2 

002 

002 

002 

002 

002 

002 

002 

002 

002 

002 

002 

002 

002 

002 

002 

002 

002 

002 

002 

002 

002 

002 

002 

002 

002 

002 


062 

002 

082 

002 

002 

002 

002 

0O2 

002 

002 


003 


003 

003 

003 

003 

003 


246 315 025 
251 31? 032 
253 340 002 

255 325 

256 315 025 

261 343 

262 345 

263 041 013 
266 066 021 
270 001 000 

273 172 

274 037 

275 127 

276 173 

277 037 
388 137 
381 065 
302 312 331 
305 343 
386 322 316 

311 345 

312 011 

313 104 

314 115 

315 341 

316 267 

317 175 

320 027 

321 157 

322 174 

323 027 

324 147 

325 343 

326 333 273 

331 321 

332 120 

333 131 

334 311 

335 303 251 
340 317 057 
342 150 002 

344 325 

345 315 025 
350 315 235 

353 343 

354 353 

355 3 : *: 237 

360 3G5 

361 104 

362 115 

363 353 

364 170 

365 261 

366 314 142 
371 021 000 

374 175 

375 221 

376 157 

377 174 
000 230 
001 14? 

002 023 
003 322 374 
006 033 
007 011 
O10 042 020 
013 301 

014 170 
015 26? 


003 TERM, 
TERA, 


000 


LOOP, 


SKIP, 


082 

002 

003 

004 

004 


MULS, 


TERN, 


DV02, 


000 


DIV1, 


CAL FACT 
TST "* 

IFNOT TERN 

PSHX DE 

CAL FACT 

SPOHL 

PSHX HL 

LXI HL RAM 10 

LMI #11 

LXI BC 0 

LA D 

RAR 

LD A 

LA E 

RAR 

LE A 

DCM 

JTZ MULS 
SP(>HL 
JFC SKIP 
PSHX HL 
DADX BC 
LB H 
LC L 
POPX HL 
OR A 
LA L 
RAL 
LL A 
LA H 
RAL 
LH A 
SPOHL 
JMP LOOP 
POPX DE 
LD B 
LE C 
POPX HL 
JMP TERA 
TST "/ 

IFNOT RET I 
PSHX DE 
CAL FACT 
CAL CHSG 
SPOHL 
DEOHL 
CAL CHS? 

PSHX BC 
LB H 
LC L 
DE(>HL 
LA B 
OR C 

CTZ ERRO 
LXI DE 0 
LA L 
SU C 
LL A 
LA H 


/GET LEFT FACT 

/FOLLOWED BY AN ? 

/NOPE - TRY DIVISION 

/SAVE LEFT FACT 

/GET RIGNT FACT 

/LEFT -> HL, TXA ON STACK 

/NUMBER OF BITS 

/CLEAR PARTIAL PRODUCT 
/16 BIT DE ROTATE RIGHT 


/ONE BIT DONE 
/ALL BITS DONE 

/BIT NOT ONE - SKIP ADD 


/CLEAR CARRY 
/16 BIT HL ROTATE LEFT 


/CLEAN JUNK OFF STACK 
/RESULT -> DE 

/RESTORE TXA 

/LOOK FOR ADDITIONAL OPERATORS 
/FOLLOWED BY “/ M ? 

/NOPE - DONE WITH ALL FACTORS 
/SAVE LEFT FACT 
/GET RIGHT FACT 
/CHANGE SIGN IF HEEDED 
/TXA ON STK, LEFT -) HL 
/LEFT -> DE, ABS(RIGHT) -> HL 
/ABSCLEFT) -> DE 
/SAVE SIGH OF RESULT 

/ABS(RIGHT) -> BC 
/ABSCLEFT) -> HL 
/DIVISION BY ZERO? 

/YUP - ERROR 
/CLEAR QUOTIENT 
/LEFT = LEFT -RIGHT 


LH A 
I NX DE 
JFC DIV1 
DCX DE 
DADX BC 
STHL RMDR 
POPX BC 
LA B 
OR A 


/QUO=QUO + 1 

/STILL POSITIVE - SUB AGAIN 
/TOO FAR - QUO = QUO -1 
/GET REMAINDER -> HL 
/SAVE IT 

/GET THE SIGN OF RESULT 


Nov./Dec., 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 27 


324 


003 016 374 246 004 

003 0£1 341 

003 022 303 231 002 


CTS COMD 
POPX HL 
JMP TERA 


/COMPLIMENT RESULT MAYBE 
/RESTORE TXA 

/LOOK FOR ADDITOHAL OPERATORS 


/COMMAND PROCESSOR. 







/ 



003 

313 

317 

133 


CMD?, 

TST "C 


/ARRAY LET STMT ? 






/FACTOR 

EVALUATOR. 


003 

315 

334 

003 



IFNOT CMD 


/NOPE - IT'S A COMMAND 






/< F ACT > 

=:= <CONSTANT> I <VARIABLE> I -<FACT> 

003 

317 

176 



LOP, 

LA M 


/MOVE TO RIGHT EXPR 






/ 

+ <FACT > I <<EXPR >) I . I ? I * I * 

003 

320 

043 




I NX HL 








/ 

! I & 

I 0 I * I X 

003 

321 

376 

135 



CPI "3 








/ 



003 

323 

302 

317 

003 


JFZ LOP 








/VALUE l 

DF FACTOR LEFT 

IN DE ON EXIT. 

003 

326 

043 




I NX HL 


/MOVE OVER "=" 






/ 



003 

327 

337 




EXPR 


/EXPR VALUE -> DE 

003 

023 

317 

033 


FACT/ 

TST “ + 

/UNARY PLUS ? 

003 

330 

343 




SP<>HL 


/EOS TXA ON STK, SOS TXA -> HL 

003 

027 

031 

003 



IFNOT FACA 

/IGNORE IT 

003 

331 

303 

341 

001 


JMP LETS 


/DO THE ASSIGNMENT 

003 

031 

033 



FACA/ 

DCX HL 

/IS THIS A CONSTANT? 

003 

334 

341 



CMD, 

POPX HL 


/RESTORE SOL TXA 

003 

032 

327 




FETCH 

/SET FLAGS, TC IS 0 - 9, TZ IS TERMN 

003 

335 

317 

1 14 



TST "L 


/LIST COMMAND ? 

003 

033 

332 

203 

004 


JTC DEINT 

/YUP - GET VAL -> DE AND EXIT 

003 

337 

004 

004 



IFNOT NEU? 



003 

036 

314 

142 

000 


CTZ ERRO 

/MISSING EXPRESSION ERROR 

003 

341 

315 

205 

004 


CAL DEINT 


/GET ARG -> DE, 0 IF NO ARG 

003 

041 

317 

033 



TST 

/UNARY MINUS ? 

003 

344 

315 

370 

000 


CAL LFND 


/FIND THAT LINE 

003 

043 

033 

003 



IFNOT TRY. 


003 

347 

140 




LH B 


/START ADDRESS -> HL 

003 

045 

315 

023 

003 


CAL FACT 

/GET FACTOR TO NEGATE 

003 

350 

151 




LL C 



003 

050 

303 

246 

004 


JMP COMD 

/COMPLIMENT IT, RETURN FROM COMD 

003 

351 

076 




DSS 76 


/SETUP BOGUS LAI 

003 

033 

317 

056 


TRY. / 

TST ". 

/CURRENT LINE ? 

003 

352 

043 



LISC, 

I NX HL 


/SKIPPED FIRST TIME THRU, FROM LAI 

003 

055 

065 

003 



IFNOT TRY* 


003 

353 

315 

160 

005 

LISA, 

CAL ABRT 


/CONTROL C <*C> CHECK 

003 

057 

353 




DEOHL 

/SAVE TXA IN DE 

003 

356 

315 

154 

005 


CAL CRLF 



003 

060 

052 

262 

004 


LDHL CURL 

/GET CURRENT LINE # -> DE 

003 

361 

315 

100 

002 


CAL FELN 


/FETCH LINE # -> DE, EXIT IF ZERO 

003 

063 

353 




DEOHL 

/RESTORE TXA 

003 

364 

345 




PSHX HL 


/SAVE DURING PRINT 

003 

064 

311 




RET 


003 

365 

353 




DEOHL 


/LINE # -> HL 

003 

065 

317 

044 


TRY$/ 

TST H * 

/RETURN ADDRESS ? 

003 

366 

315 

066 

004 


CAL NOSP 


/PRINT IT 

003 

067 

077 

003 



IFNOT TRY* 


003 

371 

341 




POPX HL 


/FIRST CHR OF LINE 

003 

071 

353 




DEOHL 

/SAVE TXA 

003 

372 

043 



LI SB, 

I NX HL 


/GET A CHR 

003 

072 

052 

003 

005 


LDHL DLAD 

/GET RETURN ADDRESS -> HL 

003 

373 

176 




LA M 



003 

073 

353 




DEOHL 

/RESTORE TXA 

003 

374 

267 




OR A 


/EOL? 

003 

076 

311 




RET 


003 

375 

312 

352 

003 


JTZ LISC 


/LAST OH LINE - DO NEXT LINE 

003 

077 

317 

043 


TRY*/ 

TST “* 

/DIVISION REMAINDER ? 

004 

000 

347 




DEVO 


/NOT LAST - PRINT IT 

003 

101 

111 

003 



IFNOT TRY! 


004 

001 

303 

372 

003 


JMP LISB 


/DO REST OF LINE 

003 

103 

353 




DEOHL 

/SAVE TXA 






/ 




003 

104 

032 

020 

005 


LDHL RMDR 

/GET REMAINDER -> HL 

004 

004 

317 

116 


NEU?, 

TST "N 


/NEU COMMAND ? 

003 

107 

353 




DEOHL 

/RESTORE TXA 

004 

006 

037 

004 



IFNOT RUN? 



003 

110 

31 1 




RET 


004 

010 

052 

256 

004 


LDHL BOTX 


/PUT EOB MARK IN BUFFER 

003 

11 1 

317 

041 


TRY!/ 

TST - ! 

/PEEK ? 

004 

013 

257 



NEU1, 

XR A 


/A=0 

003 

113 

126 

003 



IFNOT TRY* 


004 

014 

167 




LM A 



003 

113 

333 




DEOHL 

/SAVE TXA 

004 

015 

043 




I NX HL 



003 

116 

052 

016 

005 


LDHL MADR 

/GET LAST MEMORY ADDRESS -> HL 

004 

016 

167 




LM A 



003 

121 

176 




LA M 

/PEEK -> A 

004 

017 

043 




I NX HL 



003 

122 

353 




DEOHL 

/RESTORE TXA 

004 

020 

167 




LM A 



003 

123 

303 

142 

003 


JMP ARET 

/RETURN VALUE IN A REG 

004 

021 

042 

260 

004 


STHL EOTX 



003 

126 

317 

046 


TRY&, 

TST “& 

/PORT INPUT ? 

004 

024 

301 



RSSP, 

POPX BC 


/RETURN ADDRESS -> BC 

003 

130 

146 

003 



IFNOT TRY* 


004 

025 

052 

377 

004 


LDHL SPRS 


/HOLDS STACK RESET ADDRESS 

003 

132 

076 

333 



LAI 333 


004 

030 

371 




SP< HL 



003 

134 

062 

013 

005 


STA RAM 10 

/SETUP INP INST IN RAM 

004 

031 

305 




PSHX BC 


/RESTORE RETURN ADDESS 

003 

137 

315 

013 

003 


CAL RAMIO 

/EXECUTE IT 

004 

032 

052 

256 

004 


LDHL BOTX 


/INCASE THIS IS SUICIDAL 

003 

142 

137 



ARET, 

LE A 

/SETUP TUO BYTE VALUE —> DE 

0O4 

035 

053 




DCX HL 


/BOTX - 1 -> HL 

003 

143 

026 

000 



LDI 0 


004 

036 

311 




RET 



003 

143 

311 




RET 











003 

146 

317 

136 


TRY*/ 

TST -♦ 

/USER DEFINED FUNCTION REFERENCE '* 

004 

037 

317 

122 


RUN?, 

TST "R 


/RUN COMMAND ? 

003 

130 

164 

003 



IFNOT TRY* 


004 

041 

173 

005 



IFNOT OS? 



003 

132 

345 




PSHX HL 

/SAVE TXA 

004 

043 

312 

024 

004 


JTZ RSSF 


/NO ARG - RESET STACK AND GO 

003 

153 

315 

364 

001 


CAL EOM 

/VERIFY ROOM FOR RECURSION 

004 

046 

337 




EXPR 


/GET THE ARGUMENT 

003 

136 

052 

003 

003 


LDHL DEFF 

/TXA OF DEFINITION 

004 

047 

303 

207 

001 


JMP GOTA 


/DO A GOTO 

003 

161 

337 




EXPR 

/EVALUATE THE FUNCTION 










003 

162 

341 




POPX HL 

/RESTORE TXA 






/ 




003 

163 

311 




RET 







/THESE 

ROUTINES ARE 

USED TO PRINT THE 16 BITS IN THE 

003 

164 

317 

137 


TRY*/ 

TST "* 

/RESULT OF LAST EXPRESSION ? 






/HL REGISTER AS DECIMAL 

ASCII ON THE TERMINAL. INPT PRINTS 

003 

166 

176 

003 



IFNOT USR? 







/THE NUMBER IN CURL 

IF 

IT IS NOT 65535 (NOT IMMEDIATE MODE). 

003 

170 

333 




DEOHL 

/SAVE TXA 






/THE UORD "IN" PRECEDES 

THE NUMBER IF IT IS PRINTED. SHLF 

003 

171 

052 

001 

003 


LDHL LRES 

/GET LAST EXPR RESULT -> HL 






/PRINT 

S A 15 BIT SIGNED 

NUMBER IN HL (-32768 TO 32767). 

003 

174 

353 




DEOHL 







/HLPT 

PRINTS THE 16 

BIT 

UNSIGNED NUMBER IN HL (0 TO 65535). 

003 

175 

311 




RET 







/NOSP 

PRINTS 16 BIT 

UNSIGNED NUMBERS IN HL WITHOUT THE 

003 

176 

317 

100 


USR?/ 

TST "0 

/MACHINE LANGUAGE CALL ? 






/LEADING SPACE NORMALLY 

PRINTED. ALL NUMBERS ARE FOLLOWED 

003 

200 

220 

003 



IFNOT TRY\ 







/BY ONE TRAILING SPACE. 

SHLP PRINTS A MINUS SIGN ("-"> 

003 

202 

345 




PSHX HL 

/SAVE TXA 






-'IN PLACE OF THE LEf 

1DING SPACE IF HL IS NEGATIVE. 

003 

203 

313 

364 

001 


CAL EOM 

/ENUF STACK SPACE ? 






/STACK 

USAGE: S BYTES. 

MUNCHES ALL REGS. 

003 

206 

052 

007 

005 


LDHL USRL 

/HIS ROT ADR ON STK, TXA -> HL 










003 

211 

343 




SPOHL 


004 

052 

052 

262 

004 

INPT, 

LDHL CURL 


/CURRENT LINE NUMBER -> HL 

003 

212 

311 




RET 

/GOTO TO HIS ROT 

004 

055 

174 




LA H 


/IS IT 377 377 






/ 



004 

056 

245 




ND L 








/SAMPLE 

USR ROT TO RETURN THE ASCII VALUE OF THE CHR 

004 

057 

074 




INA 








/FOLLOWING THE 0 


004 

060 

310 




RTZ 


/YUP - RETURN PRINT NOTHING 






/ 



004 

061 

357 




MSGP 


/NOPE - PRINT "IN" 

003 

213 

136 



USR/ 

LE M 

/SETUP TUO BYTE VALUE -> DE 

004 

062 

1 1 1 




DSS "I, "N+200 


803 

214 

026 

000 



LDI 0 


004 

063 

316 







003 

216 

043 




I NX HL 

/MOVE TXA OVER CHR 

004 

064 

357 



HLPT, 

MSGP 


/PRINT A SPACE 

003 

217 

311 




RET 


004 

065 

240 




DSS “ +200 








/ 



004 

066 

021 

156 

004 

NOSP, 

LXI DE TENS 


/POINT TO POWERS OF TEN TABLE 

003 

220 

317 

134 


TRYs, 

TST 

/SINGLE CHR INPUT ? 

004 

071 

325 




PSHX DE 


/PUT TABLE ADR ON STACK 

003 

222 

232 

003 



IFNOT TRY< 


004 

072 

016 

001 



LCI 1 


/CLEAR SIGNIFICANT DIGIT FLAG 

003 

224 

313 

117 

005 


CAL TTY I 

/GET THE INPUT -> A 

004 

074 

343 



POSI, 

SPOHL 


/NUMBER ON STK, TABLE -> HL 

003 

227 

303 

142 

003 


JMP ARET 


004 

075 

136 




LE M 


/POWER OF TEN -> DE 

003 

232 

317 

030 


TRY</ 

TST " C 

/EXPRESSION IN PARENTHESIS ? 

004 

076 

043 




INX HL 



003 

234 

266 

003 



IFNOT TRY? 


004 

077 

126 




LD M 



003 

236 

343 




PSHX HL 

/MAKE SURE THERE IS ROOM BEFORE 

004 

100 

043 




I NX HL 



003 

237 

313 

364 

001 


CAL EOM 

/RECURSING 

004 

101 

343 




SF< >HL 


/TABLE ON STK, NUMBER -> HL 

003 

242 

341 




POPX HL 


004 

102 

006 

000 



LB I O 


/THIS DIGIT = 0 

003 

243 

337 




EXPR 

/RECURSIVE 

004 

104 

175 



DIVD, 

LA L 


/16 BIT SUBTRACT HL = HL - DE 

003 

244 

317 

031 



TST "> 

/GOT TO HAVE A RIGHT TO MATCH 

004 

105 

223 




SU E 



003 

246 

137 

000 



IFNOT SNER 

/NOPE - ERROR 

004 

106 

157 




LL A 



003 

230 

311 




RET 


004 

107 

174 




LA H 



003 

251 

313 

202 

003 

TRYV, 

CAL LOKU 

/GET THE VARIABLES INDES -> HL 

004 

1 10 

232 




SB D 



003 

234 

136 




LE M 

/VAR VAL -> DE 

004 

11 1 

147 




LH A 



003 

233 

026 

000 



LDI 0 

/CLEAR HIGH BITS IF SINGLE ARRAY 

004 

112 

004 




INB 


/INCREMENT THIS DIGIT 

003 

237 

302 

264 

003 


JFZ TRYU 

/SINGLE BYTE ARRAY, DON'T LOAD HI 

004 

113 

322 

104 

004 


JFC DIVD 


/HOT NEGATIVE YET - KEEP SUBTRACING 

003 

262 

043 




I NX HL 


004 

116 

005 




DCB 


/GONE ONE TOO FAR, DIGIT = DIGIT -1 

003 

263 

126 




LD M 


004 

1 17 

031 




DADX DE 


/GONE TOO FAR, ADD BACK TEN POWER 

003 

264 

341 



TRYU, 

POPX HL 

/RESTORE TXA, PUSHED BY LOKU 

004 

120 

257 




XR A 


/ A = 0 

003 

265 

311 




RET 


004 

121 

260 




OR B 


/IS THIS DIGIT ZERO ? 









004 

122 

302 

131 

004 


JFZ PRNT 


/NOPE - PRINT IT 






/TRY? WILL HANDLE THE 

INPUT OPERATOR IF PRESENT. EXECUTION 

0 04 

125 

261 




OR C 


/ANY SIGNIFICANT DIGITS YET ? 






/WILL STOP AND A "?" WILL BE PRINTED ON THE OUTPUT DEVICE 

004 

126 

302 

136 

004 


JFZ BYPA 


/NOPE - DON'T PRINT THIS ZERO 






/THE USER RESPONDS WITH ANY VALID EXPRESSION/ AMD HITS 

004 

131 

306 

060 


PRNT, 

ADI "0 


/ADD IN ASCII BIAS 






/RETURN 

IT IS NOT A 

GOOD IDEA TO TYPE QUESTION MARKS 

004 

133 

016 

000 



LCI 0 


/SET SIGNIFICANT DIGIT FLAG 






/IN RESPONSE TO AN INPUT STMT. !!!' MUNCHES LIMB. 

004 

1 35 

347 




DEVO 


/SEND THIS DIGIT 






/ 



004 

136 

1 73 



BYPA, 

LB E 


/ON THE LAST DIGIT ? 

003 

266 

317 

077 


TRY?, 

TST "? 

/THE LINE INPUT OPERATOR ? 

004 

137 

075 




DCA 



003 

270 

231 

003 



IFNOT TRYV 


004 

140 

302 

074 

004 


JFZ POSI 


/NOPE - DO NEXT ONE 

003 

272 

357 




MSGP 

/SEND THE QUESTION MARK 

004 

143 

321 




POPX DE 


/YUP - CLEAN UP STACK 

003 

273 

077 




DSS "?/ " +200 


004 

144 

171 




LA C 


/SIGNIFICANT DIGIT FLAG -> A 

003 

274 

240 






004 

145 

267 




OR A 


/HAVE UE SENT ANY SIG DIGS YET ? 

003 

273 

345 




PSHX HL 

/SAVE THE TXA 

004 

146 

312 

153 

004 


JTZ SPOU 


/YUP - OUTPUT THE TRAILING SPACE 

003 

276 

315 

364 

001 


CAL EOM 

/VERIFY ROOM FOR RECURSION 

004 

151 

357 




MSGP 


/HOPE - UE'RE PRINTING A ZERO 

003 

301 

315 

016 

002 


CAL GETL 

/GET HIS INPUT 

004 

152 

260 




DSS "0+200 


/SEND A "0" 

003 

304 

327 




FETCH 

/GET FIRST CHR, RETURN '■ 

004 

153 

357 



SPOU, 

MSGP 


/PRINT A SPACE 

003 

303 

312 

204 

000 


JTZ ENTR 

/YUP - CLEAR STK AND RE-ENTER 

004 

154 

240 




DSS " +200 



003 

310 

337 




EXPR 

/EVALUATE HIS INPUT RECURSIVE 

004 

155 

311 




RET 



003 

31 1 

341 




POPX HL 

/RESTORE TXA 

004 

156 

020 

047 


TENS, 

DSD 010000, 

01000- 01,00, O10, 01 

003 

312 

31 1 




RET 


004 

160 

350 

003 







Page 28 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 



325 


004 162 
004 164 
004 166 
004 176 
604 171 
004 174 
004 175 
0O4 20O 
004 201 
004 202 


000 

000 

000 

235 004 
064 004 

066 004 


144 

012 

001 



303 


DEOHL 
CAL CHSG 
DEOHL 
JFS HLPT 
MSGP 

DSS "-+200 
JMP NOSP 


/NUMBER -> DE 
/ABS(NUMBER) -> DE 
/ABS(NUMBER) -> HL 
/UAS POSITIVE, PRINT SPACE 
/PRINT THE MINUS SIGN ("-"> 

/PRINT THE NUMBER 


/DEINT TAKES ASCII FROM MEMORY INTO BINARY IN DE. 
/MOVES TXA UNTIL CHR IS NOT 0-9. 

/STACK USAGE: 4 BYTES. MUNCHES ALL REGS EXCEPT BC. 


004 


004 

004 

004 

004 

004 

004 

004 

004 

004 

004 

004 

004 

004 

004 


004 


205 053 

206 021 000 000 


212 320 

213 345 

214 142 

215 153 

216 031 

217 051 

220 031 

221 051 

222 326 060 

224 137 

225 026 000 
227 031 

230 353 

231 341 


232 303 211 004 


DEINT, 

DEIM, 


DCX HL 
LXI DE 0 
FETCH 
RFC 

PSHX HL 
LH D 
LL E 
DADX DE 
DADX HL 
DADX DE 
DADX HL 
SUI "0 
LE A 
LDI 0 
DADX DE 
DEOHL 
POPX HL 
JMP DEIM 


/DECR FOR FETCH 
/CLEAR PARTIAL SUM 
/FETCH CHR 0-9? 
/NOFE - DONE 
/SAVE CHR ADR 
/PARTIAL SUM -> HL 

/HL = DE * 10 
/PS = PS * 10 


/REMOVE ASCII BIAS 
/SETUP 16 BIT DIGIT -> DE 

/ADD IN NEU DIGIT 
/PARTIAL SUM -> DE 
/RESOTRE TXA 


/CHS? CHECKS THE SIGN OF DE REG. IF POSITIVE, RETURN A 
/MUNCHED, SIGN BIT FALSE. IF NEGATIVE, COMPLIMENT DE, 

/A MUNCHED, SIGN BIT SAME AS THAT OF B REG. CHSG 
/CLEARS THE SIGN BIT OF B REG FIRST. COMD UNCONDITIONALLY 
/COMPLIMENTS DE REG. STACK USAGE: 2 BYTES. 


004 

004 

004 

004 

004 

004 

004 

004 


004 

004 

004 


004 


235 

240 

241 

242 

243 


246 

247 
250 


253 

254 

255 


l ( i 
057 
137 
023 
311 


CHSG, LBI 0 
CHS?, LA D 
OR A 
RFS 
LA B 
XRI 200 
LB A 

COMD, LA D 
CMA 
LD A 
LA E 
CMA 
LE A 
I NX DE 
RET 


/CLEAR RESULT SIGN 
/IS DE POSITIVE ? 

/YUP - RETURN 

/NOFE - FLIP SIGN OF B 

/AND FALL THRU TO COMPLIMENT DE 


/RAM DEFINITIONS 


004 256 154 006 
004 260 156 006 
004 262 377 377 
110 000 
000 374 
004 264 000 

377 004 
004 377 000 010 
005 001 000 000 
005 003 000 060 
005 005 033 001 
0G5 067 213 003 
005 011 154 836 
005 013 323 810 
005 015 311 
005 016 000 000 
605 020 000 000 
005 022 000 

106 005 


BOTX, DSD EOP 

EOTX, DSD EOP+2 

CURL, DSD '377 377 

LBUL=0?2 
OS='374 
LIN6, DSS 0 

*. +LBUL+2 
SPRS, DSD '10 

LRES, DSD 0 

DLAD, DSD 0 

DEFF, DSD COLN+1 

USRL, DSD USR 

SSTM, DSD EOP 

RAM 10, OUT 10 

RET 

MADR, DSD 0 

RMDR, DSD 0 

VART, DSS 0 

*.+051 


/ADR OF FIRST CHR IN BUFFER 
/ADR OF LAST CHR IN BUFFER 
/CURRENT LINE NUMBER 
/INPUT LINE BUFFER LENGTH 
/ADDRESS OF OPERATING SYSTEM 
/LEAVE SPACE FOR INPUT LINE BUF 

/ADDRESS OF STACK POINTER RESET 
/HOLDS RESULT OF LAST EXPR EVAL 
/HOLDS RETURN LINE NUMBER FOR 
/INITIALIZE TXA OF USER DEFINED FUN 
/ADR OF USERS MACHINE LANG CALL 
/INITIALIZE START OF LAST STMT 
/RAM AREA FOR INP AND OUT 

/SAVE AREA FOR PEEK / POKE ADDRESSES 
/SAVE AREA FOR DIVISION REMAINDER 
/LEAVE ROOM FOR PROGRAM VARIABLES 


305 157 311 RET 

/ 

/ABRT CHECKS THE CONSOLE DEVICE FOR A CHR AND IF THERE, 
/CHECK IF IT'S A CONTROL C. IF NOT, RETURN WITH A MUNCHED. 
/IF YES, FALL THROUGH TO STOP ROUTINE. 

/STACK USAGE, 6 BYTES. 


005 160 315 
005 163 310 
005 164 315 
005 167 376 
005 171 300 
005 172 307 


005 173 317 
005 175 002 
005 177 303 


134 005 ABRT. 

TIB, 

117 005 
003 


117 OS?, 

006 OSPK, 

000 374 


CAL TRDY 
RTZ 

CAL TTYI 
CPI 3 
RFZ 
RST 


TST "0 
IFNOT SAV? 
JMP OS' 


/IS DATA READY FLAG UP ? 
/NOPE - RETURN 
/YUP - FETCH THE CHR 
/A CONTROL C C+C) ? 

/NOPE - RETURN 
/BACK TO ENTRY POINT 


/JMP TO OS ? 

/MIGHT BE POKED TO SNER 


/LOKU GETS THE INDES OF THE VARIBLE POINTED TO BY HL AND 
/RETUNS THEM IN HL. THE TXA IS BUMPED OVER THE VARNAM, 
/AND PUSHED BEFORE RETURNING. YOU MUST POP AFTER CALLING 
/LOKU. USES ALL REGS EXCEPT DE. STACK USAGE: 4 BYTES IF 
/VAR IS A - Z, >= 16 IF SUBSCRIPTED. ZERO FLAG IS TRUE 
/IF IT IS DOUBLE BYTE VAR (SIMPLE OR DOUBLE ARRAY). ZERO 
/IS FALSE IF SINGLE BYTE VARIABLE (SINGLE BYTE ARRAY). 


005 202 176 
005 203 326 
005 205 332 
005 210 376 
005 212 322 


LOKU, 

101 

232 005 LKP1, 
033 

232 005 LKP2, 


005 215 043 

005 216 343 

005 217 345 

005 220 041 022 005 

005 223 007 

005 224 117 

005 225 006 000 

005 227 011 

005 230 237 

005 231 311 


LA M 

SUI "A 

JTC DARY 

CPI 027 

JFC DARY 

/SAVE NEU TXA 

I NX HL 

SPOHL 

PSHX HL 

LXI HL VART 

RLC 

LC A 

LBI 0 

DADX BC 


/VARNAM -> A 
/IS IT A - Z ? 

/NOPE 

/26 LETTERS + 1 

/NOPE - TRY ARRAYS IF NOT POKED 
ON STACK BEFORE RETURNING 
/MOVE TXA OVER VARNAM 
/PUT TXA ON STK 
/PUT RETURN ADDRESS BACK 
/BASE ADDRESS -> HL 
/MULTIPLY INDEX BY 2 
/TWO BYTE INDEX -> BC 

/ADD IN INDEX TO BASE 

/SET ZERO FLAG. THIS IS DOUBLE BYTE 


232 005 E0P1=. 


/THIS WILL BE BOTX-1 IF ARRAYS. 
/STRING, AND TAPE / SAVE ARE DELETED 


005 232 317 042 
005 234 23? 005 
005 236 313 272 
005 241 343 
005 242 343 
003 243 052 336 
005 246 011 
005 247 011 
005 250 257 
005 251 311 
005 252 317 047 
005 254 137 000 
005 256 315 272 
005 261 343 
005 262 345 
005 263 052 334 
005 266 011 
005 267 366 001 
005 271 311 


DARY, 


003 


SARY, 
005 SSUB, 


005 


TST »" 
IFNOT SARY 
CAL SUBS 
SPOHL 
PSHX HL 
LDHL DBSE 
DADX BC 
DADX BC 
XR A 
RET 
TST 

IFNOT SNER 
CAL SUBS 
SPOHL 
PSHX HL 
LDHL SBSE 
DADX BC 
OR I 1 
RET 


/DOUBLE BYTE ARRAY ? 

/GET THE SUBSCRIPT -> BC 
/INDES -> HL, TXA ON STK 


/SET ZERO FLAG. THIS IS DOUBLE BYTE 

/SINGLE BYTE ARRAY ? 

/SUBSCRIPT -> BC 

/TXA ON STK, INDES -> HL 

/RESET ZERO FLAG, TO SAY SINGLE BYTE 


/SUBS GETS THE SUBSCRIPT FOR A STRING OR ARRAY -> BC. 
/MUNCHES ALL REGS EXCEPT DE. STACK USAGE: >= 14 BYTES. 


005 272 325 
005 273 317 133 
005 275 277 005 
005 277 337 
003 300 102 
005 301 113 
005 302 321 
005 303 317 133 
005 305 307 005 
005 307 311 


SUBS, PSHX DE 
TST "C 
IFNOT SUB0 
SUB0, EXPR 
LB D 
LC E 
POPX DE 
TST " ] 
IFNOT SUB1 
SUB-1, RET 


/SAVE DE 
/IGNORE "[" 

/GET THE SUBSCRIPT -> DE 
/SUBSCRIPT -> BC 

/RESTORE DE 
/IGNORE “I" 


P05 

005 

005 

005 

005 


106 
1 11 
1 12 


114 

115 


312 

361 


311 

000 


041 000 
010 


000 


/DEVO STARTS AT RESTART 4. 

/DEVO, PSHX PSU 

/ INP 1 

/ NDI 2 

DEVP, JTZ DEVQ /NOT READY 

POPX PSW 
TODP, OUT 10 

RET 

DSD 0 /PATCH ROOM 


/TTYI GETS A CHR FROM THE INPUT DEVICE. CAN MUNCH A AND 
/FLAGS. STACK USAGE: 4 BYTES. 


005 117 
005 122 
005 125 
005 127 
005 131 
005 132 


134 005 
117 005 
000 


000 



346 

311 

000 


TTYI, 

TIA, 

TIDP, 


CAL TRDY 
JTZ TTYI 
INP 0 
NDI 177 
RET 
DSD 0 


/IS INFUT READY ? 
/NOPE - KEEP TRYING 


/LEAVE ROOM FOR PATCHES 


005 134 333 00! 
005 136 346 001 
005 140 311 
005 141 000 000 


/TEST TERMINAL INPUT READY BIT STATUS. MUNCHES A & FLAGS. 
/STACK USAGE: 2 BYTES. 


TRDY, INP 1 

TIRM, NDI 1 

RET 
DSD 0 


/GET INPUT STATUS 

/MASK TO INPUT READY BIT 

/FZ MEANS READY, TZ MEANS NOT READY 

/ROOM FOR PATCHES 


003 143 257 
805 144 167 
005 145 043 
005 146 167 
005 147 043 
005 150 167 
005 151 841 


CRLE, 


263 0O4 


XR A /A CONTINUATION OF GETL 

LM A /PUTS EOB/EOL MARK IN LINE 

I NX HL 
LM A 
I NX HL 
LM A 

LXI HL LINB-1 


/CRLF SEND A CARRIAGE RETURN AND LINE FEED TO TERMINAL. 
/MUNCHES A £ FLAGS. STACK USAGE: S BYTES. 


005 310 317 
005 312 322 
005 314 353 
005 315 042 
005 320 341 
005 321 311 
005 322 31? 
005 324 341 
005 326 353 
005 327 042 
005 332 341 
005 333 311 


047 BSES, 

005 

334 005 

042 BSED, 

001 

336 005 


TST "' 
IFNOT BSED 
DEOHL 
STHL SBSE 
POPX HL 
RET 
TST "" 
IFNOT LETS 
DEOHL 
STHL DBSE 
POPX HL 
RET 


/SET SINGLE BYTE ARRAY BASE ? 

/NEU BASE -> HL 
/SAVE NEU BASE 
/RESTORE EOS TXA 

/SET DOUBLE BYTE ARRAY BASE ? 

/MUST BE A LET 

/NEU BASE -> HL 

/SAVE NEU BASE 

/RESTORE EOS TXA 


005 334 010 370 
005 336 010 370 


SBSE, DSD '370 10 /ADR OF SINGLE BYTE ARRAY BASE ADR 

DBSE, DSD '370 10 /ADR OF DOUBLE BYTE ARRAY BASE ADR 


340 005 E0P2=. 


/THIS UILL BE BOTX-1 IF STRINGS AND 
/TAPE / SAVE ARE DELETED. 


005 340 31? 
005 342 156 
005 344 315 
005 34? 353 
005 350 341 
005 351 032 
005 352 26? 
005 353 312 
005 356 347 
005 35? 023 
005 360 383 


051 PRI), 

001 

256 005 

STRA, 

165 001 

351 005 


TST "> 
IFNOT PEXP 
CAL SSUB 
DEOHL 
POPX HL 
LDAX DE 
OR A 

JTZ PEXQ 
DEVO 
I NX DE 
JMP STRA 


/PRINT STRING ARRAY ? 

/GET STRING TXA -> HL, TXA ON STK 

/STRING TXA -> DE 

/TXA BACK -> HL 

/GET A STRING CHR 

/EOS YET ? 

/YUP - DO MORE OF ? STMT 
/NOPE - PRINT IT 
/BUMP STRING TXA 
/PRINT SOME MORE 


005 363 317 051 
005 365 172 001 
005 367 315 256 
005 372 357 
005 373 055 

0O5 375 315 021 
006 000 341 
006 001 311 


NPRT, 


005 


002 


TST ") /STRING INPUT ? 

IFNOT NPRU 

CAL SSUB /GET STRING DESTINATION TXA -> HL 

MSGP /PRINT PROMPT “- ■ 

DSS " +200 


CAL GETL+3 /USE GETL TO INPUT STRING 

POPX HL /GET TXA BACK, (PUSHED BY SSUB) 

RET 


065 154 35? CRLF, 

805 155 015 

005 156 212 

Nov./Dec., 1976 


MSGP 

DSS 


15, 212 


002 006 E0P3=. 


/THIS UILL BOTX-1 IF SAVE / TAPE 
/IS DELETED 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 29 


326 


/SAV? PUNCHES TAPES OF THE CONTENTS OF THE TEXT 
/BUFFER. RETURNS TO COMMAND MODE WHEN DONE. 

/COMMAND IS FOLLOWED BY A SINGLE CHR PROGRAM NAME SO 
/MORE THAN ONE PGM CAN BE PUT ON A TAPE. IF CR IS 
/GIVEN FOR NAME, PUNCH NAME AS A NULL. 


/TAPE FORMAT: 
/ 

/ 232 
/ XXX 
/ NNN 


START CHR 

NAME OF PROGRAM, 000 IF NULL NAME 
DATA BYTES BETWEEN BOTX AND EOTX 


/ 000 

/ 000 EOT IS MARKED BY THREE NULLS 


006 002 317 123 

006 004 040 006 

006 006 076 232 

006 010 313 126 006 

006 013 176 

006 014 313 126 006 

006 017 032 260 004 

006 022 333 

006 023 032 236 004 

006 026 176 

006 027 313 126 006 

006 032 367 

006 033 043 

006 034 302 026 006 

006 037 307 


SAV?, 


SAVA, 


TST "S 
IFNOT TAP? 
LAI 232 
CAL PNOU 
LA M 

CAL PNOU 
LDHL EOTX 
DEOHL 
LDHL BOTX 
LA M 

CAL PNOU 
CMPR 
I NX HL 
JFZ SAVA 
RST 


/SAVE COMMAND ? 

/START OF TAPE CHR 
/SEND IT 

/PROGRAM NAME CHR -> A 
/SEND IT 

/STOP ADDRESS -> DE 

/START OF TEXT ADR -> HL 
/CHR OF PROGRAM -> A 
/SEND IT 
/DONE YET ? 

/BUMP TXA 

/NOPE - KEEP SAVING 
/ALL DONE, RE-ENTER 


/TAP? READS A TAPE FROM THE READER INTO THE TEXT 
/BUFFER. RETURNS TO COMMAND MODE WHEN DONE. COMMAND IS 
/FOLLOWED BY A SINGLE CHR PROGRAM NAME, LIKE SAVE. 

/IT WILL SEARCH THE TAPE FOR A START CHR FOLLOWED BY THE 
/NAME GIVEN. IF CR IS GIVEN FOR A NAME, TAKE FIRST ONE 
/FOUND. IF THE NAMED PROGRAM CAN'T BE FOUND, THE TEXT 
/BUFFER IS LEFT ALONE. WHEN READING STARTS, THE NAME 
/BYTE FROM TAPE IS ECHOED SO YOU'LL KNOW IT IS LOADING. 


006 040 317 
006 042 137 
006 044 313 
006 047 376 
006 031 302 
006 034 313 
006 037 276 
006 060 312 
006 063 107 
006 064 176 
006 063 267 
006 066 170 
006 067 302 
006 072 347 
006 073 032 
006 076 016 
006 100 313 
006 103 167 
006 104 313 
006 107 176 
006 110 043 
006 111 267 
006 112 302 
006 113 013 
006 116 302 
006 121 033 
006 122 042 
006 123 307 


124 TAP?, 
000 

142 006 TAPA, 
232 

044 006 
142 006 

072 006 


044 006 

TAPF, 

236 004 
003 TAPB, 
142 006 TAPC, 

367 001 


076 006 
100 006 
260 004 


TST "T 
IFNOT SNER 
CAL CHIN 
CPI 232 
JFZ TAPA 
CAL CHIN 
CP M 

JTZ TAPF 
LB A 
LA M 
OR A 
LA B 

JFZ TAPA 
DEVO 

LDHL BOTX 
LCI 3 
CAL CHIN 
LM A 

CAL EOM? 

LA M 
I NX HL 
OR A 

JFZ TAPB 
DCC 

JFZ TAPC 
DCX HL 
STHL EOTX 
RST 


/READ A TAPE COMMAND ? 

/GET A CHR 
/START CHR ? 

/NOPE - KEEP LOOKING 
/YUP - GET NAME CHR 
/THE ONE WE WANT ? 

/YUP - START READING 
/SAVE NAME IN B 

/DID HE GIVE DON'T CARE NAME ? 

/NAME FROM TAPE -> A 
/NOPE - DON'T READ THIS ONE IN 
/SEND NAME OF PGM BEING READ 
/WHERE IT WILL GO 
/INITIALIZE EOT NULL COUNTER 
/GET A CHR 
/PUT IN RAM 
/PGM TOO BIG ? 

/GET CHR BACK 

/BUMP 

/A NULL ? 

/NOPE - KEEP READING 
/DECR EOT NULL COUNT 
/NOT THIRD ONE - KEEP READING 
/STORE NEW EOTX 

/BACK TO COMMAND MODE 


006 

006 

006 

006 

006 

006 

006 


/PNOU IS THE PUNCH DRIVER USED BY SAVE. ENTER WITH CHR TO 
/SEND IN A REG. STACK USAGE-. 2 BYTES. 


126 363 

127 333 003 
131 346 002 

133 312 127 006 

136 361 

137 323 016 
141 311 


PNOU, PSHX PSW 

PNOV, INP 3 

CORN, NDI 2 

COA, JTZ PNOV 

POPX PSW 
CODP, OUT 16 

RET 


/SAVE CHR TO SEND 
/GET PUNCH STATUS 
/READY YET ? 

/IT'S READY, SEND THE CHR 


/CHIN IS THE READER INPUT ROUTINE CALLED BY THE SAVE 
/COMMAND. IT MUNCHES A & FLAGS. STACK USAGE. 2 BYTES. 


006 142 333 003 CHIN, 

006 144 346 001 CIRM, 

006 146 312 142 006 CIA, 

006 131 333 004 CIDP, 

006 133 311 

/ 

000 007 

134 006 EOP=. 


INP 5 
NDI 1 
JTZ CHIN 
INP 4 
RET 


/GET READER STATUS 
/READY YET ? 

/NOPE - WAIT FOR IT 

/GOT A READY, GET THE INPUT 


PGE='7 


/PAGE FOR BINARY LOADER 
/THIS IS BOTX-1 IF TAPE / SAVE ARE KEPT 


/INIT IS THE INITIALIZATION ROUTINE. IT IS LOCATED IN THE 
/MIDDLE OF THE CASUAL PROGRAM STORAGE AREA. IT IS ENTERED 
/WHEN CASUAL IS EXECUTED AFTER LOADING. IT POKES OUT 
/THE JUMP TO IT. RESPOND TO "MEM SIZ ?" WITH THE 
/DECIMAL NUMBER OF THE HIGHEST ADDRESS TO BE USED BY CASUAL 
/OR HIT CARRIAGE RETURN TO USE ALL RAM AVAILABLE. 


006 

006 

006 

006 

006 

006 

006 

006 

006 

006 

006 

006 

006 

006 

006 

006 

006 

006 

006 

006 

006 

006 

006 

006 

006 


134 061 
137 357 

160 013 

161 012 

162 113 

163 103 

164 113 

165 040 

166 123 

167 111 

170 132 

171 277 

172 313 

173 327 
176 302 
201 041 
204 176 
203 037 

206 167 

207 276 

210 037 

211 167 

212 302 

213 043 
216 303 


000 010 


016 002 

221 006 
247 006 


247 006 
204 006 


INIT, 


INIS, 


LXI SP PGE +'l /SETUP TEMPORARY STACK POINTER 
MSGP /SEND "MEM SIZ? " MESSAGE 

DSS 15, 12, "M, "E, "M, n , “S, "I, "Z, "? + 200 


CAL GETL 

FETCH 

JFZ NUM 

LXI HL MMEM 

LA M 

CMA 

LM A 

CP M 

CMA 

LM A 

JFZ INIU 
I NX HL 
JMP INIS 


/GET HIS RESPONSE 
/FETCH FIRST CHR, A RETURN ? 
/NOPE - GET A NUMBER 
/START OF RAM SEARCH 
/GET A CHR FROM MEMORY 

/WRITE IT BACK COMPLIMENTED 
/DID IT GO ? 

/RESTORE MEMORY 

/NOPE - THIS IS END OF RAM 
/YUP - KEEP TRYING 


006 221 313 
006 224 353 
006 223 021 
006 230 367 
006 231 332 
006 234 053 
006 235 176 
006 236 057 
006 237 167 
006 240 276 
006 241 057 
006 242 167 
006 243 043 
006 244 302 


203 004 NUM, 
247 006 
134 006 


154 006 


CAL DEINT 
DE<>HL 
LXI DE MMEM 
CMPR 

JTC INIT 
DCX HL 
LA M 
CMA 
LM A 
CP M 
CMA 
LM A 
I NX HL 
JFZ INIT 


/GET NUMERIC ARGUMENT 
/REQUESTED ADDRESS -> HL 
/MINIMUM POSSIBLE ADR -> DE 
/REQUEST < MINIMUM ? 

/YUP - GIVE THE CHUMP ANOTHER CHANCE 
/FIRST LOC FOR STACK 
/GET CONTENTS 

/WRITE IT BACK COMPLIMENTED 
/DID IT GO ? 

/RESTORE CONTENTS 

/NOPE - NO RAM WHERE HE SAYS 


247 006 MMEM=. 


/LOWEST LOC FOR STACK RESET 


006 247 042 
006 252 041 
006 255 315 
006 266 123 
006 261 101 
006 262 126 
006 263 105 
006 264 057 
006 263 124 
006 266 101 
006 267 120 
006 270 105 
006 271 277 
006 272 315 
006 275 041 
006 300 042 
006 303 041 
006 306 315 
006 311 123 
006 312 124 
006 313 122 
006 314 040 
006 313 111 
006 316 057 
006 317 117 
006 320 277 
006 321 315 
006 324 041 
006 327 042 
006 332 041 
O06 335 042 
006 340 041 
006 343 315 
006 346 101 
006 347 122 
006 350 122 
006 351 101 
006 352 131 
006 353 123 
006 354 277 
006 355 315 
006 360 041 
006 363 042 
006 366 042 
006 371 303 

000 

007 000 303 


377 004 INIU. 
154 006 
066 007 


054 007 
137 000 
175 005 
002 006 
066 007 


054 007 
156 001 
146 001 
172 001 
067 001 
340 005 
066 007 


054 007 
137 000 
206 005 
213 005 
003 007 

007 

101 007 


STHL SPRS /YUP - MAKE IT THE STACK RESET ADR 

LXI HL EOP /BOTX IF HE SAYS "YES" 

CAL WANT /ASK "WANT SAVE / TAPE?" 

DSS "S, "A, "V, "E, "/, "T, "A, "P, "E, "?+2O0 


CAL YSNO 
LXI HL SNER 
STHL OSPK 
LXI HL E0P3 
CAL WANT 
DSS "S, "T, "R, " 


/GET HIS ANSWER 

/HE SAID NO - POKE OUT TEST 

/FOR SAVE / TAPE 

/BOTX IF HE SAYS YES -> HL 

/ASK "WANT STRING 1/0“ 


, “ I , "/, “ 0 , "?+200 


CAL YSNO 
LXI HL PEXP 
STHL PXPK 
LXI HL NPRU 
STHL SIPK 
LXI HL E0P2 
CAL WANT 
DSS "A, "R, "R 


/GET HIS ANSWER 

/HE SAID NO, POKE GUT STRING PRINT 

/POKE OUT STRING INPUT TEST 

/BOTX IF HE SAYS YES -> HL 
/ASK "WANT ARRAYS? " 

"A, "Y, "S, "?+200 


CAL YSNO 
LXI HL SNER 
STHL LKP1+1 
STHL LKP2+1 
JMP ICON 


/GET HIS ANSWER 

/HE SAID NO. POKE OUT ARRAY LOOKUP 
/MAKE IT A SYNTAX ERROR 

/CONTNUED AT ICON 


* PGE /PUT IN JUMP TO BINL FOR BOOT 

JMP BINL 


007 003 
007 006 
007 011 
007 014 
007 015 
007 016 
007 017 
007 022 
007 023 
007 024 
007 025 
007 026 
007 027 
007 032 
007 035 
007 040 
007 041 
007 042 
007 043 
007 044 
007 045 
007 046 
007 047 
007 050 
007 051 


041 341 001 ICON, 

042 331 001 

041 232 005 

257 INIV, 

167 

043 

042 256 004 
167 


167 

043 

167 

042 260 004 

041 204 000 

042 001 000 

357 

013 

012 

103 

101 

123 

123 

101 

314 

303 302 007 


LXI HL LETS 
STHL DFPK 
LXI HL EOP1 
XR A 
LM A 
I NX HL 
STHL BOTX 
LM A 
I NX HL 
LM A 
INX HL 
LM A 

STHL EOTX 
LXI HL ENTR 
STHL 1 
MSGP 

DSS 15, 12, "C, 


/MAKE ARRAY ASSIGNMENT ILLEGAL 

/THIS IS BOTX -> HL 
/DO A "NEW" COMMAND 
/BOTX WILL BE IN HL 
/NOW 

/SAVE IT 
/DO A NEW 


/POKE OUT JMP TO INIT 
/MAKE IT A JUMP TO ENTR 
/PRINT SIGN ON MESSAGE 
"A. "S, "U, “A, "L+200 


JMP ICN2 /CONTINUED AT ICN2 


/ROUTINE TO GET "Y” OR "N" ANSWER FROM TERMINAL. 
/TZ MEANS "Y", FZ MEANS "N". 


007 054 315 117 005 YSNO, 
007 057 347 


007 060 376 
007 062 312 
007 065 311 
007 066 357 
007 067 015 
007 070 012 
007 071 127 
007 072 101 
007 073 116 
007 074 124 
007 075 240 
,007 076 303 


131 

014 007 


WANT, 


050 000 


CAL TTYI 
DEVO 
CPI "Y 
JTZ INIV 
RET 
MSGP 

DSS 15, 12, "W, “A, 


/GET HIS CHR 
/ECHO IT 
/YES ? 


/SR TO PRINT 
"N, "T, " +200 


"WANT" 


JMP MSG 


101 007 


PGE 101 /START ADR OF BINARY LOADER 


007 

007 

007 

007 

007 

007 


101 072 
104 062 
107 052 

112 174 

113 306 
115 147 


007 

271 

011 

002 


/THIS SECTION POKES THE BINARY LOADER TO THE SAME I/O 
/CONFIGURATION USED BY THE BOOTSTRAP LOADER AT ZERO. 

/THIS IS EXECUTED ONLY ONCE, UPON ENTRY FROM THE 
/BOOTSTRAP. AFTER THE FIRST TIME EXECUTED, THE JUMP 
/AT WORD 0 OF THE BINARY LOADER PAGE IS POKED TO JUMP 
/AROUND THE I/O POKE. 

/ 

000 BINL, LDA 7 /INPUT STATUS PORT 4 -> A 

007 STA RDIN+1 /POKE INPUT ROUTINE 

000 LDHL 11 /STATUS MASK ->L, RFZ OR RTZ -> HL 

LA H /CHANGE RTZ OR RFZ INTO JFZ OR JTZ 

ADI 2 
LH A 


Page 30 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Nov./Dec., 197 


007 116 042 273 007 
007 121 072 014 000 
007 124 062 300 007 
007 127 041 135 007 
007 132 042 001 007 
007 135 061 000 010 REAC, 
007 140 016 000 READ, 

007 142 315 270 007 
007 145 376 277 
007 147 312 254 007 
007 152 376 377 
007 154 302 140 007 
007 157 315 243 007 
007 162 315 270 007 
007 165 267 
007 166 312 211 007 
007 171 137 

007 172 315 270 007 DATA, 

007 175 167 

007 176 276 

007 177 302 223 007 

007 202 201 

007 203 117 

007 204 043 

007 205 035 

007 206 302 172 007 

007 211 315 270 007 CKSM, 

007 214 271 

007 215 312 140 007 

007 220 076 103 

007 222 001 

007 223 076 115 MERR, 
007 225 323 001 ERR, 

007 227 323 010 
007 231 323 021 
007 233 323 023 
007 235 062 377 007 
007 240 303 225 007 


STHL P0K1+1 

LDA 14 

STA P0K2+1 

LXI HL REAC 

STHL PGE 1 

LXI SP PGE+0256 

LCI 0 

CAL RDIN 

CPI 277 

JTZ GOTO 

CPI 377 

JFZ READ 

CAL ADIN 

CAL RDIN 

OR A 

JTZ CKSM 
LE A 

CAL RDIN 
LM A 
CP M 

JFZ MERR 
AD C 
LC A . 

INX HL 
DCE 

JFZ DATA 
CAL RDIN 
CP C 

JTZ READ 
LAI "C 
DSS 1 
LAI "M 
OUT 1 
OUT 10 
OUT 21 
OUT 23 
STA PGE 377 
JMP ERR 


/POKE THE INPUT ROUTINE 
•/INPUT DATA PORT # -> A 
/POKE THE INPUT ROUTINE 
/POKE OUT THE JUMP TO BINL 
/MAKE IT A JUMP TO READ-3 

/CLEAR CHECKSUM 
/GET A CHR FROM TAPE 
/IS IT AN EOT CHR ? 

/YUP - LOOK FOR START ADDRESS 
/NOPE - IS IT A START OF BLOCK ? 
/NOPE - MUST BE LEADER, KEEP LOOKING 
/GET THE LOAD ADDRESS -> HL 
/BLOCK LENGTH -> A 
/BLOCK LENGTH = 0 ? 

/YUP - NO DATA, VERIFY CHECKSUM 
/MOVE BLOCK LENGTH -> E 
/GET A DATA BYTE FROM TAPE 
/PUT IT INTO MEMORY 
/DID IT URITE PROPERLY ? 

/NOPE - GIVE A CAN'T URITE ERROR 
/UPDATE CHECKSUM -> A 
/UPDATED CHECKSUM -> C 
/BUMP THE LOAD ADDRESS 
/DONE UITH THIS BLOCK YET ? 

/NOPE - GET MORE DATA BYTES 
/DONE UITH BLOCK, GET CHECKSUM -> A 
/DOES IT MATCH CALCULATED VALUE ? 
/YUP - LOOK FOR ANOTHER BLOCK 
/NOPE - GIVE CHECKSUM ERROR 
/SETUP A BOGUS LXI BC INSTRUCTION 


/LOOP FOREVER 


/THIS SUBROUTINE GETS TUO BYTES FROM TAPE INTO HL. 


007 243 315 270 007 ADIN, CAL RDIN 

007 246 157 LL A 

007 247 315 270 007 CAL RDIN 

007 252 147 LH A 

007 253 311 RET 


/GET FIRST BYTE 
/MOVE IT INTO -> L 
/GET SECOND BYTE 
/MOVE IT INTO -> H 


/COMES HERE UHEN EOT CHR IS FOUND. IF A 100 BYTE FOLLOUS 
/THE EOT, THE NEXT TUO BYTES ARE TAKEN TO BE A START ADDRESS 
/CONTROL IS TRANSFERRED TO THIS ADDRESS. IF NO 100 BYTE IS 
/FOUND, UE ENTER AN INFINITE LOOP. 


007 254 315 270 007 GOTO, 

007 257 376 100 

007 261 302 261 007 FORE, 

007 264 315 243 007 

007 267 351 


CAL RDIN 
CPI 100 
JFZ FORE 
CAL ADIN 
PC< HL 


/GET A CHR FROM TAPE 
/IS IT A 100 (OCTAL) 

/NOPE - JUMP HERE FOREVER 
/START ADDRESS -> HL 
/INDIRECT JUMP TO START ADDRESS 


/THIS SUBROUTINE FETCHES A CHR FROM THE INPUT DEVICE. 
/THE CHR IS RETURNED IN THE A REG. MUNCHES A & PSU. 


007 270 333 005 RDIN, 

007 272 346 001 POK1, 

007 274 312 270 007 

007 277 333 004 P0K2, 

007 301 311 

302 007 LLOC=. 


INP 5 /INPU' 
NDI 1 /MASK 
JTZ RDIN /JUMP 
INP 4 /IT'S 
RET 

/SAVE 


' READY STATUS -> A 
OFF UNNECESSARY BITS 
IF NOT READY, KEEP TRYING 
READY - GET THE DATA -> A 

ADDRESS OF LAST BYTE USED 


007 

007 

007 

007 

007 

007 

007 

007 

007 

007 

007 

007 

007 

007 

007 

007 

007 

007 

007 

007 

007 

007 

007 

007 

007 

007 

007 

007 

007 

007 

007 


302 357 ICN2, 

303 040 

304 126 
303 040 

306 056 

307 061 

310 066 

311 015 

312 212 

313 052 377 004 

316 353 

317 052 256 004 

322 173 

323 225 

324 157 

325 172 

326 234 

327 147 

330 315 066 004 

333 357 

334 102 

335 131 

336 124 

337 105 

340 123 

341 040 

342 106 

343 122 

344 105 

345 305 

346 307 


MSGP /CONTINUE SIGN ON MESSAGE 

DSS “ , "V, " , , "1, "6, 15, 212 


LDHL SPRS 
DEOHL 
LDHL BOTX 
LA E 
SU L 
LL A 
LA D 
SB H 
LH A 

CAL NOSP 
MSGP 

DSS “B, "Y, 


/LAST LOC -> DE 
/FIRST -> HL 
/DIFFERENCE -> HL 


/PRINT DIFFERENCE 
/PRINT "BYTES FREE" 
"E, "S, ” , "F, "R, "E, "E+200 


RST /RESET STACK AND ENTER 


/THIS IS THE ROUTINE USED TO PUNCH MEMORY IN BOOTSTRAP FMT. 


011 
011 
011 
011 
01 1 
011 
011 
011 
011 
011 
011 
011 
011 
011 


003 

005 

007 

812 

013 

016 

021 

022 

025 

026 

031 

032 


000 011 
061 000 012 
006 377 
076 302 
315 126 006 
005 

302 005 011 
041 301 007 
176 

315 126 006 
055 

302 021 011 
176 

315 126 006 

303 000 374 


♦PGE+0512 


LXI SP .+0256 
LBI 377 
LAI LLOC 
CAL PNOU 
DCB 

JFZ MAKS 
LXI HL LLOC-1 
LA M 

CAL PNOU 
DCL 

JFZ MAKT 
LA M 

CAL PNOU 
JMF '374 


% 


/SEND 255 LEADER CHRS 
/LEADER CHR -> A 
/SEND A CHR OF LEADER 
/DONE UITH LEADER YET ? 
/NOPE - SEND SOME MORE 
/HIGHEST ADR TO SENT -> HL 
/GET A CHR TO PUNCH -> A 
/PUNCH IT 

/PUNCHED IT ALL YET ? 

/NOPE - KEEP SENDING 
/SEND LAST CHR 

/ALL DONE , BACK TO MONITOR 


/THIS SECTION OF CODE IS THE I/O POKE SECTION. 

/IT IS READ IN BY THE BINARY LOADER AFTER THE I/O 
/SECTION OF CASUAL. THIS ROUTINE READS THE FRONT PANEL 
/SENSE SUITHCES AND POKES THE I/O FOR SOME MITS I/O 
/BOARDS. THE SUITCHES MEAN THIS UHEN THEY ARE UP: 


/A15 MITS ACR FOR SAVE/TAPE COMMANDS 

/A14 MITS SIOA, B, C REV 0 FOR TERMINAL 

/A13 MITS 88-PIO FOR TERMINAL 

/A12 RESERVED FOR MITS 4PI0 (NOT FUNCTIONAL NOU) 

/All RESERVED FOR MITS 2SI0 (NOT FUNCTIONAL NOU) 

/A 10 RESERVED FOR MITS 2SI0 (NOT FUNCTIONAL NOU) 

/A9 CONTROL LOGIC STANDARD I/O 

/A8 USE CUSTOM I/O FROM LOCATION 50 

/NONE MITS SIOA, B, C NOT REV 0 FOR TERMINAL 

/ 

/THIS LOADS AT LOCATION 100, AND UHEN IT IS DONE POKING 
/IT GOES BACK TO THE BINARY LOADER UHICH UILL THEN READ 
/CASUAL IN ON TOP OF THIS. 


100 000 

000 100 041 000 007 IOPA, 

000 103 345 

000 104 333 377 

000 106 346 002 

000 110 300 

000 111 333 377 

000 113 267 

000 114 362 160 000 

000 117 076 006 

000 121 062 143 006 

000 124 062 130 006 

000 127 074 

000 130 062 152 006 

000 133 062 140 006 

000 136 076 302 

000 140 062 146 006 

000 143 062 133 006 

000 146 076 001 

000 150 062 145 006 

000 153 076 200 

000 155 062 132 006 

000 160 333 377 IOPB, 

000 162 346 100 

000 164 312 235 000 

000 167 257 

000 170 062 135 005 

000 173 062 042 000 

000 176 074 

000 177 062 126 005 

000 202 076 040 

000 204 062 137 005 

000 207 062 113 005 

000 212 076 002 

000 214 062 044 000 

000 217 076 312 

000 221 062 122 005 

000 224 062 106 005 

000 227 076 310 

000 231 062 163 005 

000 234 311 

000 235 333 377 IOPC, 

000 237 346 040 

000 241 312 307 000 

000 244 257 

000 245 062 135 005 

000 250 062 042 000 

000 253 074 

000 254 062 126 005 

000 257 062 044 000 

000 262 062 113 005 

000 265 074 

000 266 062 137 005 

000 271 076 312 

000 273 062 122 005 

000 276 062 106 005 

000 301 076 310 

000 303 062 163 005 

000 306 311 

000 307 333 377 IOPD, 

000 311 346 177 
000 313 302 362 000 
000 316 257 
000 317 062 135 005 
000 322 062 042 000 
000 325 074 
000 326 062 137 005 
000 331 062 126 005 
000 334 062 113 005 
000 337 076 200 
000 341 062 044 000 
000 344 076 300 
000 346 062 163 005 
000 351 076 302 
000 353 062 122 005 
000 356 062 106 005 
000 361 311 

000 362 333 377 IOPE, 

000 364 346 001 

000 366 310 

000 367 041 050 000 

000 372 176 

000 373 062 135 005 

000 376 043 

000 377 176 

001 000 062 137 005 

001 003 043 

001 004 176 

001 005 062 122 005 

001 010 075 

001 011 075 

001 012 062 163 005 

001 015 043 

001 016 176 

001 017 062 126 005 

001 022 043 

001 023 176 

001 024 062 042 000 

001 027 043 

001 030 176 

001 031 062 044 000 

001 034 043 

001 035 176 

001 036 062 106 005 

001 041 043 

001 042 176 

001 043 062 113 005 

001 046 043 

001 047 176 

001 050 062 143 006 

001 053 043 


*100 

LXI HL PGE 
PSHX HL 
INP 377 
NDI 2 
RFZ 

INP 377 
OR A 

JFS IOPB 
LAI 6 
STA CHIN+1 
STA PNOV+1 
INA 

STA CIDP+1 
STA CODP+1 
LAI 302 
STA CIA 
STA COA 
LAI 1 

STA CIRM+1 
LAI 200 
STA CORM+1 
INP 377 
NDI 100 
JTZ IOPC 
XR A 

STA TRDY+1 
STA DEVQ+1 
INA 

STA TIDP+1 
LAI 40 
STA TIRM+1 
STA TODP+1 
LAI 2 
STA TORM+1 
LAI 312 
STA TIA 
STA DEVP 
LAI 310 
STA TIB 
RET 

INP 377 
NDI 40 
JTZ IOPD 
XR A 

STA TRDY+1 
STA DEVQ+1 
INA 

STA TIDP+1 
STA TORM+1 
SfA TODP+1 
INA 

STA TIRM+1 
LAI 312 
STA TIA 
STA DEVP 
LAI 310 
STA TIB 
RET 

INP 377 
NDI 177 
JFZ IOPE 
XR A 

STA TRDY+1 
STA DEVQ+1 
INA 

STA TIRM+1 
STA TIDP+1 
STA TODP+1 
LAI 200 
STA TORM+1 
LAI 300 
STA TIB 
LAI 302 
STA TIA 
STA DEVP 
RET 

INP 377 
NDI 1 
RTZ 

LXI HL CUST 
LA M 

STA TRDY+1 
INX HL 
LA M 

STA TIRM+1 
INX HL 
LA M 
STA TIA 
DCA 
DCA 

STA TIB 
INX HL 
LA M 

STA TIDP+1 
INX HL 
LA M 

STA DEVQ+1 
INX HL 
LA M 

STA TORM+1 
INX HL 
LA M 

STA DEVP 
INX HL 
LA M 

STA TODP+1 
INX HL 
LA M 

STA CHIN+1 
INX HL 


/PUSH ADR OF BINARY LOADER 


/TEST A9 

/HE UANTS CONTROL LOGIC - ALL DONE 
/TEST A15 

/DOESN'T HAVE AN ACR 


/TEST A14 

/DOESN'T HAVE SIOA, B, OR C 


/TEST A13 

/DOESN'T HAVE AN 88-PIO 


/ALL LOU ? (A15 DON'T CARE) 
/DOESN'T HAVE SIOA, B, OR C NOT 


/TEST AS 

/DOESN'T UANT CUSTOM 
/START OF CUSTOM SAVE AREA 


Nov./Dec., 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 31 


328 


001 054 
001 055 
001 060 
001 061 
001 062 
001 065 
001 066 
001 06? 
001 072 
001 073 
001 074 
001 077 
001 100 
001 101 
001 104 
001 105 
001 106 
001 111 
001 112 
001 113 
001 116 
001 121 
001 124 


176 

062 145 006 

043 

176 

062 146 006 

043 

176 

062 152 006 

043 

176 

062 130 006 

043 

176 

062 132 006 

043 

176 

062 133 006 

043 

176 

062 140 006 
052 070 000 
042 200 005 
311 


LA M 

STA CIRM+1 
I NX HL 
LA M 
STA CIA 
I NX HL 
LA II 

STA CIDF+1 
I NX HL 
LA M 

STA PNOV+1 
I NX HL 
LA M 

STA CORM+1 
I NX HL 
LA II 
STA COA 
I NX HL 
LA tl 

STA CODP+1 
LDHL OSLO 
STHL OSPK+3 
RET 


ACTIVE LOW by Mark Space 


Some signals on a microcomputer’s bus are normally low and 
go high when they are meaningful. These are called “active high”. 
Some lines are just the opposite and they are called “active low”. 

The commonly accepted notation for an active lo w line is to 
put a bar “ over the line’s name, for example: STB. Now, 
when this is read you say “not strobe” or sometimes “bar strobe.” 

With this in mind then we thought that the following active 
low signals might be useful additions to a microcomputer’s bus 
structure. 


000 007 
050 000 
175 005 
070 000 
134 005 
136 005 
122 005 


163 


005 


125 005 
041 000 
043 000 
106 005 
112 005 
142 006 
144 006 
146 006 
151 006 
12? 006 
131 006 
133 006 
137 006 


/FUN¬ 

CTION 


CONTROL SIOA 
LOGIC 


SIOA 

REVO 


-PIO 4PI0 


MNEU- 

MONIC 


,'TIRP 

/TIRM 

/TIA 

/TI DP 

/TORP 

/TOA 

/TODP 

/CIRP 

/Cl RM 

/CIA 

/CIDP 

/CORP 

/CORM 

/COA 

/CODP 


200 

302 


TRDY + 
TIRM+ 
TIA 
-2 Tl 
TIDP+1 
DEVQ+1 
BE VP 
TODP+1 
CHIN+1 
CIRM+1 
CIA 
CIDP+1 
PNO 1 
CORM+1 


/FUNCTION KEY: 

/FIRST LETTER: 

/T= TERMINAL 

/C= CASSETTE 

/SECOND LETTER: 

/I= INPUT 

/0= OUTPUT 

/LAST TWO LETTERS: 

/RP= READY PORT 

/RM= READY MASK 

/A= ACITVE, HIGH OR LOU 

/DP= DATA PORT 


/IF YOU ARE USING AN I/O BOARD NOT SUPPORTED BY CASUAL, 

/IT IS BEST TO USE THE CUSTOM I/O PROCEDURE. AFTER LOADINC 
/THE BOOTSTRAP, LOAD THE CUSTOM I/O TABLE <SEE BELQU>. 

/SET SUITCH AS UP, THE REST DOUN, AND EXECUTE THE BOOT 
/AS USUAL. 


/LOCATION 

/050 

/051 

/052 

/053 

/054 

/055 

/056 

/057 

/06O 

/061 

/062 

/063 

/064 

/065 

/066 

/067 

/070 

/071 

/ 

PGE='7 
CUST=50 
OSPK= 
OSLO=70 
TRDY=' 
TIRM=' 
TIA='5 122 
TIB='5 163 
TIDP='5 125 
DEVQ='0 41 
TORM='0 43 
DEVP='5 106 
TODP='5 112 
CHIN='6 142 
CIRM='6 144 
CIA='6 146 
CIDP='6 151 
PNOV='6 127 
CORM='6 131 
COA='6 133 
CODP='6 137 


CONTENTS 

TIRF 

TIRM 

TIA 

TIDP 

TORP 

TORM 

TOA 

TODP 

CIRP 

CIRM 

CIA 

CIDP 

CORP 

CORM 

COA 

CODF 

OS ADDRESS LOU 
OS ADDRESS HIGH 


175 


134 

136 


A thought, compliments of David G.: If we put an auto¬ 
matic disc ejector on a disc drive, then perhaps we could put 
those old Wurlitzer boxes to some interesting use. 


This signal is present during the hours of 2:00 and 
9:00 a.m. 

This line goes low when you leave the house—useful 

._ in intelligent security systems. 

NOW Present when interrupts are disabled. 

IN This line goes low when the system is out for lunch. 

NOT This form of interrupt is acknowledged by the 

__ "Who's There?" line. 

HOL This signal is present when a ram board goes out in 

the middle of your memory map. 

FT Signifies that your jump went the wrong way. 

MINE In a polled interrupt system all devices not request- 

_ ing service must pull this line low. 

T This line goes low when certain combinations of 

ASCII data appear, usually in groups of four. Also 
used in some systems in response to certain types of 
__ graphic images. _ 

NCE Interchanged in some systems with T. 

KDNG Data is valid now. 

TNIT E This signal is issued when the system has a headache. 

ENF This line goes low if the second byte of the op code 

is missing or in some systems this may signify that 
_ all available memory has been used. 

BZI Issued to DMA devices to let them know they can 

_____ have the bus. 

TRYN_ This signal is only present during NOP's. 

2B or 2B There is much debate over whether or not this line 

__ should be 2B or 2B, but that is the question. 

ALWD Issued in res ponse to an illegal op code or in some 

systems it is ALOUD meaning "turn the TTY off; 
_video display only". 

NTRSTD Issued by Selectrics usually in conjunction with the 

MYTYPE signal. 

ON The switch is off. 

MEAD Processor's response to the programmer who jumps 

to the second byte of the op code. 

LIT Signal goes low when all the LED's on the front pan 

panel are out. 

ME In a multi-processing environment the control pro¬ 

cessor polls the slave processors asking who put that 
data into the common memory and all processors 
that didn’t will issue this signal. 

UP This line goes low when the system is crashed. 

HERE In Z-80 systems this line goes low during each cycle 

of a block search when t he da ta is not found. (In 

_ some systems this is the FND line). 

BYNIT Invalid or spurious data. 

During each cycle of a ram test this line will.nor- 
_ mally be low unless a location is faulty. 

GLTY Response to the "How do you plead" line. Also 

low on computers owned by hobbyists who dis¬ 
agree with BUI Gates. 

THE RE Signifies that the TTY connector has come undone. 

BIT This signal is present when a hobbyist doesn't have 

_ his own computer yet. 

FNI Issued in response to most of the foregoing lines. 

These are but a few of the lines that you might find use¬ 
ful in your own computer system and we’re sure you can 
imagine a lot more that we didn’t cover here. 

Oh, yes. One more. There always are empty lines on 
everyone’s bus, and these of course are then designated: 


BAD 


USED. 


Page 32 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Nov./Dec., 1976 


329 



















A REPLY: STRUCTURED PROGRAMMING 


SOME SOFTWARE NEEDS & HOW TO FILL ’EM 


Dear Sir, Oct. 23,1976 

Several months ago, I wrote a letter to DDJ, parts of which appeared 
in Vol. 1, No. 6, page 40. In Vol. 1, No. 9, page 37, Tim Bonham takes 
issue with several of the comments in my letter. I wish to have the op¬ 
portunity to in turn take issue with several of Mr. Bonham's comments. 

First, Mr. Bonham states that I seem to equate structured program¬ 
ming with lots of control structures. As a matter of fact, I don't make 
such as equation since I am aware that SP (structured programming) in¬ 
volves concepts other than control structures such as top down program¬ 
ming and so forth. However, SP in my mind does involve lots of control 
structures, and I will explain why later. For the purposes of this letter, 

I will assume that SP is concerned only with controlled structures. 

Second, Mr. Bonham states that one of the important events in the 
history of structured programming was the publication of a proof that 
all programs could be written using only three control structures, name¬ 
ly, sequence, if-then-else, and loops. I assume that Mr. Bonham is refer¬ 
ring to a proof which appeared in a paper written by Boehm and Jaco- 
pini [1]. Knuth [2] says the following about this result: 

Recent interest in structured programming has caused many 
authors to cite Jacopini's result as a significant breakthrough 
and as a cornerstone of modern programming technique. Un¬ 
fortunately, these authors are unaware of comments made by 
Cooper . . . and later by Bruno and Steiglitz . . ., namely, that 
from a practical standpoint the theorem is meaningless. 

Knuth goes on to show how Jacopini's result may be used to put any 
program into a virtually structureless form. 

Third, Mr. Bonham states that one of the basics of SP is the use of 
only a very few control structures. If this is indeed the case, then we 
can do much better than SI L (sequencing, if-then-else, and looping), 
because, as Presser [3] has shown, if-then-else is superfluous. However, 
not even Presser advocates the complete elimination of if-then-else. 

Thus, I believe that it can be said that the minimum feasible set of con¬ 
trol structures is not the same as the minimum practical set of control 
structures; although, there does seem to be a general consensus that a 
minimum practical set must include SI L. Where one draws the line 
beyond SI L seems to be strictly a case of chacun a son gout. Zahn [4] 
for example, seems to feel that even adding the FOR statement and 
recursive subprograms is not enough. Vaughan [5] argues for includ¬ 
ing both the labelled and indexed CASE statement. A casual examina¬ 
tion of the literature will reveal various proposals for control struc¬ 
tures to supplement SI L. In the absence of any precisq generally ac¬ 
cepted definition of SP, I am inclined to believe that a minimum prac¬ 
tical set of control structures will include substantially more than SIL. 

Fourth, Mr, Bonham states that I seem to consider PL/I to be a 
simple SP language, and that he does not consider PL/I to be an SP 
language. ! do not wish to refute Mr. Bonham's claim that PL/I is not 
an SP language, since I am in sympathy with his view on this issue. 
However, there are any number of textbooks with titles like "Struc¬ 
tured Programming in PL/I" which suggests that PL/I is being treated 
as an SP language whether in fact it is or not. This together with the 
fact tnat PL/I is a commonly used complex language is the reason why 
I cited it in my letter. 

Yours, 

Fred J. Dickey 3420 Granville Rd 

Westerville OH 43081 

[1] Boehm, C. and Jacopini, G. "Flow-diagrams, Turing Machines, 

and Languages with only two formation rules," CACM, 

Vol. 9, No. 5, 1966, pp. 366-71. 

[2] Knuth, D. "Structured Programming with GOTO Statements," 

Computing Surveys, Vol. 6, No. 4, 1974, pp. 261-301. 

[3] Presser, L. "Structured Languages Sigplan Notices, Vol. 10, 

No. 7, 1975, pp. 22-24. 

[4] Zahn, C„ Jr. "Structured Control in the Programming 

Languages," Sigplan Notices, Vol. 10, No. 7, 1975, pp. 13-15. 

[5] Vaughan.W. C. M.. "Another Look at the CASE Statement," 

Sigplan Notices, Vol. 9, No. 11, 1974, pp. 32-36. 


COMPUTER-BASED INSTRUCTIONAL SYSTEMS 
MEETING 

The 1977 Winter Meeting of the Association for the Development 
of Computer-Based Instructional Systems (ADCIS) will be held in 
Newark, DE, February 22-24, 1977. For further information, con¬ 
tact the conference host, Fred Hofstetter, Dept, of Music, Univ. of 
Delaware, Newark, DE 19711, (302) 738-2497. 


1) It seems to me that what the microcomputer market needs 
most right now are good software development tools. High 
priority includes: 

a) a good monitor/operating system: one such as described 
in DDJ (April 1976) is on the right track. Sphere’s new 
DOS also seems very promising. DOS not only allows 
user-cataloged 32-character file names, but also has a 
number of very useful monitor requests built in, which 
take care of all the I/O interfaces for the user. 

b) a macro-assembler that can run resident on a micro¬ 
system. The need for this should be self-explanatory. 

c) a simple procedure-oriented language that can be com¬ 
piled by a resident compiler & can interface with assem¬ 
bly language subroutines. TINY HI looks good in this 
respect. The idea here is that system development is 
just too slow if done in assembly language. Further¬ 
more, assembler listings are very difficult to decipher as 
to control structures and such. A good procedure- 
oriented language will provide the 3 or 4 basic control 
structures plus as little else as can be gotten by with. 
“Efficiency” can well be sacrificed for gains in readability, 
understandability and maintainability. 

2) I would like to encourage you to encourage manufacturers 
to seek out a few top-notch software types and turn them 
loose for a few weeks. Promise them a bonus for early 
completion and institute a penalty clause for late delivery 
- but get a high-level language compiler out and get it out 
fast. Once a tool like TINY HI is in the hands of a large 
number of people, then you’ll see some progress. Assembly 
language is indispensable for certain tasks, but for the bulk 
of application-programming, it continues to be a millstone 
around our necks! 

Larry E. Walker _ 

CAL INTERPRETER PROPOSED 

Dear Jim, 

I just got Niklaus Wirth’s book Systematic Programming: 
An Introduction (Prentice-Hall, 1973), which is about PASCAL 
(but not mentioned in the title). I sure had a time finding 
anything on PASCAL, even in N.Y.C. 

I notice that it is ALGOL like in many ways, but it does 
pick up some of the JOSS and CAL flavor. 

This leads me to wonder why Dr. Dobb’s is not looking 
into trying to get CAL interpreters or compilers started. 

Joseph F. Gaffney 321 Lyndhurst Ave. 

Lyndhurst, NJ 07071 

[Great idea! How ’bout sending us a CAL interpreter for some 
micro, in the next month or two?-Editor] 


HORRORS!-WE LEFT SOME ADDRESSES OUT 
OF ARTICLES IN PREVIOUS ISSUES 
Here they are: 

Itty Bitty Computers & Tom Pittman 
Box 23189 
San Jose, CA 95153 
(408) 578-4944 

[October issue. 6800 and 6502 Tiny BASIC 
for $5] 

Per Sci 

4087 Glenoe Ave. 

Marina del Rey, CA 90291 
(213) 822-7545 

[August issue. Dual-drive floppy disc drive for 
$1K with fast voice-coil head positioner] 

Page 33 


Nov./Dec., 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


330 






NIBL -- Tiny Basic 

for National’s SC/MP Kit 

complete documentation & annotated source code 


by Mark Alexander, National Semiconductor Corp. 

Nov. 29,1976 

Introduction 

NIBL (National Industrial Basic Language) is a machine- 
oriented programming language for the SC/MP. It is a lan¬ 
guage similar to Tiny BASIC, but it also has some unique 
features. Many of these features, such as a genuinely useful 
control structure (the PASCAL-influenced DO/UNTIL) and 
the indirect operator (“@”) have been added to the language 
to allow NIBL to be nearly as flexible as machine language 
in such applications as medium-speed process control. 

By using NIBL, one trades the high execution speed and 
low memory consumption of machine language for some very 
tangible advantages: Program readability, modifiability, and 
reliability, which are truly difficult to achieve in machine lan¬ 
guage programs. 

NIBL programs are interpreted by a large (4K byte) SC/MP 
program that resides in ROM. The interpreter is broken into 
two blocks: a program written in an Intermediate (or Interpre¬ 
tive) Language — I. L. for short — which does the actual inter¬ 
pretation; and a collection of SC/MP machine language sub¬ 
routines invoked by the I. L. program. The I.L. approach is 
well-documented in Vol. 1, No. 1 of Dr. Dobb’s Journal of 
Computer Calisthenics & Orthodontia, and readers should 
refer to that issue for a more detailed description of the inter¬ 
pretation process. 

In Table 1, the formal grammar for NIBL is given. This is 
the ultimate authority (other than the interpreter itself) on 
how legal NIBL statements are formed. The following descrip¬ 
tions of the NIBL statements will refer to portions of the gram¬ 
mar. Table 2 contains a list of the error message produced by 
the NIBL system. Finally, a listing of the interpreter is given 
in the Appendix. 

History of NIBL 

NIBL came into this world as an interpreter for Tiny BASIC, 
as originally described in the first issue of Dr. Dobb’s Journal. 
That program was written by Steve Leininger, who subsequent¬ 
ly left before the program was ever assembled or executed. 

The current version of NIBL is an almost complete re-write of 
the original interpreter, with changes and additions being made 
to improve the modularity of the program, to greatly increase 
execution speed, and to extend the capabilities of the language 
itself. 

The program was developed on the PACE Disk Operating 
System, and was assembled by a PACE-resident cross-assembler 
for the SC/MP. 

System Requirements 

The NIBL interpreter is intended to be a ROM-resident program in 
the first 4K of the SC/MP address space (although it will run just as 
well in RAM). The interpreter requires at least 2K bytes of RAM 
starting at address 1000 (base 1 6), of which the interpreter uses nearly 
300 bytes for stacks, variables, etc., leaving the rest for the user's pro¬ 


gram. Another 2K bytes of memory may be added to fill up this 4K 
page, forming what is hereafter referred to as "Page 1". 

The SC/MP architecture forces memory to be split into pages of 4K 
bytes each; therefore, NIBL allows seven such pages to be used for 
storing programs. NIBL programs in the seven pages are edited sepa¬ 
rately, but may be linked together during program execution by special 
NIBL statements described below. The first page, mentioned above, 
must be RAM since the interpreter uses part of it as temporary storage; 
the part used to store programs starts at location 111 E (base 16). 

The other six pages, each of which starts at location nOOO (base 16), 
where n is the page number, may be either RAM or ROM. Page 2 is a 
special page: it can contain a NIBL program to be executed immediate¬ 
ly upon powering up the NIBL system. 

The memory organization of NIBL is shown in Figure 1. 

Throughout this article, the assumption is made that the user has a 
teletype with paper tape reader and punch, as with the SC/MP Low 
Cost Development System. In fact, NIBL was designed to use the 
LCDS teletype interface, but to be completely independent of the LCDS 
LCDS firmware. If NIBL is to be run on its own, the system should 
have the same configuration for the teletype, with the reader relay 
being operated directly by the SC/MP. At present, paper tape is the 
only medium for saving NIBL programs, but as soon as the hardware 
and software for a SC/MP cassette interface become availalbe, NIBL 
will be able to link to routines for saving and loading programs with 
ease. 

Since the teletype interface is not based on a UART, the terminal 
baud rate can only be changed by modifying the timed delays in NIBL's 
I/O routines. NIBL has been run successfully at 1200 baud with a 
CRT terminal; the listing of the program in the Appendix is for a 110 
baud system. 

Communicating with NIBL 

When the NIBL system is ready to accept input, it prompts at the 
teletype with a ">" sign. (NlBL is now in "edit mode".) The user 
then enters a line terminated by a carriage return. There are several 
special characters that are used to edit lines as they are typed: 

Shift/0 (back arrow) cuases the last character typed to be deleted. 

Control/U (echoes as " U") causes the entire line to be deleted; 
NIBL reprompts for a new line. 

Entering a line to NIBL without a leading line number causes the 
line to be executed directly by NIBL. Most NIBL statements, as well 
as the four program control commands, may be executed in this 
manner. 

A line with a leading number (in the range 0 through 32767) is 
entered into the NIBL program in the current page. (Make sure that 
the value of the pseudo-variable PAGE is valid, so that the line isn't lost 
into non-existent memory.) The NIBL editor sorts the program lines 
as they are entered into ascending order by line number. 

Typing a line number followed by a carriage return deletes that line 
from the program. Typing a line with the same number as an existing 
line's causes the new line to replace the old one in the program. 

Each of the seven memory pages may contain a different program, 
separate from the rest. Editing the program in one page will not 
affect the other pages. To switch editing from one page to another, 
simply type PAGE = n, where n is the number of the new page. 

Variables 

There are twenty-six variable names in NIBL: the letters A 
through Z. They are all 1 6-bit binary variables, so they can be used 
to hold addresses as well as signed numeric data. The variables are 
already pre-declared for the user, and space is allocated for them 
in RAM when NIBL powers up. 


Constants 

NIBL allows either decimal or hexadecimal (base 16) constants to 
appear in expressions. Decimal constants must lie in the range 0 


Page 34 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Nov./Dec., 1976 


331 



through 32767; the unary minus ("—") is used to obtain negative 
values. The value —32768 is a valid Nl BL integer, but it is not legal as 
it stands. To represent it, use —32767—1 or #8000 instead. 

Hexadecimal constants are denoted by a pound sign ("#”) followed 
by a string of hexadecimal digits (0-9, A-F). Nl BL does not check for 
overrun in hex constants; consequently, only the 4 least significant 
digits of the nex digit string are kept. 

Functions 

NIBL provides three built-in functions that may appear in any ex¬ 
pression. These are described as follows: 

RND (X, Y) returns a pseudo-random integer in the range X through 
T, inclusive, where X and Y are arbitrary expressions. 

T, inclusive, where X and Y are arbitrary expressions. In order for the 
function to work properly, the value of Y — X should be positive and 
no greater than 32767. 

MOD (X, Y) returns the absolute value of the remainder from X 
divided by Y (where X and Y are expressions). 

TOP (with no arguments) returns the address of the first free 
byte in the memory page currently being edited or executed. In other 
words, it is the address of the top of the NIBL program in the current 
page, plus one. 

Pseudo-variables 

NIBL has two pseudo-variables in addition to the standard varia¬ 
bles. These are STAT and PAGE. Both of these varialbes may appear 
on either side of an assignment statement. 

STAT represents the SC/MP status register. The current value of 
the status register can be referred to by using STAT in an expression; 
or an assignment may be made to the status register by executing a 
statement such as STAT = 4 or STAT = STAT OR #20. When NIBL 
makes an assignment to the status register in this manner, it clears the 
interrupt-enable bit of the value before it is actually assigned. Note 
also that only the lower byte of the value is assigned; the high byte 
is ignored. 

The carry and overflow bits in STAT are meaningless since the 
Nl BL system is continually modifying them. The utility of STAT 
lies in the fact that 5 of its bits are connected to I/O sense lines on 
the SC/MP chip. 

The pseudo-variable PAGE contains the number of the memory 
page currently being executed or edited. As indicated in Figure 1, 
there are seven pages in which NIBL programs may be stored; therefore, 
PAGE may lie only in the range 1 through 7. If an assignment of a 
value outside this range is made to PAGE, only the 3 least significant 
bits of the value are used — and zero is automatically changed to one. 

If PAGE is modified while Nl BL is in edit mode, all subsequent 
editing will take place in the new page. 

If PAGE is modified by a NIBL program during execution, con¬ 
trol will be passed to.the first line of the NIBL program in the new 
page. This transfer would be effected by a statement such as PAGE = 

6 or PAGE = PAGE + 1. Thus, several NIBL programs residing in 
different 4K pages may be linked together as one large program, if 
need be. This would allow one to write a 28K STAR TREK program 
in NIBL, a Herculean and indeed foolish task. 

Control may also be transferred from one page to another by 
three other statements: RETURN, NEXT, and UNTIL. Thus, the 
first part of a subroutine or loop may be in one page, and the second 
part may be in another (with control being transferred between the 
two parts by an assignment to PAGE). In these three special cases, 

NIBL automatically updates the value of PAGE as the statements are 
executed. 

Relational Operators 

NIBL provides the standard BASIC relational operators, for com¬ 
paring the values of integer expressions. The operators are as follows: 

= equal to 

<= less than or equal to 

>= greater than or equal to 

<> not equal to 

< less than 

> greater than 

All of these operators produce 1 as a result if the relation is true, and 
0 if the relation is false. Note that the relational operators may appear 
anywhere that an expression is called for in the NIBL grammar, not 
only in IF statements. 

Arithmetic Operators 

NIBL provides the four standard arithmetic functions: addition (+), 
subtraction or unary minus (—), multiplication (*), and division (/). 
Since only integers are allowed in NIBL, all quotients are truncated (the 
MOD function can be used to obtain remainders from division). Any 
overflow or underflow (other than division by zero) is ignored by NIBL; 
the reasoning behind this is that it may often be necessary to treat 
NIBL expressions as unsigned values, such as when performing calcula¬ 
tions using memory addresses as the operands. Thus the value of 
32767 + 1 is —32768 (or in hexadecimal, #7FFF + 1 = #8000, which 


makes more sense). 

Logical Operators 

In NIBL, there are three logical operations that may be performed 
on values: AND, OR, and NOT. The first two are binary operators, and 
the latter is unary. All three perform bitwise logical operations on 
16-bit arguments, producing 16-bit results. AN D, OR, and NOT are 
sufficient to simulate any other logical operation, through various 
combinations of the operators. 

The Indirect Operator 

The indirect operator realizes the functions of PEEK and POKE 
operations in other BASICS, but with somewhat more elegance. The 

sign followed by an address (whcih can be a constant, variable, or 
expression in parentheses) denotes the contents of that address in 
memory. Thus, if memory location 245 (decimal) contains 60, the 
statement X = @245 would result in the value 60 being assigned to X. 

The indirect operator may also appear on the left side of an assignment 
statement. For example, @X=@(Y+10) would result in the memory 
location pointed to by X being assigned the value of the memory loca¬ 
tion pointed to by the value Y+10. 

Despite this, it is still safest to use plenty of parentheses in expres¬ 
sions to make the intent clear. 

Use of the indirect operator is not limited to reading from or 
writing to memory: it also provides a simple way to communicate 
with peripheral devices that are interfaced to the SC/MP through 
memory addresses. Note that the "@" operator can only access 
memory one byte at a time, and that when an assignment is made 
to a memory location, only the low order byte of the value is 
moved to the location; the high order byte is ignored. 

The indirect operator can also be used to simulate arrays in 
NIBL. For example, if we wish to define an M x N matrix of one- 
byte positive integers, we can access the (I ,J)th element of the 
matrix (assuming that (0,0) is a legal element in the matrix) with 
the expression @(A+I*N+J). An assignment could be made to that 
same element by placing the expression on the left side of an assign¬ 
ment statement. 

Expressions 

Expressions in NIBL are made up of the components described 
above: variables, constants, function references, pseudo-variables, 
and operators binding them all together. NIBL expressions are all 
16-bit integers. Evaluation of expressions takes place left-to-right, 
and the order in which operations take place is determined by 
operator precedence and the presence of parentheses. The order of 
evaluation can be deduced from the grammar in Table 1; here is a 
table of operator precedence: 

Lowest precedence (applied last): <, >, <=, >=, =, 

+,-, OR 
*, /, AND 

Highest precedence (applied first): @, NOT 
Program Control Commands 

LIST causes the entire program in the current page to be listed. 
Listing can be halted by hitting any key on the teletype: the BREAK 
key works best. 

LIST <number >causes listing to begin at the given line number (or 
the nearest one greater than the number), rather than at the first line. 

LISTing a program is the method used to save it on paper tape. To 
accomplish this, type LIST with the punch off, then turn on the punch 
and hit carriage return. After the program is dumped, type a Shift/0 
with teletype on LOCAL so that the last character (a " >") will be de¬ 
leted when the tape is entered to NIBL at a later time. Nl BL will ac¬ 
cept a tape made in this fashion at any time during edit mode. The 
tape reader is enabled at all times by Nl BL, and it does not distinguish 
between the reader and the keyboard when accepting input. Super¬ 
fluous line-feed and null characters on the tape are echoed but ignored. 

RUN causes three actions: first, all variables are zeroed; secondly, 
all stakes (the FOR, DO, and GOSUB stacks) are cleared; and finally 
the program in the current page is executed, starting with the first 
line in sequence. 

RUN is not the only way to start program execution: GOTO and 
GOSUB can slo be used to jump into a program from edit mode. For 
example, if there is a subroutine at line 1000 that is being tested, 
typing GOSUB 1000 will cause that routine to be executed, with 
Nl BL returning to edit mode upon encourntering a RETURN state¬ 
ment. When GOTO and GOSUB are used to run a program, the varia¬ 
bles and stacks are not cleared. 

Hitting any key while a program is being run will cause Nl BL to 
break execution, printing a message and the line number where the 
break was detected. The BREAK key on the teletype works best for 
this. 

CLEAR causes all variables to be zeroed and the three stacks men¬ 
tioned above to be cleared. This latter feature of the CLEAR command 


Nov./Dec., 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 


is quite useful after a stack nesting error has occurred (for example, if 
GOSUBS are nested more than eight levels deep). 

NEW clears the programs in Page 1, and changes the value of PAGE 
to 1. This is the form of the command most likely to be used by Nl BL 
novices who do not wish to be confused by the page selection features 
of NIBL. NEW should be the first thing one types in to NIBL when 
first powering up. 

NEW <number >sets the value of PAGE to the <number>, and 
clears the program in that page. 

Assignment Statements 

Already, two different types of assignment statements have been 
mentioned: assignments to the pseudo-variables STAT and PAGE, and 
assignments to memory locations with the indirect operator. Another 
form of the assignment statement is the conventional assignment to a 
variable (A - Z), e.g. A=A + ! or A = 32 <((4 * I). There are also 
statements which look like string assignments, but there are not 
standard BASIC, and are described later in the section on string han¬ 
dling. The word "LET" is optional in front of any assignment state¬ 
ment (leaving it out increases execution speed, unlike most Tiny 
BASIC systems). 

If/then Statement 

The I F statements allows conditional execution of one or more 
statements (as many as can fit on one line). The syntax for the I F 
statement is: 

'I F' Rel-exp 'THEN'? Statement 
which indicates that the word THEN is optional, and that any 
statement (including another IF statement) may follow the 
conditional expression. If the IF condition is true (i.e. is non¬ 
zero), the statement following it (and any others on the line) will 
be executed; otherwise, control immediately transfers to the next 
program line. The condition does not need to contain relational 
operators: a statement such as I F MOD (A,5) THEN.... is per¬ 
fectly legal. In this example, the statement following the THEN 
would be executed if A were not divisible by 5. 

GOTO, GOSUB, AND RETURN STATEMENTS 

The syntax for the GOTO statement is 'GOTO' followed by an 
expression. The effect of the GOTO statement is to transfer control to 
the line whose number is indicated by the expression. An error occurs 
if the specified line does not exist in the current page. Unlike standard 
BASICS, any arbitrary expression can be used to specify the line number, 
as well as the usual decimal constant. This allows computed branches to 
be performed with the same effect as the ON . . . GOTO statement in 
standard BASIC. 

The GOSUB statement is identical to the GOTO statement in form. 

It too causes a branch to a new line, but it also saves the address of the 
following statement on a stack. When a RETURN statement is executed, 
the saved address is popped from the stack, and control returns to that 
point in the program. Since an actual address, not a line number, is 
saved on the GOSUB stack, GOSUB statements may appear anywhere 
on a multiple-statement line. 

GOSUBs may be nested up to eight levels deep; an error will occur 
if an attempt is made to exceed this limit. The error condition does not 
destroy the previous contents of the stack, so a RETURN statement 
can be executed (even in edit mode) without an error occurring. How¬ 
ever, any modification of the NIBL program will clear the GOSUB 
stack, so that a subsequent RETURN without a GOSUB will cause an 
error. 

DO AND UNTI L STATEMENTS 

The DO and UNTI L statements are useful in writing program loops 
efficiently, without using misleading GOTO statements. Enclosing a 
group of zero or more statements between a DO statement and an 
UNTIL <condition> statement (where <condition> is an arbitrary 
expression) will cause the statement group to be repeated one or more 
times until the < condition > becomes true (i.e., non-zero). As an 
example of the use of the DO and UNTI L statements, we present a 
program that prints the prime numbers: 

10PRINT 1: PRINT 2 
20 1=3 
30 DO 

40 J=l/2: N=2 

50 DO 

60 N=N+2 

70 UNTIL (MOD(I,N=0) OR (N>J) 

80 IF N > J PRI NT I 

90 1=1+2 

100 UNTIL 0 

DO loops may be nested up to eight levels deep, and NIBL acts in 
the same manner if an overflow occurs as it does with a GOSUB over¬ 
flow. NIBL also reports an error if an UNTIL statements occurs without 
a previous DO. A single DO loop may have more than one UNTI L 
statement as a terminator. For example, if one wished to exit abnor¬ 


mally out of a DO loop and transfer to some appropriate line, it could 
be done in the following manner: 

UNTIL 1: GOTO X 
where X is the line number. 

Neither the DO nor the UNTI L statement may be executed in edit 
mode. 

FOR AND NEXT STATEMENTS 

The NIBL FOR statement is virtually identical to that in standard 
BASICs; consequently, it is not explained in great detail here. 

As in most BASICs, both positive and negative STEPs are allowed in 
the FOR statement, and a STEP of +1 is assumed if the STEP portion of 
the statement is omitted. A FOR loop is terminated by a NEXT Vari¬ 
able > statement, and the Variable > must be the same as that referred 
to in the FOR statement at the beginning of the loop. 

EOR loops may be nested four levels deep; NIBL reports an error if 
this limit is exceeded, or if a NEXT statement occurs without a previous 
FOR statement. As with the DO and UNTI L statements, FOR and NEXT 
may not be executed in edit mode. 

Perhaps the only differences between the NIBL FOR statement and 
that of more elaborate BASICs (such as DEC's BASIC-PLUS for the 
PDP-11) are that a FOR loop is always executed at least once, and that 
when a NEXT statement is executed, the STEP value is added to the 
variable before the test is made to determine if the loop should be 
repeated (rather than after the test). 

INPUT STATEMENT 

There are two types of INPUT statements in NIBL: numeric input 
and string input. The form of the first type is 'INPUT' followed by a 
list of one or more variables. When this statement is executed, NIBL 
prompts at the teletype with a question mark ("?"). The user responds 
with a list of expressions separated by commas, and terminated by a 
carriage return. For example, a legal response to the statement INPUT 
A,B,C would be #3FA,26,4*27. These three expressions would then be 
assigned to the variables A, B, and C, respectively. An illegal response 
(too few arguments or improper expressions) will result in a syntax 
error. Any extra arguments in the response are ignored. 

The second type of INPUT statement allows strings to be input. 

The form of the statement is 'INPUT' '$' <address>, where 
<address> is a Factor, syntactically (usually a variable, constant, or 
expression in parentheses). When this statement is executed, NIBL 
prompts the user as before, at which point the user enters a line termin¬ 
ated by the usual carriage return. NIBL then stores the line in memory 
in consecutive locations, beginning at the address specified. Thus, 

INPUT$ #6000 would cause the input line to be stored starting at 
location 6000 (base 16); the carriage return would also be stored at 
the end of the line. 

Strings input in this manner can be tested and manipulated by 
using the "(s?" operator or the string handling statements described 
below. They can also be displayed by a PRINT statement. 

Neither of the two INPUT statements may be executed in edit 
mode. 

PRINT STATEMENT 

The form of the PRINT statement is 'PRINT' or 'PR' followed by a 
list of print items separated by commas, and optionally terminated by 
a semicolon, which suppresses an otherwise automatic carriage return 
after all items in the list are printed. 

A print item consists of one of the following: 

1. A quoted string, which is printed exactly as it appears (with the 
quotes removed) 

2. An expression, which is evaluated and printed in decimal format, 
with either a leading space or a minus sign ("-"), and one 
trailing space 

3. A reference to a string in memory, denoted by '$' < address> , 
where <address> is a Factor as usual. Successive memory loca¬ 
tions, starting at the specified address, are printed as ASCII char¬ 
acters, until a carriage return (which is not printed) is encountered. 

There is no zone spacing in the PRINT statement, nor does NIBL 
perform an automatic carriage return/line feed after printing 72 char¬ 
acters. NIBL is not an output-oriented language; fancy formatting has 
been sacrificed for more useful control structures and data manipula¬ 
tion features. (A subroutine to print a number and skip to the next print 
zone is trivial to write in NIBL — it takes about two lines of code, with 
the DO/UNTI L and FOR/NEXT.) 

STRING HANDLING STATEMENTS 

String handling in NIBL is very minimal and low-level. The string 
handling features of the INPUT and PRINT statements have already 
been mentioned; NIBL provides two more statements for manipulating 
strings. 

A statement such as $<address> = "THIS IS A STRING" would 
cause the quoted string to be stored in memory starting at the specified 
address (which again is a Factor), with a carriage return being appended 
to the string. 


Page 36 Dr. Dobb’s Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Nov./Dec., 1976 


333 


Another statement allows the programmer to move strings around in 
memory once they have been created. The form of this statement is 
'$' <destination> '=' '$' <source>, where both <destination> and 
<source> are Factors, and are the addresses of strings in memory. This 
statement causes all the characters in the string pointed to by <source> 
to be copied one-by-one to the memory pointed to by <destination>, 
until a carriage return (also copied) is encountered. Overlapping the 
source and destination addresses can produce disastrous results, such as 
wiping out the entire contents of the current page. Consequently, a 
string move can be aborted by hitting the BREAK key on the teletype 
(but it must be done quickly!). 

Note that all strings referred to in these statements, and in the IN¬ 
PUT and PRINT statements, are assumed to lie within a 4K page, and 
wraparound is a possibility which must be anticipated by the program¬ 
mer. (Long-time SC/MP programmers will be familiar with this minor 
problem.) 

Using these statements, it should be very easy to develop a set of 
Nl BL subroutines for performing concatenation, comparison, and sub¬ 
string operations on strings. 

END STATEMENT 

The END statement may appear anywhere in a Nl BL program and 
not necessarily at the end. It causes a message and the current line 
number to be printed, with Nl BL returning to edit mode. The END 
statement is useful when debugging programs, since it acts as a break¬ 
point in the program that can be removed easily. 

LINK STATEMENT 

The LINK statement allows NIBL programs to call SC/MP machine 
language routines at any address. A statement of the form 'LINK' 
<address>, where <address> is an arbitrary expression, will cause 
the NIBL system to call the routine at that address by executing an 
appropriate XPPC P3 instruction. The user's routine should make sure 
that it returns by executing another XPPC P3, and that the value of P3 
upon entry to the routine is restored before returning. The routine may 
make use of the fact that P2 is set by NIBL to point to the beginning of 
the RAM block used to store the variables A through Z, with each 
variable being stored low byte first, high byte second. Thus, parameters 
may be passed between NIBL programs and machine language routines 
through the variables. Both PI and P2 may be modified by the user's 
routines; they are automatically restored by the NIBL system upon 
return. The user should be careful not to modify RAM locations with 
negative displacements relative to P2, or the locations with displace¬ 
ments greater than 51 relative to P2. These locations are used by the 
interpreter. 

REMARK STATEMENT 

A comment can be inserted into a NIBL program by preceding it 
with the word REM. REM causes the rest of the line to be ignored by 
Nl BL during execution. Remarks are useful in debugging programs or 
helping other people to understand them, but of course, they take up 
valuable memory. (Then again, memory is getting cheaper all the time.) 


BIOGRAPHICAL NOTE 

Mark Alexander, a graduate of the University of California, Santa 
Cruz, is getting bored with assembly language programming, and wishes 
someone would save him by making a microprocessor copy of the 
Burroughs B5500 computer. 

TABLE 1: NIBL Grammar 
On reading the grammar: 

All items in single quotes are actual symbols in NIBL; all other 
identities are symbols in the grammar. The equals sign "=", means 
"is defined as"; parentheses are used to group several items together 
as one item; the exclamation point, "I", means an exclusive-or choice 
between the items on either side of it; the asterisk, means zero 
or more occurrences of the item to its left; the plus sign, means 
one or more repetitions; the question mark, "?", means zero or one 
occurrences; and the semicolon, marks the end of a definition. 

NIBL-Line = Immediate-Statement 
1 Program-Line 


Immediate-Statement (Command 1 Statement) Carriage-Return; 

Program-Line = (Decimal-Number Statement-List Carriage-Return); 

Command * 'NEW' 

! 'CLEAR' 

l 'LIST' Decimal-Number ? 

I 'RUN' 


Statement-List = Statement (':' STATEMENT) *; 


Statement = 
l 
1 
! 
! 
! 
! 

1 

I 

1 

1 

I 

1 


'LET' ? Left-part '=' Rel-Exp 

'LET' ? '$' Factor '=' (String I Factor) 

'GO' ('TO' 1 'SUB') Rel-Exp 
'RETURN' 

('PR' ! 'PRINT') Print-List 

•IF' Rel-Expr 'THEN' ? Statement 

'DO' 

'UNTIL' Rel-Exp 

'FOR' Variable '*' Rel-Exp 'TO' Rel-Exp ('STEP* Rel-Exp) ? 
'NEXT' variable 

'INPUT' (Variable + l '$' Factor) 

•LINK’ Rel-Exp 

'REM' Any-Character-Except-Carriage-Return + 

'END' 


Left-Part - (Variable I '@' Factor 1 'STAT' 1 'PAGE') ; 

Rel-Exp = Expression Relop Expression 
1 Expression 
> 


Relop - '<' 1 '<• '-' 1 '<• •>' I '>' 1 '>• 1 ; 

Expression *= Expression Adding-Operator term 
1 ('+' 1 '-') ? Term 


Adding-Operator - '+' 1 '-' 1 'OR' ; 


MULTIPLE STATEMENTS ON ONE LINE 

A program line may contain more than one statement, if the state¬ 
ments are separated by colons (":"). Using multiple statements on a 
single line improves the readability of the program by separating it into 
small blocks, and uses less memroy for storing the program. 

It is important to note that an IF statement will cause any state¬ 
ments appearing after it on the line to be ignored if the I F condition 
turns out to be false. This is the feature that allows a group of state¬ 
ments to be executed conditionally. 

A multiple-statement line may be entered without a line number 
but NIBL will only execute the first statement on the line, ignoring 
the rest. 

POWERING UP 

NIBL is capable of executing a program in ROM in Page 2 immedi¬ 
ately upon powering up, without the need for the user to give the RUN 
command at the teletype. When NIBL initializes, it examines Page 2 
and makes an educated guess about the possible existence of a legal 
Nl BL program in that page. If NIBL thinks there really is a program 
there, it starts executing it immediately; thus, if the program halts for 
some reason, the value of PAGE will be 2. But if NIBL fails to find a 
legal program in Page 2 initially, it sets the value of PAGE to 1 (the 
normal case) and prompts at the teletype. 

When executing programs, NIBL periodically checks for keyboard 
interrupt, returning to edit mode if it detects it. Therefore, if a NIBL 
program is to be executed with the teletype disconnected, the Sense B 
line of the SC/MP should be set high so that NIBL will not sense an 
interrupt while running. This would allow a Nl BL system to act as a 
process controller which starts executing immediately upon powering 
up. 


Terra « Term Multiplying-Operator Factor 
1 Factor 
1 


Multiplying-Operator ■ 1 '/' i 'AND' ; 

Factor = Variable 

I Decimal-Number 
1 '(' Rel-Exp ')' 

1 '@' Factor 
I '}' Hex-Number 
1 'NOT' Factor 

1 'MOD' '(• Rel-Exp ',' Rel-Exp ')' 
1 'RND' '(' Rel-Exp ',' Rel-Exp ')' 
1 'STAT' 

1 1 TOP' 

1 'PAGE' 


Variable ® 'A' l 'B' 1 'C' 1 ... 1 *Y' I 'Z' ; 
Decimal-Number - Decimal-Digit + ; 
Decimal-Digit * '0' l '!• l '2' 1 ... 1 '9' ; 


Hex-Number « (Decimal-Digit 1 Hex-Digit) + ; 

Hex-Digit - 'A' i 'B' I 'C' 1 'D' 1 'E' 1 'F' ; 

Print-list » Print-Item + ; 

Print-Item « (String I Rel-exp l Factor) ; 

String * ' Almost-Any-Character '"' ; 

NOTE: Spaces are not usually significant in NIBL programs, with 
the following exceptions: spaces cannot appear within key words 
(such as 'THEN' or 'UNTIL') or within constants. Also, a variable 
(such as A or Z) must be followed immediately by a non-alphabetic 
character to distinguish it from a key word. 


Nov./Dec., 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 37 


334 


TABLE 1: 


NlBL Grammar 


COMPUTER HOBBYIST CONVENTIONS & TRADE SHOWS 


TABLE 2: N1BL error messages 
Error messages are of the form: 
EEEE ERROR AT LN 


where EEEE is one of the error codes below, and LN is the number of 
of the line in which the error was encountered. 

AREA No more room left for program in current page 

CHAR Character after logical end of statement 

DIVO Division by zero 

END" No ending quote on string 

FOR FOR without NEXT 

NEST Nesting limit exceeded in expression, FOR's, GOSUBs, etc. 
NEXT NEXT without FOR 

NOGO No line number corresponding to GOTO or GOSUB 

RTRN RETURN without previous GOSUB 

SNTX Syntax error 

STMT Statement type used improperly 

UNTL UNTL without DO 

VALU Constant format or value error 


00(70 


OPFP 



rooo 
III D 

me 

l?FF 

1600 


ROM 


IFFIH 


Variables, 

St&ckS, 

BofttrS 

PR 

OGf 

*AM 

s 

u 



v 

t. 

o 

er 

A) 


d 

.£ 

.0 

-f— 

A 

to 


RAM 


2000 


2JFFF 


PAGE: Z „ PAGE ? 


PROGRAM 

7000 

PROGRAM 

-O' 

?FFF 

u 


-_?FFF-— 

ROM/RAM ROM/RAM 


CODE FOLLOWS 


CONVENTIONS ALREADY HELD: 

May 2, 1976 Trenton Festival 1500 people 

Trenton, NJ 45 exhibitors 

Amateur Comp. Group of NJ 

June 11-13, 1976 Midwest Reg. Comp. Conf. 1500-2500 

people 

Cleveland, OH 

Midwest Affiliation of Comp. Clubs 


Aug 28-29, 1976 Personal Computing ’76 
Atlantic City, NJ 
S. Counties Amateur Radio Assn, 
of NJ 

CONVENTIONS BELIEVED TO BE IN THE WORKS: 

Mar 5, 1977 Microprocessor Hobbyists Demo 

(Saturday) United Good Neighbor Bldg. 

10 AM-3 PM Renton, WA 

(Not a convention, but interest¬ 
ing) 


4500-5000 

people; 

103 exhibitors 


Mike & Key Amateur 
Radio Club 
Bill Balzarini K7MWC 
1518 S. Pearl St. 
Seattle, WA 98108 
(206) 762-7738 


Mar 19-20, 1977 


Apr 15-17, 1977 


Apr 31-May 1, 1977 


May 7-8, 1977 

Jun 13-16, 1977 


Western Personal Computing Show Austin Cragg Conference 
Hyatt House, International Airpt. & Exposition Manage- 


Los Angeles 


The First West Coast Computer 
Faire, Civic Auditorium 
San Francisco, CA 
San Francisco, CA 
[Expecting 7,000-10,000 people 
50 sessions, 200 exhibitors] 
Trenton Computerfest 
Trenton, NJ 


Eastern Personal Computing 
Show, Mariott Hotel 
Philadelphia, PA 


ment Co., Box 844 
Greenwich, CT 06830 
(203) 661-6101 
[co-sponsored by a 
number of Bay Area 
hobbyist, professional 
and educational organi¬ 
zations] 

Alan Katz 

Dept, of Engr., Trenton 
State Coll., Trenton, NJ 
08625 

(609)771-2487 
Austin Cragg [listed prev.] 


Personal Computing Section AFIPS 

National Computer Conference ’77 210 Summit Ave. 
Dallas, TX Montvale, NJ 07645 

(201)391-9810 


Jun 18-19,1977 
Jun 18-19,1977 


Jun, 1977 


Jul 29-31, 1977 


Aug 27-28, 1977 


Oct 25-28, 1977 


Fall, 1977 


??? 


New England Personal Comp. 

Show, J.B. Hynes Aud. 
Boston, MA 
Atlanta Computerfest 
Atlanta, GA 
[in conjunction with 
Hamfest] 


Midwest Reg. Comp. Conf. 
Cleveland, OH 


Northwestern Amateur Radio 
Convention 

Seattle Ctr. & Washington Plaza 
Hotel, Seattle, WA 
[will include significant micro¬ 
computer activities] 

Personal Computing ’77 
Consumer Trade Fair 
Atlantic City, NJ [?] 

(Name unknown at press time) 
Anaheim Conv. Ctr. 

Anaheim, CA 

(Name unknown at press time) 
Los Angeles Area 
[Proposal to hold such a con¬ 
vention has been placed before 
SCCS Bd. of Directors] 
Technihobby-USA 
[3 of the 4 listed previously 
were postponed. Last word 
was they were considering 
also postponing the 4th.] 


Austin Cragg [listed prev.] 


? ’73 Magazine 
73 Pine St. 

Peterborough, NH 
03458 

(603) 924-3873 
Midwest Affiliation of 
Comp. Clubs, PO Box 83 
Brecksville, OH 44141 
(216)732-8458 
ARRL-QCWA-WWDX Club 
ARRL Conven. Comm. 
10352 Sand Point Way NE 
Seattle, WA 98125 


John Dilks, PC’77 
503 W. New Jersey Ave. 
Somers Pt., NJ 08244 
(609) 927-6950 

Interface Age 
Box 1234 
Cerritos, CA 90701 
(213)469-7789 
Southern California 
Computer Society 
P.O. Box 3123 
Los Angeles, CA 90051 

Marketing Ventures, Inc. 
5012 Herzel PI. 

Beltsville, MD 20705 
(301)937-7177 


KILOBAUD - A PRENATEL NAME CHANGE 

John Craig, the Editor of Wayne Green’s new computer 
hobby mag, just phoned and told us that Wayne has changed 
the publication’s name — before the first issues comes out — 
from the initially advertised “Kilobyte” to Kilobaud. Oh, 
well. .. we’re still waiting for someone to start yet another 
rag and call it “Megabyte” (but with luck,'that won’t happen). 


Note: This list excludes a number of conventions directed towards computer 
professionals that are expected to have at least nominal activity in the area of 
personal and hobby computing. Although the ’77 NCC is primarily for compu¬ 
ter professionals, its Personal Computing Section will be a major activity with 
a number of significant sessions and events planned for personal computer en¬ 
thusiasts. 


Page 38 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Nov./Dec., 1976 


















TITLE NIBL, NOV. 27' 

0001 . LIST 1 

;***************************************************** 
; * * 

;* WE ARE TIED DOWN TO A LANGUAGE WHICH * 

;* MAKES UP IN OBSCURITY WHAT IT LACKS * 

; * IN STYLE. * 

; * — TOM STOPPARD * 



0020 TSTBIT = 020 

0040 JMPBIT = 040 

0080 CALBIT = 080 

0001 PI = 1 

0002 P2 = 2 

0003 P3 = 3 

FF80 EREG = -128 


il.L. INSTRUCTION FLAGS 
;SC/MP POINTER ASSIGNMENTS 
;THE EXTENSION REGISTER 


; DISPLACEMENTS FOR RAM VARIABLES USED BY INTERPRETER 


FFFF DOPTR = -1 

FFFE FORPTR = -2 

FFFD LSTK = -3 

FFFC SBRPTR = -4 

FFFB PCLOW = -5 

FFFA PCHIGH = -6 

FFF9 PCSTK = -7 

FFF8 LOLINE = -8 

FFF7 HILINE = -9 

FFF6 PAGE = -10 

FFF5 LISTNG = -11 

FFF4 RUNMOD = -12 

FFF3 LABLLO = -13 

FFF2 LABLHI = -14 

FFF1 PILOW = -15 

FFFO P1HIGH = -16 

FFEF LO = -17 

FFEE HI = -18 

FFED FAILLO = -19 

FFEC FAILHI = -20 

FFEB NUM = -21 

FFEA TEMP = -22 

FFE9 TEMP2 = -23 

FFE8 TEMP3 = -24 

FFE7 CHRNUM = -25 

FFE6 RNDF = -26 

FFE5 RNDX = -27 

FFE4 RNDY * -28 


DO-STACK POINTER 
FOR-STACK POINTER 
ARITHMETIC STACK POINTER 
GOSUB STACK POINTER 
I. L. PROGRAM COUNTER 

I. L. CALL STACK POINTER 
CURRENT LINE NUMBER 

VALUE OF CURRENT PAGE 
LISTING FLAG 
RUN/EDIT FLAG 


;SPACE TO SAVE CURSOR 


;SEEDS FOR RANDOM NUMBER 


0055 01 

0056 C400 CLEAR1: 

0058 CA80 

005A AAEA 

005C 01 

005D C434 

005F 60 

0060 9CF4 

0062 C450 

0064 CAFD 

0066 C47A 

0068 CAFF 

006A C46A 

006C CAFC 

006E C4A6 

0070 CAF9 

0072 C48A 

0074 CAFE 


XAE 

LDI 0 

ST EREG < P2) 

ILD TEMP(P2) 

XAE 

LDI 

XRE 

JNZ CLEAR1 

LDI L(AESTK) 

ST LSTK < P2) 

LDI L(DOSTAK) 

ST DOPTR(P2) 

LDI L(SBRSTK) 

ST SBRPTR(P2) 

LDI L < PCSTAK) 

ST PCSTK(P2) 

LDI L(FORSTK) 

ST FORPTR < P2) 


;SET ALL VARIABLES 
; TO ZERO 


;INITIALIZE SOME STACKS: 
; ARITHMETIC STACK, 

; DO/UNTIL STACK, 

; GOSUB STACK, 

i I. L. CALL STACK, 

; FOR/NEXT STACK 


************************************* 
* INTERMEDIATE LANGUAGE EXECUTOR * 
************************************* 


0076 C-2FB 
0078 33 
0079 C2FA 
007B 37 
007C C701 
007E 01 
007F C701 
0081 33 
0082 CAFB 
0084 40 
0085 37 
0086 CAFA 
0088 40 
0089 D4F0 
008B E420 
008D 9836 
008F E4A0 
0091 980D 
0093 E4C0 
0095 9C06 
0097 37 
0098 D40F 
009A 37 
009B 90DF 
009D 3F 
009E 90D6 


EXECIL: LD 

XPAL 

LD 

XPAH 

CHEAT: LD 

XAE 
LD 
XPAL 
ST 
LDE 
XPAH 
ST 
LDE 
AN I 
XRI 
JZ 
XRI 
JZ 
XRI 
JNZ 
XPAH 
AN I 
XPAH 

CHEAT1: JMP 

NOJUMP: XPPC 
JMP 


PCLOW<P2> 
P3 

PCHIGH(P2) 
P3 

ei(P3> 

ei(P3) 

P3 

PCLOW(P2> 
P3 

PCHIGH(P2) 


SET P3 TO CURRENT 
IL PC. 


GET NEW IL INSTRUCTION 
INTO P3 THROUGH 
OBSCURE METHODS 
SIMULTANEOUSLY, INCREMENT 
THE IL PC BY 2 


OFO 

TSTBIT 

TST 

CALBIT!TSTBIT 
ILCALL 

JMPBIT!CALBIT 

NOJUMP 

P3 

OF 

P3 

CHEAT 

P3 

EXECIL 


;CHECK IF IL INSTRUCTION 
i IS A 'TEST' 

; CHECK FOR IL CALL 

iCHECK FOR IL JUMP 

; *** I. L. JUMP *** 
i ALL IT TAKES IS SCRUBBING 
; THE JUMP FLAG OFF OF P3 

; MUST BE AN ML SUBROUTINE 
; IF NONE OF THE ABOVE 


0000 

101C 

1050 

106A 

107A 

108A 

10A6 

10D6 

1120 


ALLOCATION OF RAM FOR NIBL VARIABLES, STACKS, 
AND LIHC BUFFER 

. =01000+28 


VARS: 

AESTK: 

SBRSTK 

DOSTAK 

FORSTK 

PCSTAK 

LBUF: 

PGM: 


=. +52 
=. +26 
=. +16 
= +16 
=. +28 
=. +48 
= +74 
=0 


NIBL VARIABLES A-Z 
ARITHMETIC STACK 
GOSUB STACK 
DO/UNTIL STACK 
FOR/NEXT STACK 
I. L. CALL STACK 
LINE BUFFER 
USER'S PROGRAM 


MACRO LDPI,P, VAL 
. MLOC TEMP 

. SET TEMP,VAL 

LDI -H(TEMP) 

XPAH P 
LDI L(TEMP) 

XPAL P 
. ENDM 


************************************* 
* INITIALIZATION OF NIBL * 

************************************* 


************************************* 
* INTERMEDIATE LANGUAGE CALL * 

************************************* 


OOAO C2F9 
00A2 E4D6 
00A4 9C-04 
00A6 C40A 
00A8 9063 
OOAA E4D6 
OOAC 33 
OOAD CAEA 
OOAF C410 
00B1 37 
00B2 C2FB 
00B4 CF01 
00B6 C2FA 
00B8 CF01 
OOBA C2EA 
OOBC 33 
OOBD CAF9 
OOBF 40 
OOCO D40F 
00C2 37 
00C3 90B7 


ILCALL: LD 
XRI 
JNZ 
LDI 
JMP 

I-LC1: XRI 

XPAL 
ST 
LDI 
XPAH 
LD 
ST 
LD 
ST 
LD 
XPAL 
ST 
LDE 
AN I 
XPAH 
JMP 


PCSTK(P2) 

L < LBUF) 
ILC1 
10 
EOA 

L(LBUF) 

P3 

TEMP(P2) 

H<PCSTAK) 
P3 

PCLOW<P2) 
@1 <P3) 
PCHIGH(P2) 
@1(P3) 

TEMP(P2) 
P3 

PCSTK(P2) 

OF 

P3 

CHEAT 


;CHECK FOR STACK OVERFLOW 


RESTORE ACCUMULATOR 
SAVE LOW BYTE OF NEW 
I. L. PC IN TEMP 
POINT P3 AT I. L. 

SUBROUTINE STACK 
SAVE OLD I. L. PC ON STACK 


GET LOW BYTE OF NEW 
I. L. PC INTO P3 LOW 
UPDATE I. L. STACK POINTER 
GET HIGH BYTE OF NEW P3 
I. L. PC INTO P3 HIGH 


0000 08 
0001 
0007 

OOOD C4FF 

OOOF C900 

0011 C901 

0013 C40D 

0015 C9FF 

0017 C402 

0019 CAF6 

00IB 31 

001C C420 

001E 35 

00IF B902 

0021 01 

0022 Cl80 

0024 E40D 

0026 9802 

0028 BAF6 

002A C420 *0: 

002C 35 ♦LOOP: 

002D C4FF 

002F C900 

0031 C901 

0033 C40D 

0035 C9FF 

0037 35 

0038 02 

0039 F410 

003B E480 

003D 9804 

003F E480 

0041 90E9 

0043 C400 *1: 

0045 CAF4 

0047 CAF5 

0049 C454 

004B CAFB 

004D C40C 

004F CAFA 

0051 C400 CLEAR: 

0053 CAEA 


NOP 

LDPI P2,VARS 

LDPI PI, PGM 

LDI -1 

ST 0(P1) 

ST 1(P1) 

LDI OD 

ST -1(PI) 

LDI 2 

ST PAGE(P2) 

XPAL PI 

LDI 020 

XPAH PI 

DLD 2(PI) 

XAE 

LD EREG(PI) 

XRI OD 

JZ *0 

DLD PAGE < P2) 

LDI 020 

XPAH PI 

LDI -1 

ST (PI) 

ST 1(PI) 

LDI OD 

ST -1(PI) 

XPAH PI 

CCL 

ADI 010 

XRI 080 

JZ *1 

XRI 080 

JMP *LOOP 

LDI 0 

ST RUNMOD(P2) 

ST LISTNG(P2) 

LDI L(BEGIN) 

ST PCLOW(P2) 

LDI H(BEGIN) 

ST PCHIGH(P2) 

LDI 0 

ST TEMP(P2) 


POINT 

POINT 

STORE 


P2 AT VARIABLES 

PI AT PAGE ONE PROGRAM 

-1 AT START OF PROGRAM 


************************************* 
* I. L. 'TEST' INSTRUCTION * 

************************************* 





.LOCAL 



ALSO STORE A DUMMY END-OF-LI 

00C5 CAE7 

TST: 

ST 

CHRNUM(P2> 

CLEAR NUMBER OF CHARS SCANNE 


00C7 C501 

♦SCAN: 

LD 

@1(PI) 

SLEW OFF SPACES 

POINT P2 AT PAGE 2, 

00C9 E420 


XRI 

-• * 


INITIALLY SET PAGE TO 2 

OOCB 98FA 


JZ 

♦SCAN 



OOCD C5FF 


LD 

@-l(PI) 

REPOSITION CURSOR 


OOCF C2FA 


LD 

PCHIGH(P2) 

POINT P3 AT IL TABLE 


00D1 37 


XPAH 

P3 


CHECK IF THERE IS REALLY 

00D2 D40F 


AN I 

OF 

FAIL ADDRESS <- OLD P3 

A PROGRAM IN PAGE 2: 

00D4 CAEC 


ST 

FAILHI(P2) 


IF FIRST LINE LENGTH 

00D6 C2FB 


LD 

PCLOW(P2) 


POINTS TO CARR. RETURN 

00D8 33 


XPAL 

P3 


AT END OF LINE 

00D9 CAED 


ST 

FAILLO(P2) 


IF NOT, PAGE = 1 

OODB C701 

♦LOOP: 

LD 

@1(P3) 



OODD 01 


XAE 


SAVE CHAR FROM TABLE 


CODE BAE7 


DLD 

CHRNUM(P2) 

DECREMENT CHAR COUNT 

STORE -1 IN 2 CONSECUTIVE 

OOEO 40 


LDE 


GET CHAR BACK 

LOCATIONS AT START OF PAGE 

00E1 D47F 


AN I 

07F 

SCRUB OFF FLAG (IF ANY) 


00E3 E501 


XOR 

@1(PI) 

IS CHAR EQUAL TO TEXT CHAR? 

ALSO PUT A DUMMY END-OF-LINE 

00E5 9C07 


JNZ 

♦NEQ 

NO - END TEST 

JUST BEFORE TEXT 

00E7 40 


LDE 


YES - BUT IS IT LAST CHAR? 

UPDATE PI TO POINT TO 

00E8 94F1 


JP 

♦LOOP 

IF NOT, CONTINUE TO COMPARE 

NEXT PAGE (UNTIL PAGE=8) 

OOEA 9090 


JMP 

CHEAT 

IF SO, GET NEXT I. L. 

REPEAT INITIALIZATION 

OOEC 9088 

XO: 

JMP 

EXECIL 

INSTRUCTION 

FOR PAGES 2-7 

OOEE C2E7 

♦NEQ: 

LD 

CHRNUM(P2) 

RESTORE PI TO 


OOFO 01 


XAE 


ORIGINAL VALUE 


OOF1 C580 


LD 

SEREG(Pl) 



00F3 C2ED 


LD 

FAILL0(P2) 

LOAD TEST-FAIL ADDRESS 

CLEAR SOME FLAGS 

OOFS 33 


XPAL 

P3 

INTO P3 


OOF6 C2EC 


LD 

FAILHI(P2) 



OOFS 37 


XPAH 

P3 


INITIALIZE IL PC SO THAT 

00F9 90A0 


JMP 

CHEAT1 

GET NEXT IL INSTRUCTION 


NIBL PROGRAM 
IS EXECUTED IMMEDIATELY 

;************************************* 
; * I. L. SUBROUTINE RETURN * 

i************************************* 


Nov./Dec., 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 39 


336 






















OOFB C410 RTN: 

OOFD 37 

OOFE C2F9 

0100 33 

0101 C7FF 

0103 01 

0104 C7FF 

0106 33 

0107 CAF9 

0109 40 

010A 37 

01OB 908E 

01OB 904! EGA: 


LDI H(PCSTAK) 

XPAH P3 

LD PCSTK(P2) 

XPAL P3 

LD @-l(P3) 

XAE 

LD @-l(P3> 

XPAL P3 

ST PCSTK(P2) 

LDE 

XPAH P3 

■JMP CHEAT 1 

JMP EO 


; POINT P3 AT I. L. PC STACK 

;GET HIGH PART OF OLD PC 
;GET LOW PART OF OLD PC 
; UPDATE IL STACK POINTER 
;P3 NOW HAS OLD IL PC 


; ************************************* 
;* . SAVE GOSUB RETURN ADDRESS * 
;************************************* 


0111 E47A 

0113 981C 

0115 AAFC 

0117 AAFC 

0119 33 

011A C410 

OUC 37 

01 ID C2F4 

01 IF 980A 

0121 35 

0122 CBFF 

0124 35 

0125 31 

0126 CBFE 

0128 31 

0129 90C1 

012B C4FF SAV1: 

012D CBFF 

012F 90BB 

0131 C40A SAV2: 

0133 90IB 


LD SBRPTR(P2) 

XRI L < DOSTAK) 

JZ SAV2 

ILD SBRPTR<P2> 

ILD SBRPTR<P2) 

XPAL P3 

LDI H< SBRSTK) 

XPAH P3 

LD RUNMOD(P2) 

JZ SAV1 

XPAH PI 

ST -1(P3) 

XPAH PI 

XPAL PI 

ST -2(P3) 

XPAL PI 

JMP XO 

LDI -1 

ST —1< P3) 

JMP XO 

LDI 10 

JMP EO 


;CHECK FOR MORE 
; THAN 8 SAVES 


; SET P3 TO 

; SUBROUTINE STACK TOP. 

;IF IMMEDIATE MODE, 

; SAVE NEGATIVE ADDRESS. 
;SAVE HIGH PORTION 
; OF CURSOR 

;SAVE LOW PORTION 
i OF CURSOR 

;RETURN 

;IMMEDIATE MODE 
; RETURN ADDRESS IS 
; NEGATIVE. 

;ERROR. MORE THAN 
; 8 GOSUBS 


************************************* 
* CHECK STATEMENT FINISHED * 

************************************* 


0135 C501 DONE: 

0137 E420 

0139 98FA 

013B E42D 

013D 9804 

013F E437 

0141 9C01 

0143 3F D0NE1: 

0144 C404 D0NE2: 

0146 9008 


LD @1(P1) 

XRI " " 

JZ DONE 

XRI " " ! OD 

JZ D0NE1 

XRI 037 

JNZ D0NE2 

XPPC P3 

LDI 4 

JMP EO 


; SKIP SPACES 


;IS IT CARRIAGE RETURN? 
; YES - RETURN 
i IS CHAR A ": " ? 

; NO - ERROR 
» YES - RETURN 


************************************* 
* RETURN FROM GOSUB * 

************************************* 


0148 C2FC RSTR: LD 

014A E46A XRI 

014C 9C04 JNZ 

014E C409 LDI 

0150 9043 EO: JMP 

0152 BAFC RSTR1: DLD 

0154 BAFC DLD 

0156 33 XPAL 

0157 C410 LDI 

0159 37 XPAH 

015A C301 LD 

015C 9409 JP 

015E C402 JS 

0165 9085 XI: JMP 

0167 35 RSTR2: XPAH 
0168 C300 LD 

016A 31 XPAL 

016B C401 LDI 

016D CAF4 ST 

016F 90F4 JMP 


SBRPTR < P2> 
L(SBRSTK) 
RSTR1 
9 
El 

SBRPTR(P2) 
SBRPTR<P2) 
P3 

H(SBRSTK) 
P3 

1 < P3) 

RSTR2 
P3, FIN 
XO 
PI 

0< P3) 

PI 

1 

RUNMOD < P2) 
XI 


; CHECK FOR RETURN 
; W/0 GOSUB. 

; GOTO ERROR. 

;POP GOSUB STACK, 

; PUT PTR INTO P3. 


IF ADDRESS NEGATIVE, 
SUBROUTINE WAS CALLED 
IN IMMEDIATE MODE, 

SO FINISH UP EXECUTING 
RESTORE CURSOR HIGH 

RESTORE CURSOR LOW 
SET RUN MODE 


;************************************* 
;* TRANSFER TO NEW STATEMENT * 


;************************************* 


THIS ROUTINE IS BASED ON DENNIS ALLISON"S BINARY TO DECIMAL 
CONVERSION ROUTINE IN VOL. 1, #1 OF "DR. DOBS'-S JOURNAL", 
BUT IS MUCH MORE OBSCURE BECAUSE OF THE STACK MANIPULATION. 


0197 C410 PRN: 
0199 37 
019A AAFD 
019C AAFD 
019E 33 
019F C40A 
01A1 CBFE 
01A3 C400 
01A5 CBFF 
01A7 C405 
01A9 CAE7 
01AB C4FF 
01AD CB05 
01AF C3FD 
01B1 9413 
01B3 C42D 
01B5 CB04 
01B7 C400 
01B9 03 
01BA FBFC 
01BC CBFC 
01BE C400 
01C0 FBFD 
01C2 CBFD 
01C4 909F 
01C6 C420 *1: 

01C8 CB04 
01CA 9099 X4: 

01CC 9057 E2: 


. LOCAL 

LDI H(AESTK) 

XPAH P3 

ILD LSTK < P2) 

ILD LSTK(P2 > 

XPAL P3 

LDI 10 

ST -2 < P3) 

LDI 0 

ST -1(P3) 

LDI 5 

ST CHRNUM(P2) 

LDI -1 

ST 5(P3) 

LD -3<P3) 

JP *1 

LDI 

ST 4(P3) 

LDI 0 

SCL 

CAD -4<P3) 

ST -4(P3) 

LDI 0 

CAD -3(P3) 

ST —3(P3) 

JMP XI 

LDI - ' 

ST 4(P3) 

JMP XI 

JMP ERR1 


; POINT P3 AT A. E. STACK 


;PUT 10 ON STACK <WE"LL BE 
; DIVIDING BY IT LATER) 


> SET CHRNUM TO POINT TO PLACE 
; IN STACK WHERE WE STORE 
; THE CHARACTERS TO PRINT 
;FIRST CHAR IS A FLAG <-l) 

;CHECK IF NUMBER IS NEGATIVE 

;PUT ON STACK, AND NEGATE 
; THE NUMBER 


GO DO DIVISION BY 10 
IF POSITIVE, PUT " " ON 
STACK BEFORE DIVISION 


; THE DIVISION IS PERFORMED, 
; TO PRN1, WHICH FOLLOWS. 


THEN CONTROL IS TRANSFERRED 


01CE AAFD PRN1: 

01DO AAFD 

01D2 31 

01D3 C410 

01D5 35 

01D6 AAE7 

01D8 01 

01D9 C101 

01DB DC30 

01DD C980 

01DF C1FD 

01E1 D9FC 

01E3 9S0A 

01E5 C40F 

01E7 CAFA 

01E9 C42F 

01EB CAFB 

01ED 90DB 

01EF 4PRNT: 

01F5 C2F5 

01F7 9C06 

01F9 Cl04 

01FB 3F 

01FC C2E7 

01FE 01 

01FF C580 $2: 

0201 C100 

0203 3F *LOOP: 

0204 C5FF 

0206 94FB 

0208 C450 

020A CAFD 

020C C2F5 

020E 9CBA 

0210 C420 

0212 3F 

0213 90B5 


ILD LSTK < P2) 

ILD LSTK(P2) 

XPAL PI 

LDI H(AESTK) 

XPAH PI 

ILD CHRNUM(P2) 

XAE 

LD 1<P1> 

ORI "0" 

ST EREG(Pl) 

LD -3(P1) 

OR -4(P1) 

JZ *PRNT 

LDI H(PRNUMl) 

ST PCHIGH < P2) 

LDI L(PRNUMl) 

ST PCLOW(P2) 

JMP X4 

LDPI P3,PUTC-1 

LD LISTNG(P2) 

JNZ *2 

LD 4(PI) 

XPPC P3 

LD CHRNUM(P2) 

XAE 

LD @EREG(P1) 

LD (PI) 

XPPC P3 

LD @-l(Pl) 

JP 4L00P 

LDI L(AESTK) 

ST LSTK< P2) 

LD LISTNG(P2) 

JNZ X4 

LDI ' ' 

XPPC P3 

JMP X4 


; POINT PI AT A. E. STACK 


INCREMENT CHARACTER STACK 
POINTER, PUT IN EX. REG. 
GET REMAINDER FROM DIVIDE, 

PUT IT ON THE STACK 
IS THE QUOTIENT ZERO YET? 

YES - GO PRINT THE NUMBER 
NO - CHANGE THE I. L. PC 
SO THAT DIVIDE IS 
PERFORMED AGAIN 

GO DO DIVISION BY 10 AGAIN 
POINT P3 AT PUTC ROUTINE 
IF LISTING, SKIP PRINTING 
LEADING SPACE 
PRINT EITHER 
OR LEADING SPACE 
GET EX. REG. VALUE BACK 

POINT P3 AT FIRST CHAR 
TO BE PRINTED 
PRINT THE CHARACTER 
GET NEXT CHARACTER 
REPEAT UNTIL = -1 

CLEAR THE A. E. STACK 
PRINT A TRAILING SPACE 
IF NOT LISTING PROGRAM 


i************************************* 

;* CARRIAGE RETURN/LINE FEED * 

; ************************************* 


0215 NLINE: 

02IB C40D 
02ID 3F 
02IE C40A 
0220 3F 

0221 90A7 X5: 


LDPI P3,PUTC-1 

LDI OD 

XPPC P3 

LDI OA 

XPPC P3 

JMP X4 


.POINT P3 AT PUTC ROUTINE 
; CARRIAGE RETURN 

;LINE FEED 


0171 C2F2 
0173 9404 
0175 C408 
0177 901C 
0179 C401 
017B CAF4 
017D 3F 


017E 

0184 C501 
0186 E422 
0188 98DB 
018A E42F 
018C 9805 
018E E40D 
0190 3F 
0191 90EB 
0193 C407 
0195 9035 


XFER: LD 

JP 
LDI 
JMP 

XFER1: LDI 

ST 
XPPC 


LABLHI(P2) 
XFER1 
8 
El 
1 

RUNMOD(P2) 
P3 


;CHECK FOR NON-EXISTENT LINE 


;SET RUN MODE TO 1 


■, ************************************* 
;* PRINT STRING IN TEXT * 

;************************************* 


PRS: LDPI 

LD 
XRI 
JZ 
XRI 
JZ 
XRI 
XPPC 
JMP 

PRS1: LDI 

El: JMP 


P3,PUTC-1 
@1<P1) 

XI 

02F 

PRS1 

OD 

P3 

PRS 

7 

E2 


; POINT P3 AT PUTC ROUTINE 
; LOAD NEXT CHAR 
;IF ", END OF 
; STRING 
; IF CR, ERROR 

;RESTORE CHAR 
;PRINT CHAR 
;GET NEXT CHAR 
;SYNTAX ERROR 


;************************************* 
;* PRINT NUMBER ON STACK * 

;************************************* 


0223 C405 
0225 CAEB 
0227 C2EB 
0229 CAEA 
022B 

0231 C40D 
0233 3F 
0234 C40A 
0236 3F 
0237 

023D BAEB 
023F 9806 
0241 C501 
0243 94FC 
0245 90F6 
0247 C501 
0249 3F 
024A C1FF 
024C 94F9 
024E C2EA 
0250 E40E 
0252 980D 
0254 

025A C501 
025C 3F 
025D C1FF 


************************************* 
* ERROR ROUTINE * 

************************************* 


ERR: 
ERR1: 
ERR2: 


* 1 : 

♦LOOP: 


♦ 2 : 


. LOCAL 

LDI 5 

ST NUM(P2) 

LD NUM(P2) 

ST TEMP(P2) 

LDPI P3,PUTC-1 
LDI OD 

XPPC P3 

LDI OA 

XPPC P3 

LDPI Pl.MESGS 

DLD NUM < P2) 

JZ *MSG 

LD ei(Pl) 

JP SLOOP 

JMP SI 

LD ei(Pl) 

XPPC P3 

LD -1(P1) 

JP SMSG 

LD TEMP(P2) 

XRI 14 

JZ S3 

LDPI Pl.MESGS 

LD ei(Pl) 

XPPC P3 

LD -1(P1) 


;SYNTAX ERROR 
;SAVE ERROR # 


;POINT P3 AT PUTC 
iPRINT CR/LF 


PI -> ERROR MESSAGES 
IS THIS THE RIGHT MESSAGE? 
YES - GO PRINT IT 
NO - SCAN THROUGH TO 
NEXT MESSAGE 

GET MESSAGE CHAR 
PRINT IT 
IS MESSAGE DONE? 

NO - GET NEXT CHAR 

WAS THIS A BREAK MESSAGE? 

YES - SKIP PRINTING "ERROR" 
NO - PRINT "ERROR" 

GET CHARACTER 
PRINT IT 
DONE? 


Page 40 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Nov./Dec., 1976 


337 





















025F 

94F9 


JP 

*2 

NO - REPEAT LOOP 

0329 3F 


XPPC 

P3 


0261 

C2F4 

$3: 

LD 

RUNMOD(P2) 

DON'T PRINT LINE # 

032A 02 


CCL 



0263 

984D 


JZ 

FIN 

IF IMMEDIATE MODE 

032B C447 


LDI 

L(LIST3) 


0265 

C420 


LDI 



032D CAFB 


ST 

PCLOW < P2) 


0267 

3F 


XPPC 

P3 ;SPACE 

032F C40C 


LDI 

HCLIST3) 


0268 

C441 


LDI 

A" ; AT 

0331 CAFA 


ST 

PCHIGH(P2) 


026A 

3F 


XPPC 

P3 


0333 90AC 


JMP 

LST 

; GET NEXT LINE 

026B 

C454 


LDI 

'T' 







026D 

3F 


XPPC 

P3 







026E 

C410 


LDI 

H(AESTK) 

POINT P3 AT A. E. STACK 


******** ****** 

*********************** 

0270 

37 


XPAH 

P3 



* 

ADD 

AND SUBTRACT 

* 

0271 

AAFD 


ILD 

LSTK(P2) 



«##«*##**#»»»#*#****##*****«•**#****» 

0273 

AAFD 


ILD 

LSTK(P2) 







0275 

33 


XPAL 

P3 


0335 C410 ADD: 

LDI 

H(AESTK) 

i SET P3 TO CURRENT - 

0276 

C2F7 


LD 

HILINE<P2) 

GET HIGH BYTE OF LINE # 

0337 37 


XPAH 

P3 

; STACK LOCATION 

0278 

CBFF 


ST 

-KPS) 

PUT ON STACK 

0338 BAFD 


DLD 

LSTK(P2) 


027A 

C2F8 


LD 

L0LINE(P2) 

GET LOW BYTE OF LINE # 

033A BAFD 


DLD 

LSTK(P2) 


027C 

CBFE 


ST 

-2(P3> 

PUT ON STACK 

033C 33 


XPAL 

P3 


027E 

C42D 


LDI 

L < ERRNUM) 

GO TO PRN 

033D 02 


CCL 



0280 

CAFB 


ST 

PCLOW<P2) 


033E C3FE 


LD 

-2(P3) 

iREPLACE TWO TOP ITEMS 

0282 

C40E 


LDI 

H<ERRNUM) 


0340 F300 


ADD 

0 (P3) 

; ON STACK BY THEIR SUM 

0284 

CAFA 


ST 

PCHIGH(P2) 


0342 CBFE 


ST 

—2(P3) 


0286 

9099 

X5A: 

JMP 

X5 


0344 C3FF 


LD 

-1(P3) 








0346 F301 


ADD 

1 <P3) 








0348 CBFF 


ST 

-1<P3) 




; ************************************* 

034A 90BE 

X7: 

JMP 

X6A 




i * 

BREAK, 

NXT, FIN, & STRT 

* 








, ************************************** 

034C C410 SUB: 

LDI 

H(AESTK) 

iSET P3 TO CURRENT 







034E 37 


XPAH 

P3 

j STACK LOCATION 

0288 

C40E 

BREAK: 

LDI 

14 


034F BAFD 


DLD 

LSTK(P2) 


028A 

9099 

E3A: 

JMP 

ERR1 


0351 BAFD 


DLD 

LSTK(P2) 







*** NEXT STATEMENT *** 

0353 33 


XPAL 

P3 


028C 

C2F4 

NXT: 

LD 

RUNMOD(P2) 

IF IN IMMED. MODE, 

0354 03 


SCL 



028E 

9822 


JZ 

FIN 

STOP EXECUTION 

0355 C3FE 


LD 

—2(P3) 

;REPLACE TWO TOP ITEMS 

0290 

C100 


LD 

(PI) 

IF WE HIT END OF FILE, 

0357 FBOO 


CAD 

0(P3) 

; ON STACK BY THEIR DIFFERE 

0292 

D480 


ANI 

080 

FINISH UP THINGS 

0359 CBFE 


ST 

-2(P3) 


0294 

9C1C 


JNZ 

FIN 


035B C3FF 


LD 

-1(P3) 


0296 

06 


CSA 


BREAK IF SOMEONE IS 

035D FB01 


CAD 

1 (P3) 


0297 

D420 


ANI 

020 

TYPING ON THE CONSOLE 

035F CBFF 


ST 

—1(P3) 


0299 

98ED 


JZ 

BREAK 


0361 90A7 


JMP 

X6A 


029B 

C1FF 


LD 

-1(PI) 

GET LAST CHARACTER SCANNED 






029B 

E40D 


XRI 

OD 

WAS IT CARRIAGE RETURN? 






029F 

9C08 


JNZ 

NXT 1 

YES - SKIP FOLLOWING UPDATES 


************************************* 

02 A1 

C501 


LD 

ei(Pi) 

GET HIGH BYTE OF NEXT LINE # 


* 

NEGATE 

* 

02A3 

CAF7 


ST 

HILINE(P2) 

SAVE IT 


************************************* 

02A5 

C502 


LD 

62(PI) 

GET LOW BYTE OF LINE #, SKIP 






02A7 

CAF8 


ST 

LOLINE(P2) 

LINE LENGTH BYTE 

0363 C410 NEG: 

LDI 

H(AESTK) 

> SET P3 TO CURRENT 

02A9 

C40C 

NXT1: 

LDI 

H(STMT) 

GO TO 'STMT' IN IL TABLE 

0365 37 


XPAH 

P3 

i STACK LOCATION 

02AB 

CAFA 


ST 

PCHIGH(P2) 


0366 C2FD 


LD 

LSTK(P2) 


02AD 

C482 


LDI 

L(STMT) 


0368 33 


XPAL 

P3 


02AF 

CAFB 


ST 

PCLOW(P2) 


0369 03 


SCL 



02B1 

3F 


XPPC 

P3 


036A C400 


LDI 

0 







*** FINISH EXECUTION *** 

036C FBFE 


CAD 

-2 < P3) 

iNEGATE TOP ITEM ON STACK 

02B2 

C400 

FIN: 

LDI 

0 

036E CBFE 


ST 

-2<P3) 


02B4 

CAF4 


ST 

RUNMOD(P2) 

CLEAR RUN MODE 

0370 C400 


LDI 

0 


02B6 

C450 


LDI 

L(AESTK) 

CLEAR ARITHMETIC STACK 

0372 FBFF 


CAD 

-1(P3) 


02B8 

CAFD 


ST 

LSTK(P2) 


0374 CBFF 


ST 

-1(P3) 


02BA 

C41S 


LDI 

L(START) 

SET IL PC TO GETTING LINES 

0376 90D2 

X8: 

JMP 

X7 


02BC 

CAFB 


ST 

PCLOW(P2) 


0378 9092 

E6: 

JMP 

E5 


02BE 

C40C 


LDI 

H (STAR'i ; 







02C0 

CAFA 


ST 

PCHIGH(P2) 







02C2 

C4A6 


LDI 

L(PCSTAK) 



************************************* 

02C4 

CAF9 


ST 

PCSTK(P2) 



* 

MULTIPLY 

» 

02C6 

90BE 


JMP 

X5A 



************************************* 






*** START EXECUTION *** 






02C8 

AAF4 

STRT: 

ILD 

RUNMOD(P2) 

RUN MODE = 1 



. LOCAL 



02CA 

C2E9 


LD 

TEMP2(P2) 

POINT CURSOR TO 

037A C410 MUL: 

LDI 

H(AESTK) 

iSET P3 TO CURRENT 

02CC 

35 


XPAH 

PI 

START OF NIBL PROGRAM 

037C 37 


XPAH 

P3 

; STACK LOCATION 

02CD 

C2E8 


LD 

TEMP3(P2) 


037D C2FD 


LD 

LSTMP2) 


02CF 

31 


XPAL 

PI 


037F 33 


XPAL 

P3 

;DETERMINE SIGN OF PRODUCT 

02D0 

C46A 


LDI 

L(SBRSTK) 

EMPTY SOME STACKS: 

0380 C3FF 


LD 

-1(P3) 

i SAVE IN TEMP(P2) 

02D2 

CAFC 


ST 

SBRPTR(P2) 

GOSUB STACK, 

0382 E3FD 


XOR 

-3(P3) 


02D4 

C48A 


LDI 

L(FORSTK) 


0384 CAEA 


ST 

TEMP(P2) 


02D6 

CAFE 


ST 

FORPTR(P2) 

FOR STACK 

0386 C3FF 


LD 

-1(P3) 

iCHECK FOR NEGATIVE 

02D8 

C47A 


LDI 

L(DOSTAK) 


0388 940D 


JP 

*1 

i MULTIPLIER 

02DA 

CAFF 


ST 

D0PTR(P2) 

& DO/UNTIL STACK 

038A 03 


SCL 



02 DC 

3F 


XPPC 

P3 

RETURN 

038B C400 


LDI 

0 

iIF NEGATIVE, 

02DD 

90A7 

X6: 

JMP 

X5A 


038D FBFE 


CAD 

—2(P3) 

i NEGATE 

02DF 

90A9 

E4: 

JMP 

E3A 


038F CBFE 


ST 

-2(P3) 








0391 C400 


LDI 

0 








0393 FBFF 


CAD 

-1(P3) 




; ************************************* 

0395 CBFF 


ST 

-1(P3) 




; * 

LIST 

NIBL PROGRAM 

* 

0397 C3FD 

*1: 

LD 

-3(P3) 

» CHECK FOR NEGATIVE 



; ************************************* 

0399 940D 


JP 

*2 

i MULTIPLICAND 







039B 03 


SCL 



02E1 

C100 

LST: 

LD 

(PI) 

CHECK FOR END OF FILE 

039C C400 


LDI 

0 

i IF NEGATIVE, 

02E3 

E480 


XRI 

080 


039E FBFC 


CAD 

-4(P3) 

i NEGATE 

02E5 

9418 


JP 

LST2 


03AO CBFC 


ST 

-4(P3) 


02E7 

C410 


LDI 

H(AESTK) 

GET LINE NUMBER ONTO STACK 

03A2 C400 


LDI 

0 


02E9 

37 


XPAH 

P3 


03A4 FBFD 


CAD 

-3 (P3) 


02EA 

AAFD 


ILD 

LSTK(P2) 


03A6 CBFD 


ST 

-3 < P3) 


02EC 

AAFD 


ILD 

LSTK(P2) 


03A8 C400 

*2: 

LDI 

0 

i CLEAR WORKSPACE 

02EE 

33 


XPAL 

P3 


03AA CBOO 


ST 

0(P3) 


02EF 

C501 


LD 

ei(Pi) 


03AC CB01 


ST 

1 (P3) 


02F1 

CBFF 


ST 

-1(P3) 


03AE CB02 


ST 

2(P3) 


02F3 

C501 


LD 

ei(Pi) 


03B0 CB03 


ST 

3(P3) 


02F5 

CBFE 


ST 

-2(P3) 


03B2 C410 


LDI 

16 

»SET COUNTER TO 16 

02F7 

C501 


LD 

61(PI) 

SKIP OVER LINE LENGTH 

03B4 CAEB 


ST 

NUM(P2) 


02F9 

C401 


LDI 

1 


03B6 C3FF 

SLOOP: 

LD 

-KPS) 

i ROTATE MULTIPLIER 

02FB 

CAF5 


ST 

LISTNG(P2) 

SET LISTING FLAG 

03B8 IF 


RRL 


; RIGHT ONE BIT 

02FD 

90DE 


JMP 

X6 

GO PRINT LINE NUMBER 

03B9 CBFF 


ST 

-KP3) 


02FF 

C400 

LST2: 

LDI 

0 


03BB C3FE 


LD 

-2(P3) 


0301 

CAF5 


ST 

LISTNG(P2) 

CLEAR LISTING FLAG 

03BD IF 


RRL 



0303 

C402 


JS 

P3,NXT 

GO TO NXT 

03BE CBFE 


ST 

-2(P3) 


030A 

90D1 

X6A: 

JMP 

X6 


03C0 06 


CSA 


;CHECK FOR CARRY BIT 

030C 

90D1 

E5: 

JMP 

E4 


03C1 9411 


JP 

*3 

i IF NOT SET, DON'T DO ADD 

030E 


LST3: 

LDPI 

P3,PUTC-1 

POINT P3 AT PUTC 

03C3 02 


CCL 



0314 

06 

LST4: 

CSA 



03C4 C302 


LD 

2(P3) 

i ADD MULTIPLICAND 

0315 

D420 


ANI 

020 


03C6 F3FC 


ADD 

—4(P3) 

; INTO WORKSPACE 

0317 

98E6 


JZ 

LST2 

IF TYPING, STOP 

03C8 CB02 


ST 

2(P3) 


0319 

C501 


LD 

61(P1) 

GET NEXT CHAR 

03CA C303 


LD 

3(P3) 


03 IB 

E40D 


XRI 

OD 

TEST FOR CR 

03CC F3FD 


ADD 

-3(P3) 


031D 

9805 


JZ 

LST5 


03CE CB03 


ST 

3(P3) 


03 IF 

E40D 


XRI 

OD 

GET CHARACTER 

03D0 9002 


JMP 

*3 


0321 

3F 


XPPC 

P3 

PRINT CHARACTER 

03D2 90A4 

E6A: 

JMP 

E6 


0322 

90F0 


JMP 

LST4 


03D4 02 

S3: 

CCL 



0324 

C40D 

LST5: 

LDI 

OD 

CARRIAGE RETURN 

03D5 C303 


LD 

3(P3) 

;SHIFT WORKSPACE RIGHT BY 

0326 

3F 


XPPC 

P3 


03D7 IF 


RRL 



0327 

C40A 


LDI 

OA 

LINE FEED 

03D8 CB03 


ST 

3(P3) 







03DA C302 


LD 

2(P3) 



Nov./Dec., 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 41 


338 












03DC IF 
03DD CB02 
03DF C301 
03E1 IF 
03E2 CB01 
03E4 C300 
03E6 IF 
03E7 CBOO 
03E9 BAEB 
03EB 9CC9 
03ED 9002 
03EF 9085 
03F1 C2EA 
03F3 940D 
03F5 03 
03F6 0400 
03F8 FBOO 
03FA CBOO 
03FC C400 
03FE FB01 
0400 CB01 
0402 0300 
0404 OBFC 
0406 0301 
0408 CBFB 
040A BAFB 
0400 BAFD 
040E 90DF 


0410 0410 
0412 37 
0413 C2FD 
0415 33 
0416 C3FF 
0418 BBFE 
041A 9004 
0410 C40D 
04IE 90B2 
0420 C3FD 
0422 E3FF 
0424 CAEA 
0426 C3FD 
0428 9411 
042A 0400 
0420 03 
042B FBFC 
042F CB03 
0431 0400 
0433 FBFD 
0435 CB02 
0437 900A 
0439 90B4 
043B C3FD 
043D CB02 
043F C3FC 
0441 CB03 
0443 C3FF 
0445 940D 
0447 0400 
0449 03 
044A FBFE 
0440 CBFE 
044E 0400 
0450 FBFF 
0452 CBFF 
0454 0400 
0456 CB01 
0458 CBOO 
045A CAEB 
0450 CBFD 
045E CBFC 
0460 02 
0461 C3FC 
0463 F3FC 
0465 CBFC 
0467 C3FD 
0469 F3FD 
046B CBFD 
046D 02 
046E 0303 
0470 F303 
0472 CB03 
0474 0302 
0476 F302 
0478 CB02 
047A 0301 
0470 F301 
047E CB01 
0480 0300 
0482 F300 
0484 CBOO 
0486 03 
0487 C301 
0489 FBFE 
048B CB01 
048D 0300 
048F FBFF 
0491 CBOO 
0493 9411 
0495 02 
0496 0301 
0498 F3FE 
049A CB01 
0490 0300 
049E F3FF 
04A0 CBOO 
04A2 9008 
04A4 9093 
04A6 C3FC 
04A8 DC01 
04AA CBFC 
04AC AAEB 
04AE E410 
04B0 9CAE 


RRL 

ST 

LD 

RRL 

ST 

LD 

RRL 

ST 

DLD 

JNZ 

JMP 

X9: JMP 

$4: LD 

JP 
SOL 
LDI 
CAD 
ST 
LDI 
CAD 
ST 

♦EXIT: LD 

ST 
LD 
ST 
DLD 
DLD 
JMP 


2<P3) 

KPS) 

1 <P3) 
0(P3) 

0(P3) 

NUM(P2) 

♦LOOP 

♦4 

X8 

TEMP < P2) 
♦EXIT 

0 

0(P3) 

0(P3) 

0 

1 <P3) 
KPS) 
0(P3) 

-4(P3) 
KP3) 
-3(P3) 
LSTK(P2) 
LSTK(P2) 
X9 


;DECREMENT COUNTER 
;LOOP IF NOT ZERO 


;CHECK SIGN WORD 
;IF BIT7 = 1, NEGATE PRODUCT 


;PUT PRODUCT ON TOP 
; OF STACK 


iSUBTRACT 2 FROM 
; LSTK 


;************************************* 
;* DIVIDE * 


i ************************************* 


DIV: 


♦0: 


X9A: 

♦POS: 


♦ 1: 


♦ 2 : 


♦LOOP: 


X9B: 

♦ENT1: 


♦3: 


. LOCAL 

LDI H(AESTK) 

XPAH P3 

LD LSTK(P2) 

XPAL P3 

LD -1<P3) 

OR -2(P3) 

JNZ ♦O 

LDI 13 

JMP E6A 

LD -3(P3) 

XOR -1(P3) 

ST TEMP < P2) 

LD -3<P3) 

JP ♦POS 

LDI 0 

SOL 

CAD -4(P3) 

ST 3<P3) 

LDI 0 

CAD —3(P3) 

ST 2<P3) 

JMP $1 

JMP X9 

LD -3<P3) 

ST 2(P3) 

LD -4<P3) 

ST 3(P3) 

LD -1<P3) 

JP *2 

LDI 0 

SOL 

CAD -2(P3) 

ST -2<P3> 

LDI 0 

CAD -KP3) 

ST -1(P3) 

LDI 0 

ST 1(P3) 

ST 0(P3) 

ST NUM(P2) 

ST -3(P3) 

ST -4<P3) 

CCL 

LD -4<P3) 

ADD -4(P3) 

ST -4(P3) 

LD -3 < P3) 

ADD -3(P3) 

ST -3 < P3) 

CCL 

LD 3(P3) 

ADD 3<P3) 

ST 3(P3) 

LD 2(P3) 

ADD 2(P3) 

ST 2(P3) 

LD KPS) 

ADD 1(P3) 

ST 1< P3) 

LD <P3) 

ADD (P3) 

ST (P3) 

SCL 

LD 1<P3) 

CAD -2(P3) 

ST 1<P3) 

LD <P3) 

CAD -1(P3) 

ST (P3) 

JP fENTl 

CCL 

LD 1(P3) 

ADD -2(P3) 

ST 1(P3) 

LD (P3) 

ADD -KPS) 

ST <P3) 

JMP ^3 

JMP X9A 

LD -4(P3) 

OR I 1 

ST -4(P3) 

ILD NUM < P2) 

XRI 16 

JNZ ♦LOOP 


; CHECK FOR DIVISION BY 0 


SAVE SIGN OF QUOTIENT 
IS DIVIDEND POSITIVE? 
YES - JUMP 


NO - NEGATE DIVIDEND, 
STORE IN RIGHT HALF 
OF 32-BIT ACCUMULATOR 


;STORE NON-NEGATED DIVIDEND 
; IN 32-BIT ACCUMULATOR 


;CHECK FOR NEGATIVE DIVISOR 
i NEGATE DIVISOR 


;PUT ZERO IN: 

; LEFT HALF OF 32-BIT ACC, 


; THE COUNTER, AND 
; IN THE DIVIDEND, NOW USED 
; STORE THE QUOTIENT 
;BEGIN MAIN DIVIDE LOOP: 
i SHIFT QUOTIENT LEFT, 


SHIFT 32-BIT ACC LEFT, 


SUBTRACT DIVISOR INTO 
LEFT HALF OF ACC, 


IF RESULT IS NEGATIVE, 
RESTORE ORIGINAL CONTENTS 
OF ACC BY ADDING DIVISOR 


ELSE IF RESULT POSITIVE, 
RECORD A 1 IN QUOTIENT 
W/0 RESTORING THE ACC 
INCREMENT THE COUNTER 
ARE WE DONE? 

LOOP IF NOT DONE 


04B2 C2EA 
04B4 940D 
04B6 C400 
04B8 03 
04B9 FBFC 
04BB CBFC 
04BD C400 
04BF FBFD 
04C1 CBFD 
04C3 BAFD 
04C5 BAFD 
04C7 90DB 


04C9 C410 
04CB 37 
04CC C2FD 
04CE 33 
04CF C7FD 
04D1 01 
04D2 C301 
04D4 CA80 
04D6 02 
04D7 40 
04D8 F401 
04DA 01 
04DB C302 
04DD CA80 
04DF 33 
04EO CAFD 
04E2 C400 


04E9 C501 
04EB E420 
04ED 98FA 
04EF C1FF 
04F1 03 
04F2 FC5B 
04F4 9405 
04F6 03 
04F7 FCE6 
04F9 9412 
04FB C5FF 
04FD C2FB 
04FF 33 
0500 C2FA 
0502 37 
0503 C300 
0505 CAFA 
0507 C301 
0509 CAFB 
050B 90D5 
050D 01 
050E Cl00 
0510 03 
0511 FC5B 
0513 9405 
0515 03 
0516 FCE6 
0518 94E1 
051A C410 
051C 37 
05ID AAFD 
05IF 33 
0520 02 
0521 40 
0522 70 
0523 CBFF 
0525 C402 
0527 02 
0528 F2FB 
052A CAFB 
052C C400 
052E F2FA 
0530 CAFA 
0532 90AE 


0534 C410 
0536 37 
0537 AAFD 
0539 33 
053A C3FE 
053C 01 
053D C280 
053F CBFE 
0541 02 
0542 40 
0543 F401 
0545 01 
0546 C280 
0548 CBFF 
054A 9096 


054C C401 
054E 9012 
0550 C402 
0552 900E 
0554 C403 
0556 900A 
0558 C404 
055A 9006 


LD 

JP 

LDI 

SCL 

CAD 

ST 

LDI 

CAD 

ST 

♦END: DLD 

DLD 
JMP 


TEMP(P2) 

♦END 

0 

-4(P3) 

-4<P3) 

0 

-3(P3) 
-3(P3) 
LSTK(P2) 
LSTK(P2) 
X9B 


;CHECK THE QUOTIENT'S SIGN. 
; NEGATING IF NECESSARY 


; DECREMENT THE STACK POINTER, 
; AND EXIT 


************************************* 
* STORE VARIABLE * 

************************************* 


STORE: LDI 

XPAH 
LD 
XPAL 
LD 
XAE 
LD 
ST 
CCL 
LDE 
ADI 
XAE 
LD 
ST 
XPAL 
ST 

X10: JS 


H< AESTK) 
P3 

LSTK(P2) 
P3 

®-3<P3) 

1(P3) 

EREG(P2) 


2<P3) 

EREG < P2) 
P3 

LSTK(P2) 
P3,EXECIL 


» SET P3 TO STACK 


GET VARIABLE INDEX 
PUT IN E REG 

STORE LOWER 8 BITS 
INTO VARIABLE 
INCREMENT INDEX 


STORE UPPER 8 BITS 
INTO VARIABLE 
UPDATE STACK POINTER 


************************************* 
* TEST FOR VARIABLE IN TEXT * 
************************************* 


TSTVAR: 


♦FAIL: 


♦MAYBE: 


♦OK: 


LD 

XRI 

JZ 

LD 

SCL 

CAI 

JP 

SCL 

CAI 

JP 

LD 

LD 

XPAL 

LD 

XPAH 

LD 

ST 

LD 

ST 

JMP 

XAE 

LD 

SCL 

CAI 

JP 

SCL 

CAI 

JP 

LDI 

XPAH 

ILD 

XPAL 

CCL 

LDE 

ADE 

ST 

LDI 

CCL 

ADD 

ST 

LDI 

ADD 

ST 

JMP 


ei(Pi) 

TSTVAR 
—1(PI) 

'Z' + l 
♦FAIL 

'A'-'Z1 

♦MAYBE 
e-l(Pl) 
PCL0W(P2) 
P3 

PCHIGH< P2) 

P3 

<P3> 

PCHIGH(P2) 

KPS) 

PCLOW(P2) 
X10 

(PI) 

'Z' + l 
♦OK 

'A'-'Z'—1 
♦FAIL 
H<AESTK) 

P3 

LSTK(P2) 
P3 


—1(P3) 

2 

PCLOW<P2) 
PCLOW<P2) 

0 

PCHIGH(P2) 

PCHIGH(P2) 

X10 


; SLEW OFF SPACES 

;GET CHARACTER IN QUESTION 

;SUBTRACT 'Z'+l 
; NOT VARIABLE IF POSITIVE 

; SUBTRACT 'A' 
i IF POS, MAY BE VARIABLE 
;BACKSPACE CURSOR 
i GET TEST-FAIL ADDRESS 
; FROM I. L. TABLE, PUT IT 
; INTO I. L. PROGRAM COUNTER 


SAVE VALUE (0-25) 

CHECK FOLLOWING CHAR 
MUST NOT BE A LETTER 
OTHERWISE WE'D BE LOOKING 
AT A KEYWORD, NOT VARIABLE 


i SET P3 TO CURRENT 
i STACK LOCATION 
;INCR STACK POINTER 

> DOUBLE VARIABLE INDEX 


PUT INDEX ON STACK 
INCREMENT I. L. PC, SKIPPING 
OVER TEST-FAIL ADDRESS 


* IND — EVALUATE A VARIABLE * 
************************************* 


LDI H(AESTK) 

XPAH P3 

ILD LSTK(P2) 

XPAL P3 

LD -2(P3) 

XAE 

LD EREG(P2) 

ST -2(P3) 

CCL 
LDE 

ADI 1 

XAE 

LD EREG(P2) 

ST -1(P3) 

JMP X10 


»SET P3 TO STACK 


; GET INDEX OFF TOP 
;PUT INDEX IN E REG 
;GET LOWER 8 BITS 
,SAVE ON STACK 

;INCREMENT E REG 


GET UPPER 8 BITS 
SAVE ON STACK 


************************************* 
* RELATIONAL OPERATORS * 

************************************* 


EQ: 

NEQ: 

LSS: 

LEQ: 


LDI 

JMP 

LDI 

JMP 

LDI 

JMP 

LDI 

JMP 


CMP 

2 

CMP 

3 

CMP 

4 

CMP 


;EACH RELATIONAL OPERATOR 
; LOADS A NUMBER USED LATER 
; AS A CASE SELECTOR, AFTER 
; THE TWO OPERANDS ARE COM- 
; PARED. BASED ON THE COM- 
; PARISON, FLAGS ARE SET THAT 
; ARE EQUIVALENT TO THOSE SET 
; BY THE 'CMP' INSTRUCTION IN 


Page 42 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Nov./Dec., 1976 


339 


















055C C405 

GTR: 

LDI 

5 

THE PDP-11. THESE PSEUDO¬ 

062A 

E4FF 


XRI 

OFF 



055E 9002 


JMP 

CMP 

FLAGS ARE USED TO DETERMINE 

062C 

CBFF 


ST 

-1< P3) 


REPLACE TOP ITEM ON STACK 

0560 C406 

GEQ: 

LDI 

6 

WHETHER THE PARTICULAR 

062E 

C701 


LD 

@1<P3) 


BY ITS ONE'S COMPLEMENT 





RELATION IS SATISFIED OR NO 

0630 

E4FF 


XRI 

OFF 



0562 CAEB 

CMP: 

ST 

NUM(P2) 


0632 

CBFF 


ST 

-1(P3) 



0564 C410 


LDI 

H<AESTK) 

SET P3 -> ARITH STACK 

0634 

33 


XPAL 

P3 



0566 37 


XPAH 

P3 


0635 

CAFD 


ST 

LSTK(P2) 


STACK POINTER FIXUP 

0567 BAFD 


DLD 

LSTK(P2) 


0637 

90B5 

X12B: 

JMP 

X12A 



0569 BAFD 


DLD 

LSTK < P2) 









056B 33 


XPAL 

P3 









056C 03 


SCL 





************************************* 

056D C3FE 


LD 

-2(P3) 

SUBTRACT THE TWO OPERANDS, 



* 

EXCHANGE CURSOR WITH 

RAM 

* 

056F FB00 


CAD 

(P3) 

STORING RESULT IN LO & HI 



************************************* 

0571 CAEF 


ST 

L0(P2) 









0573 C3FF 


LD 

-KPS) 


10639 

C2F1 

XCHGP1 

LD 

P1L0W(P2) 


THIS ROUTINE IS HANDY WHEN 

0575 FB01 


CAD 

1 <P3) 


063B 

31 


XPAL 

PI 


EXECUTING AN 'INPUT' STMT 

0577 CAEE 


ST 

HI<P2) 


063C 

CAF1 


ST 

P1L0W(P2) 


IT EXCHANGES THE CURRENT 

0579 E3FF 


XOR 

—1(P3) 

OVERFLOW OCCURS IF SIGNS OF 

063E 

C2F0 


LD 

P1HIGH(P2) 


TEXT CURSOR WITH ONE SAVED 

057B 01 


XAE 


RESULT AND 1ST OPERAND 

0640 

35 


XPAH 

PI 


IN RAM 

057C C3FF 


LD 

-1(P3) 

DIFFER, AND SIGNS OF THE 

0641 

CAFO 


ST 

P1HIGH(P2) 



057E E301 


XOR 

1 < P3) 

TWO OPERANDS DIFFER 

0643 

3F 


XPPC 

P3 



0580 50 


ANE 


BIT 7 EQUIVALENT TO V FLAG 








0581 E2EE 


XOR 

HI(P2) 

BIT 7 EQUIVALENT TO N XOR V 








0583 CAEA 


ST 

TEMP(P2) 

STORE IN TEMP 



************************************* 

0585 C2EE 


LD 

HI<P2) 

DETERMINE IF RESULT WAS ZERO 



* 

CHECK RUN MODE 


* 

0587 DAEF 


OR 

L0<P2) 




************************************* 

0589 9802 


JZ 

SETZ 

IF RESULT=0, SET Z FLAG 








058B C480 


LDI 

080 

ELSE CLEAR Z FLAG 

0644 

C2F4 

CKMODE 

LD 

RUNM0D(P2) 


THIS ROUTINE CAUSES AN ERRO 

058D E480 

SETZ: 

XRI 

080 


0646 

9801 


JZ 

CK1 


IF CURRENTLY IN EDIT MODE 

058F 01 


XAE 


BIT 7 OF EX = Z FLAG 

0648 

3F 


XPPC 

P3 








0649 

C403 

OKI: 

LDI 

3 



0590 BAEB 


DLD 

NUM < P2) 

TEST FOR = 

064B 

CAEB 

E8: 

ST 

NUM(P2) 


ERROR IF RUN MODE = 0 

0592 9C05 


JNZ 

NEQ1 


064D 

C402 


JS 

P3, ERR2 


MINOR KLUGE 

0594 40 


LDE 


EQUAL IF Z = 1 








0595 902B 


JMP 

CMP1 









0597 90B1 

X12: 

JMP 

XU 




************************************* 

0599 BAEB 

NEQ1: 

DLD 

NUM < P2) 

TEST FOR O 



* 

GET HEXADECIMAL NUMBER 

* 

059B 9C05 


JNZ 

LSS1 




************************************* 

059D 40 


LDE 


NOT EQUAL IF Z = 0 








059E E480 


XRI 

080 





. LOCAL 




05A0 9020 


JMP 

CMP1 


0654 

AAFD 

HEX: 

ILD 

LSTK(P2) 


POINT P3 AT ARITH STACK 

05A2 BAEB 

LSS1: 

DLD 

NUM(P2) 

TEST FOR < 

0656 

AAFD 


ILD 

LSTK(P2) 



05A4 9C04 


JNZ 

LEQ1 


0658 

33 


XPAL 

P3 



05A6 C2EA 


LD 

TEMP(P2) 

LESS THAN IF (N XOR V)=l 

0659 

C410 


LDI 

H(AESTK) 



05A8 9018 


JMP 

CMP1 


065B 

37 


XPAH 

P3 



05AA BAEB 

LEQ1: 

DLD 

NUM < P2) 

TEST FOR <= 

065C 

C400 


LDI 

0 


NUMBER INITIALLY ZERO 

05AC 9C05 


JNZ 

GTR1 


065E 

CBFF 


ST 

-1(P3) 


PUT IT ON STACK 

05AE 40 


LDE 


LESS THAN OR EQUAL 

0660 

CBFE 


ST 

-2<P3) 



05AF DAEA 


OR 

TEMP(P2) 

IF <Z OR (N XOR V))=1 

0662 

CAEB 


ST 

NUM < P2) 


ZERO NUMBER OF DIGITS 

05B1 900F 


JMP 

CMP1 


0664 

C501 

♦SKIP: 

LD 

@1<P1) 


SKIP ANY SPACES 

05B3 BAEB 

GTR1: 

DLD 

NUM<P2) 

TEST FOR > 

0666 

E420 


XRI 

- * 



05B5 9C07 


JNZ 

GEQ1 


0668 

98FA 


JZ 

♦SKIP 



05B7 40 


LDE 


GREATER THAN 

066A 

C5FF 


LD 

e-l(Pl) 



05B8 DAEA 


OR 

TEMP(P2) 

IF (Z OR <N XOR V)>=0 

066C 

C100 

♦LOOP: 

LD 

<P1) 


GET A CHARACTER 

05BA E480 


XRI 

080 


066E 

03 


SCL 




05BC 9004 


JMP 

CMP1 


066F 

FC3A 


CAI 

'9' + l 


CHECK FOR A NUMERIC CHAR 

05BE C2EA 

GEQ 1: 

LD 

TEMP(P2) 

GREATER THAN OR EQUAL 

0671 

9409 


JP 

♦LETR 



05C0 E480 


XRI 

080 

IF (N XOR V)=0 

0673 

03 


SCL 




05C2 9404 

CMP1: 

JP 

FALSE 

IS RELATION SATISFIED? 

0674 

FCF6 


CAI 

'O'—'9'—1 


IF NUMERIC, SHIFT NUMBER 

05C4 C401 


LDI 

1 

YES - PUSH 1 ON STACK 

0676 

9413 


JP 

♦ENTER 


AND ADD NEW HEX DIGIT 

05C6 9002 


JMP 

CMP2 


0678 

9032 


JMP 

♦END 



05C8 C400 

FALSE: 

LDI 

0 

NO - PUSH 0 ON STACK 

067A 

90BB 

X 12C: 

JMP 

X12B 



05CA CBFE 

CMP2: 

ST 

-2(P3) 


067C 

03 ♦LETR: 

SCL 



CHECK FOR HEX LETTER 

05CC C400 


LDI 

0 


067D 

FCOD 


CAI 

'G'-'9'-l 



OSCE CBFF 


ST 

— 1< P3) 


067F 

942B 


JP 

♦END 



05D0 C400 


JS 

P3,RTN 

DO AN I. L. RETURN 

0681 

03 


SCL 




05D7 90BE 


JMP 

X12 


0682 

FCFA 


CAI 

'A'-'G' 








0684 

9402 


JP 

♦OK 








0686 

9024 


JMP 

♦END 




;********************************.***** 

0688 

02 ♦OK: 

CCL 



ADD 10 TO GET TRUE VALUE 


; * IF 

STATEMENT TEST FOR ZERO 

* 

0689 

F40A 


ADI 

10 


OF LETTER 


i************************************* 

068B 

01 ♦ENTER: 

XAE 



NEW DIGIT IN EX REG 






068C 

C404 


LDI 

4 


SET SHIFT COUNTER 

05D9 C2EF 

CMPR: 

LD 

L0(P2) 

GET LOW & HI BYTES OF EXPR. 

068E 

CAEA 


ST 

TEMP(P2) 



05DB DAEE 


OR 

HI(P2) 

TEST IF EXPRESSION IS ZERO 

0690 

CAEB 


ST 

NUM < P2) 


DIGIT COUNT IS NON-ZERO 

05DD 9802 


JZ 

FAIL 

YES - IT IS 

0692 

C3FE ♦SHIFT: 

LD 

-2<P3) 


SHIFT NUMBER LEFT BY 4 

05DF 90B6 


JMP 

X12 

NO - IT ISN'T SO CONTINUE 

|0694 

02 


CCL 




05E1 C501 

FAIL: 

LD 

@1(PI) 

SKIP TO NEXT LINE IN PROGRAM 

0695 

F3FE 


ADD 

-2(P3) 



05E3 E40D 


XRI 

OD 

< I. E. TIL NEXT CR) 

0697 

CBFE 


ST 

-2<P3) 



05E5 9CFA 


JNZ 

FAIL 


0699 

C3FF 


LD 

-1<P3) 



05E7 C402 


JS 

P3»NXT 

CALL NXT AND RETURN 

069B 

F3FF 


ADD 

-1(P3) 



05EE 90A7 

X12A: 

JMP 

X12 


069D 

CBFF 


ST 

-1<P3) 








069F 

BAEA 


DLD 

TEMP(P2) 








06 A1 

9CEF 


JNZ 

♦SHIFT 




; ************************************* 

06A3 

C3FE 


LD 

-2<P3) 


ADD NEW DIGIT 


; * 

AND, 

OR, & NOT 

* 

06A5 

58 


ORE 



INTO NUMBER 


i ************************************* 

06A6 

CBFE 


ST 

—2(P3) 








06A8 

C501 


LD 

@1<P1) 


ADVANCE THE CURSOR 



. LOCAL 



06AA 

90C0 


JMP 

♦LOOP 


GET NEXT CHAR 

05F0 C401 

ANDOP: 

LDI 

1 i 

EACH OPERATION HAS ITS 

06AC 

C2EB ♦END: 

LD 

NUM(P2) 


CHECK IF THERE WERE 

05F2 9006 


JMP 

*1 

OWN CASE SELECTOR. 

06AE 

9C87 


JNZ 

X12B 


MORE THAN 0 CHARACTERS 

05F4 C402 

OROP: 

LDI 

2 


06B0 

C405 


LDI 

5 


ERROR IF THERE WERE NONE 

05F6 9002 


JMP 

♦ 1 


06B2 

9097 E8B: 

JMP 

E8 



05F8 C403 

NOTOP: 

LDI 

3 









05FA CAEB 

*1: 

ST 

NUM(P2) 









05FC C410 


LDI 

H<AESTK) ; 

SET P3 -> ARITH. STACK 



************************************* 

05FE 37 


XPAH 

P3 




* 

TEST FOR NUMBER IN TEXT 

* 

05FF BAFD 


DLD 

LSTK(P2) 




************************************* 

0601 BAFD 


DLD 

LSTK(P2) 









0603 33 


XPAL 

P3 




THIS 

ROUTINE 

TESTS FOR A NUMBER IN THE TEXT. IF NO 

0604 BAEB 


DLD 

NUM(P2) 

TEST FOR 'AND' 



NUMBER IS FOUND, I. L. CONTROL PASSES TO THE ADDRESS 

0606 9COE 


JNZ 

♦OR 




INDICATED IN 

THE 'TSTN' INSTRUCTION. OTHERWISE, THE 

0608 C301 


LD 

1(P3) i 

REPLACE TWO TOP ITEMS ON 



NUMBER IS SCANNED AND PUT 

ON THE ARITHMETIC STACK, 

060A D3FF 


AND 

—1<P3) 

STACK BY THEIR 'AND' 



WITH 

I. L. CONTROL PASSING 

TO THE NEXT INSTRUCTION. 

060C CBFF 


ST 

-KPS) 









060E C300 


LD 

0(P3) 





. LOCAL 




0610 D3FE 


AND 

-2<P3) 


06B4 

C501 TSTNUM: 

LD 

@1(PI) 



0612 CBFE 


ST 

—2 < P3) 


06B6 

E420 


XRI 

' ' 


SKIP OVER ANY SPACES 

0614 90D8 


JMP 

X12A 


06B8 

98FA 


JZ 

TSTNUM 



0616 BAEB 

♦OR: 

DLD 

NUM < P2) ; 

TEST FOR 'OR' 

06BA 

C5FF 


LD 

@-1(PI) 


GET FIRST CHAR 

0618 9C0E 


JNZ 

♦NOT 


06BC 

03 


SCL 



TEST FOR DIGIT 

061A C301 


LD 

1(P3) i 

REPLACE TWO TOP ITEMS ON 

06BD 

FC3A 


CAI 

'9' + l 



061C DBFF 


OR 

—1(P3) ; 

STACK BY THEIR 'OR' 

06BF 

9405 


JP 

♦ABORT 



06IE CBFF 


ST 

-1(P3) 


06C1 

03 


SCL 




0620 C300 


LD 

0(P3) 


06C2 

FCF6 


CAI 

'0'-'9'-l 



0622 DBFE 


OR 

-2(P3) 


06C4 

9421 


JP 

♦ 1 



0624 CBFE 


ST 

-2(P3) 


06C6 

C2FB ♦ABORT: 

LD 

PCL0W(P2) 


GET TEST-FAIL ADDRESS 

0626 90C6 


JMP 

X12A 


06C8 

33 


XPAL 

P3 


FROM I. L. TABLE 

0628 C701 

♦NOT: 

LD 

@1<P3> ; 

'NOT' OPERATION 

06C9 

C2FA 


LD 

PCHIGH(P2) 








06CB 

37 


XPAH 

P3 




Nov./Dec., 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 43 


340 















06CC C300 
06CE CAFA 
06D0 C301 
06D2 CAFB 
06D4 90A4 
06D6 C402 
06D8 02 
06D9 F2FB 
06DB CAFB 
06DD C400 
06DF F2FA 
06E1 CAFA 
06E3 9095 
06E5 90CB 
06E7 01 
06E8 C410 
06EA 37 
06EB AAFD 
06ED AAFB 
06EF 33 
06FO C400 
06F2 CBFF 
06F4 40 
06F5 CBFE 
06F7 C501 
06F9 Cl00 
06FB 03 
06FC FC3A 
06FE 94D6 
0700 03 
0701 FCF6 
0703 9402 
0705 90CF 
0707 01 
0708 C3FF 
070A CB01 
070C C3FE 
070E CBOO 
0710 C402 
0712 CAEA 
0714 02 
0715 C3FE 
0717 F3FE 
0719 CBFE 
07IB C3FF 
07ID F3FF 
07IF CBFF 
0721 BAEA 
0723 9CEF 
0725 02 
0726 C3FE 
0728 F300 
072A CBFE 
072C C3FF 
072E F301 
0730 CBFF 
0732 02 
0733 C3FE 
0735 F3FE 
0737 CBFE 
0739 C3FF 
073B F3FF 
073D CBFF 
073F 02 
0740 40 
0741 F3FE 
0743 CBFE 
0745 C400 
0747 F3FF 
0749 CBFF 
074B 94AA 
074D C406 
074F 9094 
0751 9090 


0753 

0759 C400 
075B CAE7 
075D 

0763 C2F4 
0765 9808 
0767 C43F 
0769 3F 
076A C420 
076C 3F 
076D 9003 
076F C43E 
0771 3F 
0772 C40F 
0779 C4BD 
077B 33 
077C 40 
077D 98F3 
077F E40A 
0781 98EF 
0783 40 
0784 E40D 
0786 9850 
0788 40 
0789 E45F 
078B 9841 
078D 40 
078E E408 
0790 9836 
0792 40 
0793 E415 
0795 980F 
0797 40 
0798 E403 
079A 9C1A 
079C C45E 
079E 3F 
079F C443 
07A1 3F 


LD 

ST 

LD 

ST 

JMP 

♦RET: LDI 

CCL 
ADD 
ST 
LDI 
ADD 
ST 

X13: JMP 

E8A: JMP 

*1: XAE 

LDI 
XPAH 
ILD 
ILD 
XPAL 
LDI 
ST 
LDE 
ST 

♦LOOP: LD 

LD 
SCL 
CAI 
JP 
SCL 
CAI 
JP 
JMP 

♦2: XAE 

LD 
ST 
LD 
ST 
LDI 
ST 

♦SHIFT: CCL 
LD 
ADD 
ST 
LD 
ADD 
ST 
DLD 
JNZ 
CCL 
LD 
ADD 
ST 
LD 
ADD 
ST 
CCL 
LD 
ADD 
ST 
LD 
ADD 
ST 
CCL 
LDE 
ADD 
ST 
LDI 
ADD 
ST 
JP 
LDI 

E9: JMP 

X14: JMP 


<P3) 

PCHIGH(P2) 

1 (P3) 

PCLOW < P2) 

X12C 

2 

PCLOW<P2) 
PCLOW(P2) 

0 

PCHIGH(P2) 
PCHIGH(P2) 
X12C 
E8B 

H<AESTK) 

P3 

LSTK < P2) 
LSTK<P2) 

P3 

0 

-1(P3) 

—2<P3) 
ei(Pl) 

(PI) 

'9' + l 
♦RET 

'0'-'9'-l 

♦ 2 

♦RET 

-1(P3) 

1 <P3) 

-2(P3) 

<P3) 

2 

TEMP < P2) 

-2<P3) 

—2 < P3) 

-2(P3) 

-1< P3) 

-1<P3) 

-1(P3) 
TEMP(P2) 
♦SHIFT 

—2(P3) 

<P3) 

-2(P3) 

-1<P3) 

1 (P3> 

-1(P3) 

-2(P3) 

—2<P3) 

—2(P3) 

-1<P3) 

-1<P3) 
-1(P3) 


-2(P3) 

-2(P3) 

0 

-1(P3) 
-1(P3) 
♦LOOP 
6 

E8A 
X13 


;PUT TEST-FAIL ADDRESS 
; INTO I. . PC 


;SKIP OVER ONE IL INSTRUCTION 
; IF NUMBER IS DONE 


; SAVE DIGIT IN EX REG 
;POINT P3 AT AE STACK 


;GET NEXT CHAR 
iTEST IF IT IS DIGIT 
;RETURN IF IT ISN'T 


;SAVE DIGIT 

;PUT RESULT IN SCRATCH SPACE 


;MULTIPLY RESULT BY 10 
;FIRST MULTIPLY BY 4 


07A2 C40E 
07A4 90A9 
07A6 C45E 
07A8 3F 
07A9 C455 
07AB 3F 
07AC C40D 
07AE 3F 
07AF C40A 
07B1 3F 
07B2 909F 
07B4 909B 
07B6 40 
07B7 CD01 
07B9 AAE7 
07BB E448 
07BD 9CB3 
07BF C40D 
07C1 01 
07C2 40 
07C3 3F 
07C4 9012 
07C6 9087 
07C8 C420 
07CA 3F 
07CB C408 
07CD 3F 
07CE C2E7 
07D0 98A0 
07D2 BAE7 
07D4 C5FF 
07D6 909A 
07D8 40 
07D9 CD01 
07DB C40A 
07DD 3F 
07DE C410 
07E0 35 
07E1 C4D6 
07E3 31 
07E4 90CE 


;THEN ADD OLD RESULT, 

; SO WE HAVE RESULT * 5 


;THEN MULTIPLY BY TWO 


;THEN ADD IN NEW DIGIT 


07E6 C410 
07E8 37 
07E9 C2FD 
07EB 33 
07EC C3FF 
07EE 35 
07EF 01 
07F0 C3FE 
07F2 31 
07F3 CAEF 
07F5 Cl00 
07F7 CBFE 
07F9 C400 
07FB CBFF 
07FD C2EF 
07FF 31 
0800 40 
0801 35 
0802 90B0 


;REPEAT IF NO OVERFLOW 
; ELSE REPORT ERROR 


************************************* 
* GET LINE FROM TELETYPE * 

************************************* 


. LOCAL 


GETL: LDPI 

LDI 
ST 
LDP I 
LD 
JZ 
LDI 
XPPC 
LDI 
XPPC 
JMP 

♦O: LDI 

XPPC 

♦ 1: JS 

LDI 
XPAL 


PI, LBUF 
0 

CHRNUM(P2) 
P3, PUTC-1 
RUNM0D(P2) 

♦0 

P3 

P3 
♦ 1 

'>' 

P3 

P3,GECO 
L(PUTC)—1 
P3 


;SET PI TO LBUF 
; CLEAR NO. OF CHAR 

;POINT P3 AT PUTC ROUTINE 
;PRINT '? ' IF RUNNING 
i <1. E. DURING 'INPUT') 


; OTHERWISE PRINT O' 

;GET CHARACTER 
;POINT P3 AT PUTC AGAIN 


0804 C410 
0806 37 
0807 C2FD 
0809 33 
080A C7FE 
080C 01 
080D C7FF 
080F CAEA 
0811 C7FF 
0813 33 
0814 CAFD 
0816 C2EA 
0818 37 
0819 40 
081A CBOO 
081C 90C6 
081E 90A6 


LDI 

JMP 

♦XU: LDI 

XPPC 
LDI 
XPPC 
LDI 
XPPC 
LDI 
XPPC 

♦2: JMP 

X15: JMP 

♦ENTER: LDE 

ST 
ILD 
XRI 
JNZ 
LDI 
XAE 
LDE 
XPPC 
JMP 

E10: JMP 

♦XH: LDI 

XPPC 
LDI 
XPPC 

♦RUB: LD 

JZ 
DLD 
LD 
JMP 

♦CR: LDE 

ST 
LDI 
XPPC 
LDI 
XPAH 
LDI 
XPAL 

X16: JMP 


14 

E9 

P3 

'U' 

P3 

OD 

P3 

OA 

P3 

GETL 

X14 

ei<pn 

CHRNUM<P2) 
72 

♦ 1 

OD 


P3 

♦CR 

E9 

P3 

8 

P3 

CHRNUM(P2> 

♦ 1 

CHRNUM<P2) 
e-l(Pl) 

♦ 1 

ei(Pi) 

OA 

P3 

H(LBUF) 

PI 

L< LBUF) 

PI 

X15 


;CAUSE A BREAK 


;ECHO CONTROL/U AS -U 


; PRINT CR/LF 


i GO GET ANOTHER LINE 


PUT CHAR IN LBUF 
INCREMENT CHRNUM 
IF-72, LINE FULL 


;SAVE CARRIAGE RET 


;PRINT IT 
;STORE IT IN LBUF 

; BLANK OUT THE CHARACTER 

;PRINT ANOTHER BACKSPACE 


;ONE LESS CHAR 
; BACKSPACE CURSOR 


i STORE CR IN LBUF 
; PRINT LINE FEED 

; SET PI TO BEGIN- 
; NING OF LBUF 


i ************************************* 

; * EVAL — GET MEMORY CONTENTS * 

i ************************************* 

; THIS ROUTINE IMPLEMENTS THE 't' OPERATOR IN EXPRESSIONS 


EVAL: LDI 

XPAH 
LD 
XPAL 
LD 
XPAH 
XAE 
LD 
XPAL 
ST 
LD 
ST 
LDI 
ST 
LD 
XPAL 
LDE 
XPAH 
JMP 


H(AESTK) 
P3 

LSTK(P2) 
P3 

-MP3) 

PI 

-2<P3) 

PI 

L0(P2) 

0<P1> 

—2(P3) 

0 

-1(P3) 

L0(P2) 

PI 

PI 
X15 


i P3 -> ARITH STACK 
;GET ADDR OFF STACK, 
i AND INTO PI, 

; SAVING OLD PI IN EX fc LO 


» GET MEMORY CONTENTS, 

; SHOVE ONTO STACK 

i HIGH ORDER 8 BITS ZEROED 

jRESTORE ORIGINAL PI 


;* MOVE — STORE INTO MEMORY * 

i ************************************* 

i THIS ROUTINE IMPLEMENTS THE STATEMENT: 
j '«' FACTOR '»' REL-EXP 


MOVE: LDI 

XPAH 
LD 
XPAL 
LD 
XAE 
LD 
ST 
LD 
XPAL 
ST 
LD 
XPAH 
LDE 
ST 

X17: JMP 

Ell: JMP 


H<AESTK) 
P3 

LSTK(P2) 
P3 

#-2(P3) 

t-l(P3) 
TEMP(P2) 
«-l(P3) 
P3 

LSTK(P2) 
TEMP(P2) 
P3 

0<P3> 

X16 
E10 


i P3 -> ARITH STACK 
> GET BYTE TO BE MOVED 

; NOW GET ADDRESS INTO P3 

i STACK PTR UPDATED NOW 

i MOVE THE BYTE INTO MEMORY 


************************************* 
* TEXT EDITOR * 


LDE iGET TYPED CHAR 

JZ *1 ;IGNORE NULLS 

XRI OA ; IGNORE LINE FEED 

JZ ^1 

LDE 

XRI OD ;CHECK FOR CR 

JZ ♦CR 

LDE 

XRI 'O'+OIO ;CHECK FOR SHIFT/O 

JZ ♦RUB 

LDE ;CHECK FOR CTRL/H 

XRI 8 

JZ ♦XH 

LDE 

XRI 015 ;CHECK FOR CTRL/U 

JZ ♦XU 

LDE 

XRI 3 ;CHECK FOR CTRL/C 

JNZ ♦ENTER 

LDI ; ECHO CONTROL/C fVB ~C 

XPPC P3 

LDI 'C' 

XPPC P3 


************************************* 

INPUTS TO THIS ROUTINE: POINTER TO LINE BUFFER IN P1L0W L 
P1HIGH. PI POINTS TO THE INSERTION POINT IN THE TEXT. 
THE A. E. STACK HAS THE LINE NUMBER ON IT (STACK POINTER 
IS ALREADY POPPED). 

EACH LINE IN THE NIBL TEXT IS STORED IN THE FOLLOWING 
FORMAT: TWO BYTES CONTAINING THE LINE NUMBER (IN BINARY. 
HIGH ORDER BYTE FIRST), THEN ONE BYTE CONTAINING THE 
LENGTH OF THE LINE, AND FINALLY THE LINE ITSELF FOLLOWED 
BY A CARRIAGE RETURN. THE LAST LINE IN THE TEXT IS 
FOLLOWED BY TWO CONSECUTIVE BYTES OF X'FF. 


0820 C410 INSRT: 

0822 37 

0823 C2FD 

0825 33 

0826 C301 

0828 CAF7 

082A C300 


. LOCAL 

LDI H(AESTK) 

XPAH P3 

LD LSTK(P2) 

XPAL P3 

LD 1(P3) 

ST HILINE(P2) 

LD 0(P3) 


;POINT P3 AT AE STACK, 

; WHICH HAS THE LINE • 
i ON IT 

; SAVE NEW LINE'S NUMBER 


Page 44 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Nov./Dec., 1976 


341 








082C CAF8 
0S2E C2F1 
0830 33 
0831 C2F0 
0833 37 
0834 C404 
0836 CAE7 
0838 C701 
083A E40D 
083C 9804 
083E AAE7 
0840 90F6 
0842 C2E7 
0844 E404 
0846 9C02 
0848 CAE7 
084A C2E7 
084C 01 
084D C2F2 
084F 9406 
0851 D47F 
0853 CAF2 
0855 9018 
0857 C503 
0859 40 
085A 02 
085B F4FC 
085D 01 
085E C501 
0860 E40D 
0862 980B 
0864 40 
0865 02 
0866 F4FF 
0868 01 
0869 90F3 
086B 90AF 
086D 90AF 
086F 40 
0870 DAE7 
0872 98F7 
0874 C47A 
0876 CAFF 
0878 C46A 
087A CAFC 
087C C48A 
087E CAFE 
0880 40 
0881 9860 
0883 9410 
0885 C100 
0887 C980 
0889 C501 
088B 94F8 
088D Cl00 
088F 94F4 
0891 C980 
0893 904E 
0895 C1FE 
0897 CAEA 
0899 C4FF 
089B C9FE 
089D C450 
089F C9FF 
08A1 C501 
08A3 94FC 
08A5 Cl00 
08A7 94F8 
08A9 35 
08AA CAEE 
08AC 35 
08AD 31 
08AE CAEF 
08B0 31 
08B1 C2EF 
08B3 02 
08B4 70 
08B5 C400 
08B7 F2EE 
08B9 E2EE 
08BB D4F0 
08BD 9803 
08BF C400 
08C1 01 
08C2 C4FF 
08C4 C980 
08C6 C5FF 
08C8 94FA 
08CA C101 
08CC E450 
08CE 9804 
08D0 Cl00 
08D2 90F0 
08D4 C2EA 
08D6 C900 
08D8 C40D 
08DA C901 
08DC 40 
08DD 9C04 
08DF C402 
08E1 908A 
08E3 C2E7 
08E5 9884 
08E7 C2F1 
08E9 31 
08EA C2F0 
08EC 35 
08ED C2F3 
08EF 33 
08F0 C2F2 
08F2 37 
08F3 C2F7 
08F5 CF01 
08F7 C2F8 
08F9 CF01 
08FB C2E7 
08FD CF01 
08FF C501 
0901 CF01 
0903 E40D 


ST 

LD 

XPAL 

LD 

XPAH 

LDI 

ST 

*1: LD 

XRI 
JZ 
ILD 
JMP 

*2: LD 

XRI 
JNZ 
ST 

*3: LD 

XAE 
LD 
JP 
AN I 
ST 
JMP 

*4: LD 

LDE 
CCL 
ADI 
XAE 

*5: LD 

XRI 
JZ 
LDE 
CCL 
ADI 
XAE 
JMP 

X19: JMP 

E12: JMP 

♦MOVE: LDE 

OR 
JZ 
LDI 
ST 
LDI 
ST 
LDI 
ST 
LDE 
JZ 
JP 

♦DOWN: LD 

ST 
LD 
JP 
LD 
JP 
ST 
JMP 

♦UP: LD 

ST 
LDI 
ST 
LDI 
ST 

♦UP1: LD 

JP 
LD 
JP 
XPAH 
ST 
XPAH 
XPAL 
ST 
XPAL 
LD 
CCL 
ADE 
LDI 
ADD 
XOR 
AN I 
JZ 
LDI 
XAE 

♦UP2: LDI 

♦UP3: ST 

LD 
JP 
LD 
XRI 
JZ 
LD 
JMP 

♦UP4: LD 

ST 
LDI 
ST 
LDE 
JNZ 
LDI 

E12A: JMP 

♦ADD: LD 

X19A: JZ 

LD 
XPAL 
LD 
XPAH 
LD 
XPAL 
LD 
XPAH 
LD 
ST 
LD 
ST 
LD 
ST 

♦ADD1: LD 
ST 
XRI 


L0LINE(P2) 

P1L0W(P2) 

P3 

P1HIGH(P2) 

P3 

4 

CHRNUM(P2) 
@1(P3) 

OD 

♦2 

CHRNUM(P2) 

♦ 1 

CHRNUM(P2) 
4 

♦3 

CHRNUM(P2) 
CHRNUM(P2) 

LABLHKP2) 

♦4 

07F 

LABLHKP2) 

♦MOVE 

@3<P1> 


-4 

ei(Pl) 

OD 

♦MOVE 


♦5 

X17 

Ell 

CHRNUM(P2) 
X19 

L(DOSTAK) 

D0PTR(P2) 

L(SBRSTK) 

SBRPTR<P2) 

L(FORSTK) 

F0RPTR(P2) 

♦ADD 

♦UP 

0<P1) 

EREGtPl) 

ei(Pl) 

♦DOWN 

0(P1) 

♦DOWN 
EREG(P1) 
♦ADD 
—2<P1) 
TEMP<P2) 

-1 

-2< PI) 

80 

-1(PI) 
ei<pi) 

♦UPl 

0(P1) 

♦UPl 

pi 

HI<P2) 

PI 

PI 

L0<P2) 

PI 

LO(P2) 


0 

HI<P2> 

HI<P2) 

OFO 

♦UP2 

0 

-1 

EREG(Pl) 
e-l(Pl) 
♦UP3 
1 (PI) 

80 

♦UP4 
0(P1) 

♦UP3 

TEMP(P2) 

0(P1> 

OD 

1 (PI) 

♦ADD 

2 

E12 

CHRNUM(P2) 
X19 

P1L0W(P2) 

PI 

P1HIGH(P2) 

PI 

LABLL0(P2> 

P3 

LABLHI< P2) 
P3 

HILINE(P2) 
@1<P3) 
L0LINE(P2) 
@1(P3) 
CHRNUM(P2) 
G1(P3> 

SI(PI) 
@1(P3) 

OD 


;PUT POINTER TO LBUF INTO P3 


0905 9CF8 
0907 90DC 
0909 C400 X20: 

0910 90CF E13: 


JNZ 

JMP 

JS 

JMP 


♦ADD1 
X19A 

P3»EXECIL 
E12A 


;RETURN 


iINITIALLY LENGTH OF NEW LINE 
J = 4. ADD 1 TO LENGTH FOR 
j EACH CHAR IN LINE UP TO, BU 
i NOT INCLUDING, CARR. RETURN 


************************************ 
* POP ARITHMETIC STACK * 

************************************ 


;IF LENGTH STILL 4, WE'LL DEL 
; A LINE, SO SET LENGTH = 0 


;PUT NEW LINE LENGTH IN EX 

;IS NEW LINE REPLACING OLD? 

;YES - DO REPLACE 
;NO - WE'LL INSERT LINE HERE, 
i WHERE FNDLBL GOT US. 

;BUT FIRST MAKE ROOM 
;SKIP LINE # AND LENGTH 
i EX, NOW HOLDING NEW LINE 
; LENGTH, WILL SOON HOLD 
j DISPLACEMENT OF LINES 
; TO BE MOVED 

;SUBTRACT 1 FROM DISPLACEMENT 
i FOR EACH CHAR IN LINE BEING 
; REPLACED 


;IF DISPLACEMENT AND LENGTH 
; OF NEW LINE ARE 0. RETURN 

;CLEAR SOME STACKS 


DON'T NEED TO MOVE LINES 
SKIP IF DISPLACEMENT POSITIV 
NEGATIVE DISPLACEMENT: 

DO; 

M(P1+DISP) = M(P1); 

PI = Pl+1; 

UNTIL MIP1X0 & MIP1-1X0; 


0912 BAFD 
0914 BAFD 
0916 33 
0917 C410 
0919 37 
091A C300 
091C CAEF 
09IE C301 
0920 CAEE 
0922 90E5 


0924 C2FF 
0926 01 
0927 40 
0928 E47A 
092A 9C04 
092C C40F 
092E 90E0 
0930 C2EF 
0932 DAEE 
0934 9806 
0936 BAFF 
0938 BAFF 
093A 90CD 
093C 40 
093D 33 
093E C410 
0940 37 
0941 C3FF 
0943 35 
0944 C3FE 
0946 31 
0947 90C0 


POPAE: DLD LSTK(P2> 

DLD LSTK(P2) 

XPAL P3 

LDI H(AESTK) 

XPAH P3 

LD (P3) 

ST LO(P2) 

LD 1(P3) 

ST HI(P2) 

JMP X20 


THIS ROUTINE POP THE A. E. 
STACK, AND PUTS THE RESULT 
INTO L0CP2) AND HI(P2) 


************************************* 
* UNTIL * 

************************************* 


UNTIL: 


♦REDO: 


. LOCAL 

LD DOPTR(P2) 

XAE 

LDE 

XRI L(DOSTAK) 

JNZ 41 

LDI 15 

JMP E13 

LD L0(P2> 

OR HI(P2 > 

JZ ♦REDO 

DLD DOPTR(P2) 

DLD DOPTR(P2) 

JMP X20 

LDE 

XPAL P3 

LDI H(DOSTAK) 

XPAH P3 

LD -1(P3) 

XPAH PI 

LD -2(P3) 

XPAL PI 

JMP X20 


; CHECK FOR DO-STACK UNDERFLOW 


; CHECK FOR EXPRESSION - 0 

;IF ZERO, REPEAT DO-LOOP 
;ELSE POP SAVE STACK 

;CONTINUE TO NEXT STMT 
;POINT P3 AT DO-STACK 


;LOAD PI FROM DO STACK 


.CURSOR NOW POINTS TO FIRST 
; STATEMENT OF DO-LOOP 


************************************* 
* STORE INTO STATUS REGISTER * 
************************************* 


;M(P1+DISP) = M(P1); 


THIS ROUTINE IMPLEMENTS THE STATEMENT: 
'STAT' '=' REL-EXP 


POSITIVE DISPLACEMENT: 

FLAG BEGINNING OF MOVE WITH 
A -1 FOLLOWED BY 80, WHICH 
CAN NEVER APPEAR IN A 
NIBL TEXT 


0949 C2EF MOVESR: LD 


094B D4F7 ANI 
094D 07 CAS 
094E 90B9 X21: JMP 
0950 90BE El4: JMP 


L0(P2) 

0F7 

X20 

E13 


;LOW BYTE GOES TO STATUS 
; BUT WITH IEN BIT CLEARED 


;ADVANCE PI TO END OF TEXT 

;SAVE PI IN LO, HI 


ADD DISPLACEMENT TO 
VALUE OF PI, TO CHECK 
WHETHER WE'RE OUT OF 
RAM FOR USER'S PROGRAM 


;************************************* 
;* STAT FUNCTION * 

;************************************* 


0952 C410 STATUS: 

0954 37 

0955 AAFD 

0957 AAFD 

0959 33 

095A 06 

095B CBFE 

095D C400 

095F CBFF 

0961 90EB 


LDI H(AESTK) 

XPAH P3 

ILD LSTK(P2) 

ILD LSTK(P2) 

XPAL P3 

CSA 

ST -2(P3) 

LDI 0 

ST -1(P3) 

JMP X21 


; POINT P3 AT AE STACK 


; STATUS REG IS LOW BYTE 
;ZERO IS HIGH BYTE 


;IF OUT OF RAM, CHANGE 
; DISPLACEMENT TO ZERO 


»************************************* 
;* MACHINE LANGUAGE SUBROUTINE * 
;************************************* 


;MOVE TEXT UP UNTIL WE REACH 
; THE FLAGS SET ABOVE 


;RESTORE THE FLAGGED LOCATION 
; TO THEIR ORIGINAL VALUES 


0963 C2EE 
0965 37 
0966 C2EF 
0968 33 
0969 C7FF 
096B 3F 
096C 

0972 90DA 


i THIS ROUTINE IMPLEMENTS THE 

CALLML: LD HI(P2) 

XPAH P3 

LD LO(P2) 

XPAL P3 

LD @-l(P3> 

XPPC P3 

LDPI P2, VARS 

JMP X21 


LINK' STATEMENT 

; GET HIGH BYTE OF ADDRESS 

J GET LOW BYTE 

;P3 -> USER'S ROUTINE 

; CORRECT P3 

;CALL ROUTINE (PRAY IT WORKS) 
;RESTORE RAM POINTER 
;RETURN 


;IF DISPLACEMENT = 0, WE'RE 
; OUT OF RAM, SO REPORT ERROR 


************************************* 
* SAVE DO LOOP ADDRESS * 

************************************* 


INSERT NEW LINE 
UNLESS LENGTH IS ZERO 
POINT PI AT LINE BUFFER 


;POINT P3 AT INSERTION PLACE 


;PUT LINE NUMBER INTO TEXT 

;STORE LINE LENGTH IN TEXT 

;PUT REST OF CHARS 
; (INCLUDING CR) INTO TEXT 


0974 C2FF 
0976 E48A 
0978 9C04 
097A C40A 
097C 90D2 
097E AAFF 
0980 AAFF 
0982 33 
0983 C410 
0985 37 
0986 35 
0987 CBFF 
0989 35 
098A 31 
098B CBFE 
098D 31 


THIS ROUTINE IMPLEMENTS THE 'DO' STATEMENT. 


. LOCAL 

SAVEDO: LD 
XRI 
JNZ 
LDI 

E15: JMP 

♦1: ILD 

ILD 
XPAL 
LDI 
XPAH 
XPAH 
ST 

XPAH 

XPAL 

ST 

XPAL 


DOPTR(P2> 
L(FORSTK) 
♦ 1 
10 
E14 

DOPTR(P2) 
DOPTR<P2) 


H(DOSTAK) 

P3 


;CHECK FOR STACK OVERFLOW 


; P3 -> TOP OF DO STACK 
; SAVE CURSOR ON THE STACK 


Nov./Dec., 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 45 


342 















098E 90BE 


0990 C2E9 
0992 37 
0993 C2E8 
0995 33 
0996 C300 
0998 9402 
099A 9007 
099C C302 
099E 01 
099F C780 
09A1 90F3 
09A3 C702 
09A5 AAFD 
09A7 AAFD 
09A9 33 
09AA 01 
09AB C410 
09AD 37 
09AE CBFF 
09B0 40 
09B1 CBFE 
09B3 90D9 


09B5 C501 
09B7 E40D 
09B9 9CFA 
09BB 3F 


09BC C2FD 
09BE 33 
09BF C410 
09C1 37 
09C2 C303 
09C4 CBFE 
09C6 C302 
09C8 CBFF 
09CA 90C2 
09CC 90AE 


09CE C408 
09D0 CAEB 
09D2 C2E5 
09D4 01 
09D5 C2E4 
09D7 CAE9 
09D9 C2E5 
09DB 02 
09DC 70 
09DD 01 
09DE C2E4 
09E0 02 
09E1 F2E9 
09E3 CAE4 
09E5 BAEB 
09E7 9CF0 
09E9 40 
09EA 02 
09EB F407 
09ED 01 
09EE C2E4 
09F0 02 
09F1 F407 
09F3 IE 
09F4 CAE4 
09F6 AAE6 
09F8 9803 
09FA 40 
09FB CAE5 
09FD C2FD 
09FF 33 
0A00 C410 
0A02 37 
0A03 C401 
0A05 CBOO 
0A07 C400 
0A09 CB01 
OAOB C3FE 
OAOD CB02 
OAOF C3FF 
0A11 CB03 
0A13 C3FC 
0A15 CB04 
0A17 C3FD 
0A19 CB05 
0A1B C2E4 
0A1D CBFE 
0A1F C2E5 
0A21 E4FF 
0A23 D47F 
0A25 CBFF 
0A27 C706 
0A29 33 
0A2A CAFD 
0A2C 909C 
0A2E 909C 


X21 


************* ************************ 
* TOP OF RAM FUNCTION * 

************************************* 


TOP: 


$ 0 : 


* 2 : 


. LOCAL 

LD TEMP2 < P2) 

XPAH P3 

LD TEMP3(P2) 

XPAL P3 

LD (P3) 

JP $1 

JMP *2 

LD 2(P3) 

XAE 

LD @EREG(P3) 

JMP $0 

LD @2(P3) 

ILD LSTK<P2) 

ILD LSTK<P2) 

XPAL P3 

XAE 

LDI H< AESTK) 

XPAH P3 

ST -KPS) 

LDE 

ST —2(P3) 

JMP X22 


;SET P3 TO POINT TO 
; START OF NIBL TEXT 


HAVE WE HIT END OF TEXT? 

NO - SKIP TO NEXT LINE 
YES - PUT CURSOR ON STACK 
GET LENGTH OF LINE 

SKIP TO NEXT LINE 
GO CHECK FOR EOF 
P3 := P3 + 2 
SET P3 TO STACK. SAVING 
OLD P3 (WHICH CONTAINS TOP) 
ON IT SOMEHOW 


************************************* 
* SKIP TO NEXT NIBL LINE * 

************************************* 


IGNORE: LD @1(P1) 

XRI OD 

JNZ IGNORE 

XPPC P3 


iSCAN TIL WE'RE PAST 
i CARRIAGE RETURN 

;YES - RETURN 


************************************* 
* MODULO FUNCTION * 

************************************* 


LD 

XPAL 

LDI 

XPAH 


LSTK(P2) 

P3 

H<AESTK) 
P3 


LD 3<P3) 

ST -2< P3) 

LD 2(P3) 

ST -KPS) 

X23: JMP X22 

E16: JMP E15 


THIS ROUTINE MUST BE 
IMMEDIATELY AFTER A 
DIVIDE TO WORK CORRECTLY 


GET LOW BYTE OF REMAINDER 
PUT ON STACK 

GET HIGH BYTE OF REMAINDER 
PUT ON STACK 


************************************* 
* RANDOM FUNCTION * 

************************************* 


0A30 AAFD 
0A32 AAFD 
0A34 33 
0A35 C410 
0A37 37 
0A38 C400 
0A3A CBFF 
0A3C C401 
0A3E CBFE 
0A40 90EA 


0A42 C2FE 
0A44 E4A6 
0A46 9C04 
0A48 C40A 
0A4A 90E2 
0A4C E4A6 
0A4E 31 
0A4F CAF1 
0A51 C410 
0A53 35 
0A54 CAFO 
0A56 C2FD 
0A58 33 
0A59 C410 
0A5B 37 
0A5C C3F9 
0A5E CD01 
0A60 C3FC 
0A62 CD01 
0A64 C3FD 
0A66 CD01 
0A68 C3FE 
0A6A CD01 
0A6C C3FF 
0A6E CD01 
0A70 C2F1 
0A72 CD01 
0A74 C2F0 
0A76 CD01 
0A78 35 
0A79 C2F1 
0A7B 31 
0A7C CAFE 
0A7E C7FC 
0A80 33 
0A81 CAFD 
0A83 90A7 


. LOCAL 

RANDOM: LDI 
ST 
LD 
XAE 
LD 
ST 

♦LOOP: LD 

CCL 
ADE 
XAE 
LD 
CCL 
ADD 
ST 
DLD 
JNZ 
LDE 
CCL 
ADI 
XAE 
LD 
CCL 
ADI 
RR 
ST 
ILD 
JZ 
LDE 
ST 

*1: LD 

XPAL 

LDI 

XPAH 

LDI 

ST 

LDI 

ST 

LD 

ST 

LD 

ST 

LD 

ST 

LD 

ST 

LD 

ST 

LD 

XRI 

AN I 

ST 

LD 

XPAL 

ST 

X24: JMP 

E16A: JMP 


8 

NUM(P2) 
RNDX < P2) 

RNDY(P2) 
TEMP2(P2) 
RNDX <P2) 


RNDY < P2) 

TEMP2 < P2) 
RNDY(P2) 
NUM(P2) 
♦LOOP 


7 

RNDY(P2) 


RNDY < P2) 
RNDF(P2) 
♦ 1 

RNDX(P2) 
LSTK(P2) 
P3 

H<AESTK) 
P3 
1 

(P3) 

0 

1 <P3> 

-2(P3) 

2<P3) 

-1<P3) 

3(P3) 

-4<P3) 

4 < P3) 
-3(P3) 
5<P3) 
RNDY(P2) 
-2(P3) 
RNDX(P2) 
OFF 
07F 
-1(P3) 

@6 < P3) 

P3 

LSTK(P2) 

X23 

E16 


;LOOP COUNTER FOR MULTIPLY 


;MULTIPLY THE SEEDS BY 9 


;ADD 7 TO SEEDS 


HAVE WE GONE THROUGH 
256 GENERATIONS? 

IF SO, SKIP GENERATING 
THE NEW RNDX 

START MESSING WITH THE STACK 


;FIRST PUT 1 ON STACK 


;PUT EXPR2 ON STACK 


;PUT EXPR1 ON STACK 


;PUT RANDOM # ON STACK 


; ADD 6 TO STACK POINTER 


0A85 C2FE 
0A87 E48A 
0A89 9C04 
0A8B C40B 
0A8D 90BB 
0A8F E48A 
0A91 31 
0A92 CAF1 
0A94 C410 
0A96 35 
0A97 CAFO 
0A99 C2FD 
0A9B 33 
0A9C C410 
0A9E 37 
0A9F C7FF 
0AA1 E1F9 
0AA3 9804 
0AA5 C40C 
0AA7 90A1 
0AA9 E1F9 
OAAB 01 
OAAC C280 
OAAE 02 
OAAF F1FC 
0AB1 CA80 
0AB3 CBOO 
0AB5 C601 
0AB7 C280 
0AB9 F1FD 
OABB CA80 
OABD CB01 
OABF C6FF 
0AC1 ClFA 
0AC3 CB02 
0AC5 C1FB 
0AC7 CB03 
0AC9 C1FD 
OACB 9410 
OACD C404 
OACF CAEB 
0AD1 C701 
0AD3 E4FF 
0AD5 CBFF 
0AD7 BAEB 
0AD9 9CF6 
OADB 9002 
OADD C704 
OADF 33 
OAEO CAFD 
0AE2 C2F1 
0AE4 31 
0AE5 C2F0 
0AE7 35 
0AE8 9099 


;************************************* 
;* PUSH 1 ON ARITHMETIC STACK * 

i ************************************* 


LIT1: ILD LSTK(P2) 

ILD LSTK(P2) 

XPAL P3 

LDI H(AESTK) 

XPAH P3 

LDI 0 

ST -KP3) 

LDI 1 

ST -2(P3) 

JMP X24 


i ************************************* 

;* FOR-LOOP INITIALIZATION * 

i************************************* 


. LOCAL 

SAVFOR: LD 
XRI 
JNZ 
LDI 

E17: JMP 

♦1: XRI 

XPAL 
ST 
LDI 
XPAH 
ST 
LD 
XPAL 
LDI 
XPAH 
LD 
ST 
LD 
ST 
LD 
ST 
LD 
ST 
LD 
ST 
LD 
ST 
LD 
ST 
XPAH 
LD 
XPAL 
ST 
LD 
XPAL 
ST 

X25: JMP 


F0RPTR(P2) 

L(PCSTAK) 

♦ 1 
10 

E16A 

L(PCSTAK) 

PI 

P1L0W(P2) 

H(FORSTK) 

PI 

P1HIGH(P2) 
LSTK(P2) 

P3 

H<AESTK) 

P3 

-7(P3) 
@1(P1) 
-4(P3) 

ei<pi) 

-3<P3> 

ei(Pi) 

-2(P3) 

@1(P1) 

-1<P3) 

ei<pi) 

P1L0W(P2) 

ei<pi) 

P1HIGH< P2) 

ei(Pl) 

Pi 

P1L0W(P2) 

PI 

FORPTR(P2) 
S-4(P3) 

P3 

LSTK(P2) 
X24 


i CHECK FOR FOR STACK 
; OVERFLOW 


i POINT PI AT FOR STACK 
i SAVING OLD PI 


;POINT P3 AT AE STACK 


;GET VARIABLE INDEX 
»SAVE ON FOR-STACK 
»GET L(LIMIT) 

, SAVE 

; GET H(LIMIT)* 

; SAVE 

;GET L(STEP) 

; SAVE 

;GET H(STEP) 

; SAVE 
.GET L(P1) 
iSAVE 
iGET H(P1) 
iSAVE 

iRESTORE OLD PI 


; UPDATE FOR STACK PTR 


iUPDATE AE STACK PTR 


i************************************* 

i* FIRST PART OF 'NEXT VAR' * 

i************************************* 


NEXTV: 


E18: 
♦ 10 : 


♦LOOP: 


♦ 2 : 

♦3: 


X26: 


. LOCAL 

LD FORPTR<P2) 

XRI L(FORSTK) 

JNZ ^1 

LDI 11 

JMP El7 

XRI L(FORSTK) 

XPAL PI 

ST P1L0W(P2) 

LDI H(FORSTK) 

XPAH PI 

ST P1HIGH(P2) 

LD LSTK(P2) 

XPAL P3 

LDI H(AESTK) 

XPAH P3 

LD ft-1<P3) 

XOR -7(P1) 

JZ 610 

LDI 12 

JMP El 7 

XOR -7(PI) 

XAE 

LD EREG(P2) 

CCL 

ADD -4(PI) 

ST EREG(P2) 

S" (P3) 

LD «1(P2) 

LD EREG(P2) 

ADD -3(PI) 

ST EREG(P2) 

ST 1(P3) 

LD @-l(P2) 

LD —6(PI) 

ST 2(P3) 

LD -5(P1) 

ST 3(P3) 

LD -3(P1) 

JP %2 

LDI 4 

ST NUM(P2) 

LD ei(P3) 

XRI OFF 

ST -1(P3) 

DLD NUM(P2) 

JNZ ♦LOOP 

JMP *3 

LD @4(P3> 

XPAL P3 

ST LSTK(P2) 

LD P1L0W(P2) 

XPAL PI 

LD PIHIGH(P2) 

XPAH PI 

JMP X25 


; POINT PI AT FOR STACK, 
i CHECKING FOR UNDERFLOW 

;REPORT ERROR 

iSAVE OLD PI 

iPOINT P3 AT AE STACK 


;GET VARIABLE INDEX 
iCOMPARE WITH INDEX 
i ON FOR STACK: ERROR 
i IF NOT EQUAL 

;RESTORE INDEX 
iSAVE IN EREG 
iGET L(VARIABLE) 

iADD L < STEP) 
iSTORE IN VARIABLE 
i AND ON STACK 
iINCREMENT RAM PTR 
iGET H(VARIABLE) 
iADD H(STEP) 
iSTORE IN VARIABLE 
i AND ON STACK 
i RESTORE RAM POINTER 
iGET L(LIMIT) 
iPUT ON STACK 
iGET H(LIMIT) 
iPUT ON STACK 
iGET H(STEP > 
iIF NEGATIVE, INVERT 
i ITEMS ON A. E. STACK 
i NUM - LOOP COUNTER 
iGET BYTE FROM STACK 
iINVERT IT 
iPUT BACK ON STACK 
iDO UNTIL NUM - 0 


iUPDATE AE STACK POINTER 


iRESTORE OLD PI 


Page 46 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Nov./Dec., 1976 


343 
















************************************* 0B75 90B9 JMP X27 

* SECOND PART OF 'NEXT VAR" * 

************************************* 


OAEA C2EF 
OAEC 9808 
OAEE C2FE 
OAFO 02 
0AF1 F4F9 
0AF3 CAFE 
OAFS 3F 
0AF6 C2FE 
0AF8 33 
0AF9 C410 
OAFB 37 
OAFC C3FF 
OAFE 35 
OAFF C3FE 
0B01 31 
0B02 90E4 
0B04 90A1 


0B06 C2EE 
0B08 35 
0B09 C2EF 
OBOB 31 
OBOC 

OB12 C501 
OB14 E40D 
OB16 98D0 
OB18 E40D 
OBIA 3F 
OBIB 06 
OB1C D420 
OBIE 9CF2 
0B20 90C6 


0B22 C2EE 
0B24 37 
0B25 C2EF 
0B27 33 
0B28 C501 
0B2A CF01 
0B2C E40D 
0B2E 9CF8 
0B30 90B6 


NEXTV1: LD 


CCL 

ADI 

ST 

XPPC 

LD 

XPAL 

LDI 

XPAH 

LD 

XPAH 

LD 

XPAL 

JMP 

JMP 


LO < P2) 
♦REDO 
F0RPTRCP2) 


F0RPTR<P2) 

P3 

FORPTR(P2) 


—2(P3) 
PI 


IS FOR-LOOP OVER WITH? 
NO - REPEAT LOOP 
YES - POP FOR-STACK 


; RETURN TO I. L. INTERPRETER 
;POINT P3 AT FOR STACK 


;GET OLD PI OFF STACK 


X26 
_E18 

************************************ 
* PRINT MEMORY AS STRING * 

************************************ 


THIS ROUTINE IMPLEMENTS THE STATEMENT: 
'PRINT' '♦' FACTOR 


. LOCAL 

PSTRNG: LD 

XPAH 
LD 
XPAL 
LDP I 

*1: LD 

XRI 
JZ 
XRI 
XPPC 
CSA 
AN I 
JNZ 
JMP 


HI(P2) 

PI 

L0<P2) 

PI 

P3,PUTC-1 
@1(PI) 

OD 

X26 

OD 

P3 

020 

*1 

X26 


iPOINT PI AT STRING TO PRINT 


POINT P3 AT PUTC ROUTINE 

GET A CHARACTER 

IS IT A CARRIAGE RETURN? 

YES - WE'RE DONE 

NO - PRINT THE CHARACTER 

MAKE SURE NO ONE IS 
TYPING ON THE TTY 
BEFORE REPEATING LOOP 


************************************ 
* INPUT A STRING * 

************************************ 


; THIS ROUTINE IMPLEMENTS THE STATEMENT: 
i 'INPUT' '♦' FACTOR 


ISTRNG: LD HI<P2) 

XPAH P3 

LD L0(P2) 

XPAL P3 

*2: LD 61(PI) 

ST @1(P3) 

XRI OD 

JNZ *2 

X27: JMP X26 


;GET ADDRESS TO STORE THE 
; STRING, PUT IT INTO P3 


GET A BYTE FROM LINE BUFFER 
PUT IT IN SPECIFIED LOCATION 
DO UNTIL CHAR = CARR. RETURN 


0B77 AAFD 
0B79 AAFD 
0B7B 33 
0B7C C410 
0B7E 37 
0B7F C2F6 
0B81 CBFE 
0B83 C400 
0B85 CBFF 
0B87 90A7 


0B89 C2EF 
0B8B D407 
0B8D 9C02 
0B8F C401 
0B91 CAF6 
0B93 3F 


0B94 C2F6 
0B96 E401 
0B98 9C09 
0B9A C411 
0B9C CAE9 
0B9E C420 
OBAO CAE8 
0BA2 3F 
0BA3 E401 
0BA5 01 
0BA6 C404 
0BA8 CAEB 
OBAA 40 
OBAB 02 
OBAC 70 
OBAD 01 
OBAE BAEB 
OBBO 9CF8 
0BB2 40 
0BB3 CAE9 
0BB5 C402 
0BB7 CAE8 
0BB9 3F 


i* PUT PAGE NUMBER ON STACK * 
)************************************ 


PUTPGE: ILD 
ILD 
XPAL 
LDI 
XPAH 
LD 
ST 
LDI 
ST 
JMP 


LSTK(P2) 
LSTK(P2) 
P3 

H(AESTK) 

P3 

PAGE(P2) 
-2<P3> 

0 

-1(P3) 

X27 


************************************ 
* ASSIGN NEW PAGE * 

************************************ 


. LOCAL 
NUPAGE: LD 
AN I 
JNZ 
LDI 

*0: ST 

XPPC 


i GET PAGE • FROM STACK, 
; GET THE LOW 3 BITS 
j PAGE O BECOMES PAGE 1 


;RETURN 


;************************************* 
;* FIND START OF PAGE * 

;************************************* 


THIS ROUTINE COMPUTES THE START OF THE CURRENT TEXT PAGE, 
STORING THE ADDRESS IN TEMP2(P2) CTHE HIGH BYTE], AND 
TEMP3<P2) CTHE LOW BYTE!. 


FNDPGE: LD 
XRI 
JNZ 
LDI 
ST 
LDI 
ST 
XPPC 

*1: XRI 

XAE 
LDI 
ST 

♦LOOP: LDE 

CCL 
ADE 
XAE 
DLD 
JNZ 
LDE 
ST 
LDI 
ST 
XPPC 


PAGE(P2) 

1 

♦ 1 

H(PGM) 
TEMP2(P2) 
L(PGM) 
TEMP3(P2) 
P3 
1 

4 

NUM(P2) 


NUM(P2) 

♦LOOP 

TEMP2<P2) 

2 

TEMP3(P2) 

P3 


iSPECIAL CASE IS PAGE 1. BUT 
i OTHERS ARE CONVENTIONAL 
iPAGE 1 STARTS AT 'PGM' 


;RETURN 

iRESTORE PAGE # 

; SAVE IT 

iLOOP COUNTER » 4 
;MULTIPLY PAGE# BY 16 


;TEMP2 HAS HIGH BYTE 
; OF ADDRESS NOW 
>LOW BYTE IS ALWAYS 2 


************************************ 
* STRING CONSTANT ASSIGNMENT * 
************************************ 


;************************************ 
i* MOVE CURSOR TO NEW PAGE * 

;************************************ 


; THIS ROUTINE IMPLEMENTS THE STATEMENT: 
i '♦' FACTOR '=' STRING 


0B32 C2EF 
0B34 33 
0B35 C2EE 
0B37 37 
0B38 C501 
0B3A E422 
0B3C 980E 
0B3E E42F 
0B40 9C04 
0B42 C407 
0B44 90BE 
0B46 E40D 
0B48 CF01 
0B4A 90EC 
0B4C C.40D 
0B4E CBOO 
0B50 90DE 


. LOCAL 

PUTSTR: LD 

XPAL 

LD 

XPAH 

♦LOOP: LD 

XRI 
JZ 
XRI 
JNZ 
LDI 
JMP 

♦1: XRI 

ST 
JMP 

♦END: LDI 

ST 
JMP 


L0(P2) 

P3 

HI(P2) 

P3 

@1(PI) 

♦END 
'"' ! OD 

♦ 1 

7 

E19 

OD 

@1<P3) 
♦LOOP 
OD 
(P3) 

X27 


;GET ADDRESS TO STORE STRING, 
; PUT IT INTO P3 


; GET A BYTE FROM STRING 
; CHECK FOR END OF STRING 

;MAKE SURE THERE'S NO CR 


ERROR IF CARRIAGE RETURN 
RESTORE CHARACTER 
PUT IN SPECIFIED LOCATION 
GET NEXT CHARACTER 
APPEND CARRIAGE RETURN 
TO STRING 


OBBA C2E9 
OBBC 35 
OBBD C2E8 
OBBF 31 
OBCO 3F 


0BC1 35 
0BC2 01 
0BC3 40 
0BC4 35 
0BC5 40 
0BC6 1C 
0BC7 1C 
0BC8 1C 
0BC9 1C 
OBCA CAF6 
OBCC 3F 


CHPAGE: 


LD 

XPAH 

LD 

XPAL 

XPPC 


TEMP2(P2) 
PI 

TEMP3(P2) 


; PUT START OF PAGE 
i INTO PI. THIS ROUTINE 
i MUST BE CALLED RIGHT 
i AFTER 'FNDPGE' 
i RETURN 


************************************ 
* DETERMINE CURRENT PAGE * 

************************************ 


DETPGE: 


XPAH 

XAE 

LDE 

XPAH 

LDE 

SR 

SR 

SR 

SR 

ST 

XPPC 


PI 


PI 


PAGE(P2) 
P3 


CURRENT PAGE IS HIGH 
PART OF CURSOR DIVIDED 
BY 16 


;RETURN 


0B52 C2FD 
0B54 33 
0B55 C410 
0B57 37 
0B58 C7FF 
0B5A 35 
0B5B C7FF 
0B5D 31 
0B5E C7FF 
0B60 01 
0B61 C-7FF 
0B63 33 
0B64 CAFD 
0B66 40 
0B67 37 
0B68 C501 
0B6A CF01 
0B6C E40D 
0B6E 98C0 
OB70 06 
0B71 D420 
0B73 9CF3 


;************************************ 
;* MOVE STRING * 

************************************ 


; THIS ROUTINE IMPLEMENTS THE STATEMENT: 
, '♦' FACTOR '=' '♦' FACTOR 


. LOCAL 

MOVSTR: LD 

XPAL 

LDI 

XPAH 

LD 

XPAH 

LD 

XPAL 

LD 

XAE 

LD 

XPAL 

ST 

LDE 

XPAH 

♦LOOP: LD 

ST 
XRI 
JZ 
CSA 
AN I 
JNZ 


LSTK(P2) 
P3 

H(AESTK) 

P3 

e-i<P3) 
PI 

6-1<P3) 
PI 

e-i(P3) 

e-i(P3) 
P3 

LSTK(P2) 
P3 

@1<P1) 

@1<P3> 

OD 

X27 

020 

♦LOOP 


; POINT P3 AT A. E. STACK 


;GET ADDRESS OF SOURCE STRING 
i INTO PI 


;GET ADDRESS OF DESTINATION 
; STRING INTO P3 


; UPDATE STACK POINTER 


;GET A SOURCE CHARACTER 
;SEND IT TO DESTINATION 
;REPEAT UNTIL CARRIAGE RET. 

; OR KEYBOARD INTERRUPT 


OBCD C2E9 
OBCF 35 
OBDO C2E8 
0BD2 31 
0BD3 C40D 
0BD5 C9FF 
0BD7 C4FF 
0BD9 C900 
OBDB C901 
OBDD 3F 


OBDE C2E9 
OBEO 35 


************************************ 
* CLEAR CURRENT PAGE * 

************************************ 


NEWPGM: LD 

XPAH 

LD 

XPAL 

LDI 

ST 

LDI 

ST 

ST 

XPPC 


TEMP2(P2) 
PI 

TEMP3(P2) 

PI 

OD 

-1<P1) 

-1 

(PI) 

1 <P1) 

P3 


;POINT PI AT CURRENT PAGE 


i PUT DUMMY END-OF-LINE 
; JUST BEFORE TEXT 
»PUT -1 AT START OF TEXT 


i RETURN 


i ************************************* 

;* FIND LINE NUMBER IN TEXT * 

;************************************* 

;INPUTS: THE START OF THE CURRENT PAGE IN TEMP2 AND TEMP3, 

; THE LINE NUMBER TO LOOK FOR IN LO AND HI. 

;OUPUTS: THE ADDRESS OF THE FIRST LINE IN THE NIBL TEXT 
i WHOSE LINE NUMBER IS GREATER THAN OR EQUAL TO THE 

i NUMBER IN HI AND LO, RETURNED IN ADRLO AND ADRHI. 

. LOCAL 

FNDLBL: LD TEMP2(P2) ;POINT PI AT START OF TEXT 

XPAH PI 


Nov./Dec., 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park. CA 94025 


Page 47 


344 





















0BE1 C2E8 


LD 

TEMPS<P2> 

0C72 


JUMP 

NEW1 

0BE3 31 


XPAL 

PI 

0C74 

DFAULT: 

DO 

LIT1 

0BE4 C100 

*1: 

LD 

(PI) /HAVE WE HIT END OF TEXT? 

0C76 

NEW1: 

DO 

DONE,POPAE,NUPAGE, FNDPGE, NEWPGM 

0BE6 E4FF 


XRI 

OFF 





0BE8 9412 


JP 

*2 ;YES - STOP LOOKING 

0C82 

STMT: 

TST 

LET,"LE"."T" 

OBEA 03 


SCL 

;NO - COMPARE LINE NUMBERS 

0C87 

LET: 

TSTV 

AT 

OBEB Cl01 


LD 

1(PI) i BY SUBTRACTING 

0C8B 


TST 

SYNTAX,"=" 

OBED FAEF 


CAD 

L0< P2) 

0C8E 


CALL 

RELEXP 

OBEF Cl00 


LD 

0<P1) 

0C90 


DO 

STORE,DONE, NXT 

OBF1 FAEE 


CAD 

HI<P2) ; IS TEXT LINE # >= LINE #? 

0C96 

AT: 

TST 

IF,"@" 

0BF3 9407 


JP 

*2 i YES - STOP LOOKING 

0C99 


CALL 

FACTOR 

0BF5 Cl02 


LD 

2<P1) i NO - TRY NEXT LINE IN TEXT 

0C9B 


TST 

SYNTAX,"=" 

0BF7 01 


XAE 


0C9E 


CALL 

RELEXP 

0BF3 C580 


LD 

eEREG(Pl) i SKIP LENGTH OF LINE 

OCAO 


DO 

MOVE,DONE, NXT 

OBFA 90E8 


JMP 

*1 





OBFC 31 

*2: 

XPAL 

PI i SAVE ADDRESS OF FOUND LINE 

0CA6 

IF: 

TST 

UNT,"I","F" 

OBFD CAF3 


ST 

LABLLO(P2) ; IN LABLHI AND LABLLO 

OCAA 


CALL 

RELEXP 

OBFF 31 


XPAL 

PI 

OCAC 


TST 

IF1, "THE", "N" 

0C00 35 


XPAH 

PI 

0CB2 

IF1: 

DO 

POPAE,CMPR 

0C01 CAF2 


ST 

LABLHI< P2) 

0CB6 


JUMP 

STMT 

0CO3 35 


XPAH 

PI 

0CB8 

UNT: 

TST 

DO, "UNTI", "L" 

0C04 C2EF 


LD 

LO(P2) ; WAS THERE AN EXACT MATCH? 

OCBF 


DO 

CKMODE 

0C06 El01 


XOR 

1 (PI) 

0CC1 


CALL 

RELEXP 

0C08 9C07 


JNZ 

*3 

0CC3 


DO 

DONE,POPAE,UNTIL, DETPGE, NXT 

OCOA C2EE 


LD 

HI(P2) 





OCOC El00 


XOR 

0(P1) 

OCCD 

DO: 

TST 

GOTO,"D","0" 

OCOE 9C01 


JNZ 

*3 ;NO - FLAG THE ADDRESS 

0CD1 


DO 

CKMODE, DONE,SAVEDO, NXT 

0C10 3F 


XPPC 

P3 ;YES - RETURN NORMALLY 





0C11 C2F2 

*3: 

LD 

LABLHI<P2) ;SET SIGN BIT OF HIGH PART 

0CD9 

GOTO: 

TST 

RETURN, "G", "0" 

0C13 DC80 


ORI 

080 i OF ADDRESS TO INDICATE 

OCDD 


TST 

GOSUB, "T", "0" 

0C15 CAF2 


ST 

LABLHI(P2) ; INEXACT MATCH OF LINE #"S 

0CE1 


CALL 

RELEXP 

0C17 3F 


XPPC 

P3 

0CE3 


DO 

DONE 



PAGE 

' I. L. MACROS' 

0CE5 


JUMP 

G01 





0CE7 

GOSUB: 

TST 

SYNTAX, "SU", "B" 


■, *********************************** 

OCEC 


CALL 

RELEXP 


< * 

I. 

L. MACROS * 

OCEE 


DO 

DONE, SAV 


; *********************************** 

0CF2 

G01: 

DO 

FNDPGE, POPAE, FNDLBL, XFER, NXT 



LOCAL 


OCFC 

RETURN: 

TST 

NEXT,"RETUR","N" 





0D04 


DO 

DONE, RSTR, DETPGE, NXT 

2000 

♦TSTBIT 

= 

TSTBIT*256 





8000 

♦CALBIT 

= 

CALBIT*256 

ODOC 

NEXT: 

TST 

FOR,"NEX","T" 

4000 

♦JMPBIT 

= 

JMPBIT*256 

0D12 


DO 

CKMODE 





0D14 


TSTV 

SYNTAX 



MACRO 

TST. FAIL, A, B 

0D18 


DO 

DONE, NEXTV 



DBYTE 

♦TSTBIT!FAIL 

0D1C 


CALL 

GTROP 



. IF 

#=2 

0D1E 


DO 

POPAE, NEXTV1, DETPGE, NXT 



. BYTE 

'A'!080 







ELSE 


0D26 

FOR: 

TST 

STAT, "FO", "R" 



ASCII 

'A' 

0D2B 


DO 

CKMODE 



. BYTE 

"B"!080 

0D2D 


TSTV 

SYNTAX 



. ENDIF 


0D31 


TST 

SYNTAX,"=" 



. ENDM 


0D34 


CALL 

RELEXP 





0D36 


TST 

SYNTAX, "T", "0" 



. MACRO 

TSTCR.FAIL 

0D3A 


CALL 

RELEXP 



. DBYTE 

♦TSTBIT!FAIL 

0D3C 


TST 

FORI,"STE","P" 



. BYTE 

OD!080 

0D42 


CALL 

RELEXP 



. ENDM 


0D44 


JUMP 

F0R2 





0D46 

FORI. 

DO 

LIT1 



. MACRO 

TSTV,FAIL 

0D48 

F0R2: 

DO 

DONE, SAVFOR, STORE, NXT 



. ADDR 

TSTVAR 







. DBYTE 

FAIL 

0D50 

STAT. 

TST 

PGE, "STA", "T" 



. ENDM 


0D56 


TST 

SYNTAX, "*" 





0D59 


CALL 

RELEXP 



. MACRO 

TSTN, FAIL 

0D5B 


DO 

POPAE, MOVESR 



. ADDR 

TSTNUM 

0D5F 


DO 

DONE, NXT 



. DBYTE 

FAIL 







. ENDM 


0D63 

PGE: 

TST 

DOLLAR, "PAG", "E" 





0D69 


TST 

SYNTAX, " = " 



. MACRO 

JUMP,ADR 

0D6C 


CALL 

RELEXP 



. DBYTE 

♦JMPBIT!ADR 

0D6E 


DO 

DONE, POPAE, NUPAGE, FNDPGE, CHPAGE, 



. ENDM 










0D7A 

DOLLAR: 

TST 

PRINT,"*" 



. MACRO 

CALL, ADR 

0D7D 


CALL 

FACTOR 



. DBYTE 

♦CALBIT!ADR 

0D7F 


TST 

SYNTAX,"-" 



. ENDM 


0D82 


TST 

D0LR1, """ 





0D85 


DO 

POPAE, PUTSTR 



. MACRO 

DO 

0D89 


JUMP 

D0LR2 



. MLOC 

I 

0D8B 

D0LR1: 

TST 

SYNTAX, 



. SET 

I, 1 

0D8E 


CALL 

FACTOR 



. DO 

# 

0D90 


DO 

XCHGP1, MOVSTR, XCHGP1 



. ADDR 

#1 

0D96 

D0LR2: 

DO 

DONE, NXT 



. SET 

I, 1 + 1 







ENDDO 


0D9A 

PRINT: 

TST 

INPUT, "P", "R" 



ENDM 


0D9E 


TST 

PR1, "IN", "T" 





0DA3 

PR1: 

TST 

PR2,""" 



. PAGE 

' I. L. TABLE" 

0DA6 


DO 

PRS 





0DA8 


JUMP 

COMMA 


; ************************************* 

ODAA 

PR2: 

TST 

PR3,"»" 


/ * 


I. L. TABLE * 

ODAD 


CALL 

FACTOR 


i ft-************************************ 

ODAF 


DO 

XCHGP1, POPAE, PSTRNG, XCHGP1 





0DB7 


JUMP 

COMMA 

0C18 

START: 

DO 

NLINE 

0DB9 

PR3: 

CALL 

RELEXP 

0C1A 

PROMPT 

DO 

GETL 

ODBB 


CALL 

PRNUM 

0C1C 


TSTCR 

PRMPT1 

ODBD 

COMMA: 

TST 

PR4, ", ' 

0C1F 


JUMP 

PROMPT 

ODCO 


JUMP 

PR1 

0C21 

PRMPT1 

TSTN 

LIST 

0DC2 

PR4: 

TST 

PRS, "i " 

0C25 


DO 

FNDPGE. XCHGP1, POPAE, FNDLBL. INSRT 

0DC5 


JUMP 

PR6 

0C2F 


JUMP 

PROMPT 

0DC7 

PR5: 

DO 

NLINE 





0DC9 

PR6: 

DO 

DONE, NXT 

0C31 

LIST: 

TST 

RUN,"LIS","T" 





0C37 


DO 

FNDPGE 

ODCD 

INPUT: 

TST 

END, "INPU","T" 

0C39 


TSTN 

LIST 1 

0DD4 


DO 

CKMODE 

0C3D 


DO 

POPAE, FNDLBL 

0DD6 


TSTV 

IN2 

0C41 


JUMP 

LIST2 

ODDA 


DO 

XCHGP1, GETL 

0C43 

LIST1: 

DO 

CHPAGE 

ODDE 

INI: 

CALL 

RELEXP 

0C45 

LIST2: 

DO 

LST 

ODEO 


DO 

STORE,XCHGP1 

0C47 

LISTS: 

CALL 

PRNUM 

0DE4 


TST 

IN3, ", " 

0C49 


DO 

LST3 

0DE7 


TSTV 

SYNTAX 

0C4B 


JUMP 

START 

ODEB 


DO 

XCHGP1 





ODED 


TST 

SYNTAX,"," 

0C4D 

RUN: 

TST 

CLR. "RU", "N" 

ODFO 


JUMP 

INI 

0C52 


DO 

DONE 

0DF2 

IN2: 

TST 

SYNTAX, "*" 

0C54 

BEGIN: 

DO 

FNDPGE, CHPAGE, STRT. NXT 

0DF5 


CALL 

FACTOR 





0DF7 


DO 

XCHGP1, GETL, POPAE, ISTRNG, XCHGP1 

0C5C 

CLR: 

TST 

NEW,"CLEA","R" 

0E01 

IN3: 

DO 

DONE, NXT 

0C63 


DO 

DONE, CLEAR, NXT 









0E05 

END: 

TST 

ML,"EN","D" 

0C69 

NEW: 

TST 

STMT."NE", "W" 

OEOA 


DO 

DONE,BREAK 

0C6E 


TSTN 

DFAULT 






Page 48 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Nov./Dec., 1976 


345 







OEOE 

ML: 

TST 

REM, 'LIN', 'K' 


0F49 

MESSAGE ' 

SNT','X' 

i 5 

0E14 


CALL 

RELEXP 


0F4D 

MESSAGE ' 

VAL', 'U' 

i 6 

0E16 


DO 

DONE-XCHGP1,POPAE.CALLML, XCHGP1, NXT 

0F51 

MESSAGE ' 

END', 

i '7 






0F55 

MESSAGE ' 

NOG','0' 

i 6 

0E22 

REM: 

TST 

SYNTAX,'RE','M' 


0F59 

MESSAGE ' 

RTR', 'N' 

; 9 

OE27 


DO 

IGNORE, NXT 


0F5D 

MESSAGE ' 

NES', 'T' 

; 10 

0E2B 

SYNTAX: 

DO 

ERR 


0F61 

MESSAGE ' 

NEX','T' 

i 11 

0E2D 

ERRNUM: 

CALL 

PRNUM 


0F65 

MESSAGE ' 

FO','R' 

j 12 

0E2F 


DO 

FIN 


0F68 

MESSAGE ' 

DIV','0' 

i 13 






0F6C 

MESSAGE ' 

BR', 'K' 

> 14 


; NOTE: 

EACH RELATIONAL OPERATOR (EQ, 

LEQ, ETC. ) DOES AN 

0F6F 

MESSAGE ' 

UNT'. 'L' 

> 15 


i AUTOMATIC 'RTN' (THIS SAVES VALUABE 

BYTES!) 


PAGE 

' TELETYPE ROUTINES' 

0E31 

RELEXP: 

CALL 

EXPR 


■, ************************************* 

0E33 


TST 

REL1,'=' 


; • 

GET CHARACTER AND ECHO IT * 

0E36 


CALL 

EXPR 


;************************************* 

0E38 


DO 

EQ 


i 




0E3A 

REL1: 

TST 

REL4,'<' 



. LOCAL 



0E3D 


TST 

REL2,'=' 


0F73 C408 GECO 

LDI 

8 

i SET COUNT - 8 

0E40 


CALL 

EXPR 


0F75 CAEB 

ST 

NUM(P2) 


0E42 


DO 

LEQ 


0F77 06 

CSA 


iSET READER RELAY 

0E44 

REL2: 

TST 

REL3, '>' 


0F78 DC02 

OR I 

2 


0E47 


CALL 

EXPR 


0F7A 07 

CAS 



0E49 


DO 

NEQ 


0F7B 06 *1: 

CSA 


i WAIT FOR START BIT 

0E4B 

REL3: 

CALL 

EXPR 


0F7C D420 

AN I 

020 


0E4D 


DO 

LSS 


0F7E 9CFB 

JNZ 

*1 

i NOT FOUND 

0E4F 

REL4: 

TST 

RETEXP, '>' 


0F80 C457 

LDI 

87 

jDELAY 1/2 BIT TIME 

0E52 


TST 

REL5, ' = ' 


0F82 8F04 

DLY 

4 


0E55 


CALL 

EXPR 


0F84 06 

CSA 


i IS START BIT STILL THERE? 

0E57 


DO 

GEQ 


0F85 D420 

AN I 

020 


0E59 

REL5: 

CALL 

EXPR 


0F87 9CF2 

JNZ 

*1 

i NO 

0E5B 

GTROP: 

DO 

GTR 


0F89 06 

CSA 


»SEND START BIT 






0F8A D4FD 

AN I 

y.2 

i RESET READER RELAY 

0E5D 

EXPR: 

TST 

EX1, '-' 


0F8C DC01 

OR I 

1 


0E60 


CALL 

TERM 


0F8E 07 

CAS 



0E62 


DO 

NEG 


0F8F C485 %2\ 

LDI 

133 

; DELAY 1 BIT TIME 

0E64 


JUMP 

EX3 


0F91 8F08 

DLY 

8 


0E66 

EX 1: 

TST 

EX2,'+' 


0F93 06 

CSA 


;GET BIT (SENSEB) 

0E69 

EX2: 

CALL 

TERM 


0F94 D420 

AN I 

020 


0E6B 

EX3: 

TST 

EX4,'+' 


0F96 9804 

JZ 

*3 


0E6E 


CALL 

TERM 


0F98 C401 

LDI 

1 


0E70 


DO 

ADD 


0F9A 9004 

JMP 

*4 


0E72 


JUMP 

EX3 


0F9C C400 *3: 

LDI 

0 


0E74 

EX4: 

TST 

EX5, 


0F9E 9C00 

JNZ 

*4 


0E77 


CALL 

TERM 


OFAO CAEA *4: 

ST 

TEMP(P2) 

»SAVE BIT VALUE <0 OR 1) 

0E79 


DO 

SUB 


0FA2 IF 

RRL 


;ROTATE INTO LINK 

0E7B 


JUMP 

EX3 


0FA3 01 

XAE 



0E7D 

EX5: 

TST 

RETEXP. 'O'. 'R' 


0FA4 ID 

SRL 


; SHIFT INTO CHARACTER 

0E81 


CALL 

TERM 


0FA5 01 

XAE 


;RETURN CHAR TO E 

0E83 


DO 

OROP 


0FA6 06 

CSA 


;ECHO BIT TO OUTPUT 

0E85 


JUMP 

EX3 


0FA7 DC01 

OR I 

1 


0E87 

RETEXP 

DO 

RTN 


0FA9 E2EA 

XQR 

TEMP(P2) 







OFAB 07 

CAS 



0E89 

TERM 

CALL 

FACTOR 


OFAC BAEB 

DLD 

NUM(P2) 

i DECREMENT BIT COUNT 

0E8B 

Tl: 

TST 

T2,'*' 


OFAE 9CDF 

JNZ 

*2 

iLOOP UNTIL 0 

0E8E 


CALL 

FACTOR 


OFBO 06 

CSA 


;SET STOP BIT 

0E90 


DO 

MUL 


0FB1 D4FE 

AN I 

OFE 


0E92 


JUMP 

Tl 


0FB3 07 

CAS 



0E94 

T2: 

TST 

T3, '/' 


0FB4 8F08 

DLY 

8 

;DELAY APPROX. 2 BIT TIMES 

0E97 


CALL 

FACTOR 


0FB6 40 

LDE 


»AC HAS INPUT CHARACTER 

0E99 


DO 

DIV 


0FB7 D47F 

AN I 

07F 


0E9B 


JUMP 

Tl 


0FB9 01 

XAE 



0E9D 

T3: 

TST 

RETEXP, 'AN', 'D' 


OFBA 40 

LDE 



0EA2 


CALL 

FACTOR 


OFBB 3F 

XPPC 

P3 

• RETURN 

0EA4 


DO 

ANDOP 


OFBC 90B5 

JMP 

GECO 


0EA6 


JUMP 

Tl 


;************************************* 






i * 

PRINT CHARACTER AT TTY * 

0EA8 

FACTOR 

TSTV 

FI 


;************************************* 

OEAC 


DO 

IND, RTN 






OEBO 

FI: 

TSTN 

F2 


OFBE 01 PUTC 

XAE 



0EB4 


DO 

RTN 


OFBF C4FF 

LDI 

255 


0EB6 

F2: 

TST 

F3,'#' 


0FC1 8F17 

DLY 

23 


0EB9 


DO 

HEX.RTN 


0FC3 06 

CSA 


;SET OUTPUT BIT TO LOGIC 0 

OEBD 

F3: 

TST 

F4, ' < ' 


0FC4 DC01 

OR I 

1 

i FOR START BIT. (NOTE INVERS 

OECO 


CALL 

RELEXP 


0FC6 07 

CAS 



0EC2 


TST 

SYNTAX,')' 


0FC7 C409 

LDI 

9 

iINITIALIZE BIT COUNT 

0EC5 


DO 

RTN 


0FC9 CAES 

ST 

TEMP3(P2) 


0EC7 

F4: 

TST 

F5, '«' 


OFCB C48A PUTC1: LDI 

138 

iDELAY 1 BIT TIME 

OECA 


CALL 

FACTOR 


OFCD 8F08 

DLY 

8 


OECC 


DO 

EVAL,RTN 


OFCF BAE8 

DLD 

TEMP3(P2) 

; DECREMENT BIT COUNT. 

OEDO 

F5: 

TST 

F6,'NO','T' 


0FD1 9810 

JZ 

PUTC2 


0ED5 


CALL 

FACTOR 


0FD3 40 

LDE 


; PREPARE NEXT BIT 

0ED7 


DO 

NOTOP, RTN 


0FD4 D401 

AN I 

1 


OEDB 

F6: 

TST 

F7, 'STA', 'T' 


0FD6 CAE9 

ST 

TEMP2(P2) 


0EE1 


DO 

STATUS, RTN 


0FD8 01 

XAE 


i SHIFT DATA RIGHT 1 BIT 

0EE5 

F7: 

TST 

F8,'TO','P' 


0FD9 1C 

SR 



OEEA 


DO 

FNDPGE, TOP, RTN 


OFDA 01 

XAE 



OEFO 

F8: 

TST 

F9, MO', 'D' 


OFDB 06 

CSA 


;SET UP OUTPUT BIT 

0EF5 


CALL 

DOUBLE 


OFDC DC01 

OR I 

1 


0EF7 


DO 

DIV,MODULO, RTN 


OFDE E2E9 

XOR 

TEMP2< P2) 


OEFD 

F9: 

TST 

F10,'RN','D' 


OFEO 07 

CAS 


;PUT BIT TO TTY 

0F02 


CALL 

DOUBLE 


0FE1 90E8 

JMP 

PUTC1 


0F04 


DO 

RANDOM,SUB, ADD. DIV, MODULO, ADD, RTN 

0FE3 06 PUTC2: CSA 


;SET STOP BIT 

OF 12 

F10: 

TST 

SYNTAX, 'PAG', 'E' 


0FE4 D4FE 

AN I 

OFE 


OF 18 


DO 

PUTPGE, RTN 


0FE6 07 

CAS 








0FE7 3F 

XPPC 

P3 

;RETURN 

OF 1C 

DOUBLE 

: TST 

SYNTAX,'(' 


0FE8 90D4 

JMP 

PUTC 


OF IF 


CALL 

RELEXP 


0000 

. END 

0 


0F21 


TST 

SYNTAX, ', ' 


ADD 0335 

AESTk 1050 

ANDOP 

05F0 AT 0C96 

0F24 


CALL 

RELEXP 


BEGIN 0C54 

BREAK 0288 

CALBIT 

0080 CALLML 0963 

0F26 


TST 

SYNTAX.')' 


CHEAT 007C 

CHEAT1 009B 

CHPAGE 

OBBA CHRNUM FFE7 

0F29 


DO 

RTN 


CK1 0649 

CKMODE 0644 

CLEAR 

0051 CLEAR1 0056 






CLR 0C5C 

CMP 0562 

CMP1 

05C2 CMP2 05CA 

0F2B 

PRNUM: 

DO 

XCHGP1, PRN 


CMPR 05D9 

COMMA ODBD 

DETPGE 

0BC1 DFAULT 0C74 

0F2F 

PRNUM1 

: DO 

DIV,PRN1, XCHGP1.RTN 


DIV 0410 

DO OCCD 

DOLLAR 

0D7A D0LR1 0D8B 



r’AGE 

'ERROR MESSAGES' 


D0LR2 0D96 

DONE 0135 

D0NE1 

0143 D0NE2 0144 






DOPTR FFFF 

DOSTAK 107A 

DOUBLE 

OF 1C EO 0150 


; ************************************* 

EOA 010D 

El 0195 

E10 

07C6 Ell 081E 


i * 

ERROR MESSAGES 

* 

El2 086D 

E12A 08E1 

E13 

0910 E14 0950 


;************************************* 

E15 097C 

El6 09CC 

E16A 

0A2E El7 0A4A 






El8 0AA7 

E19 0BO4 

E2 

01CC E3A 028A 



. MACRO 

MESSAGE,A,B 


E4 02DF 

E5 030C 

E6 

0378 E6A 03D2 



. ASCII 

'A' 


E8 064B 

E8A 06E5 

E8B 

06B2 E9 074F 



. BYTE 

'B'!080 


END 0E05 

EQ 054C 

EREG 

FF80 ERR 0223 



. ENDM 



ERR1 0225 

ERR2 0227 

ERRNUM 

0E2D EVAL 07E6 






EX 1 0E66 

EX2 0E69 

EX3 

0E6B EX4 0E74 

0F37 

MESGS: 

MESSAGE ' ERRO'.'R' ; 1 


EX5 0E7D 

EXECIL 0076 

EXPR 

0E5D FI OEBO 

0F3D 


MESSAGE "ARE', A' j 2 


F10 OF12 

F2 0EB6 

F3 

OEBD F4 0EC7 

OF 41 


MESSAGE 'STM','T' i 3 


F5 OEDO 

F6 OEDE 

F7 

0EE5 F8 OEFO 

0F45 


MESSAGE 'CHA','R' ; 4 


F9 OEFD 

FACTOR 0EA8 FAIL 

05E1 FAILHI FFEC 


Nov./Dec., 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 49 


346 





FAILLO FFED 
FNDPGE 0B94 
FORPTR FFFE 
GEQ1 05BE 
GOTO 0CD9 
HEX 0654 
IF1 0CB2 
INI ODDE 
INPUT ODCD 
LABLHI FFF2 
LEQ1 05AA 
LIST2 0C45 
LO FFEF 
LST 02E1 
LST5 0324 
MODULO 09BC 
MUL 037A 
NEW 0C69 
NEXTV 0A85 
NOTOP 05F8 
NXT1 02A9 
PILOW FFF1 
PCHIGH FFFA 
PGE 0D63 
PR2 ODAA 
PR6 0DC9 
PRN1 01CE 
PRS 017E 
PUTC1 OFCB 
RANDOM 09CE 
REL4 0E4F 
RETEXP 0E87 
RNDY FFE4 
RTN OOFB 
SAV1 012B 
SBRPTR FFFC 
STAT 0D50 
STRT 02C8 
T2 0E94 
TEMP3 FFE8 
TSTBIT 0020 
UNTIL ' 0924 
X10 04E2 

X12B 0637 

X15 07B4 

X19A 03E5 

X23 09CA 
X27 0B30 

X6 02DD 
X9 03EF 
XFER 0171 
ZZ0003 OFBD 
ZZ0007 0F37 
ZZOOOB OFBD 
ZZOOOF 0002 
ZZOO13 0002 
ZZOO17 0005 
ZZ001B 0004 
ZZOOIF 0006 
ZZ0023 0006 
ZZ0027 0005 
ZZ002B 0003 
ZZ002F 0004 
ZZ0033 0002 
ZZ0037 0003 
ZZ003B 0003 
ZZ003F 0002 
ZZ0043 0002 
ZZ0047 0002 
ZZ004B 0002 
ZZ004F 0002 
ZZ0053 0003 
ZZ0057 0008 
ZZ005B 0005 
*0 0996 

*1 023D 

*1 06E7 

*1 097E 

♦ 1 0A8F 

*1 0BE4 

*2 025A 

*2 07B2 * 

*2 0B28 

*3 03D4 

*3 0C11 

$4 OFAO 

♦ ADD1 08FF 
♦END 04C3 
♦ENTE 068B 
♦JMPB 4000 
♦LOOP 0203 
♦LOOP 066C 
♦LOOP 0B38 
♦MOVE 086F 
♦OK 051A 
♦PRNT 01EF 
♦RUB 07CE 
♦SKIP 0664 
♦UP2 08C2 
♦XU 07A6 


FALSE 05C8 
FOR 0D26 
FORSTK 108A 
GETL 0753 
GTR 055C 
HI FFEE 
IGNORE 09B5 
IN2 0DF2 
INSRT 0820 
LABLLO FFF3 
LET 0C87 
LIST3 0C47 
LOLINE FFF8 
LST2 02FF 
LSTK FFFD 
MOVE 0804 
NEG 0363 
NEW1 0C76 
NEXTV1 OAEA 
NUM FFEB 
DROP 05F4 
P2 0002 
PCLOW FFFB 
PGM 1120 
PR3 0DB9 
PRINT 0D9A 
PRNUM 0F2B 
PRS1 0193 
PUTC2 0FE3 
REL1 0E3A 
REL5 0E59 
RETURN OCFC 
RSTR 0148 
RUN 0C4D 
SAV2 0131 
SBRSTK 106A 
STATUS 0952 
SUB 034C 
T3 0E9D 
TERM 0E89 
TSTNUM 06B4 
VARS 101C 
X11 054A 
X12C 067A 
X16 07E4 
X20 0909 
X24 0A2C 
X4 01CA 
X6A 030A 
X9A 0439 
XFER1 0179 
ZZ0004 OFBD 
ZZ0008 0F37 
ZZOOOC 101C 
ZZOO10 0006 
ZZOO14 0002 
ZZ0018 0004 
ZZOO1C 0004 
ZZ0020 0005 
ZZ0024 0005 
ZZ0028 0002 
ZZ002C 0003 
120030 0003 
ZZ0034 0003 
ZZ0038 0002 
ZZ003C 0007 
ZZ0040 0002 
ZZ0044 0002 
ZZ0048 0002 
ZZ004C 0002 
110050 0003 
ZZ0054 0003 
ZZ0058 0003 
♦0 002A 
♦0 0B91 
♦1 0397 
♦1 0772 
♦1 099C 
♦1 OB12 
♦1 0F7B 
♦2 03A8 
♦2 0842 
♦2 OBFC 
♦3 04AC 
♦3 0F9C 
♦5 085E 
♦CALB 8000 
♦END 06AC 
♦ENTE 07B6 
♦LETR 067C 
♦LOOP 0241 
♦LOOP 06F7 
♦LOOP 0B68 
♦MSG 0247 
♦OK 0688 
♦REDO 093C 
♦SCAN 00C7 
♦TSTB 2000 
♦UP3 08C4 


FIN 02B2 
FORI 0D46 
GECO 0F73 
G01 0CF2 
GTR1 05B3 
HILINE FFF7 
ILC1 OOAA 
IN3 0E01 
ISTRNG 0B22 
LBUF 10D6 
LIST 0C31 
LISTNG FFF5 
LSS 0554 
LST3 030E 
MESGS 0F37 
MOVESR 0949 
NEQ 0550 
NEWPGM OBCD 
NLINE 0215 
NUPAGE 0B89 
PI 0001 
P3 0003 
PCSTAK 10A6 
POPAE 0912 
PR4 0DC2 
PRMPT1 0C21 
PRNUM1 0F2F 
PSTRNG 0B06 
PUTPGE 0B77 
REL2 0E44 
RELEXP 0E31 
RNDF FFE6 
RSTR1 0152 
RUNMOD FFF4 
SAVEDO 0974 
SETZ 058D 
STMT 0C82 
SYNTAX 0E2B 
TEMP FFEA 
TOP 0990 
TSTVAR 04E9 
XO OOEC 
X12 0597 
X13 06E3 
X17 081C 
X21 094E 
X25 0A83 
X5 0221 
X7 034A 
X9B 04A4 
ZZ0001 101C 
ZZ0005 OFBD 
ZZ0009 OFBD 
ZZOOOD OFBD 
ZZ0011 0002 
ZZ0015 0002 
ZZOO19 0002 
ZZOOID 0003 
ZZ0021 0002 
ZZ0025 0002 
ZZ0029 0002 
ZZ002D 0007 
ZZ0031 0002 
ZZ0035 0002 
ZZ0039 0006 
ZZ003D 0003 
ZZ0041 0002 
ZZ0045 0002 
ZZ0049 0002 
ZZ004D 0002 
ZZ0051 0002 
ZZ0055 0004 
ZZ0059 0002 
♦0 0420 
♦1 0043 
♦1 0443 
♦1 0838 
♦1 09FD 
♦1 0B46 
♦10 0AA9 
♦2 0454 
♦2 09A3 
♦2 0F8F 
♦3 084A 
♦4 03F1 
♦ABOR 06C6 
♦CR 07D8 
♦END 0B4C 
♦EXIT 0402 
♦LOOP 002C 
♦LOOP 03B6 
♦LOOP 09D9 
♦LOOP OBAA 
♦NEQ OOEE 
♦OR 0616 
♦REDO 0AF6 
♦SHIF 0692 
♦UP 0895 
♦UP4 08D4 


FNDLBL OBDE 
F0R2 0D48 
GEQ 0560 
GOSUB 0CE7 
GTROP 0E5B 
IF 0CA6 
ILCALL OOAO 
IND 0534 
JMPBIT 0040 
LEQ 0558 
LIST1 0C43 
LIT1 0A30 
LSS1 05A2 
LST4 0314 
ML OEOE 
MOVSTR 0B52 
NEQ1 0599 
NEXT ODOC 
NOJUMP 009D 
NXT 028C 
PIHIGH FFFO 
PAGE FFF6 
PCSTK FFF9 
PR1 0DA3 
PR5 0DC7 
PRN 0197 
PROMPT 0C1A 
PUTC OFBE 
PUTSTR 0B32 
REL3 0E4B 
REM 0E22 
RNDX FFE5 
RSTR2 0167 
SAV 01OF 
SAVFOR 0A42 
START 0C18 
STORE 04C9 
T1 0E8B 
TEMP2 FFE9 
TST 00C5 
UNT 0CB8 
XI 0165 
X12A 05EE 
X14 0751 
X19 086B 
X22 098E 
X26 0AE8 
X5A 0286 
X8 0376 
XCHGP1 0639 
ZZ0002 1120 
ZZ0006 OFBD 
ZZOOOA 10D6 
ZZOOOE 0002 
ZZ0012 0003 
ZZ0016 0002 
ZZ001A 0007 
ZZ001E 0002 
ZZ0022 0003 
ZZ0026 0003 
ZZ002A 0005 
ZZ002E 0003 
ZZ0032 0005 
ZZ0036 0003 
ZZ003A 0003 
ZZ003E 0002 
ZZ0042 0002 
ZZ0046 0002 
ZZ004A 0002 
ZZ004E 0003 
ZZ0052 0003 
ZZ0056 0004 
ZZ005A 0003 
♦0 076F 
♦1 01C6 
♦1 05FA 
♦1 0930 
♦1 0A4C 
♦1 0BA3 
♦2 01FF 
♦2 0707 
♦2 OADD 
♦3 0261 
♦3 OADF 
♦4 0857 
♦ADD 08E3 
♦DOWN 0885 
♦ENT1 04A6 
♦FAIL 04FB 
♦LOOP OODB 
♦LOOP 0460 
♦LOOP 0AD1 
♦MAYB 050D 
♦NOT 0628 
♦POS 043B 
♦RET 06D6 
♦SHIF 0714 
♦UP1 08A1 
♦XH 07C8 


6502 STRING OUTPUT, REVISITED 

Dear Mr. Warren, Oct. 6, 1976 

In DDJ, Vol. 1, No. 8 (p. 33), Mr. Espinosa proposed the 
exchange of “handy” subroutines to save bytes in space- 
limited systems. He also presented an example, an ASCII 
string output subroutine for the 6502 microprocessor. I 
would like to submit a revised version of Mr. Espinosa’s sub¬ 
routine. I have done extensive work on 6502’s with OSI’s 
Model 400 microcomputer. During this time I have learned 
several byte saving programming “tricks” which I would like 
to pass on by illustration. Through a few simple changes I 
was able to reduce the length from 40 to 2B (hex) bytes. 
The result is a subroutine which works the same and saves 
a few more bytes. The program demonstrates a few simple 
“tricks”: 

— Preservation of the Y index register on the stack (3 
bytes saved) 

— Replace JMP instruction (with ranges less than 128 bt 
bytes) with forced relative branches. This permits 
easier relocation of a generalized subroutine so it 
may be used elsewhere in memory. 

— Make use of TYA instruction rather than saving the Y 
index in a memory location and then adding it in later 
(5 bytes saved). 

— Test the carry flag condition and increment the high 
order byte if set rather than adding 00 (2 bytes saved). 

— Try to avoid dead space inside programs, and non-sero 
page data storage (i.e. locations 0433 to 043F) (12 
bytes saved). 

Sincerely, 

Marcel Meier 8850 S. Spring Valley Dr. 

Chagrin Falls, OH 44022 

; 8 I R J NOTH IT : RE V T SF P VFRS J ON 
; UR7G.TNAI RY C. ESPINOSA 
; REVISIONS PY M MF.TFR 


ORO *400 
AKFPP f-QU *43A 

OUT FQU *FFFP 

I 0 FQU SEP 

HI FQU *FF 

I 0 PP7 

HI PP7 


0400 SP 7A 
0403 AS 
0404 85 FF 

0406 68 

0407 85 FF 

0409 98 

040A 48 

040E: AO 01 
04 OP HI. FF 
040F FO 07 
0411 08 

0412 90 FF 

0415 18 

0416 90 F5 

0418 98 

0419 38 

041A 65 FF 
0410 85 FF 

041F 90 02 

0490 FA FF 
(1432 68 

0433 A8 
0474 AO 2A 
0437 60 FF 


FF 


REGIN S I A AKFFP 
FI A 

SI A I 0 
PI A 
ST A HT 
I YA 
PHA 

IPY #01 

NFXT I PA (I TO, Y 
HEQ FXIT 
I NY 

USR OUT 
01 O 

ROO NFXT 
FXIT TYA 

SF.O 

APO I O 
ST A I 0 
POO NiTOAR 
I NO HI 
NOOAR Pi A 
TAY 

I PA AKFFP 
• IMP (I 0) 


SAVE AO 

OFT RETURN APPKESS 


PUT Y INPEX ON STACK 

SFT UP INPFX POINTFR 
OFT NFX1 OHARAOTFR 
PONF IF NUI 1 OHARAOTFR 

OUTPUT OHARAOTFR 
FOROFJi I OOP W J1H 
A RE I AT IVF PRANOH 
OFT STRING I ENOTH 

APP RFTURN APPRESS TO 
OFFSFT 

IF CARRY, INOREMFNT HI 
RESTORE Y FROM STACK 
RFS70RF AO 

RFTURN 00 .INSTRUCTJON AFTFR NUI I. 


NO ERROR LINES 

SOURCE CHECKSUM = 33FE 

INPUT FILE 1:NIBL2. SRC 


IN-GROUP HUMOR FOR DINOSAUR USERS 


We recently heard of some new instructions proposed for 
some of the maxi computers of industry and business: 

BRANCH & BOMB 
BRANCH & HANG 
PUNCH OPERATOR 
BACKSPACE & EJECT DISC 
BACKSPACE & PUNCH DISC 

Oh well; we said it was in-group humor. 


TSC LIVES! THEY DO HAVE A PHONE 
NUMBER 

Technical Systems Consultants, Box 2574, West Lafayette, 
IN 47906, peddles some interesting, low-cost micro software. 
Several people have asked us if TSC is OK to deal with, stat¬ 
ing that they were unable to locate a phone number or street 
address. We wish to emphatically state that they are real; 
they are reputable; and they do have a phone: (317) 742- 
7509. 


Page 50 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Nov./Dec., 1976 


347 





UPGRADED CP/M FLOPPY DISC OPERATING 
SYSTEM NOW AVAILABLE 

CP/M is a disk operating system designed for diskette-based 
computer systems which use the Intel 8080 microcomputer. 
The CP/M software package is now being offered to the small 
computer user community. 

Previously available only to OEM’s, CP/M has been in exist¬ 
ence for over two years in various manufacturers’ products, 
and thus has had extensive field testing. CP/M functions in¬ 
clude file management, with console interaction, batch pro¬ 
cessing, and program loading facilities. The overall operation 
of CP/M closely resembles the standard features of the DEC 
System-10. In particular, CP/M components include: 

BDOS — the CP/M Basic Disk Operating System supports a named 
file system, with up to 64 distinct files on each diskette. Files storage 
is dynamically allocated and released as necessary, with algorithms for 
optimal read/write head movement. Any file can contain as few as 
zero bytes, and up to 250K bytes, depending upon the requirements of 
the user program. Sequential and random access are supported. 

CCP — the Console Command Processor interacts with the program¬ 
mer's console, providing the basic commands: 

Dl R selectively search the disk directory for files 
TYPE type the contents of a file at the console 
REN rename a specific file to a different name 
ERA erase a given file or set of files from the disk 
SAVE save memory on the disk for later reload or test 
The CCP also supports automatic program load and execution of CP/M 
system programs as well as user programs. 

PIP —the CP/M Peripheral Interchange Program allows transfer of 
files between various devices and disk files, as well as concatenation of 
files on the diskettes. 

SUBMIT — the batch processing features of CP/M allow the operator 
to prepare command files with parametric substitution, which can be 
subsequently automatically executed if typed by the operator. 

ED — the CP/M editor allows preparation of programs and text 
using powerful context editing and display commands. 

ASM — the CP/M assembler is compatible with both the standard 
Intel assembler and Processor Technology assembly language. 

DDT — the CP/M Debugging Tool is a monitor which allows 
symbolic program tracing, debugging, and testing. 

LOAD — the loader prepared a "memory image" file from an 
Intel format "hex" file, ready for direct execution under CP/M. 

DUMP — the dump utility prints the contents of a CP/M file 
in hexadecimal at the user's console. 

SYSGEN — the system generation utility prints the contents of a 
CP/M system diskettes from existing diskettes for back-up purposes. 

The CP/M operating system is distributed for an Intel MDS 
microcomputer development system, but can be easily altered 
to operate with a wide variety of customized hardware envi¬ 
ronments. Basic requirements are: 

a) Intel 8080 — based microcomputer mainframe 

b) At least 16K of read/write main memory 

c) One or two IBM-compatible disk drives and controller 

Given these facilities, the CP/M disk system is “patched” by 

the user to communicate with the specialized hardware. The 
exact steps to follow in programming and patching the CP/M 
system are given in the manual CP/M System Alteration Guide. 
In fact, several popular mainframe and controller manufactur¬ 
ers currently support their own CP/M patch. 

The CP/M system is distributed on an IBM-compatible dis¬ 
kette in machine-code form only (source programs are avail¬ 
able for internal use, or distribution with custom hardware at 
additional cost), along with complete documentation required 
for operating CP/M and programming in the CP/M environ¬ 
ment. The software is licensed for use by the individual who 
purchases CP/M, and is registered and serialized to prevent 
unauthorized copying and distribution. In particular, the 
licensing agreement specifically disallows copying CP/M for 
use by any individual other than the registered owner. The 
registered owner of a CP/M system receives notices of updates 
and becomes a member of the CP/M User’s Library. System 
documentation includes: 

CP/M Features and Facilities — this manual presents the organiza¬ 
tion of the CP/M system, along with the forms for file name references, 

Nov./Dec., 1976 


built-in commands and transient commands, including operation of 
the editor, assembler, debugger, peripheral interchange program, and 
batch processor. 

CP/M Editor, CP/M Assembler and CP/M Debugger Manuals — 
these three manuals provide the operating details for CP/M's principal 
subsystems for program composition (ED), assembly (ASM), and test¬ 
ing (DDT). Manuals can be purchased separately. 

CP/M Interface Guide — this manual gives the exact details for pro¬ 
gramming in the CP/M environment. In particular, all system calls are 
specified, along with details of CP/M file organization which is necessary 
for programs which operate upon CP/M files. 

CP/M System Alteration Guide — the alteration guide gives the step- 
by-step process which you must follow in order to alter the CP/M sys¬ 
tem to run with non-standard hardware. I/O drivers for commonly 
available hardware systems are given. 

Individual manuals are $5. A package consisting of all six 
manuals is $25. An initialized, “loaded” floppy disc is $50. 

A disc and all documentation - “the works” - is $70. And, 
of course, Californians get to add 6% tax. 

Digital Research, Box 579, Pacific Grove, CA 93950, (408) 
373-3403. 


Dear Dr. Dobb, Nov. 1,1976 

I have seen the articles on the CP/M floppy disc operating system 
available from Digital Systems. I am writing because I am a satisfied 
customer. I have had a system from Digital Systems running for 
nearly a year now and have had no trouble with it. The hardware is 
reliable and well designed. I do not know of anything presently on 
the market that compares favorably to it. The software is also fan¬ 
tastic and reliable. It is easy to interface with the DOS to read and 
write files, and do I/O. The software developed by Digital Research 
is well designed and is implemented much like the Monitor on the 
DEC System 10. The assembler, editor and debugger supported by 
the system are excellent. In addition to that the documentation that 
comes with the system is first class. I am enthusiastically pleased 
with the performance of the system. 

I have dealt with Digital Systems and can unqualifiedly say that 
they are honest, decent and responsive. Dr. Torode was exceptionally 
helpful in getting the system up and supporting me afterwards. I have 
not encountered a more honest and responsive vendor. 

The software written by Digital Research is excellent in design and 
documentation and to me it would be worth five times the price. 

Altogether the combination of hardware and software which is 
provided turns an 8080 system into a true software development 
system which is flexible, easy to use, easy to learn, and reliable. 

Sincerely, 

Robert Swartz 195 | V y Lane 

Highland Park, IL 60035 


Dear Jim, Sept. 17, 1976 

You guys are usually way ahead on new products and 
things but have you seem the DTC Micro File? 

It’s a WOW! 

• 8080A Super System 

• Has an extremely high quality, compact, dual floppy 

• Has superb system software including fantastic text editor 

• Uses MITS BASIC (they bought it) plus numerous improve¬ 

ments 

• Speeds to 9600 baud through two RS323 ports 

It might appear as a commercial system to you folks 
(it is!)—you should check it against IMSAI’s dual disk system. 

It runs rings around them on price and is far superior. Price - 
$4295. 

If you haven’t seen it you should take a look. 

Keep up the excellent work with DDJ. 

Sincerely, 

A. C. Delmas ADVANCE SYSTEMS 

P. O. Box 531 
Saratoga, CA 95070 

[We heard identical remarks from another friend whose 
judgment has been impeccable. DTC is located at 1190 Dell 
Ave., Bldg. L, Campbell, CA 95008, (408) 378-1112.-Editor] 

Page 51 


PRAISE FOR DIGITAL SYSTEMS’ FLOPPY 
UNITS & DIGITAL RESEARCH’S CP/M 


A SUPER, TURNKEY DUAL FLOPPY SYSTEM 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


348 





ARITHMETIC EXPRESSION EVALUATOR MOD 

Gentlemen: Sept. 13, 1976 

Enclosed you will find a modification of Bill Thomp¬ 
son’s arithmetic expression evaluator published in your June/ 
July 1976 edition. As another uninitiated person on the 
subject of interpreters, I found his BASIC program to 
be enlightening. 

However, after trying out his program, I did find that 
his stack operations could be handled much more efficiently 
by moving pointers to the stack tops, rather than the entire 
stacks. Also, I tried to make the flow a little more readable 
by limiting the use of GOTO statements to within the same 
subroutine and by starting the line numbers of the subrou¬ 
tines in increments of 500. Since my mod was implemented 
on a PDP-11, there are some minor differences in the string 
functions. 

Thanks, 

Jim Abshire 508 - 4th St. 

Laurel, MD 28810 


On 

X 2: 


<E 

Z 


25 

d 


■» 


G 

00 


Z 

z 


T-i 

<1 


z 

z 

<L 

?- 

!— 

h- 

00 


d 


f— 

i35 

OS 

:—! z 



Z _J 

Z 

z 

r-i =35 

z 

G 

<1 

05 

<1 

G f- 

<1 

Z 

*- 

H 

G 

00 


i— 

z z 

Z 

CO 

X <1 

G 


00 -N z 

i—! 

* 

*x 

!— 

Z 

S' 

d 

<r 

N-0 Z .X 

_i 

D> 

CD 

00 


25 CD 

Z 

!— 

»■?—!— 

d 

r-i1 

-n z 

z 

z 

O 00 T-i 

i— 

i 


X 

X 

2 


Z 

O 


X 

xs 


-0 

CM 


g 


oix 

S' Z 

w x 


no ro g g g g 


i CM CM • 


• r-N ld 


-o 

CM 


if O : 

m n 


x 

CJ 

<i 


Lii 

N 


d 


Z 

X 

CO 


. . 25 >- <L<L<L<L<L<L i- ' 

X X c_s Ui Lii LU CD Lii Lii LU Lii <T <Z <1 <1 <T <T LiJ Ui O N.- Lij -y?- 

iti iii !- LC ii: i-i i: L. i 2 £ Q Q C: Q q i i: Li G Z 2; 

Z X CO 

o =n o cm in o o o in o o oooooooooo 

O O O O O r-i t-> t-= CM IO G G LD nQ X CO G-- O TH c-i lO 4 LI 'O 

fO G LD ------ - - - 

CM cm cm 


=00000OOOOOOOO O T-i - 


G 


z 



»— 


z 



03 


ID 



X 


*- 



G 


z 



Z 


z 



G 


X 



Z 





x 


o 



r-i 


CM 



X 


L0 


o 

G 


T-i 


II 

’r-i 





X 


z 


o 

G 


z 

o 

G 

Z 


z 

CO 


Z 


h- 

if 

Z 

S-c 



G X 

G 


T -5 

Z 

T-z 

05 Z 


v 

X 

If Z 

<L Z 


00 

o 

~ z 

'• CD 


z 

GOG 

If X 

z z 

i! 

G X 

Z 

z z z 

G 

z 

G Z 

Z Z t-i 

?- X Z 

O L0 

o 

O LD 

O 

o o 

X X 

o 

T-i T—! 

CM CO 

1 —i t— i 

in 

LD LD 

LD LD LD 

T-i T—i 

T-i 

T-i t— i 

T—i 

T—i T-i 


* 

* 


h- 

<E 

_1 

CO 

z 

<L 

z 


** Z 

** + o 

** XC0 
** I-Z 

* id! X 

* Z CD Q 

*g x 


*00 XX 
*X t-i 
* <1 CO Z: 
*Z i—! 


On 
■ LD 


LD 

CM 

LD 


i 

25 


Lii 

03 

f 

ro 


oo 


LO 

CM 


! X 
* : 
25 ■ 


N 

AC 

X 


N ~ 
* X 
X * 
X 
X 


ld 

CM 


NO 

*Z 25 X 
*d =25 On 
AC CD -r-i 

* CD 25 

*i-i >- 

* CO Z _i 

* d =25 CD 

*25 G 


Z 

<E 


00 

Z 

G 



Z 




*!- 

Z V 



!- 


G 




* 

<1 25 



G 


!—i 




■*z 

G 

nQ 


G 


00 




■^G 


X 


Z 


00 




ACi-i 

■* 

1 


?- 


z 



sa 

AS-00 

Z 

z 


00 


z 



== 

*00 

z 

z 


z 


z 



B 

*Z 

G 

00 


r-i 

CM 

X 



4=i= 

*Z 

G 

1 

Z 


O 

z 




z 


ro 

Z 

G 

i 




. 

X 

Z CM 


z- 

Z 

m 

G 



ro 

00 z 

G T-i 

<L 

<L 

!—i 

i—i 

i—i 



o 

z 

! 

25 

>- 

?- 

o 

i 



X 

<IU 

* T—i 

G 


z 

I> 

Z 



o 

Zh 

Z T-i 


* 

z 


z 

=? 



1-!- 

_ : 

X 

G 

z 

G 

G 

== 


ro 

25 Z 

CD -> 

25 

Z 

z 

i—i 

X 

=? 

== 


Z 

G Z 


<L 

Z ! 

00 

i—i 

== 

== 

ii 

CM X 

Z 

25 

Z 

i- 

<L 

Z 

= 

= 


O * j- 

03 

Z 1 

f- 

z 


X 

g 

d 


CD 

-J 


z ^ 

i-i <1 


*- 

O CO 

T-i * 

z 

Z CD 
Lii =—i 
X CO 
=— GO 


Li. §- in • 
o z Ci 
z 


z 

g 

i—i 

00 

00 

Lii 

Z 

Z 

X 


Lii 

r- 

d 


O 

CM 

CM 


CD 

CD 


C 

o 

o 

• CO 


X 00 
- CD 


z 

<1 

z z 

Z f— 

Z 25 


* 





CM 

♦ 

-i 



=■= 


,-N -i- 

X 

X 

X 





<r ■; 

^ ** \ 





*— 

X X 


G 


G 


=N X 

* 

LD 


-o 

G 

* 

ro 

■» 

ro 


ii * 


X > N 

• 

* 

1 

X 

=•= 




£ * X z 

*— 

ii- 

?— 


Z 

• Z 

v 

G 


-1 


-cA 

* LD 




G 

ro 


ro 


<L 

.X *• 

* X 

<1 

X ■***N 

<T 

I 

G 




* * G X 

t-: 

G O 

i—i 


<E 

X X 


Z 


<T 


d O 










* 

<E \ 

CM 

<1 * 




<1 

i— 



t 


X 

G O 

X 


h- 

^ i- 

CM X 


C> 


t— i 

<L 


CM 


i—= 

X 


u_ 


<1 

* <1 

■'s. 

N- <L 

— 

X G 



00 

r— 



*r* Z G 

H-= 

Z O 

j—i 


00 

N 

S' 

=Z 


z 

CM 

^ CM 

C- 

<E 

C- 

N 

C- =-= 

?- 

X 

C- 

z 

i-- 

<L 0- 

<L 


?- 

-n z: 

c- 


C-- 

<1 





T-i 




* N 

CM 




X 

G 

* 


* 


* 

•=• 


* 


<• 

» 


* 

* 

X r-i 

« 


o 










Z ii- 

=N 





ui X 

Z 

== 

z 

= 

z == 

z 

== 

z 

== 

Z 

== Z 

== 

=r 

z 

1 00 


== 


■■ 

25 




G 




z o 

TTT 


O 


G 

00 z O 

i-=_ 

== 

u_ 

=#= 

z == 

z 

== 

ii- 

== 

u_ 

=== z 

=h 

z =#= 

z 

<1 00 


=s= 


O 

<r 



o 

!— 


o 


X h- 

<1 


O O 


1- 

=>• — O 

X 

=#> 

X 

*= 

X ■== 

X 


X 

== 

X 

=¥ X. 


X 4= 

X 

N^ H 

X 

4= 

X 

!— 

= : = 



o 



o 


Z 03 

N_- 


O G 



* h- in 

z 

=«■ 

Z 


z ==» 

z 


Z 

===== 

z 

*= z 

■?=> 

Z ==■ 

z 

— X 

z 

==i= 

z 

00 

z 




T* 


LD 



Tj4 


CM CM 


T—i 

25 CM 


IH x x z z 

L=JZ Z Z Z Ui 

Z Z Z Z Z Z 

o o o o o in 

CM W G LD LD 


Z 00 z 
Lii G Lii 
Z G Z 

O O CM 

-o X. r-N 


z z 

Lii G 
Z X 

LD CD 

r-N r-N 


X: 

O G 
if Z 03 
00 Z G 
Z Z G 

On o O 
r-N co On 


z 

Lii Z 


G 

- ■=£■ Lii 25 O 

: <L 00 ID >■— 

Z 00 

Z Z Lii GO 

=—i =—i Z! G G 


if n^ O 

X 00 if 

CD -J CD 
Z Z Z Z 00 

Lii IsJ O ii Z O 

Z Z Li-i =-i G 


o o m o in o o o o o o o o 

O T-i T-i CM CM CO <r in nG N CO On t-s 

t-« T-i -T-J. T-! T-i T-! -r-i tH tH -r-5 T-i CM 


Page 52 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Nov./Dec., 1976 


349 











f— Z 
02 f- 
2: CD 


X 

3 

<1 


g 

wCi 

2: 


2 

D 


<1 

Z 

LlJ 


g 

C-4 


X 

3 

<E 


LlJ 

z 


u 

3 

z 


3 

G 


z 

Z 

Xi 

Z 

3 


X 

G 

<H 


!! 

CO 

z 

X 

3 

G 

_J 

Li. 

Z 

LiJ 

o 

Z 

3 


CD 

Z 


3 

u_ 

Z 


z 

Z 

3 


3 
I Z 


z 

x 

3 


S3 S 

ii ii 

O' => 


LiJ 

u. 

3 


Z 

•3 


SQ 
3 ■ 


Z 

Z 

3 


Z 

Z 


0« 


z 

H- Z 

z 

i i-i 



h- 

<1 CD 

CO CD 

3 G 

i-i CD 

Z 


'■ 


/ 

/ Z 

/ 

X Z 



<r 

Z 

Z 

Z 

Z 

X 

0 




z 





z 

w 

'W 

— 



S- 

M 


0 

O 3 

0 

O O 

O 


-z 

z 

z 

Z 

Z 

O 

U0 



C-4 

LiO 3 

C-4 

-0 CS 

CS 


z 

-t- 

L 

*- 

\ 

C-4 

S' 



LiO 

bO 

O 

O T—! 

O 


z 





U0 


OH 


ro 

ro x 

s- 

s* s- 

S' 


3 

H 

t —5 

■rl 

t— i 

s 

Z 

yr 



3 






-f- 

•+■ 

-t- 

4- 


z 

<1 

C-4 

z 

z c 

z 

z z 

z 


<• 

CD 

CD 

CD 

3 

z 

3 

on 

!! 

Li 

Z L- 

z 

z z 

z 


z 

Z 

Z 

Z 

Z 

z 

f- 

*» O 

CD 

3 

3 CO 

3 

3 3 

3 

O 

z 

O 

— O 

— O 

O 

3 


0 

Z 

!- 


>— 

>- 5— 

h- 

O 

z 

z rs 

Z ?S 

Z LS 

Z O 

*- 

O 

= y 0 

/ 


h- 




LiO 

3 

I! C-4 

1L C-4 

LL C-4 

I! O 


3 


Z 

z 


Lu 

Z 


o 

c-4 

o 

3 

z 

LlS 

3 


Z 

Z 


Z 

z 

3 


■ co rs in 3 in 


o 

CO 


z 

Lii 

3 


3 

<E 


3 

3 



v-i 

-0 

Z 

0 0 

3 





3 


O 


z 

z 

=* 

<1 

U0 

3 

s- s- 

/ 





z 

x 

Z 

x 

z 

z 



ro 


C-4 T-i 

T-i 






3 


3 




3 


3 

s- s- 

Li 





3 

<E 

3 

<E 

3 

z 

on 

f— 

3 

*— 


3 





?— 

>- 

>- 

r- 

?- 

3 



?- 


z z 

Z 


•> 




CO 


00 




Z 


Z 

z z 

/ 


z 

■* 


‘Z 


Z 


z 

Ci 

3 

\ 

3 rH 

\ 

3 3 

■> 


z 

z 

■9 

\ 

L— 

\ 

z 

s. 

z 

Z 

3 

3 Li 

CO 

?- ?- 

Z 

♦ 

z 

z 

z 

CO 

-* 

CO 


CO 

z 


== 


LS 

z 



- v - 

L 

•-./ 


z 



V >- 

LL 

LL 

LL 





t— i 



t-1 







T-i 

Z 



V 

4- 

v z 


V 4- 

V 

z 

z 





=L= 

'— Cl 


z 



3 

3 

3 

?- 

z 



3 — 

CS O' 

CS 

Ci 

L— 



4- 

3 


4- 

3 



4- 3 



4- 

Ci Z 



3 

3 

3 z 


3 3 

3 

z 

3 h- Z 






Z 3 

3 

3 



z 

*- 

•— 

z 

3 



Z L- 


L— 

!- 

3 

z 



3 

H 


3 

?— 



CO >- 



3 

3 3 



Z h- 

L— 3 


Z Z 

Z 

3 

Z Z 3 





LL 

H-i CO 

Z *— 

z 

z 


LL 


i —i 

L- 

z 

z 

LL 




CO 

r-i 

z 

z 

Z 


z z 

Z 


z 

z 

z 

Z 

z 

Z 

CO L— 

Z 

Z 


LL 

4- Z 

z 

LL 


1 - z 

Z h- Z Z 

S-l 


-ifr 

Z 3 


z 

z 

z 

z 

3 

Z 

z 

Z 

z 

z 

Z G-. 

z 

Z 

z 

3 

Z 

z z 

'-r 

3 

z z 

w 

3 Z 

z 

— 3 

Z 

z 


3 Z Z 

Z 

Z 

3 

Z Z Z 

z 

Z 3 

Z 

z z 

z z z z z z 

z 


z 

Z 3 

Z 

z 

z 

z 

T-i 

L— 

j-y 

z 

z 

z 

z 

r-i h- 

8—1 

’r-i 


3 

z 

z 

z 

z 

3 

z z 

z 

3 

z 

z 

Z 3 

Z 

z 

Z 

3 Z 

z 

Z 

i-i 

L— 

i-i Z Z 

z 

l—! Z 

i 

z z 

Z i-i z z 

z z 

z 


0 

O O 

O 

0 

0 

0 

LiO 

O 

O 

0 

0 

0 

0 

UO O 

O O 

0 

O 

0 

0 0 

0 

O 

0 0 

0 

O O 

0 

O O 

O O 

O 

O O 

0 

O 

UO 

O 

OOO 

0 

uo 0 0 

0 0 

0 uo 0 0 

0 

0 

0 

Q 

0 

T-i C -4 

ro s- 

0 

T-i 

i—i 

C-4 

ro 

UO 

>0 

0 

T-i 

T-i C-4 

ro 


UO 


rs 

O' 

0 

-r-i 

C-4 

UO 

S) 

ss 

O' 

0 

-r-i C-4 

O' 

UO 

-G 

S'. 3 O 

t— i 

T-i 

C-4 

ro 0 

T-i 

T-i C-4 

ro 

-T O 

T-i T-i c-i ro 

0 

T-i 

C-4 

<L 

s- 

<r s- 

S 

s- 

LiO 

UO 

UO UO 

UO 

UO 

UO 

0 

0 

O O 

0 0 

0 

O 

0 

0 

t— i 

T-T 

1-4 

T—1 T—i 

T-i 

T-i 

i—! 

C-4 

C-4 C-4 

C-4 

C-4 

C-4 

2 

2 

5 

UO 

UO UO 

uo uo 0 

0 

O O 

0 

O LiO 

uo uo uo uo 

0 

0 

0 

Z 

ro 

lo ro- 

ro 

ro 

ro 

ro 

ro ro 

ro 

ro 

ro 

<r 

0 - 



O' 

<3- 


O' 

<r 

O' 


O’ 

0 - 0 - 

O' 

<r 

O' 

<r 

O' O' 

<r 

<4- 





O' 


<r uo 

UO 

UO uo uo 

UO UO 

uo uo uo uo 

-0 

S3 

S3 

z 


Z 

Z 

3 

•Lu 


CO 


Z 
LiJ 
3 
Z 
3 



CO 

z 

3 


3 

3 

Z 

h- 

00 

z 


o 


‘r-i 









■-> 







T-i 



t— i 


3 

CO 





Z 











S3 



LL 


3 

CO 





•w 




i— 







C-4 



GO 


Z 

<L 





3 




3 










Z 


X 










z 







3 



/ 


z 

z 
















h- 






3 





Z 




3 









3 

_i 


3 

Z 





f~ 




L— 







3 


Z 

3 


H- 






co 











3 


!—! 

Ci 



z 





OQ 




Z 







Z 


— i 

Z 


Z 

\ 





N 




\ 







T-i 


i-i 

3- 


\ 

CO 









CO 





z 


LL 


z 

3 


3 






ii 









w 


3 


<r 


















3 


Z 


3 

Ci 




z 



O 

v 





z 




LL 


/ 



i-i 




z 



T-i 

on 





z 




/-\ 


% 


z 

-1 




3 

T-i 


4- 






3 

—-i 



3 


3 


3 

<L 




i— 



Z 

Z 





?- 

9 . 



Z 


3 


z 

Z> 




z 



». 

9. 





z 




w 


_i 


z 

z 




z 

T-i 


t— i 

z 





z 

z 



Z 


Z 


z 

i—1 




/ 

». 


4- 

9 . 





/ 

9 . 



/ 


Z 



' 





—i 


Z 

yr 






z 





z 







0 



9. 

3 





uo 

9. 



O 


I> 



?- 




C-4 

-ts- 








t— i 

y<- 

O 


UO 


3 



z 




O 

<1 

/-S 

<1 

-yj- 





uo 

<1 

rs 


uo 





'—! 




C-4 

— 

T-i 


3 





C-4 

— 

uo 


C-4 


Z 



z 





•Hr 

»■ 

-tfi- 

Z 






y 

C-4 




3 



z 




Z 

3 

V 

3 

CO 





z 

3 



Z 


<01 



z 




z 

Z 

Li 

Z 

on 





z 

z 

z 


z 


L- 







3 

CO 

v 

CO 

' 





3 

CO 

z 


3 

0 

3 



0 




>- 

>- 

S-. 







L- 

>. 

3 


i— 

t— i 




0 





-yi- 

y?- 


= 

y- 





y 

?- 



S2 

Z 



uo 




T-i 

3 

<L 

<r 

== 

z 




t— i 

3 


T-i 

C-4 

C-4 




uo 




V 

— 


3 

== 


z 



•-./ 

w 

0 

L 

V 






Z 



CD 

CO 

CO 

LL 

== 

>— 

z 



3 

CO 

LL 

CD CD 

3 

L— 



Ci 

Z 



Z 

3 

3 



z 

3 



Z 

3 

Z Z 

z 

L- 

Z 



3 

3 


z z 


z 

Z 

Z 

LL 

•—! 

! — 

z 

z 


z 


LL 



i-i 

z 

z 

CO 

?- Z 

Z 

z z 

Z 

LL 

LL 

— 

yr Z 

z 

z 

z 

z 

ii 

z 

3 

z 

3 

z z 

z 

3 

z z 

z 

z z 

' —1 

Z 

Z 

3 

z 

z 

z 

z 

z 

r-i 

Z 

t— i 

Z 

i-i 

3 

z 

z 

z 

3 

z z 

z 


z 

z 

3 

h- 

LiJ 

Z 

x 


o 

c -4 

o 

ro 

z 

Z 


CO 

z 


T-i 

C-4 

ro 

S' 

uo 

S3 

* 

♦ 

* 

* 

* 

* 


:V; 

z 

z 

z 

z 

j— 

>— 

»— 

*- 

>— 

!— 

CO 

rn 

CO 

CO 

3 

CO 

z 

Z 

z 

z 

z 

z 

r-i 

i— i 

!—* 

i-i 

i-i 

r-i 


O 

O 

O 

O 

O O 














X 



3 

ro 

3 

ro 

3 ro 














O 



ro 

ro 

C-4 C-4 















3 S' 

3 

S' 

ro 


ro 

ro 

ro ci 














Z S' 

X 

<r 



















i-i ro 

i—i 

ro 

_J z 

z 

z 

z 

z z 














CO 

GO 


9. z 

::: 

z 

z 

Z = 


0 

O 



0 

O O 

0 0 


0 0 

O O 


0 

GO 3 

O 02 

3 

— 

~ 

~ 

~ 

3 3 


0 

S 



0 

O S 

0 <r 


0 0 

0 <r 


0 

l — ! >— 

O i-i 

j- 

3 h- 

H 

f- 

5— 

h— L- 


uo 

<r 



0 

uo <r 

uo s 


0 uo 

0 s 


LD 

z 

UO Z 


L— 






ro 

ro 



s 

ro ro 

s- ro 


<T S 

ro ro 


UO 

' 0 

UO ' 

3 

^ LS 

Si 

- : o 

s 

ro C-4 














3 


3 







Ci 

Q 



Ci 

c 3 

C 3 


Ci Ci 

Ci 3 


Ci 

r- X 

-Cl ?— 

X 





Q Ci 


3 

L— 



3 

3 L- 

3 ?— 


3 3 

3 L— 


3 

Z T-i 

3 Z 

ri 






z z 

CO 


Z 

z 

CO 

CO 

z z CO 

z z 

CO CO 

CO 

z z 

CO 

H ii Z 

Z GO i-i 

LL Z 

ii U 


z 

z 

Z Z 

z z 

3 

3 

z 

z 

3 

3 3 

Z Z 3 3 

z z 

3 3 

3 3 

z z 

3 

Z 3 Z 

Z 3 Z 

3 Z 

-— i 

i—i 

i-i 

i-i 

1 —i i-i 

z z 

3 3 

z 

z 

3 

3 3 

Z Z 3 3 

z z 

3 3- 

3 3 

z z 

3 

Z Z Z 

Z 3 u_ 

Z Z 


0 o in 

O I - ! T-i 
OOO 
C-4 C-4 C-4 


O 

O 

0 

0 

0 

O 

O 

UO 

O 

UO 

O UO O 

O 

0 

0 

O 

O 

O O 

0 

C-4 

ro 

S' 

UO S3 

LS 

O 

0 

t— i 

T-i 

C-4 C-4 ro 

S- 

UO LS 

3 

O' 

T-i O 

T-i 

O 

0 0 

O O 

O 

UO 

uo 

UO 

uo 

uo uo uo 

uo 

UO uo 

UO 

UO 

S3 O 

0 

C-4 

C-4 

C-4 

C-4 C-4 

C-4 

C-4 

C-4 

C-4 

C-4 

C-4 C-4 c -4 

C-4 

C-4 C-4 

C-4 

C-4 

c-4 ro 

ro 


uo 

0 

0 

0 

0 

0 

0 

0 

0 0 

0 

0 

0 

0 

0 

0 

0 

0 0 

0 

0 

0 

0 

0 

0 

O O 

0 

0 

0 

0 

OOO 

0 

0 

0 

0 

-r-i 

c-4 ro 

s- 

uo 

S3 

is 

3 

O' 0 

t— i 

C -4 

ro 

S' 

uo 

S 3 rs 

3 O' 

0 

T-i 

c-4 ro 

s uo 

S 3 LS 

3 

O' 

0 

1 — : 

c-4 ro s 

UO S 3 

rs 

CD 

O 

0 

0 

0 

0 

O 

O 

0 

O T-i 

t— i 

T-l 

1 —1 

T-i 

T-i 

T-i T-l 

-r-i -— i 

C -4 

C -4 

C -4 C -4 

C -4 C -4 

C -4 C -4 

C-4 

C -4 

ro 

ro 

ro ro ro 

ro ro 

ro 

ro 

ro 

ro 

ro 

ro 

ro 

ro 

ro 

ro 

ro ro 

ro 

ro 

ro 

ro 

ro 

ro ro 

ro ro 

ro 

ro 

ro ro 

3 

3 

ro ro 

ro 

ro 

ro 

ro 

ro ro ro 

ro ro 

ro 

ro 


Nov./Dec., 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 53 


350 



COMPONENTS FOR SPECIFYING PROGRAM¬ 
MING LANGUAGES AND MODS TO THE TINY 
HI LANGUAGE DESIGN 

Dear DDJ, Nov. 17, 1976 

Enclosed are about a dozen changes in TINY HI, an 
updated language summary, and a brief description of HI. 
None of the changes significantly effect the scope of TINY, 
but I believe they make it an even nicer language. I am 
shelving TINY LISP, TINY SNOBOL, and the extensible 
language I mentioned; my system is up and I want to imple¬ 
ment TINY. I renege on the promise to describe FORTH 
as Interface has had a good article on it. 

I will act as a clearinghouse to standardize TINY HI 
implementations. A complete language standard (as detailed 
below) should be out by 15 January. Implementors please 
send $3 to cover copying costs and first class postage. This 
will be the last revision in DDJ, but I believe I’ve finalized 
what the user sees. DDJ will get a free copy of those 
standards for existing; otherwise I would have to invent it 
and couldn’t do nearly as well. I hope to be HI in 77. 

Laissez faire, 

Martin Buchanan 2040 Lord Fairfax Rd. 

(703) 893-7978 Vienna, VA 22180 


ELEMENTS OF PROGRAMMING LANGUAGE 

STANDARDS 

1. A complete semantic and syntactic description (mostly 
accomplished). This includes little things like the sig¬ 
nificance of blanks, levels of nesting, algorithms used 
for real or mixed arithmetic (in languages with real 
numbers), and identification of lexical tokens; 

2. Storage formats for source programs, object programs, and 
data, both in main memory or on mass storage units; 

3. Conventions for the naming and semantics of global func¬ 
tions or variables which handle hardware differences (.DE¬ 
VICE, .MAINSIZE, etc.); 

4. Standard names and algorithms for common library func¬ 
tions; 

5. All error messages, when they are invoked, and their 
meaning; 

6. Text-editing functions during data entry; 

7. Interfacing with machine language programs; 

8. Linking loader design; 

9. Dynamic storage allocation and file retrieval design. 


CHANGES TO TINY HI 

Comments: a semicolon (“;”) in column one reserves only 
the line on which it appears for comments. A semicolon in 
any other column reserves that column and all to the right 
of it for comments until is again encountered in the com¬ 
ment field. This replaces the “/*” and “*/” delimiters pre¬ 
viously specified. The change makes commenting easier to 
learn and use, and increases flexibility. 

Vectors: Vectors may have lengths up to 232—1. Other¬ 
wise it would be almost impossible to handle data structures 
with more than 256 elements. This also allows any positive 
integer as a subscript. 

Logical operators:AND, OR, NOT ; NOT is evaluated 
first. AND and OR have equal precedence. All three must 
be set off by blanks or )( as in: 

■f 

NOT A=B or (A> MIN)AND(A<MAX) 


making structure as clear as possible, else many unnecessary 
IFs and DOs would make programs more confusing. 

Continuation lines: a plus sign (“+”) as the first nonblank 
character indicates a continuation line. A line may be con¬ 
tinued indefinitely and even when comments intervene or 
there is a comment field. Continuation lines can be used to 
make output lists or complex predicates clearer by arranging 
them on several lines to show structure, and they also reduce 
the use of temporary variables. 

Control structures: The “UNTIL” structure is now: 

DO 

code 

END IF p 

The “WHILE” structure is now: 

DO IF p 
code 

END 

The compound structure is also allowed: 

DO IF p 
code 

END IF q 

Noise may no longer be added to END statements. 

Professor Howard Tompkins of Indiana University of 
Pennsylvania caused my reexamination of my control struc¬ 
tures, for which I am grateful, though we still disagree as to 
the best iterative structure. He pointed out that “UNTIL” 
should be “WHILE NOT” from the English meanings of 
the words, and also that UNTIL in COBOL has a meaning 
different from the one used by I and IBM. The new con¬ 
struct locates each predicate where it is actually examined, 
allows a new structure, reduces my vocabulary, eliminates 
a source of possible confusion, and allows for future inte¬ 
gration with an iterative form: 

DO I=J TO K BY L IF A(I) <A(I+1) 

Input: ? alone will get a literal from the keyboard with 
the prompt ? followed by a variable will generate a 

prompt of the form: “<variable> *” 

Subvectors: In a sequence of numbers or characters, one 
often wants to indicate a subvector that is a continuous 
sequence, often a very long one. Other programming lan¬ 
guages use pseudovariables (PL/I’s SUBSTR function), “in¬ 
dex generation” (APL), or novel subscripting forms (A[5;8] 
in HP BASIC 3000). My subscripting form for indicating 
subvectors should be familiar to any user of English. I call 
it “ellipsis”. It is formed by three consecutive periods be¬ 
tween the initial and final subscript, but separated by blanks 
from them (to avoid ambiguities when I introduce real num¬ 
bers in HI): 

A[4 ... 11] is the same as A[4 5 6 7 8 9 10 11], 

but both in conception and the generation of object code, 
the first is preferable. 

Global indication: the prefix can be omitted from 
calls of external functions unless the function name is dup¬ 
licated by a local fucntion. My theory is that data is usual¬ 
ly local and functions are usually global. 

Subscripting: is an operation and may apply to expres¬ 
sions: 


Being able to express complex predicates is important in (A+B)[2 3 5] —MORE- 

Page 54 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Nov./Dec., 1976 


351 


TINY HI, cont. 

Arithmetic: append **, exponentiation. HI has it, and I 
want the differences between the two levels to be few and ma¬ 
jor. Exponentiation is also easy to implement in integer arith¬ 
metic. I prefer ** to the up arrow. Exponentiation derives 
from multiplication just as multiplication from addition, so 
the symbol is logical in some sense, and also common. I 
want to reserve the up arrow for a (presently undefined) 
sorting or ordering operation. 

REVISED TINY LANGUAGE SUMMARY 

Vocabulary: BEGIN END IF ELSE DO 
Comments: ; 

Continuation: + 

Infix arithmetic: +_*/** 

Prefix arithmetic: — 

Concatenation: blank 
Length operator: # “number” 

Relational ops: < <= > >= <> 

Logical ops: AND OR NOT 
Assignment: «- 
Input: ? 

Global: . 

Nesting: () 

Subscripting: [ ] 

Substring: . . . “ellipsis” 

Data types: INTEGER STRING 
Data structure: the vector 


WHAT HI ADDS TO TINY HI 

1. Data types REAL and LOGICAL, and the corresponding 
literals; 

2. Multidimensional arrays; 

3. Data declarations; 

4. For program correctness, the attributes INITIAL, RANGE, 
and TYPE, and the ability to test an expression’s type; 

5. For output: the attribute FORMAT; 

functions SKIP, X, T; 
globals .COL, .LINES, .SPACE; 

6. The iterative DO TO { BY } 

POSTSCRIPT: Nov. 23, 1976 

1. Negation of —215 will produce an overflow. 

2. Concatenation has a lower priority than # or negation, 
but still greater than the infix arithmetic operators. 

The example given for “number” should be “#(5 73 -1)”. 

3. Functions may have no argument, as in “CPTIME( )”. 

4. After “END WHILE” in GCF there should be the line 
“GCF - Y”. 

I want to thank those who wrote about TINY HI, especi¬ 
ally Gregg Townsend. 

■ IB IB 11H IB HI H IS IB M 9 ffl 19 9 IB IfiflUBSiH 

RCA 1802 PLEA 

To: Jim Warren Nov. 2, 1976 

I’ve not seen anything yet on the 1802. Is it too new for 
the hobbyist, or what? Could you publish a short request for 
responses from any 1802 users? [Yup!] 

Sincerely, 

Harley Shanko 15025 Vanowen St., No. 209 

Van Nuys,CA 91405 


TINY HI SUGGESTIONS 


Dear Mr. Buchanan: 


I would like to offer some suggestions regarding your Tl N Y HI 
language as defined in the October, 1976, Dr. Dobb’s Journal 
First of all, let me say that I LI KE IT! It seems to be quite 
powerful in its simplicity. 

I like the one-statement-per line format; PL/I addicts look down 
their noses at FORTRAN for this but readable programs require it. 

I like being able to easily put comments on the same lines as state¬ 
ments; this is what often makes the comments of assembly-language 
programs better than those of so-called higher level languages. "?" 
for input is great, and I admire the simplicity of the vector scheme. 
Now for the comments: (this is more or less random order) 

1. Negation of —2^® will probably produce overflow; so perhaps 
there is a case where negation can produce an error. 

2. Rather than bracketing loops with WHI LE E ND, how about 

using LOOP and REPEAT? UNTIL 

a. WHILE and UNTIL do not imply iteration except to a program¬ 
mer who's seen them before. 

b. WHI LE cond terminates when cond goes false, and UNTIL 
cond terminates when it goes true; but it's very hard to see 
why one of these implies a test at the front of the loop and 
the other at the back. 

This isn't original — see Knuth in Computing Surveys Vol. 4 
No. 6 (Dec. 1974), pp. 278-280. 


LOOP IF cond 


LOOP 


code 


code 


REPEAT 


REPEAT IF cond 


(test at top) 


(test at bottom) 


3. 


How about providing a means for the n + Vzloop problem? Again 
stealing from Knuth: 


LOOP 

"ENTER A" ?A 
WHILE A >47 for 
"TOO BIG" 
REPEAT 


LOOP 

"ENTER A" ?A 
IF A >47 EXITLOOP 
"TOO BIG" 

REPEAT 


4. I finally figured out why the example "No. 5 73-1" looks strange 
to me: because I can't get used to a unary operator with a higher 
precedence than a binary operator ($). All unary operators 
(#?-) should be higher than the binary operators. Under the cur¬ 
rent rules, (-5 7 9)= (-5) (-7) (-9)1 

5. What determines whether input is taken as string or integer? How 
can 123 be input as a string? 

6. What sets the value of a function? Should the example have an 
additional line .GCF *Y? 

7. The current syntax disallows null arguments such as .CPTIMEO. 

Is this intentional? 

8. Deletion of the /* or */ line has the potential for causing a lot of 
trouble when editing a program. I would favor a scheme such as 
it is used by some assemblers where ; means that everything else 
on the line is a comment. 

9. Since a string is really a vector of characters, and you allow vectors 
of strings, will you allow vectors of vectors (of vectors . . . )? 

10.1 agree with •‘-for assignment but please choose the character to 
be used with ASCii keyboards before every implementor picks a 
different one. 

I guess that's all that comes to mind now. I'm sending a copy of 

this to DDJ. Keep up the good work! 

Yours, 

Gregg Townsend 

450 N. Mathilda, No. J20 
Sunnyvale, CA 94086 
Nov. 15, 1976 


NEW COMPUTER MART 

The Computer Mart of New Hampshire is currently located 
on Daniel Webster Hwy N, Merrimack, NH 03054, (603) 
424-2981. On January 1st, it will move to 170 Main St., 
Nashua, NH 03060. [information from Ron Cordova, 76-12-4] 


Nov./Dec., 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 55 


352 




6800 MONITOR RELATIONS 


GLITCH: TINY BASIC & MEK SYSTEMS 


Dear Editor, Nov. 10,1976 

Motorola makes several monitor roms (Mikbug*, Minibug*, Minibug 
II * and Exbug*) for their M6800 systems. Most systems in hobbyist 
hands are currently using Mikbug*. Minibug II* now seems to be avail¬ 
able from Mini Micro-Mart and it has several additional and enhanced 
features over Mikbug*. These features are serial I/O to an ACIA for 
the control interface, binary load, binary dump, S9 on last record of 
punch, user control of "SWI" vector, upward and downward move¬ 
ment during address changes and memory test commands. Documenta¬ 
tion on the commands is supplied, but no listing or hardward imple¬ 
mentation guides. We are using Minibug 11 * in a SWTP 6800 and are 
pleased with its operation. The following notes are supplied for those 
who might wish to try this rom. 

Dennis Sutherland David Kyllingstad RonTonneson 

2835 - 25th Ave. 840 Hillview Dr. Fairfax, IA 

Marion, IA Marion, 1A 

*Trademark of Motorola 

MINIBUG II SOFTWARE EQUIVALENCE 

Minibug 11 is not to be confused with Minibug which is 
located in the upper half of Mikbug and is probably not 
worth finding at this point in time. The following entry 
points have been tested and appear to work in programs 
that reference them. 



MIKBUG 

MINIBUG II 

ROUTINE 

ADDRESS 

ADDRESS 

OUTCH 

E1D1 

El 08 

INCH 

El AC 

El 1F 

OUTHL 

E067 

E0FA 

OUTHR 

E06B 

E0FE 

OUTS 

E0CC 

El 80 

PDATA1 

E07E 

El 30 

CONTRL 

E0E3 

E040 

INHEX 

E0AA 

E070 

BADDR 

E047 

E0D9 

OUT4HS 

E0C8 

E17C 

OUT2HS 

E0CA 

E17E 


MINIBUG II HARDWARE CHANGES REQUIRED 
General 

Since Minibug II is a IK rom, A must be made active instead of 
being grounded. CS„ and CS. ar Active low instead of active high 
as was Mikbug. This requires inverting the logic pins 10 and 11. 

SWTPc 

Isolate IC2 pin 1 5 (A ) from the large ground buss by making a 
cut around the plated thrbugh that now connects pin 15 to ground. 

Do not drill out the through. Use a miniature circular saw, a minia¬ 
ture fly cutter or an Exacto knife. Now connect the isolated pad 
(IC2-15) to the pad immediately to the right which comes from IC-13. 

If a semi permanent change is anticipated, cut the lines coming from 
IC2-10and11 just past the first bend. Connect a jumper from IC1 6-8 
to IC2-10 (CSq). Connect a jumper from 1C13-4 to IC2-11 (CS^). 

If plug-in interchangeability is desired, don't make the last two cuts 
but add two inverters. 

The inverters may be made and installed between a 24 pin 1C plug 
and a 24 pin socket (available from James Electronics). See schematic 
below. 

Mount the socket piggyback on the plug and solder all other pins one 
to one. (Pins 1-9 and 12-24 are straight through, pins 10 and 11 are 
now inverted). 

*Any plastic NPN switching transistor (2N5210, MPS3646, etc.) 


Dear DDJ, Oct. 26, 1976 

I was referred a copy of what appears to be a column in 
the CHG-NT newsletter, which briefly mentions a failure of 
Tiny BASIC 6800 in Mot Eval kits. 

It is true that I have had a number of calls from owners 
of MEK systems in which Tiny BASIC failed to run. It 
seems that the Motorola kit comes with no memory (except 
for the Mikbug private RAM), and very little else. When 
the user adds a 4K memory board care should be taken 
that all of the address and data lines are properly buffered 
in the expanded system, since buffers are not provided in 
the basic kit. 

What happens is that Mikbug is able to load and display 
the memory with no problem, but the program will not run. 
This is due to the excessive capacitance in the address lines 
(the 6800 is spec’ed at 130pf, which is good for about 8-10 
MOS devices; a 4K static RAM board alone has 32 MOS de¬ 
vices on some of the address lines). This causes the access 
lines to be slowed considerably. Mikbug does all its memory 
access using the Indexed addressing mode, which leaves the 
address stable for two full memory cycles (2 jjs min) before 
attempting a read or write, thus permitting an actual access 
time of over 2.5 y s; program permitting an actual access 
time of over 2.5 ys; program execution on the other hand is 
not so forgiving, and the memory must respond in 575ns. 
The unbuffered system can’t hack the speed. That this is 
indeed the problem may be verified by stretching 02 to 2 
or 3 jjs. 

I have no record of Mr. Mikel’s having attempted to com¬ 
municate his problem to me, and I do know of over 100 
properly buffered MEK systems on which Tiny runs fine. 

Tom Pittman PO Box 23189 

Itty Bitty Computers San Jose, CA 95123 

cc: Roger Mikel 

Computer Hobbyist Group-NT 


A SPECIAL PURPOSE EDITOR FOR MANUSCRIPT 
PREPARATION? 

Dear Jim, Nov. 6, 1976 

About reinventing the wheel . . . am I going to have to write my own 
program for word processing — in the sense of manuscript preparation? 
Text editors are fine for programmers but they aren't of much help for 
authors. What is available for an 8080 or Z-80 in the public domain? 
F.J. Greeb's "Classy 8080 Text Editor," DDJ No. 6, looks like a good 
step in the right direction. Everything is done on the video screen ex¬ 
cept the final hardcopy output. But a manuscript processor needs to 
be sentence and paragraph oriented, not line oriented, and needs to 
have the capability of juggling stuff among tape units or floppy disk 
files. (I always seem to be moving paragraphs from the end of the 
text to the beginning or some other spot several pages away.) Then 
there are nice things like automatic page numbering, single or double 
spacing from the same source file, and the ability to not mess up 
special formats such as tables or lists while at the same time properly 
adjusting lines and paragraphs as words or sentences are added or 
deleted. I would be pleased to hear from anyone with interests along 
these lines. 

Yours truly. 

Dr. Charles F. Douds 381 Poplar St. 

Winnetka, IL 60093 


10 <—WN- 

(PLUG) 4.7IC 





Page 56 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Nov./Dec., 1976 









A 16-BIT FLOATING POINT PROPOSAL 


ERRATA FOR RANKIN’S 6502 
FLOATING POINT ROUTINES 


In past weeks, I have talked to several members of the 
CACHE about “tiny languages.” I keep hearing, “I’d use it 
if it only had floating point.” Having written three languages 
myself, I can understand this. Nobody seems to realize that 
32 bits are a lot more than twice as hard to work with as 16. 

As a compromise I propose 16 bit floating point. The 
format I have worked out gives 3 significant digits with an 
exponent of -15 to +15 (decimal). Proposed format: 

15 _ <t> 


mm 


n 


exponent mantissia 

N \S = MANTISSIA SIGN 
ESa EXPONENT SIGN 


I don’t have the time or ambition to write this now, 
but I would be happy to swap ideas with anyone interested. 
Bob Van Valzah (312) 852-0472 (Home) 

1140 Hickory Trl. (312) 971 -2010 Ext. 231 

Downers Grove, IL 60519 (Work) 


6800 MOTOROLA FOR SIMULTANEOUS 
NUMBER CRUNCHING AND ANTENNA 
POINTING 


Dear Jim, Sept. 22,1976 

Subsequent to the publication of “Floating Point Rou¬ 
tines for the 6502” (Vol. 1, No. 7) an error which I made in 
the LOG routine came to light which causes improper results 
if the argument is less than 1. The following changes will 
correct the error. 

1. After: CONT JSR SWAP (1D07) 

Add: hi 00 LDX=0 LOAD X FOR HIGH BYTE OF 
EXPONENT 

2. After: STA Ml+1 (1D12) 

Delete: LDA = 0 

STA Ml 

Add: 10 01 BPL *+3 IS EXPONENT NEGATIVE 
CA DEX YES, SET X TO $FF 
86 09 STX Ml SET UPPER BYTE OF 
EXPONENT 

3. Changes 1 and 2 shift the code by 3 bytes so add 3 to the 
addresses of the constants LN10 through MHT.F wherever 
they are referenced. For example the address of LN10 changes 
from 1DCD to 1DD0. Note also that the entry point for 
LOG 10 becomes 1DBF. The routine stays within the page 
and hence the following routines (EXP etc.) are not affected. 

Yours truly, 

Roy Rankin Dept, of Mech. Eng. 

Stanford University 


Dear Sir, 17 Nov. 1976 

Two of us here in the Northern Virginia area are interested 
in using a micro for some number crunching (with a peri¬ 
pheral calculator chip) and antenna pointing for satellite 
work (simultaneously). The 6800 Motorola line of chips 
looks like it will fill the bill due to the superior I/O con¬ 
figuration possible. The 8080 kinda misses the boat. So I 
am interested in all kinds of homebrew hardware for 6800 
line compatible with SWTP line. 

Sincerely, 

Ellis Marshall, W4JK Rt. 1, Box 158 

Front Royal, VA 22630 

FREDDIE’S FOLLY 
by Jim Day 

Frugal Freddie bought a video board kit from a local com¬ 
puter store a couple of months ago. He saved a few bucks by not 
busying sockets for the ICs. “Who needs ’em?” he said. “I’U just 
solder everything.” The board worked fine for a few weeks, 
then developed a hardware glitch that Freddie hasn’t been able to 
track down. He took it back to the computer store and asked 
them what it would cost to fix. 

“Well now,” said the repairman, “If this thing had sockets, 
I’d probably find the trouble in a few minutes by random sub¬ 
stitution. But with everything soldered down to the board, 
there’s no telling how long it might take. Why, it could end up 
costing you more than the price of the kit!” 

One can avoid duplicating Freddie’s folly by socketing 
everything. frN • 

• ••/‘"^Socket it to ’em, Freddy! 


HAMATIC NOTE IN B YTE 

According to a letter in the (excellent) November issue of Byte, 
hams who are also interested in computer phreaquery should tune to 
3.865 MHz (LSB) on Thursdays at 2300 GMT "for a good time." 


COMPLETE 8080A FLOATING POINT PKG FOR 
$7.50 AND NEW CASSETTE DATA FORMAT 
STANDARD TO BE PROPOSED 

Dear Editor: Sept. 21, 1976 

In response to Paul Holbrook’s letter in the September 
issue, regarding the need for a cassette data format stan¬ 
dard, I would like to inform you that a standard with 
software has been developed; the Mohler standard will be 
published in an upcoming issue of Interface. 

The standard allows for various types of data formats 
and is expandable, so new ones can be added. It is also 
universal enough for the format to be independent of 
cassette interface hardware and processor type. We hope 
to make the Mohler cassette format a standard in the 
computer hobbyist industry. 

I would also like to inform readers that I have devel¬ 
oped a single-precision floating point software package for 
the 8080A (6-7 digits of precision). The 1 package includes 
add, subtract, multiply, divide, and utility programs to 
convert from ASCII BCD to binary and binary to packed 
BCD. It takes up about 1200 bytes and is relatively 
fast, e.g., 2.5 msec worst case time for multiply. 

Also nearing completion is a scientific function package 
which includes square root, sine, cosine, exponential, 
natural logarithm, log base ten, arc tangent, hyperbolic 
sine, and hyperbolic cosine. This package is to be used 
with the floating point package and takes up less than 
IK bytes. It also has six digits of accuracy. 

The floating point package is now available for $7.50. 
Included are manual, paper tape, and complete annotated 
source listing. The scientific package will also be $7.50. 
Both packages may be ordered for a reduced price of 
$10.00. To obtain one or both, send your name, address, 
and the appropriate amount to: 

Burt Hashizume 

P.O. 172 

Placentia, CA 92670 


Nov./Dec., 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 57 


354 






















CHASE: 


Q 


.0 


A One or Two Player Video Game 


Start it running & just try to pry your kids away 
from your computer 

_Marvin R. Winzenread 

Try to catch the bouncing dot or convert the program 
to a two person chase game. It requires 256 bytes of mem¬ 
ory and a Processor Technology VDM or similar video dis¬ 
play. 


To convert to a two person chase game change 
addresses 0051-0056 to: 

0051 DB FF IN 0FFH 

0053 IF RAR 

0054 IF RAR 

0055 IF RAR 

0056 00 NOP 



§• 


.■§> 




X 

o 


Second player moves 
i using left four sense 
switches. 


For an interesting variation in the original program 
change 0051 to 7B ; MOV A,E 


•If your VDM is not addressed as 8C = Port Address 
and 8800 - 8BFF as memory, you need to change these 
statements. 


I 



<7 











* 


o 

-=C~N X 

^ x 





** 

X 








X 




X O 








s 

x 








CO 




fQ •» 


X 







x 




X 

X 

X 


CO 


XXX 


CO CQ 

X 

CQ 

X 

<5 

CO 



H 

o 


X 

CD 


•V 

o 


«* 




•» 

* 

X 

CO 

•» 




> 


o 

<t 

<t x 

<t 

CO 


X 


X <t 00 


H 

I 

B 


o 

o 

X 

X 



2 

2 




2 






o 


X 







f— 


*-t 

H 


0. 

M 

> 

*—1 


•—< 

H 

Q > H 

tsJ 

*-« H j Q 

> 

H 

*-H 


H 

H 

X 

H 


x 

2 

2 


o 

ex 

2 

K 

X 

o x 

2 

> w <t 

o 

2 

X 

o 


X 

X 

-1 

X 

o 

-o 

f- 

2 

o 

X 

2 

X 

X 2 o X 

2 X CX Q 

2 

<c 

o 

2 

2 

X 


X 

<£ 




X 






J 


D 







o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o o o 

o 

o o o o 

o 

o 

o 

o 

in 

o 

00 

o 

—4 

CM 

00 

<T 

o 

-4 

CM 

CO 


O' 

O — CM 

CO 

O' O — 

CM 

CO 


in 

in 

O' 

—I 

—4 

—a 

—4 


H 

—4 

_> 

_< 

.4 

—< 

.4 

CM CM CM 

CM 

CM CM CO CO 

CO 

CO 

CO 

CO 

CO 

CO 

X 

C'- 

r- 

tr¬ 

0- 

0- 

CO 

CO 

CO 

CO 

CO 

CO 

CO CO CO 

OO 

CO CO CO CO 

CO 

CO 

CO 

CO 

X 

X 





o 

o 









x 











o 

o 









x 









x 

ey 

x 

f- 



o 


CO 


f- 


CQ o 


X 

00 


CO 



o 

x 

o 

00 

o 



CO 


CO 


CO 


CO o 


X 

o 


o 


O 

X 

CQ 

X 

CM 

00 

CO 

o 

x 

o 

VO 

O' 

mow 

o 

\0 O' —• O' 

o 

x 

X 

o 

vO 

O' 

o 

<0 

Q 

x 

O 

o 

CM 

r- 

X 

o 

CM 

o 

CM X 

O CM O o O 

r- 

X 

x 

X 

o 

o 

o 

Q 

x 


OO 

X 

O' 

< 

CQ 

Q 

Id 

o 

— CM CO 

m 

VO CO O' o 

Q 

X 

o 

CM 

CO 

X 

CO 

CO 

CO 

O' 

o 

O' 

O' 

O' 

O' 

O' 

O' 

<t 

<t <t <n 

<£ <£ <t <t <t 

<t 

<t 

CQ 

CQ 

X 

X 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

O O O 

o 

o o o o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o o o 

o o o o o 

o 

o 

o 

o 

o 

o 



X 
o 

o * 

+ * CO » K H 

Sioacrcs x x £ t- o z <s z + <t<s - mcotno 

_I rn J o z xo 
<c in 2 z z 


x r> + <t 

It, 2 O f—• O 

X X 2 —3 X 2 
O •—1 X i_i —~ 


<t > X (X S <t - 

2<IQSMQOoOH<£<IQS^qooS f- 2 
-•O^O “3 -12X2X00 JO~3X:2X^>in<C 


o 

o 




o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

X 


X 

vO 

t- 

o 

—• 

X 

X 


in 

'O 

C" 



o 

o 

o o. 

o 

o 

o 












— 

— — 

— 

— 

—* 

—• 





"■* 

* 

—4 




X 




o 

o 




o 

o 



o 

o 


X 




o 

o 




o 

o 



o 

o 


o 

o 


o 

< 

Q 

r- 


X 

— 

rQ 



-4 

X 


o 

X 


X 

o 

X 

o 


o 

o 

X 



o 

X 


, 

'O X 

o 

X 

X 


X 

X 

VO 

Q 

<t 


X 

Q 

<c 


X 

X X 

r~ 

u. 

o 

X 

X 

X 

X 

o 

X 


X 

o 




<t o 

Q 

X 

o 

X 

X 

X 

O' 

X 

X 

— 

X 

X 

v£> 

O' 


o o 

o 

o 

—4 

—4 


—4 




X 

X 

X 

X 

X 


o o 

r> 

o 

o 

o 

o 

o 

o 

o 

o 

o 

8 

o 

o 

o 

o 

o o 

o 

o 

o 

o 

o 

o 

o 

o 







(MOOOOOOOOOO 


o x o x 
o -< o o 

CO <0 U. O' k 

o n k n u. 


) Q O O O O < 
>00000 


n Q — * 

j + 2 > + <£ 2 

sXfCJSOHO-H^T 0. 2 H X 

<It/) li, 2 J k S 

“ H220Z2Q22Q22 


O 

o 


o 

o 

o 

o o 

o o 

o o 


X x o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 


X 

X 

X 

X 

r- to 

to 

to to O' 

o 

—4 

X 

X 

<r 

o 

o 

—• 

X 

X 


X 

X 

c~- 

CO 

O' 

o 

o 

o 

o o 

o 

o 

o o o 

o o o 

—4 


—4 

—• 

—• 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

X 

X 

X 

X X 

X 

X 

X X 

X 

XXX 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 


o 

o 

o 

o 



o 

o o o 


o 

o 



o 


o 


o 

o 


o 

o 


o 


o 

o 

o 

o 



o 

o o o 


o 

o 



o 


o 


o 

o 


o 

o 


o 

X 

<t 

X 

Q 

Q 



o X <£ Q 


Q 

X 



<C o 

X 

— 

O' 

X 

X 

X 

X 

•M* 

O' 

X 

X 

X 

to 

X 



X 

o X X 


to 

X 



X 

X 

X 

o 

<t 

X 

o 

CQ 

X 

o 

O' 

X 

Q 

<t 

X <3: 

<x 

r~ 

X Q 

X 

Q Q <t 

X 

<t 

<t 

c- 

X 

X 

X 

X 

X 


<c 

X 


<fi 

X 


Q 

o 

X 

X o 

X 


X 

X 

U O X 

X 

o 

CO 

C- 

X 

D 

X 

X 

X 

o 

X 

X 

o 

X 

X 

o 

o 

X 

X 

to O' 

o 

X 

o •— 

X 

X to CQ 

X 

X 

X 

X 

X 

t~~ 

<t 

o 

X 

-4 


t- 

O' 

o 

X 

— 




<r 



X X 

X 

XXX 

X 

X 

'0 

X 

X 

X 

X 

X 

X 

t- 

t- 

f- 

C- 

r- 

c- 

to 

o 

o 

o 

o o 

o 

o 

o o 

o 

o o o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o o 

o 

o 

o o 

o 

o o o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 


Page 58 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Nov./Dec., 1976 



















WHIPPLE & ARNOLD DEVELOP A 
SUPER DUPER BASIC INTERPRETER ($25) 

Binary Systems Corp. has intrduced a new interpreter for 
8080-based microcomputers. Called BASIC ETC, the new 
interpreter was co-developed by John Arnold and Dick 
Whipple of Tyler, TX, authors of the first implementation 
of Tiny BASIC. It includes floating point (6 to 72 digits) 
and variable-length integers. 

“Our goal was to develop a variant of BASIC designed 
specificically for the hobbyist and small business user, keeping 
in mind that the most important priorities — from the user’s 
standpoint — were ease of program development and straight¬ 
forward, one-step program execution.” 

“We feel we’ve accomplished that goal, and with a memory 
efficient program, too.” said Arnold. 

BASIC ETC uses the lower 8K of memory plus at least IK 
of RAM for scratchpad. Since BASIC ETC is for games and 
business applications, the less frequently used scientific 
functions of Dartmough BASIC are not available. 

According to Arnold, BASIC ETC is readily software 
adapted to the individual’s system, and “the best answer today 
for the 8080-based microcomputer owner shopping for an 
easy to use high level language.” 

The BASIC ETC kit, which includes the program — on 
either audio cassette tape or paper tape — and a 32-page, 
detailed user’s manual, sells for $25.00. The manual sells 
for $6.00 separately. 

Kits may be ordered from the Micro Store, 634 S. Central 
Expressway, Richardson TX 75080. The Micro Store is the 
retail affiliate of Richardson-based Binary Systems, Inc. 

Orders should include a check or money order for the price 
of the item. For cassette tape, the purchaser must indicate 


his choice of either the Kansas City or Suding/Digital Group 
recording technique. 

Features of BASIC ETC are listed below: 

* Immediate delivery 

* Readily software adapted to user's system 

* Resides in only 8K of memory 

* Supplied bn either cassette tape (Kansas City or Suding/Digital 
Group format), or on paper tape. * 

* Thorough explanatory manual. 

* Full string capability — up to 255 characters string variable 

* N-dimensional arrays 

* Variable precision arithmetic 

* Easily handles assembly language routines 

* Direct memory and I/O addressing 

* 27 error codes 

* Both character and line erasure editing 

* Subroutine nesting permitted 

* 31 commands and statements 

* 8 functions plus user defined functions 

* Null control: 0 to 25 seconds 

* Formatted output statements 


s 


3 

o 

Q 


s 


Cj 

ft. 


6 

o 

•fc. 


K 

O 

+0 


e 




e 


"Q 

S 




X 

o 



M 




L-l 

2 

X 

** 





X 

co 

+ 



































% 



X 








Q 




X 




























a 







CQ 


X 

CQ 

<t 

CO 



X 

X 

<t 

2 

<C 


X 

in 

CO 

2 

o 









2 


<C 


2 




2 




2 


<c 


o 










C*. 


* 


<t 

CQ 

CO 

•» 

X 

* 


in 

•» 

•» 


►4 









* 


•» 










•» 


* 


H 



yQ 


CM 



CQ 

<t 

o 

X 

CQ 


o 

CO 

CO 

X 




D 

X 

CQ 

<t 

X 



2 



J 


J 

< 


2 


<C 


2 


<t 


2 


<c 


2 

CQ 

X 

X 





—« 

X 














cl 
































in 

in 

in 



Q 

> 

*-« 

> 

►-« 

h 

f— 

M 

M 

> 

-a 

> 

f— 


H 

*—f 

> 

X 

O 

o 

<c 



X 

X 

X 

> 



£ 

> 



X 

> 


> 

X 

> 


> 

X 

NI 

0, 

E— 

Q 

Q 

Q 

in 


<t 

o 

2 

o 

:> 

Cd 

M 

2 

X 

o 

<r 

o 

td 

Q 

X 

> 

O 

O 


►J 

X 



o 

o 

o 

o 


o 

2 

o 

<t 

o 

2 

O 

<C 

o 

2 

o 

<C 

o 

o 

2 

o 

Cd 




Q 

2 

Q 

2 

<t 

2 

2 

X 

2 

<X 

o 

2 

o 

2 

X 

2 


2 

2 

f- 

X 

X 

X 

X 

X 

Q 

Q 

Q 

2 

X 

2 

*-* 

2 

X 

2 

*-* 

2 

X 

2 

H 

2 

X 

2 

Q 

•D 

CL 

X 

CL 

X 

O 


Q 














X 




X 




























in 

in 

U. 

in 

O 

O 

o 

O 

o 

in 

O 

O 

o 

in 

o 

o 

o 

o 

o 

o 

o 

o 

o 

_ 

CM 

o 

o 

_ 

o 


CM 

o 

o 

in 

o 

o 

o 

O 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

—■ 

CM 

CO 



O 

o 


—« 

CM 

CO 


in 

o 

—« 

CM 

CO 




in 

vO 

vO 

t" 



CO 

o 

O' 

o 

—• 

CM 

CO 


m 

yQ 

c- 

CO 

O 

o 

—t 

CM 

CO 


m 

O 

o 

—• 

CM 



<r 





IT) 

m 

in 

in 

in 

in 

in 

o 

vO 

yQ 

VO 

yQ 

vO 

yo 

vO 

'O 

vO 

yo 

yQ 

yQ 

yQ 

yQ 

yQ 

r- 

r~- 

f- 

C^ 

r- 


f~ 

f'- 

o- 

t- 

CO 

CO 

00 

CO 

CO 

CO 

O' 

o 

o 

o 

CO 

CO 

00 

CO 

CO 

CO 

00 

CO 

00 

00 

00 

CO 

CO 

00 

CO 

CO 

CO 

CO 

CO 

CO 

00 

CO 

00 

00 

CO 

CO 

CO 

CO 

CO 

CO 

co 

CO 

CO 

CO 

00 

00 

00 

00 

co 

00 

CO 

00 

CO 

00 

CO 

CO 

00 

O' 

O' 

O' 


o 







o 




o 



o 









o 







o 




o 



o 









o 



CQ 


CO 


Cd 

CQ 

00 


cd 



o 

00 











u. 


O 


o 

00 

oo 


o 



u. 

o 








_ 

O' 

o 

'O 

f- 

'O 

O' 

Q 

VO 

vO 


Q 

u. 

O' in 


vO 

td 

r- 

t- 

r- 

td 

c- 

0- 

o 

o 


Cd 

yO 

o 

o 

o 

Cd 

u. 

'O 

O 

yQ 

O Cd 

CM 

o 

c- 

o 

o 

o 


— 

— 

'O 

O' 

<c 

CQ 

a 

Cd 

o 

— 


yQ 

oo 

O' 

O 

a td 

u. 

CM 


in 

vO 


CO 

O' 

<t 

CQ 

CQ 

CQ 

CQ 

CQ 

CQ 

o 

o 

o 

O 

o 

o 

o 

O o 

o 

Q 

Q 

a 

a 

Q 

Q 

Q 

Q 

o 

o 

o 

O 

o 

o 

o 

o 

o 

O 

o 

o 

o 

o o 

o 

o 

o 

o 

o 

O 

8 

O 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

O 

o 

o 

o 

o o 

o 

o 

o 

o 

o 

O 

o 

o 


o 

o 


in 

Q 


Q 

a 

a 

Id 

t- 

u- 

o 

Cd 

r^ 

C'- 

o 

td 

r- 

t*- 

o 

td 

c^* 

0- 

in 

CM 


O' 





CM 

CM 

CM 

r- 

— 

r- 

CM 

r- 

— 


CM 

f- 

-• 

U- 

CM 

r- 

— 


o 

o 

td 

o 





CQ 

o 

a 

td 

u. 

o 


CM 

co 


in 

'O 


co 

O' 

<t 

CQ 

o 

Q 

td 


CM 

CO 

O' 

Q 

tx. 

a 

a 

a 

Q 

a 

Cd 

td 

td 

td 

td 

td 

td 

td 

td 

td 

td 

Cd 

td 

td 

td 

lx. 

U. 

tx. 

tx. 

tx. 

tx. 

o 

8 

o 

O 

o 

o 

o 

O 

O 

8 

o 

8 

8 

8 

O 

o 

o 

o 

o 

O 

O 

o 

o 

o 

o 

O 

o 

o 

o 

o 

o 

o 

o 

O 

o 

O 

o 

o 

o 

o 

O 

O 

o 

o 

o 

o 

O 


Nov./Dec., 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 59 


356 










LIFE’S LIKE THAT 

LIFE ON AN 8080 WITH A VDM 

The game of life seems to be a natural for the VDM. So 
much has been written about it. 

Here is a short version that requires toggling only 116 
bytes. An earlier version (PCC, Vol. 4 No. 2) required 218 
bytes. This program does however RAM equal to the VDM 
memory to store the next generation. If you are really 
strapped for memory, use half of the VDM for each genera¬ 
tion. 

1) Before loading the program, first initialize the screen. 
On Processor Technology’s VDM this is done by sending a 
zero out to the VDM output port. 

2) Load the program and run it. This should clear the 
screen of random characters within 10 seconds. 

3) Use the front panel to load your original population 
directly into memory (*=2A in hex). 

4) Run the program. Every 2Vi seconds a new genera¬ 
tion will appear. 

— Marvin R. Winzenread 



KIM-1 OWNERS: PLEASE, THINK SMALL 

Now that you have your KIM-1 attached to the power 
supply and have successfully added 2 + 3 and gotten 5, 
would you like something else to do? Would you like to 
use the KIM-1 as: 

— a TIMER accurate to a millisecond 

— a CLOCK displaying hours, minutes and seconds 

— an ADDING MACHINE with six digit add/subtract for 
the old checkbook 

— a DECIMAL-HEX/HEX-DECIMAL Converter 

— a DRUNK TEST 

— a simple GUESS-THE-NUMBER game for the kiddies 

— the MASTERMIND game for you 

— the SHOOTING STARS puzzle 

— a series of REACTION TIME tests 

— a MOVING MESSAGES DISPLAY with Alphabetic 
Characters 

— plus other demos, tests and games?? 

Would you appreciate having all of these capabilities in an 
integrated software package that includes a “high level lan¬ 
guage” which will let you create your own programs??? 

MicroCosmos announces PLEASE, a package which con¬ 
tains all of the above features and runs on the basic KIM-1 
- no additional memory, TTY, or peripherals required. 
PLEASE is distributed as a CASSETTE TAPE, plus com¬ 
plete SOURCE LISTINGS, full OPERATING INSTRUC¬ 
TIONS, and instructions for writing your own programs in 
PLEASE. The total cost: $10.00. MicroCosmos, 210 
Daniel Webster Highway, S., S. Nashua, NH 03060, (617) 
256-3649. 


• X — X _1 — ^ J X _3 

=> o <x x 3 <£ « 

ioe-ojOoxu 


oooooooooo o 

oc-iMoo-ai <r 

^CCCCOC — — — O — 


_ a Oi 3 
«, x _ % o 

_ _ QQQ lQ<£70* 

—j -3 J X J Z> 

— Oja_ix-JX.J — O a. j x X =» ~ 

Z <t X J3<t0<10<t)0< JO« 2202M 

«o_jo<iaoaoaozjaa.o — «£<ro 
% ° 


ooo oooooo Gjooomoooooo 

S) O OO-SJtV7Ji-J>^'CM'E0'O--O-OO 

---OO'MMMMMai'nMMMWMCilCUrtnoOWn 

— ^ tft to 


X XX 

«. o — — — 

xatcooifc^ainSM _ _ 

z o x => x a. x 

« 1< ^ M SJ x £ « OEtfr-OM-d 
Z O X Z £ X NJ 2 t*3 Z > r- 

OlMEUTDUODTWiflX-DEW 
O XXX 

oooooooooooinooooo 

00000-00000000000 



oooo oxoo 
n o - m o 4 — oa 

— oooooo — — 

MCCDEOtDOO'O 
to — 



Page 60 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Nov./Dec., 1976 


357 







4K AND 8K BASIC FROM SWTPC FOR UNDER 
$ 5—$10 

Southwest Technical Products Corporation has just released its 4K 
and 8K BASIC software. Both feature fixed and floating point math with 
a full 1 .OE-99 to 9.9999999999E+99 number range. In addition to the 
line number mode a direct (no line number! mode of execution is pro¬ 
vided on most statements to create a calculator like mode of entry for 
short programs. Provisions have been made in both packages for saving 
and loading BASIC programs to and from either cassette or paper tape. 

A USER function is even provided for jumping to machine language sub¬ 
routines. 

Both packages have been written for the SWTPC 6800 Computer 
System. The 4K BASIC© requires aminimumof 6K of memory with 
8K recommended, while the 8K BASIC © requires a minimun of 8K 
of memory with 12K recommended. The 4K BASIC © tape and 
manual sell for $4.95 on "Kansas City" cassette tape and $10.00 on 
paper tape. The 8K © tape and manual sell for $9.95 on "Kansas City" 
cassette tape and $20.00 for paper tape. All prices are postpaid in the 
U.S: SWTPC, 219 W. Rhapsody, San Antonio, TX 78216, (512) 344-9778 
SWTPC Has copyrighted 4K and 8K BASIC. Version 1.0 program 
material and manual may be copied for personal use only. No dupli¬ 
cation or modification for commercial use of any kind is authorized. 


COMMANDS 



STATEMENTS 


LIST 


REM 

END 


RUN 


DIM 

GOTO* 

STOP 

NEW 


DATA 

ON . ..GOTO* 

GOSUB* 

SAVE 


READ 

ON . ..GOSUB* 

PATCH* 

LOAD 


RESTORE 

IF... THEN* 

RETURN 

PATCH 


LET* 

INPUT 

tDES 



FOR 

PRINT* 

tPEEK 

FUNCTIONS 


NEXT 

tPOKE 

ABS 

tVAL 

tSIN 



INT 

tEXTS 

tcos 



RND 

tLENS 

tTAN 

*Direct Mode statements 

SGN 

tLEFTS 

tEXP 

f 8K Version only 

CHR 

TMIDS 

tLOG 



USER 

TAB 

tRIGHTS 

tSQR 




MATH OPERATORS 

RELATIONAL OPERATORS 

- (unary) Negate 

= 

Equal 

* Multiplication 

<> 

Not Equal 

/ Division 

< 

Less Than 

+ Addition 

> 

Greater Than 

— Subtraction 

<= 

Less Than or Equal 

t+ Exponent 

> = 

Greater Than or Equal 


GOOD POINTERS ON 6800 SYSTEMS SOFTWARE 


Dear Dr. Dobb’s, Sept. 22, 1976 

Your readers who are interested in the article by Tom 
Pittman on the 6800 Resident Assembler and Editor might 
like to know that true annotated assembly listings of the 
I/O routines are available in the 6800 users group library. 

Program No. 10 is a listing of the I/O routines used 
with EXBUG. While this listing does not describe the 
routines in EXBUG itself, the comments do provide an 
insight into the operation of the flags. 

Of more interest is Program No. 11 which is the 
MIKBUG version of the I/O routines. When this is com¬ 
bined with the listing of MIKBUG in Engineering Note 100 
on the MCM 6830L7 ROM one will have a listing of a 
complete I/O system. This can be used as a model to 
develop suitable I/O routines to interface the Assembler and 
Editor with any system. 

The price Motorola charges for the Assembler and 
Editor is a little high for home use though. 

Sincerely, 

John P. Byrns 1953 Governors Ln. 

Hoffman Estates, IL 60195 


Tiny BASIC Game Contest 

OPPORTUNITY TO WIN A MICROCOMPUTER 
ASSOCIATES VIDEO TERMINAL, ETC. 

1st Prize: VT-200 terminal with resident TINY BASIC and 
JOLT assembler 
2nd Prize: VT-100 terminal 
3rd Prize: JOLT 4K system kit 
4th - 10th Prizes: JOLT CPU kits 

CONTEST RULES: 

1. All entries must be postmarked by April 1, 1977. 

2. All entries must be submitted as follows: 

a. JOLT TINY BASIC source program as paper tape with CR, LF 
and four (4) rubout characters terminating each source state¬ 
ment. 

b. Running instructions, game description and at least one exam¬ 
ple of game play-all in typewritten form on 814" x 11" white 
bond suitable for printing. 

3. All entries must run on an MAI VT-200 equipped with 4,096 
bytes of RAM storage, OR on a JOLT 4K system equipped with 
TINY BASIC. 

4. All entries must run correctly and be sufficiently well documented 
to enable a non-technical person to enter, run and play the game 
as directed by the running instructions. Entries which for any 
reason do not run or are not sufficiently well documented to 
enable easy entry and play will be DISQUALIFIED. 

5. All decisions by MAI with respect to acceptance, disqualification, 
and winners will be final. 

6. MAI employees and their families are not eligible to enter. 

7. This contest void where prohibited by law. 

8. All entries become the property of MAI and will not be returned. 

9. Contest winners will be notified by registered mail no later than 
60 days from contest closing date of April 1, 1977. Contest Win¬ 
ners will also be published in the Microcomputer Digest and the 
JOLT Users Newsletter. Contest Winners may also be obtained 
directly by sending a stamped self addressed envelope to MAI no 
earlier than May 1, 1977 and no later than July 1, 1977. 

10. The JOLT TINY BASIC language summary is available at partici¬ 
pating computer stores. The language summary may also be ob¬ 
tained by sending $1.00 cash, check, or money order for postage 
and handling to MAI TINY BASIC CONTEST, P.O. Box 1167, 
Cupertino, CA 95014, A paper tape form of JOLT TINY BASIC 
complete with documentation is available by sending $5.00 cash, 
check or money order to ITTY BITTY Computers, P.O. Box 
23189, San Jose, CA 95123. 


A $5 WUMPUS 


Hi- 

I have written a machine language version of “Wumpus” 
by Greg Yob. It’s a great game. The 8080 program is under 
3K and is self-contained. It requires no user PROM sub¬ 
routines, etc. Anyway, if anyone wants a listing, just send 
your name, address and $5.00 to: 

Ron Santore 1957 Huasna Dr. 

San Luis Obispo, CA 94301 


MUMPS IS SPREADING 

Oct. 18, 1976 

The MUMPS computer language is used for medical and business 
applications. The number of institutions that use MUMPS is growing 
by about 80% per year. A concise pocket guide to MUMPS has been 
written to facilitate use of this text-handling and data management 
language. The guide includes descriptions of all the commands, opera¬ 
tors, functions, and all other capabilities of Standard MUMPS, and 
gives many examples of their use. The Standard was developed from a 
dozen MUMPS dialects, under the sponsorship of the National Bureau 
of Standards and the Department of Health, Education and Welfare. 
Single copies of the guide are available at no charge from Dr. Joan 
Zimmerman, MUMPS Users' Group, 700 S. Euclid Ave., St. Louis, 

MO 63110. 


Nov./Dec., 1976 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia. Box E, Menlo Park, CA 94025 


Page 





PROGRAM REPOSITORY & TAPE DUPLICATION FACILITY 

A PUBLIC DOMAIN ALTERNATIVE TO MANUFACTURERS' USER GROUPS 


ERRATA FOR PREVIOUS CCC INFORMATION: 

The CCC Program Repository currently furnishes programs 
on roll paper tape; not on fan-fold, as was previously 
announced. 


The Community Computer Center (CCC) will act as a reposi¬ 
tory for program tapes; both source tapes and binary tapes. Every¬ 
one wishing to contribute programs to the public domain may do 
so by forwarding appropriate paper tapes to CCC. In particular, 
if you are hesitant about submitting a program for publication in 
Dr. Dobb's Journal because you don't want to hassle with its dis¬ 
tribution, you are encouraged to forward the tapes to CCC and 
the documentation to the Journal for publication. 

The CCC will thus serve as a desirable alternative and supple¬ 
ment to the User Groups that are controlled and operated by many 
of the processor manufacturers, some of whom charge up to $100 
for "membership" and access to the programs that their customers 
developed and offered to the User Group, without compensation. 

There is no membership fee for access to the tapes from the 
Community Computer Center. Instead, one pays only for the 
duplication and mailing costs: 

Duplication charge: $1/ounce or fraction thereof, for tapes 
(weighed after punching on roll paper tape) 

(Add 6% tax for orders mailed to a California address) 

Postage and handling: $0.50 on orders of $5 and less 
$1 on orders exceeding $5 

Payment must accompany ail orders. Orders will be mailed 
First Class, within 3 days of receipt. 

Lists of available tapes will be published, periodically, in Dr. 
Dobb's Journal, as well as being available from CCC: 

Community Computer Center 
1919 Menalto Avenue 
IVIenlo Park, CA 94025 
(415) 326-4444 

The following source tapes are currently available. They are 
programs written for the version of BASIC that is implemented 
for the HP 2000F minicomputers, and are discussed in What To 
Do After You Hit Return (available from the PCC Bookstore, 
$6.95). 


Tiny BASIC for Altairs & IMSAIs: 


Palo Alto Tiny BASIC 2 

Star Trek in Palo Alto Tiny BASIC 2 

Palo Alto Tiny BASIC for HP2100 XASYM 2 


Numbers Guessing Games $12 
Number 2 

Abase 3 

Trap 2 

Stars 2 

Clocks 3 

Bagels 2 

Quadgt 3 

Button 2 


Word Games $10 

Letter 2 

Abagel 3 

Hangmn 3 

Madlib 6 

Word 2 

"Nimlike" Games $11 

23Mtch 2 

Batnum 3 

Nim 4 

Chomp 3 

Zot 5 

Hide-n-Seek in 2D $ 4 

Hurkle 2 

Mugwmp 2 

Snark 2 

Pattern Games $11 

Dangle 2 

Sunsgn 3 

Biosin 3 

Mandal 3 

Life 3 

Amaze 3 

Board Games $11 

Qubic5 5 

Gomoku 4 

Teaser 3 

Rover 5 

Welcome to the Caves $ 9 

Caves1 5 

Wumpus 4 

Caves2 5 

Business & Social Science $22 
Hamrbi 3 

King 5 

Civil 2 7 

Market 5 

Stock 5 

Policy 4 

Polut 4 

Science Fiction Games $1 2 

Trader 10 

Sttrl 9 

Last Chapter $10 

Crash 4 

Lunar 3 

Revers 2 

Zeros 3 

Taxman 3 

The following games are in Dartmouth BASIC 
Motie 5 

Rescue 5 

Pouncel 

Dodgem 3 

Sinners 2 

Kingdom for TSS/8 BASIC: 

English Version $ 2 

Spanish Version 2 


SAN FRANCISCO’S SETH IS BECOMING THE 
BOOTSTRAP COMPUTER STORE 

A computer mob known as SETH, 4001 - 24th 
St., San Francisco, CA 94114, is working on opening a 
storefront computer operation that will include walk-in, 
play-a-computer-game facilities. They have miscellaneous 
peripheral gear and would like to trade some of it for 
other goodies. They will also sell gear on a consignment 
basis. They can be contacted at the above address or 
at 3981 - 24th St. By phone, call (415) 282-8000 or 
282-3550 (11 a.m. - 7 p.m.), and ask for Bob, George or 
Don. 


BUSINESS SOFTWARE . . . FOR $3,000 


Aircom, Inc. (Rt. 16B, Union, NH 03887,603/473-2323) has three 
software or business packages for business users. All are assembler 
coded for a Computer Automation Alpha LSI-2 and are teletype-ori¬ 
ented, both for I/O and for "record storage" (i.e., on paper tape!). 

Their general ledger accounting program system is $3,000 for the 
software, alone, ot $9,950 for the software and a computer with 1 6K 
words. Their payroll package — with 38 character variables — requires 
6K and is available for $3K for the software, or $8250 including an 
8K machine. They also have a line-oriented forms package for $7,950 
with an 8K machine or $2,700 for the software, alone. 

They have no documentation that they could provide for our exami¬ 
nation, and plan on customer training at their site in New Hampshire. 


Page 62 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Nov./Dec., 1976 




WE’RE 
DIFFERENT ! 


No Ads 
No Frills 
All Content 



People’s Computers is a magazine for anybody and everybody who wants to know more about 
computers, how they work, and how to use them. We aren’t padded with color advertisements; 
we’re filled cover to cover with articles, listings, reviews, games, letters, and interviews. 
People’s Computers is published by a non-profit educational company, devoted to presenting 
new ideas, facts, and possibilities in a clear, usable, and lively way. 

Our contents include: Programming: tutorials in easy-to-leam languages like Tiny BASIC and 
PILOT introduce the novice to elementary programming. More advanced material includes 
assembly language programming. Education: anyone who wants to write fun, easy-to-use educa¬ 
tional programs will find lots of tips and sample programs. Blue Sky Stuff: Tiny BASIC first 
originated as an idea that was realized on our pages. We are now designing a tiny language suitable 
for use by kids and those who work with them. Computers in the World: People’s Computers 
explores the impact of computers on our lives including such topics as conferencing and network¬ 
ing, easier human-computer interfacing, women and computers. Fantasy and Fun: Space games 
and wumpus hunts are just some of the games listings found on our pages. And how can you 
miss the swashbuckling adventures of Fortran Man, as he battles file decrementers and parity 
snatchers in the never ending battle for truth, logic and sequential files? 

And there’s lots more, all for just $8 a year. To subscribe, use the facing postage-free card, or 
write us at People’s Computers, Dept. V, 1263 El Camino Real, Box E, Menlo Park, CA 94025. 


people’s computers 
































Dr. Dobb’s Journal of COMPUTER CALISTENICS & ORTHODONTIA 


Volume One 

Send_copies of DDJ Volume One for just SI 3 

each plus SI .50 shipping and handling and bill me. 
In California add 78 cents for sales tax. 

NAME___ 

ADDRESS_ 


CITY/STATE_ZIP_ 

□ THIS IS A RENEWAL □ PAYMENT ENCLOSED 

(PLEASE ENCLOSE LABEL) 


Subscription 

Please start my subscription to 
Dr. Dobb’s Journal (10 issues a year) 
and bill me for: 

P] ONE YEAR for SI2 

(Save $3 off single issue price) 

r] TWO YEARS for $22 

(Save $8 off single issue price) 

In Canada: 

add S4/year for postage 
European & Japanese rates available 
on request. 


Dr. Dobb’s Journal 


of COMPUTER CALISTENICS & ORTHODONTIA 


Volume One 

Send_copies of DDJ Volume One for just $13 

each plus $1.50 shipping and handling and bill me. 
In California add 78 cents for sales tax. 

NAME_ 

ADDRESS_ 


CITY/STATE_ZIP__ 

□ THIS IS A RENEWAL □ PAYMENT ENCLOSED 

(PLEASE ENCLOSE LABEL) 


Subscription 

Please start my subscription to 
Dr. Dobb’s Journal (10 issues a year) 
and bill me for: 

□ ONE YEAR for $12 

(Save $3 off single issue price) 

Pj TWO YEARS for $22 

(Save $8 off single issue price) 

In Canada: 

add $4/year for postage 
European & Japanese rates available 
on request. 


people's computers 


Please start my one year subscription to People’s Computers 
(published bi-monthly) and bill me. 

NAME_ 

ADDRESS_ 


□ ONE YEAR for $8 

□ TWO YEARS for $15 


CITY/STATE 


ZIP 


V 


In Canada add $4/year for postage. 
Foreign rates available on request. 


□ PAYMENT ENCLOSED 


























FIRST CLASS 
PERMIT NO. 756 
MENLO PARK, CA 


BUSINESS REPLY MAIL 

No Postage Stamp Necessary if Mailed in the United States 


Postage will be paid by 

Dr. Dobb’s 
Journal 

of Computer Calisthenics 
& Orthodontia 
P. 0. Box E 

Menlo Park, CA 94025 


FIRST CLASS 
PERMIT NO. 756 
MENLO PARK, CA 


BUSINESS REPLY MAIL 

No Postage Stamp Necessary if Mailed In the United States 


Postage will be paid by 

Dr. Dobb’s 
Journal 

of Computer Calisthenics 
& Orthodontia 
P. 0. Box E 

Menlo Park, CA 94025 


FIRST CLASS 
PERMIT NO. 756 
MENLO PARK, CA 


BUSINESS REPLY MAIL 

No Postage Stamp Necessary if Mailed In the United States 


Postage will be paid by 

PC 

P. 0. Box E 

Menlo Park, CA 94025 














































FIRST CLASS 
PERMIT NO. 756 
MENLO PARK, CA 


BUSINESS REPLY MAIL 

No Postage Stamp Necessary if Mailed In the United States 


Postage will b® paid by 


PCC'S 

REFERENCE BOOK 


P. 0. Box E 

Menlo Park, CA 94025 


PCC’s Reference Book 
Order Form 

Please send me_ copies of PCC’s REFERENCE BOOK OF 

PERSONAL and HOME COMPUTING for $5.95 plus 95c ship¬ 
ping and handling per book. (In California add 35c for sales 
tax). If not completely satisfied within 10 days, I can have a 
refund in full. 

name _.. ...... 

ADDRESS________ 


CITY/STATE__ZIP- 

□ PAYMENT ENCLOSED □ BILL ME G2 


FIRST CLASS 
PERMIT NO. 756 
MENLO PARK, CA 


BUSINESS REPLY MAIL 

No Postage Stamp Necessary if Mailed In the United States 


Postage will be paid by 

Computer Music 
Journal 

P. 0. Box E 

Menlo Park, CA 94025 










































ADDRESS 


CITY/STATE_ZIP_ 

□ PAYMENT ENCLOSED □ BILL ME G2 


PCC’s Reference Book 
Order Form 




Please send me _ copies of PCC’s REFERENCE BOOK OF 

PERSONAL and HOME COMPUTING for $5.95 plus 95<t ship¬ 
ping and handling per book. (In California add 35<t for sales 
tax). If not completely satisfied within 10 days, I can have a 
refund in full. 


NAME. 


FIRST CLASS 
PERMIT NO. 756 
MENLO PARK, CA 


BUSINESS REPLY MAIL 

No Postage Stamp Necessary if Mailed In the United States 


Postage will ba paid by 


PCC'S 

REFERENCE BOOK 


P. 0. Box E 

Menlo Park, CA 94025 


Computer Music Journal 
Subscription Form 

Please start my subscription to Computer Music Journal 
(6 issues/year) and bill me for $14. 

NAME___ 

ADDRESS---— 


CITY/STATE 


ZIP 


V 



































Computer 

Journa 


Music 

1 


The Computer Music Journal is devoted to the development of computer systems which are capable of 
making high fidelity music. 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, frequency or period, and phase - all from one digital 
oscillator) controlled by a small computer; 

★ high speed, high resolution multiplication (16 bit X 16 bit -*■ 16 to 32 bit product in less than 
200 nanoseconds); 

★ schematic diagrams; 

★ review of hardware components; 

★ cost of hardware / quality of sound tradeoffs; 

★ control of analog synthesizers with a small computer; 

★ envelope generators (not just exponential or linear attack, sustain, and decay, but any shape); 

★ digital filtering; 

★ high resolution, high speed digital to analog converters; 

★ digital reverberation and movement of spacial location with Doppler shifting; 

★ choral effects; 

★ analysis of acoustic instruments; 

★ psychoacoustics; 

★ music theory; 

★ generation of different musical scales including meantone, just, and equal tempered (with 5, 7, 

12, 19, 22, 29, 31, or 43 notes in each octave) tunings; 

★ reviews of books about computer music, acoustics of musical instruments, psychoacoustics, 
music theory and composition, computer design, and electronics. 


The Computer Music Journal is published every other month. A one year subscription costs $14. 
If interested, use the postage-free order card opposite, or write us at PCC, 1263 El Camino Real, 
Menlo Park, California 94025. 









FINALLY! 

A Reference 

r Book 

for 

Home 

Computer 
Users 

Ever try to find the address of, say, a particular floppy disc manufacturer when you don’t even 
know what state they’re in? Looking for articles on a certain kind of hardware? Frustrating, isn’t it? 

Well, People’s Computer Company has just published a valuable reference directory that goes a long 
way towards ending that frustration. 


Here’s just some of the useful information you’ll find in PCC’s Reference Book 

^ Hundreds of companies and computer stores selling hardware, software, peripherals 
and offering all sorts of services are listed with their addresses. 

Nuts-and-bolts and survey articles on software, hardware, applications, robots, and 
the future, just to name a few, for the experienced and the not-so-experienced user 
of microcomputers. 

The complete, documented source and object code for a 2K Tiny BASIC. 

☆ A massive index of the articles from the major hobbyist magazines, plus information 
on the magazines in the field, hobbyist clubs, newsletters and professional societies. 

☆ Bibliographies on different areas so you can investigate them further, including a 
special computer music bibliography. 

It’s a book you’ll want to keep handy because you’ll use it a lot. And even when you aren’t looking 
up addresses or other information, you’ll be referring back to one of the many helpful articles. 


PCC’s Reference Book is available for $5.95 plus 95<f for shipping and handling in the U.S. 
(California residents add 35 cents sales tax). Use one of the order cards just inside this cover, or 
write to us at 1263 El Camino Real, Box E, Menlo Park, CA 94025. 


ISBN 0-918790-01-8 $13.00 



