Professional Documents
Culture Documents
COMPUTER
C 6O alisthenics 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
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
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
COMPUTER
(Calisthenics ^ Orthodontia
Running Light Without Overbyte
January, 1976 Box 310, Menlo Park CA 94025 Volume 1, Number 1
THIS IS A REPRINT OF
THE ORIGINAL
VOLUME 1, NUMBER 1
4
dr dobh’s journal of
T y BASIC
Calisthenics 60rthodontia
Running Light Without Overbyte
Box 310, Menlo Park CA 94025 Volume 1, Number 1
Z&&i.i.iA^SLJlSLSLJLSLSUULSLSt&Sl!l 8 8 8 880988868898839808089060000000(108001100800000000000 MJULSSJUULAJLSJLS.JULSLSJIJLSUI
BASIC
STATUS LETTER
BASIC, Beginners' All-purpose Symbolic Instruction Code, was
by Dennis A Nison initially developed in 1963 and 1964 by Professors John Kemeny
and Thomas Kurtz of Dartmouth College, with partial Isupport from
The magic of a good language is the ease with which a the National Science Foundation under the terms of Grant NSF GE
particular idea may be expressed. The assembly language of most 3864. For information on Dartmouth BASIC publications, get
microcomputers is very complex, very powerful, and very hard to Publications List (TM 086) from Documents Clerk, Kiewit Compu¬
learn. The Tiny BASIC project at PCC represents our attempt to tation Center, Dartmouth College, Hanover NH 03755. Telephone
give the hobbyist a more human-oriented language or notation with 603-646-2643.
which to encode his programs. This is done at some cost in space Try these: TM028 BASIC: A Specification $3.15
and/or time. As memory still is relatively expensive, we have chosen TM075 BASIC $4.50
to trade features for space (and time for space) where we could.
^1^ /p*-T'*
'Kb?
Our own implementation of Tiny BASIC has been very slow. I
have provided technical direction only on a sporadic basis. The real It would help a lot if you would each send us a 3x5 card with your
work has been done by a number of volunteers; Bernard Greening name, address (including zip), telephone number, and a rather
has left the project. As might be guessed. Tiny BASIC is a tiny part complete description of your hardware.
of what we do regularly. (And volunteer labor is not the way to run "CLf •JU' e»i>’ -\j> aJL*’ fctX**
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 DRAGON THOUGHTS
and John Arnold in Tyler, Texas. (And other versions can't be far
behind.) t We promised three issues. After these are done, shall we
H (g U H m SS H H H H11HIIH H1! continue?
t If we do, we will change the name and include languages other
MY, HOW TINY BASIC CROWED!
than BASIC.
t This newsletter is meant to be a sharing experience, intended to
Once upon a time, in PCC, Tiny BASIC started out to be:
disseminate FREE software. It's OK to charge a few bucks for tape
t a BASIC-like language for tiny kids, to be used for games,
cassettes or paper tape or otherwise recover the cost of sharing. But
recreations, and the stuff you find in elementary school math books.
please make documentation essentially free, including annotated
t an exercise in getting people together to develop FREE soft¬
source code.
ware.
t If we do continue, we will have to charge about $1 per issue to
t portable-machine independent.
recover our costs. In Xeroxed form, we can provide about 20-24
t open-ended-a toy for software tinkerers.
pages per issue of tiny eye-strain stuff. If we get big bunches of
t small.
subscriptions, we'll print it and expand the number of pages,
Then . . . (fanfare!) . . . along came Dick Whipple and John depending on the number of subscribers.
Arnold. They built Tiny BASIC Extended. It works. See pp 13-17
t So, let us know. . . shall we continue?
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
For our new readers, and those who have been following
FORTRAN but, I implore you, no Tiny COBOL! How about Tiny
APL? Or Tiny PASCAL (whatever that is)? articles on Tiny BASIC as they appeared in People’s
WANTED: Entirely new, never before seen. Tiny Languages, Computer Company, we have reprinted on pages 3-12 the
imported from another planet or invented here on Earth. Especially best of Tiny BASIC from PCC as an introduction, and as
languages for kids using home computers that talk to tvs or play a reference.
music or run model trains or . . .
5
uary 1976 Tiny BASIC Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 Page 2
an
t = v + v;
TECHNIQUES & PRACNIQUES
u = t + t; Computes 10 - x
Vv\6’(G.
(If you would like us to publish your name, address, and equip¬
.. . and so we procede somewhat more slowly than some ment of access/interest in future issue(s), please indicate VERY
of our readers SPECIFICALLY:
EQUIPMENT
Dennis Allison - technical editor OF ACCESS/INTEREST_
Bob Albrecht
contributing
John Arnold
editors
Dick Whipple
Lois Britton - circulation manager
Please send check or money order (purchase order minimum: $6)
Rhoda Horse - midwife-at-large
to TINY BASIC CALISTHENICS & ORTHODONTIA
000000000000000000000000000000000 Box 310, Menlo Park CA 94025. Thank you.
6
January 1976 Tiny BASIC Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 Page 3
DATA STRUCTURES
BUILD YOUR OWN BASIC 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
by Dennis Allison & Others
was not a huge problem, we could simply preallocate all storage since BASIC
(reprinted from People’s Computer Company Vol. 3, No.4) 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
A DO IT YOURSELF KIT FOR BASIC?? IF. This table gets pretty big when there are lots of statements.
Yes, available from PCC with this newspaper and a lot of your time. This is Lastly, we need some information about what is a legal BASIC statement and
the beginning of a series of articles in which we will work our way through the which error to report when it isn't. These tables are called parsing tables since
design and implementation of a reasonable BASIC system for your brand X they control the decomposition of the program into its component parts.
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 STRATEGY
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! Divide and Conquer is the programmers maxim. BASIC will consist of a lot of
We'd like everyone interested to participate in the design. While we could do smaller pieces which communicate with each other. These pieces themselves
it all ourselves, (we have done it before) your ideas may be better than ours. consist of smaller pieces which themselves consist of smaller pieces, and so forth
Maybe we can save you, or you can save us, a lot of work or problems. Write down to the actual code. A large problem is made manageable by cutting it into
us and we'll publish your letter and comments. 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
WHICH BASIC? when BASIC is loaded.
There is not any one standard BASIC (yet). * a program and line editor. This program collects lines as they are entered
The question is which BASIC should we choose from the keyboard and puts them into a part of computer memory for
to implement. A smaller (fewer statements, later use.
fewer features) BASIC is easier to implement #a line executor routine which executes a single BASIC statement, whatever
and (more important) takes less space in the that is.
computer. Memory is still expensive so the #a line sequence which determines which line is to be executed next.
smaller the better. Yet maybe we can't give *a floating point package to provide floating point on a machine without the
up some goodies like string variables, dynamic hardware.
array allocation, and so on. •^terminal I/O handler to input and output information from the Teletype and
There is a standard version of BASIC which is provide simple editing (backspace and line deletion).
to be the minimal language which can be called *a function package to provide all the BASIC functions (RND, INT, TAB, etc.)
BASIC. It's a pretty big language with lots of *an error handling routine (part of the supervisor).
*a memory management program which provides dynamic allocation data
goodies. Maybe too big. Is there any advantage
to being compatible with, say, the EDU BASICS? objects.
We don't have to make any decision yet; but the These are the major ones. As we get futher into the system we'll begin to see
time will come ... others and we'll begin to be able to more fully define the function of each of
these modules.
7
January 1976 Tiny BASIC Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 Page ^
the interpreter to users who desire these complex calcu¬
BUILD YOUR OWN BASIC-REVIVED lation capabilities. A number of calculator chip
proposals have been made, with the Suding unit being
(reprinted from People’s Computer Company Vol. 4, No. 1) of the most interest
WHAT IS TINY BASIC??? Thank you for the note of 13 June, regarding my letter
on the Tiny BASIC article (PCC Vol. 3 No. 4). It was
TINY BASIC is a very simplified form of BASIC which can be with regret that I learned that the series was not con¬
implemented easily on a microcomputer. Some of its features are: tinued in the next volume. Even though few responded
to the article published, conceptually the knowledge
and principles which would be disseminated regarding
Integer arithmetic 16 bits only a limited lexicon, high level programming language
are of importance to the independent avocational
26 variables (A, B,. . ., Z)
microcomputer community.
Seven BASIC statements At this time, PCC may not have a wide distribution in
the avocation microcomputer community. This could
INPUT PRINT LET GOTO be possibly the cause for the low number of respondies.
IF GOSUB RETURN Never the less, this should not detract from the dis¬
semination and importance of concepts and principles
Strings only in PRINT statements which are of significance.
Only 256 line programs (if you’ve got that much memory) The thrust of my letter of 15 April, 1975, was to suggest
a mechanism for the inclusion of F.P. in a limited
Only a few functions including RND lexicon and memory consumptive BASIC. I hope that
the implication that F.P. must be included was not
It’s not really BASIC but it looks and acts a lot like it. I’ll be good read into my letter.
to play with on your ALT AIR or whatever; better, you can change
It is my interest that information, concepts and the
it to match your requirements and needs.
principles of compiler/interpreter construction as it
TINY BASIC LIVES!!! 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,
We are working on a version of TINY BASIC to run on the INTEL
blackbox program which is not currently available to:
8080. It will be an interpretive system designed to be as conservative (a) 8008 users, (b) IMP-16 users, (c) independent 8080
of memory as possible. The interpreter will be programmed in users (except at a very large expense) or (d) MC6800
assembly language, but we’ll try to provide adequate descriptions users who will shortly be on line.
of our intent to allow the same system to be programmed for most any
Presently it appears that microcomputer compiler
other machine. The next issue of PCC will devote a number of pages
interpreter function langauges will be coming available
to this project.
from a number of sources (MITS, NITS, Processor
Technology and etc.). However, few will probably deal
■Jf In the meantime, read one of these. in the conceptualizations which are the basis of the
Compiler Construction For Digital Computers, David Gries, Wiley, 1971
interpreter. Information which will fill the void in the
493 pages, $14.95
interpreter construction knowledge held by the avocation
Theory & Application of a Bottom-Up Syntax Directed Translator builder, should be made available.
Harvey Abramson, Academic Press, 1973, 160 pages, $11.00
I strongly urge that the series started with Vol. 3
Compiling Techniques, F.R.A. Hopgood, American Elsevier, 126 pages No. 4 article be continued. Possibly the hardware,
$6.50 peripheral, machine programming difficulties incurred
by the microcomputer builder, is prohibiting a major
1 BASIC Language Interpreter for the Intel 8008 Microprocessor
contribution at this time. However, I would expect
A.C. Weaver, M.H. Tindall, R.L. Danielson. University of Illinois
that by Autumn a number of builders should have
Computer Science Dept, Urbana IL 61801. June 1974. Report No. their construction and peripheral difficulties far enough
LI l'CDCS-R-74-658. Distributed by National Technical Informa¬ along to start thinking about higher level languages.
tion Service, U.S. Commerce Dept, Springfield VA 22151. $4.25. The previous objective for the article series sounds
reasonable. It was*not my purpose in submitting the
A BASIC language interpreter has been designed for use in a letter to detract from the objective of a very limited
microprocessor environment. This report discusses the develop¬ lexicon BASIC, ie., to be attractive and usable by the
ment of 1) an elaborate text editor and 2) a table-driven interpre¬ young and beginner due to its simplicity.
If wives, children, neighbors or anyone who is not
ter. The entire system, including text editor, interpreter, user
machine language or programming oriented is expected
text buffer, and full floating point arithmetic routines fits in
to use a home-base unit created under a restrained
16K 8-bit words.
budget a high level language will be a necessity. It
The TINY BASIC proposal for small home computers is with this foresight that I encourage the continuance
was of great interest to me. The lack of floating point of the “Build Your Own BASIC” series.
arithmetic however, tends to limit its usefulness for my This issue aside, I would like to encourage the PCC to
8
January 1976 Tiny BASIC Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 Page 5
DESIGN NOTES FOR TINY BASIC IT'S ALL DONE WITH MIRRORS-
OR HOW TINY BASIC WORKS
by Dennis Allison, happy Lady, & friends All the variables in TINY BASIC: the
(reprinted from People’s Computer Company Vol. 4, No. 2) control information as to which statement is
presently being executed and how the next state¬
SOME MOTIVATIONS ment is to be found, the returnaddressesof active
GOSUBS-—all this information constitutes the
A lot of people have just gotten into having state of the TINY BASIC interpreter.
their own computer. Often they don't know too
much about software and particularly systems There are several procedures which act upon
software, but would like to be able to program in this state. One procedure knows how to execute
something other than machine language. The any TINY BASIC statement. Given the starting
TINY BASIC project is aimed at you if you are point in memory of a TINY BASIC statement, it
one of these people. Our goals are very limited— will execute it changing the state of the machine
to provide a minimal BASIC-like language for as required. For example,
writing simple programs. Later we may make 100 LET S = A+6 ©
it more complicated, but now the name of the would change the value of S to the sum of the con¬
game is keep it simple. That translates to a tents of the variable A and the interger 6, and sets
limited language (no floating point, no sines the next line counter to whatever line follows 100,
and cosines, no arrays, etc.) and even this is if the line exists.
a pretty difficult undertaking.
A second procedure really controls the
Originally we had planned to limit interpretation process by telling the line interpreter
ourselves to the 8080, but with a variety of what to do. When TINY BASIC is loaded, this
new machines appearing at very low prices, we control routine performs some initialization, and
have decided to try to make a portable TINY then attempts to read a line of information from the
BASIC system even at the cost of some effi¬ console. The characters typed in are saved in a buffer,
ciency. Most of the language processor will be LBUF. It first checks to see if there is a leading
written in a pseudo language which is good for line number. If there is, it incorporates the line
writing interpreters like TINY BASIC. This into the program by first deleting the line with the
pseudo language (which interprets TINY BASIC) same line number (if it is present) then inserting
will then itself be implemented interpretively. the new line if it is of nonzero length. If there is
To implement TINY BASIC on a new machine, no line number present, it attempts to execute
one simply writes a simple interpreter for this the line directly. With this strategy, all possible
pseudo language and not a whole interpreter for commands, even LIST and CLEAR and RUN are
TINY BASIC. possible inside programs. Suicidal' programs are
also certainly possible.
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
TINY SASIC GRAMMAR
making a BASIC along with us, we'd appreciate
your help and your corrections. 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
Incidentally, were we building a production group objects, t is the empty set I denotes the alternative (the
interpreter or compiler, we would probably struc¬ exciusive-or).
ture the whole system quite differently. We chose
this scheme because it is easy for people to change Iine::= number statement @ I statement ©
without access to specialized tools like parser statement::= PRINT expr-list
generator programs. IP expression relop expression THEN statement
GOTO expression
INPUT var-list
THE TINY BASIC LANGUAGE LET var = expression
GOSUB expression
There isn't much to it. TINY BASIC RETURN
looks like BASIC but all variables are integers CLEAR
There are no functions yet (we plan to add RND, LIST
TAB, and some others later). Statement numbers RUN
must be between 1 and 255 so we can store them END
in a single byte. LIST only works on the whole expr-list::= (string I expression) (, (string | expression) *)
program. There is no FOR-NEXT statement We've var-list::= var (, var)*
tried to simplify the language to the point where it expression:^ (+1 -1 £) term ( ( +1 -) term)*
will fit into a very small memory so impecunious, term::= factor ( (* | /) factor)*
tyros can use the system. factor::=var | number | (expression)
var::= A |B 1C ... |Y |Z
The boxes shown define the language. The number::= digit digit*
guide gives a quick reference to what we will include. digit::= 0|1 I 2 I... 18 19
The formal grammar defines, exactly what is a legal relop::=< ( >| = | £ ) | >(< I = I £ ) I =
TINY BASIC statement. The grammar is important A BREAK from the console will interrupt execution of the program.
because our interpreter design will be based upon it.
9
January 1 976 Tiny BASIC Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 Page 6
INPUT/OUTPUT
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
"-jj’vji x your machine RETURN
IF X >Y THEN GOTO 30
/your program in TINY BASIC
The TINY BASIC program is stored, except Delete the leading blanks. If the string
for line numbers, just as it is entered from the matches the BASIC line, advance the cursor over
console. In some BASIC interpreters, the program the matched string and execute the next IL in¬
is translated into an intermediate form which speeds struction. If the match fails, continue at the IL
execution and saves space. In the TINY BASIC instruction labeled Ibl.
environment, the code necessary to provide the
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 Two different things are going on at the same
array called PGM in order of increasing line num¬ time. The routines must determine if the TINY
bers. A pointer, PGP, indicates the first free place BASIC line is a legal one and determine its form
in the array. PGP=0 indicates an empty program; according to the grammar; secondly, it must
PGP must be less than the dimension of the array call appropriate action routines to execute the
PGM. The PGM array must be reorganized when line. Consider the TINY BASIC statement;
GOTO 100
new lines are added, lines replaced, or lines are
At the start of the line, the interpreter looks for
deleted.
BASIC key words (LET, GO, IF, RETURN, etc.)
In this case, it finds GO, and then finds TO. By
Insertion and deletion are carried on simul¬ this time it knows that it has found a GOTO
taneously. When a new line is to be entered, the statement. It then calls the routine EXPR to
PGM array searches for a lirje with a line number obtain the destination line number of the GOTO.
greater than or equal to that of the new line. The expression routine calls a whole bunch of
Notice that lines begin at PGM (0) and at PGM other routines, eventually leaving the number 100
(j+1) for every j such that PGM (j)= [carriage (the value of the expression) in a special place, the
top of the arithmetic expression stack. Since
return]. If the line numbers are equal, then the
everything is legal, the XFER operator is invoked
length of the existing line is computed. A space
to arrange for the execution of line 100 (if it
equal to the length of the new line is created by
exists) as the next line to be executed.
moving all lines with line numbers greater than
that of the line being inserted up or down as Each TINY BASIC statement is handled
appropriate. The empty line is handled as a similarly. Some procedural section of an IL
special case in that no insertion is made. program corresponds to tests for the statement
structure and acts to execute the statement.
TINY BASIC AS STORED IN MEMORY
ENCODING
memory treated as an integer There are a number of different considerations
in the TINY BASIC design which fall in this general
byte treated as a character 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.
? R I k( T * P o \J £ ft In a number of places we have to indicate
the end of a string of characters (or else we have
S “ I N V U T Kf 'a# P ft 1 to provide for its length somewhere). Commonly,
one uses a special character (NUL = 00H for ex¬
M T t-j N tsi N * M % H 0 r f ample) to indicate the end. This costs one byte
per string but is easy to check. A better way de¬
N < > 0 <—> T W E M i_j (k O T 1 pends upon the fact that ASCII code does not
use the high order bit; normally it is used for parity
1 0 @ % £ U 3) @
\
a carriage return symbol
free space
m
ONE POTENTIAL IL ENCODING
IL instruction byte
ERRORS AND ERROR RECOVERY
11
January 1 976 Tiny BASIC Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 Page 8
A STATEMENT EXECUTOR WRITTEN IN IL
on transmission. We can use it to indicate the end
Thii program in IL will execute a TINY BASIC
(that is, last character) of a string. When we process itatament. Tl«xr operators TST. TSTV. TSTN. and PRS
all use a cursor to Imd < bar octet isitcs ot tbe TINY
the characters we must AND the character with BASIC line. Or bn orciai.oni INXT. XPER) move
Urc cursor so it points to ahoti«r TINY BASIC
07 FH to scrub off the flag bit. line.
INIT
RTN
Performs global initialization
Clears program area, emptys GOSUB stack, etc. RO: 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 R5'=l
invalid; transfer to Ini if not present. R1: TST R3, ’>' LIT :>*
LIT 3 :<> RTN
INSRT Insert line 8fter deleting any line with same line
number. RTN R5: TST R6. 7
R3: LIT 1 ; < LIT 3 <>
XINIT Perform initialization for each stated execution.
Fmpties AEXP stack.
RTN R6: LiT 4 >
RTN
12
January 1 976 Tiny BASIC Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 Page 9
Dear PCC,
TINY BASIC
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
by Dennis Allison, Bernard Greening, happy Lady, & lots
assembler would be appropriate. With an assembler similar to
of Friends DEC's PAL 3 or PAL 8 the necessary routines could be written
(reprinted from People’s Computer Company Vol. 4, No. 3) and used in nearly the same way without having to write the
Dear People, associated run time material that would be necessary for its
use as an interpreter. A command decoder, a text buffer, and a
After a quick pique at TINY BASIC 1 have the following line editor would be necessary and all of this uses up a good
(possibly ill-considered) comments: amount of space in memory.
1. It looks useful for tiny computers, which is as intended. If you are aware of all these things and still plan to develop
2. Those accustomed to extended BASIC, or even the original Dart¬ an IL interpreter, then I suggest you start as DEC did with a
mouth BASIC, will be irked by its limitations. But then, that's how simple symbolic editor as the backbone of the interpreter. In
the bits byte! this way you allow a 2800% increase in development and debug
3. How does the interpreter scan the word THEN in an IF statement? ging speed (according to Datamation's comparison of interpreters
4. Some of the comments for EXPR seem to be on the wrong line, or and compilers whose fundamental difference is the on line editing
my reading is more biased than usual. capability). Once this has been implemented and IL is running
5. Users should note that arithmetic expressions are evaluated left-to- on a particular system then the development of interpreters of
right unless subexpressions are parenthesized (i.e., there is no implicit all types is greatly simplified. By suggesting IL you have stumbled
operator procedure). onto the most logical and easiest way to develop a complete
6. Real numbers would be nice, but would take up a lot more space. library of interpreters. In addition to BASIC, it is very easy to
Probably too much. Ditto for arrays and string variables. write interpreters for: FOCAL, ALGOL, FORTRAN, PL 1, LISP,
7. Please consider adding semicolon (i.e., unzoned) PRINT format COBOL, SNOWBAL, PL/m, APL, and develop custom interpreters
with a trailing semicolon inhibiting the CRLF. This would be very ters-with the ease with which one would write a long BASIC
useful and would be easy to add. program!
8. If INPUT prompts with a question mark, please print a blank As I pointed out earlier, all these features take up memory
character after the question mark (for readability). space and, as you have pointed out, run time is much slower. The
9. I suggest allowing THEN as a separator in any multi-statement line, way around this is to define the IL commands in assembly lan¬
not just in IF statements. Since lines like guage subroutines then assemble the completed interpreter as
calls to these subroutines. Thus the need for the IL interpreter
IF 5<X THEN IF X<10 THEN GOSUB 100
as a run time space and time consumer is no longer necessary!
are already legal, why not allow lines like (OK symbolic assembler haters, let's see you do this in machine
LET A=B THEN PRINTA language in less than ten man-years!)
In places where time and space are not so much of a prob¬
or any other combination, including silly ones like
lem, I suggest the addition of an interrupt handler and priority
GOTO 200 THEN INPUT Z scheduler to allow IL to be used as a simplified and painless
the second statement of which would never be executed. If THEN TIMESHARED system enabling many users to run in an inter¬
preter and use more than one interpreter at once. Multi-lingual
works for IF, it should be possible to make it work for anything.
timeshare systems previously being available to those who have
10.1 also suggest allowing comments somehow. At present, comments
a highspeed swapping disk, drum, or virtual memory, are now
must be held to a minimum
avaliable to the user who has about 16K of memory and a method
are possible via subterfuges such as
of equitably bringing interpreters in to main memory from the
IF XOX THEN PRINT."THIS IS A COMMENT” outside world (a paper tape reader or cassette system is the eas¬
but that seems kind of gauche. Naturally, comments must be held to iest to come by).
a minimum in TINY BASIC, but sometimes they may be vital. In short, IL as I suggested, in its minor stages would be a
11. Doing a powerful software development aid; and in its final, most com
PRINT" " plex stages would provide a runtime system of unheard of
inexpense.
seems to be the only way to print a blank line. Well, all right.
I have hr>ard from unofficial sources that ordinarily an
12. Exponentiation via * * would seem fairly easy to add, and might
interpreter or compiler requires ten man-years to write and
be worthwhile.
debug to the point of use (if one man works the job would
13. By the way, all of this will execute in 1 K, won't it?
require 10 years, if 10 men work it would take one year).
Since this is to be expected as the initial development of IL
Jim Day
and since I have a general idea of the circulation of PCC, we
17042 Gunther St.
should have IL up and running by the next issue of PCC!!
Granada Hills, CA 91344
At this time I would like to request a few reprints of
the article dealing with IL because I want-to get some help
Answering your Questions by number where appropriate:
from others in my school in getting a timeshared version
3&4. Woops! There should be a TST instruction to scan the THEN. working on our 16K PDP 8/m with DECTAPE. I seem to
The comments are displaced a line. See the corrected IL listing in have lent my copy of that issue to one of the people I had
this issue. been trying to get on this project and he has not returned it
5. Expressions are evaluated left-to-right with operator precedence. to me. Meanwhile, I need the article to begin initial work on
That is, 3+2*5 gives 13 and not 25. To see this, note that the rou¬ the interpreter to insure compatibility with the version coming
tine EXPR which handles addition gets the operands onto the stack across through PCC. I will keep you posted as with regards
by calling TERM, and TERM will evaluate any product or quotient to the development.
before returning. William Cattey
7. Agreed, but this is intended as a minimal system. 39 Pequet Road
9. One man's syntacic sugar is anothers poison. I don't like the idea. Wallingford, Ct. 06492
Incidentally, how would you interpret
The IL approach to implementation is quite standard and
LET A=B THEN GOSUB 200 THEN PRINT 'A'
dates back to Schorre's META II, Gleenie's Syntax Machine, and
The GOSUB then has to store a program address which botch¬ numerous early compilers. It was widely used in the Digitek
es up the fine entry routine or one has to zap the GOSUB stack FORTRAN systems. We did not "stumble" on to the technique,
wherwjsan error is found. Both are solved only by kludges. we chose it with some deliberation.
10-12. See 7. You are right that a symbolic assembler can be used either
13. Maybe. But 2K certainly. See below. 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 Because of space limitations, we have not been able to
attendant cost in space (and decrease in execution time). Our publish all of John Rible's version (dialect) of TINY BASIC.
goal is a small, easily transportable system. The interpretive ap¬ We'll probably include it in the first issue of the TINY BASIC
proach seems consistant with this primary goal. We are using NEWSLETTER. Limited space requires it to be in 2nd issue.
the Intel 8080 assembler's macro facility to assemble our By seperating the syntax from the semantics he has
pseudocode. produced a larger and possibly simpler to understand IL.
I certainly agree that it is relatively easy (but not simple!) There are more IL instructions so, I believe, the resultant system
to implement other languages using the IL approach. From will be larger; further, the speed of execution is roughly pro¬
the users standpoint, provided he is not compute bound, there is portional to the number of IL instructions (decoding IL is
little difference. Interpreters are often a bit more forgiving costly), it will be slower.
of errors and can give better diagnostics.
In my experience, your figure of 10 man-years is high for a h ii b a a a a a a a a m mm m m a a a a ■
some languages and low for others. A figure of two to four ii
man-years is probably more accurate, and that includes a
documentation at both the implementation and user level.
®
Good luck on your implementation.
a TIIMY
....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
® JOHN RIBLE
modifications. Concerning my ideas on space trade-offs; I think
an assembled version would take less space, since each command
®
g INTERMEDIATE LANGUAGE PHILOSOPHY
is treated as a subroutine call in a program made up of routines,
while the interpreter needs a run time system in the background ® Instead of IL being interpreted, my goal has been to describe IL. well
14
January 1 976 Tiny BASIC Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 Page 11
I was very interested in your Tiny BASIC article in PCC. Example: gggj’ TST fai| address in 0400068
Vour ideas seem quite good. I have a few suggestions regarding
0U-\
your IL system. I hope I am not being presumptuous or pre¬
mature with this. Unless I misunderstood you, your IL encoding
0*E$
scheme seems inadequate. For instance, IL JMPs must be capa¬ UTJ
ble of going up and down from the current PC. This means On the TSTL, TSTV, and TSTN IL's, it appears you need
allotting one of the 6 remaining bits of the IL byte as a sign a ML address for the particular subroutine and 2 additional bytes
bit resulting in a maximum PC change of 431 which is not ade¬ for the fail address. At least this is how I am handling it.
quate in some cases, ie. the JMP from just above SI7 back to I am looking forward to future articles in the series.
START. May I suggest the following scheme which is based on Thanks again— keep up the good work!
2 bytes per IL instruction:
P.S. I am co-owner of an Altair. We are writing our Tiny BASIC
IL ML in Baudot to feed our Model 19's.
15
January 1 976 Tiny BASIC Calisthenics & Orthodontia Box 31 0, Menlo Park CA 94025 Page 1 2
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
00090 PS "LIFE WITH TINY B1SIC EXTENDED"
follows. We are now calling it Tiny BASIC Extended after the addi¬ 00100 PR "SIZE"}I
tion of FOR-NXT loops, DIMension statements-arrays, and a few 00105 LET F:0
00110 IN A
other goodies. The LIFE program was written by David Piper, a
00112 PR""$ PR "THE BEGINNING-WAIT'S PR”"
high school student of John's (he teaches at Robert E. Lee High 00115 LET B1AA2
School). David is working on KINGDOM now--we can hardly wait. 00120 DIN G(B,B),H(B,B)
00130 FOR J:l TO B
Below are a few comments about our system and Tiny BASIC that 00140 FOR III TO B
may be of interest to your readers. 00150 LET C(I,J)tO$ LIT H(I,J)10
001 <10 NXT I IRUN
1. Our Altair 8800 is interfaced to a Model 19 Baudot Teletype NXT J
00170
LITE WITH TINY BASIC EXTEN3ED
at John's and via modems and a leased telephone line to a Model 15 00175 LET HlAll SIZE t II
Teletype at my house about 3/4 mile away. At present the system ooirco FOR JI2 TO M THE BEGINNING-WAIT
00190 FOR I 12 TO M
is strictly BAUDOT-no ASCII conversion whatsoever. 00200 IN K T 2
7 2
2. We use a Suding-type cassette interface that has been very 00210 IF K <1 I GO TO 220 t 2
00212 LET I1M 7 2
reliable. 4K bytes load in about 1 minute 20 seconds. 0021*1 GO TO 230 1 2
7 0 707171717171717172
3. The Tiny BASIC Extended takes about 2.9K bytes of 00220 LET GCI,J)!K 7 2
00225 IF K 1 1 LIT FlFil 7 2
memory. 7 2
00230 NXT I
4. The storage format for our Tiny BASIC is as follows: 00240 PR"" 7 2
7 2
2 byte statement label - 1 byte length of text - multibyte text - (cr) 00250 NXT J GENERATIONS 7
00260 PR "GENERATIONS"J!
The statement label range is 1 to 65535. The "length of text 00270 IN D GENERATION 0
byte" is used to speed up label searching in GOTO and other 002:50 PR""
00255 Pi!"" POPULATION IS 7
branching. LIT SlO _
00287
* t ! > t l t
5. To conserve memory, we have shortened some commands to 00290 FOR ElS TO D
two or three letters (i.e., PR for PRINT, IN for INPUT, NXT for 00300 PR "GENERATION";E$PR""
00301 PR""
NEXT, etc.). 00302 IF F ) 0 GO TO 305
6. A "$" is used to write multi-statement lines. A "!" is used to 00303 PR "POPULATION 13 2ER0"SPR""$END
00305 PI! "POPULATION IS"JFSPR""
suppress new line output in a PR statement. This allows continuing GENERATION 1
00310 GO SUB 6000
the next PR on the same line. The provides one skipped space in 00315 LET FlO
a PR statement. 00320 GO SUB 5000 POPULATION IS 15
00330 NXT E
7. Functions currently on line are: 00335 PR "HOW MANY MORE"; !$IN C$PR""
RN -► generates random numbers between 0 and 10,000 decimal. 00336 PR""
00345 IF C 1 0 END
TB (exp) >TAB function in PR statement produces a number LET SlESLET DIDAC 8 s # # fi
00350
8 8 8 8 8
of skipped spaces equal to the value of "exp," an arithmetic 00355 GO TO 290 # 8 8 i 8
expression. 05000 FOR I 12 TO M
05010 FOR J12 TO M
8. Memory for arrays is allotted from the top of memory down 05020 LET N10
while the program builds from the bottom up. If they cross, you get 05030 LF.T NlG(I-l,J-mC(I.J-l>iG(Ul.J- lHC(I-l,JKC(Iil,J)
error message. Arrays may be 1 or 2 dimension. Max. size: 255 by 05040 LETN:NiCa-l,JAl > AG Cl ,JU >A GCIil, Jil) V
05110 IF ) C 1 GO TO 5130
255.
05120 IF N > 1 GO TO 5150 •ENERATION 2
9. Here are some BAUDOT equivalances: 05130 LET H(I,J)!0
: = (equal to) 05140 GO TO 5210 POPULATION IS 12
05150 IF N (S 3 GO TO 5200
): > = (greater than equal to) 05160 LET K(I ,J> 10
(: < = (less than equal to) 05170 GO TO 5210
05180 IF N >< 3 GO TO 5210 # 8 8
)( <> (not equal to) 8 /
05200 LET H(I.J)li
& + (plus) LET FlFil 8 8
05205 # *»
4 * (times) 05210 NXT J 8 8 8
05220 NXT I
Parentheses are also used in arithmetic expressions. The system 05230 FOR Ill TO B GENERATION 3
understands the difference by context. 05240 FOR JllTO B
05250 LET G(I,J):H(I,J)
10. FOR 1=1,1000 POPULATION IS 22
05260 LET H(I,J)10
NXT I 05270 NXT 0
END takesabout 1.6 seconds to execute. 05230 NXT I
05290 RET #
11. The colon is used as a Tiny BASIC prompt. 06000 FOR J12 TO M 9 8 8
8 9 8 8 8
12. "?" is used as a rubout key and two LTR's keystrokes are 06010 LET R 10 9 9 8 9
06020 FOR Oil TO M 8 9 8 9 8
used to begin a line over (LTR and FGS are keystrokes used to 05030 IF G CQ j J ) l 1 LET R 11 9 9 9
#
change case in Model 15/19 Teletypes) 06040 NXT 0
06050 IF RIO GO TO 6120
13. Model 15/19 Teletypes are great machines and we have FOR I 12 TO M KOU MANY MORE ? 1
05060
proved their worth to computer hobbyists! 06070 IF GCI3 J) 1 1 GO TO 6100 GENERATION k
06080 PR " ■;!
Thanks again for your fine work at PCC, we remain 06090 GO TO 6110
POPULATION IS 16
Yours Truly, 05100 PR "X/";I
06110 NXT I
06120 PR ""
DICK WHIPPLE JOHN ARNOLD 8 9 8
06130 NXT J 8 8
305 Clemson Dr. Rt 4, Box 52A 06140 PR""$PR"" 9 8
06150 RET 8 8
Tyler TX 75701 Tyler TX 75701 1 # 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
& John Arnold (Route 4, Box 52-A, Tyler TX 75701) Example: 10 LST V = 10
20 DIM A(10,10),B(2+ V)
INTRODUCTION
The version of TINY BASIC (TB) presented here is based on Array variables can bo used in the came manner as ordinary
the design noted published in September 1975 PCC (Vol. 4, No. 2). variables.
The differences where they exist are noted below. In this issue we 7. £QR and 2DCT Statements: Step equal to 1 only. Iterative
shall endeavor to present sufficient information to bring the system limits can be expressions. Nesting permitted. Caro must
be exercised when exiting a loop prior to completion of
up on an Itel 8080-based computer such as the Altair 8800. Included indexing. See Example.
is an octal listing of our ASCII version of TINY BASIC EXTENDED
Example: 10 LET X = 10
(TBX). In subsequent issues, structural details will be presented 20 FOR I n 1 to X
along with a source listing. A Suding-type cassette is now available 30 LET Y = 2 * A + 3
from the authors (information to follow). We would greatly 40 IT Y=Z I = X&NXT I$GOT0 60 *
50 NXT I
appreciate comments and suggestions from readers. Unlike some 60 LET Y = 3
software people out there, we hope you will fiddle with TINY
BASIC EXTENDED and make it less Tiny'.
* Tor explanation of "$n see no. 9.
8. Available Functions:
a) RN: Random number generator. Range 0iRNil0,OO0.
No argument permitted.
ABBREVIATED COMMAND SET b) TB(E) : Tab function. In a PR statement, TB(K) prints
a number of SPACE1s equal to tho value of expression "E",
TB AND TBX STANDARD BASIC 9- The dollar sign can be used to write multiple statement lines.
Example: 10 IN B
LET 20 LET A=2#(B+1)$PRA&END
PRINT
When, using an IF statement, a “false" condition transfers
GOTO execution to the next numbered. lino. Thus in lino 40 of
the example of no. 7, the chained statements will not be
GOSUB
executed unless a "true" condition is encountered.
RETURN
10. L£2? Command: Can tako aryone of three forms:
IE
INPUT a) LST CR— lists all statements in program
b) LST a Qil— lists only statement labelled a
LIST’ c) IoT a,b C&— lists all statements between labels a and b
RUN inclusive.
NEW 11. iSZS Command: Prints two decimal numbers equal to:
SIZE
a) Number of memory byte3 used by current program.
DIMENSION b) Number of memory byte3 remaining.
FOR
Note: Array storage included only after first execution
NEXT of program.
b) Control L (£orra Feed ASCII 014g) to delete full lino. Memory Allocation:
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 III. TEX Programs 034000 to upper limit of memory.
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. * 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
EXECUTING TBX:
External Program Requirements:
Simply examine 000000 and place the computer in the RUN
1. System Entry Routine mode. A colon indicates the system is operative.
ADRS nisi
ERROR MESSAGES
000000 0611 The form of error messages is: ERR a 3 where a is error num
000001 377 ] LXI SP
her, and 3 is statement number where error was detected. Label
000-002 000 J
000003 303") 00000 indicates error occurred in direct execution.
000004 2541 JMP TEX Entry Point
000005 021 ) ERROR NUMBER
The stack pointer (SP) must not be in protected memory. 1 Input line too long-exceeds 72 characters.
If you desire to relocate the SP change the following 2 Numeric overflow on input.
locations accordingly:
3 illegal character detected during execution.
a) OOOOOl (SP low) and 000002 (SP high) 4 No ending quotation mark in PR literal.
b) 026301 (SP low) and 026302 (SP high)
5 Arithmetic expression too complex.
System Recovery Routine — 6 Illegal arithmetic expression.
7 Label does not exist.
ADRS INST
8 Division by zero not permitted.
0000 TO 303 9 Subroutine nesting too deep.
000071 000
000072 000 10 RET executed with no prior GOSUB
11 Illegal variable.
3. Input Subroutine: Your input subroutine must begin at 12 unrecognizable statement or command.
000030, It should carry out the following functions:
13 Error in use of parentheses.
a) Move an ASCII character from the input device to 14 Memory depletion.
register A, The ASCII character should bo right
justified in A with Parity bit equal to zoro.
Example: nB" keystroke should set A to 102^, EXAMPLE PROGRAM OF TBX
One example program written in TBX follows. It might assist
b) Test for ESC keystroke (ASCII 177g) and jump if
true to 000000, Suggested instructions you in debugging. A TBX line is structured as follows:
CPI ‘ESC*
n+1
Byte No.
c) Output an echo check of the inputed character. 1 & 2 Binary value of label; most significant part in 1.
3 Length of text plus 2 in octal.
d) No registers should be modified except A.
4 thru n Text of line.
n+1 CR (0158).
4. Output Subroutine: Your output subroutine should begin at
000030, It should move the ASCII character in register A After the last line you should find two 377s. At the end of the
to the output device. Parity bit is zero. No registers
including A should be modified. example run is an octal dump of the program area of memory.
EXAMPLE PROGRAM IN TBX
5. CR-U' Subroutine: At 000020 you must have a subroutine
that will output a CR followed by a If. Only register
!NEW
A may be modified.
!10 IN A
:20 PR* TEST A IS *;A
!30 PR
I AO GOTO 10
LOADING TBX: :LST
The octal listing of TBX is reproduced later in the text. 00010 IN A
Addressing is split octal and gives the address of the first byte of 00020 PR" TEST A IS ";A
00030 PR
each line. An octal loader of some kind is almost a necessity. Load¬ qqoaq GOTO 10
ing by front panel switches would be a considerable chore. A :lst 20
Suding-type cassette is available for $5, postpaid, from the authors.
00020 PR* TEST A IS "jA
Send check or money order to: TBX Tape c/o John Arnold, Route 4, :LST 20,30
Box 52-A, Tyler TX 75701. If you are interested in a Baudot version
00020 PR" TEST A IS *;A
of TBX, please inquire at the same address. 00030 PR
Use of a cassette tape to store TBX is virtually a necessity. tRUN
Every effort has been made to protect TBX against self-destruction T 12 TEST A IS 12
byt nothing is 100% sure!
? 336 TEST A IS 356
The highest address available in your system for program
storage must be loaded as follows:
026115 XXX8 low part IDPO:034000 007
034000 000 012 007 040 ill 116 040 101
026116 XXXg high part 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
Example: Suppose you have one 4K board: 026115 377 034040 000 036 00 5 040 120 122 015 000
034050 050 012 040 107 117 124 117 040
026116 037 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
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 171 037 117 322
021330 023 376 040 312 3/7 021 033 325 024330 333 024 03 1 174 037 147 1 75 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 140 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 3i1 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 311 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 i6 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 15i
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 7033 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 l151 046 024 116 043 032240 232 245 254 032 232 322 304 322
027250 146 151 1 1604 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 i014 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 3G73 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
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.
The design required efficient handling of the 12-digit outputs. ADJUST R1 Z 37 FOR
Since it was necessary to utilize the digit outputs for both SOMA CRAIN IF USING
data entry and digit segment output, the design was centered OThFR TnAN »1?, -JXV
on a controlled accessing of the asyncronously scanning 12 Supply voltages
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 OUTPUT CODES FOR SEGMENT DECODE
combining this input with throe more bits from the computer,
the desired "keyboard" input is sent to the 2529. The computer DIGIT DIGIT AND
INPUT CODES FOR FUNCTION ENTRY
word should be held for at least 40 m3 to be certain that the ALONE OCTAL HEX DECIMAL PT OCTAL HEX
asyncronously scanning digit has been accessed. P(ji FUNCTION OCTAL HEX
OCTAL HEX 0 260 0. 220 90
B0
Likewise, the digit output must identify the digit to which the 1 275 BD 1. 235 9D
021 11 ARC 033 IB 2
current segment outputs apply. By using the same coding scheme 250 A8 2. 210 88
022 12 SIN 061 31 254
for the four inputs to the 74150, a computer controlled sampling 3 AC 3. 214 8C
023 13 COS 062 32 4
system is established. The MSB output from the computer informs 245 A5 4. 205 85
024 14 TAN 063 33
the calculator interface that a digit/segment output is desired. 5 246 A6 5. 206 86
025 15 LN 064 34
When the desired digit finally ripples by, a strobed MSB+ pulse 6 243 A3 6. 203 83
026 16 LOG 065 35 7 274
appears on the interface output. This pulse then interrupts BC 7. 234 9C
027 17 RCL 067 37
the computer to inform it that the segment data for the desired 8 240 A0 8. 200 80
030 18 Z 070 38
digit is present and valid as long as the MSB stays +. 9 244 A4 9. 204 84
031 19 x*-y 071 39 - 257 AF 217 8F
032 1A DGR 072 3A
Several considerations: First, only 5 of the 7 segments are ERROR* 262 B2 ERROR.* 222 92
041 21 STO 073 3B
needed to decode 0 through 9, minus, blank, and the error or or or or
042 22 CA/CE 074 3C
signs. Each digit may also have a decimal point attached to 242 A2 202 82
043 23 CHS 053 2B
it, so the output becomes 6 bits, plus the MSB strobe bit. Be Blank 277 BF Blank. 237 9F
044 24 EEX 054 2C
aware that these calculator chips are quite slow. When entering a 045 25 yx 046 26
047 27 { 050 28
data item or especially a function, the display will go blank up 052 2A } 051 29
*(leftmost digit only)
to 1 /3 second while internal processing takes place. The result r 066 36 10* 103 43 * INPUT CODES SENT TO ENTER DIGITS AND FUNCTIONS.
l/x 101 41 ex 104 44
can take on any number of digits, but digit 9 is always used. By 102 42 n: 105 45
CODE MUST BE HELD MORE THAN 40MS.
sampling for "digit 9 not blank," the end of internal processing NO Op 000 00 Restore- 034 1C * SEND DIGIT 9 DATA REQUEST (211 OR 89) AND WAIT
Display
can be detected. When this occurs, either further entries, or sam¬ FOR MSB FROM 7602 TO GO +. THIS INDICATES
INTERNAL CALCULATIONS FINISHED.
pling of all 1 2 digits may proceed without data loss. 8008 pro¬ INPUT CODES FOR DIGIT DATA REQUEST
grams have been written to handle simple keyboard entry and tv c HEX
SEND DIGITS 12 THROUGH 1 DATA REQUESTS, DECODE
OCTAL DIGIT OCTAL HEX EACH KITH SEGMENT DECODE DATA TABLE AS DATA
result display, and interactive calculation operations involving AVAILABLE MSB LINE FROM 7402 GOES + FOR EACH
201 81 7 207 87
messages anf formula building and reiteration. These are avail¬ DIGIT.
202 82 8 210 88
able through the Digital Group. 203 83 9 211 89 x LONGEST CALCULATION DELAY APPEARS TO BE 69!
204 84 10 212 8A (ABOUT 1/3 SEC).
205 85 11 213 8B
The 2529 is available from Mos Technology at $27.50 apiece. 206 86 12 214 8C x RPN (2529-106) AND METRIC-CONVERSION (2529-104)
Some newer scientific calculator chips have been announced by CALCULATOR IC’S FROM MOS TECHNOLOGY WILL WORK
WITH THE SAME CIRCUIT.
Mos Technology and are being presently sampled.
Other calculator chips could be used in similar circuits. However, DR - ROBERT SUDING WOLMD
22
January 1 976 Tiny BASIC Calisthenics <& Orthodontia Box 310, Menlo Park CA 94025 Page 19
Dear Dragons,
Thanks for the great publication and other nice things--like TB CODE SHEET
dragon shirts!. What a way to learn.
I have a problem. Without considering any possible consequences, by Dick Whipple
I have committed myself to writing a SNOBOL Compiler (inter¬
preter?) for an Altair 8800. My officemate has built the Altair for You may be interested in knowing that John Arnold and /
the college at which he teaches, and after many months of promis¬ write our programs (like TB) in machine language. We have found it
ing some kind of assistance, I finally offered to write a compiler. to be less restrictive and more versatile although not having a source
To get to the point: does anyone out there have any experience in file of some kind is a disadvantage. We do keep a hand-generated
compiler writing, particularly in SNOBOL compiler writing? I know source listing on coding sheets for our reference. A major program
that some of the sharpest people in this field read PCC, so I'm really like TB requires a two-pass development: the first pass ends up with
hoping to hear from someone. lots of "fixes" and "patches" to get the program to work; the second
Of course, once I get the compiler working, I will make it avail¬ pass is then used to dean-up the mess produced in pass one. The
able to other Altair owners and users (for a nominal fee and a lot of coding sheets from pass two represent the nearest thing to source
glory). code we have. For your reference / have included a copy of one of
(I realize all you people are heavily into BASIC, but SNOBOL is a our coding sheets from TB. The addresses are split octal.
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, pr«*■»*, r : Toy.MVC (fal) ££
donations of Altairs will be accepted.
Zylfttw Ooie Ji/io/jr H - 020
MAUREEN SUPPLE BUFF ID:
/ at 000'0‘fD') 0<JD <?>-rCN0l
828 S. Irving St V , I (
Dljl II WxX H OUFSTFT B)\07l J
Arlington VA 22204
OZ\020 ) 3121
OliOOll i/3 yoi r Jr; ruBout
(SNOBOL compilers are tough. An interpreter would be easier. A 8 : In/wDTH
os\ouo f L*I etna W]o20 j
good place to start looking for information would be Griswold's book.
DFi/IClJ
The Macro Implementation of SNOBOL, W.H. Freeman, San Fran¬
Con/TW: DPS \337 RST ,rJ
cisco, 1973; and Waite's book. Implementing Software for Non-
Numeric Applications, Prentice Hall, Englewood Cliffs, New Jersey, ccrvra: oCD 776?
err <ros> 3031
_ 10 033 I 00G S 7cor CC-niTU
1971.)
11 312
JF2 FC-S
FULL OF HOLES 12 OS 2 try vl C C‘/Cs
13 020
I guess you know. Tiny BASIC as presented in its first chapter is IS 376? Crr Yltrty
j>rr cervtq
IF ’037)
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. /(>' 3/2?
Also, I wonder if the interpreted interpreting interpreter interpreter //. 'OSTfJPl tTr? ITR: navi c (Zj
020 )
executor is viable for a really small, slow system like an 8008 system.
Pi] OOF DO? 8 RTT irJ
Talk about crunching! Anyway, I want to see more. I'm crazy,
3121 cft <3rn y
maybe? Who cares.
Sincerely, £3 30 C > J,J? FFR30C,
ZS 02 C)
«• JW? con/rj
FRITZ ROTH err <ck>
Rt 7 ziSpio.
z7)3121 t?sr cflf
Carbondale IL 62901
30 j /07 ) jr? end G-ETume-.o
I I <r0 r>
A HIGH ORDER 3110201 VI \033 J
3Z\37G1 r?sT e>uT
CPI <!'/’>
Dear Bob Albrecht, I am writing this letter about many things T ve 3S'\oov J 72 [oiC ?
mvr /) Y ■ y
read about in PCC. The Tiny BASIC project looks like something 3>'j3> 27 7Vj'016 J
0YF)7Fi SP 7TJ35-? /?rr our
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. M f020 J 7{3)303
Otherwise, it's a good idea. I'm interested in simulating languages 311201 fiOR c V\ooo jrnp BUFF/nJ
23
dr dobb's journal of $1.50
COMPUTER
C 60 alisthenics rthodontia
*
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
25
Page 4 February 1976 Dr Dobb's Journal of Computer Calisthenics & Orthodontia Box 310, Menlo Park CA 94025
The purpose of this paper is to evaluate the Dijkstra has pointed out that the process of dividing
BASIC language as a problem solving tool. BASIC a problem into its natural fragments results in the
is not the language of choice for problem solving introduction of levels of abstraction. At each level
given our present understanding of the programming of abstraction primative functions are defined which
process. That is not to say that programs, even manipulate primative data aggregates; the operations
good programs, cannot be written in BASIC. There and the data structures mirror an abstract model of
is overwhelming evidence which indicates they can the problem being solved. At lower levels of abstraction
be. Rather, it says that the language structure these primative operations and data structures are
makes it difficult to write a clear, concise, well themselves decomposed into still more primative units.
structured program. For example, a sort-merge program may deal on one
level with manipulations of files, and on another
The emerging discipline of software engineering has level with records and keys.
provided us with a pair of complementary methodol¬
ogies which, when properly applied, help minimize BASIC provides few mechanisms for modularity. There
the difficulty of developing error-free software is a one-line arithmetic function capability and an
systems both large and small. unparametered subroutine (GOSUB/RETURN) facility.
The first has limited usefulness; it provides a
One might say that BASIC is too simple, too easy convenient shorthand for computation, nothing more.
to use. It is possible for a novice user to learn The subroutine facility is very primative. It
to program in a single day. It is also almost requires the user to develop conventions for passing
axiomatic that large programs written by BASIC parameters and for the naming of local data. All
programmers will be ridden with bugs. The language variables are global in BASIC and are shared between
lacks the mechanisms to structure the problem's all modules of the program. Subroutines are not
algorithm and data well. It breeds bad habits, distinct from the corpus of the main program (and
habits which are difficult to unlearn. other subroutines); transfers into and out of
subroutines is unrestricted and often unmanageable.
1. MAKING A PROGRAM Subroutine reference is by line number rather than
a mnemonic name, a convention which tends to obscure
The program development cycle can be summarized as the functional purpose of the subroutine.
repetative application of the following:
3. STRUCTURED PROGRAMMING
o Problem definition
o Algorithm development Structured programming is a technique which limits
o Program entry (error prone, mechanical) the control structures which interconnect the modules
o Testing to discover errors of a program to a few well-defined forms. Modules
o Debugging (localizing errors) include procedures and collections of statements,
o editing (mcchanicul) oithor of which may be nested. The flow of control
utilizes conditional and plex selection to select
Contemporary timesharing systems support the paths and provide for repetition unconditionally,
mechanical portion of program development and under control of a boolean expression, or under
neglect the conceptual and definitional part. control of an indexing variable. Recent systems
BASIC systems provide for program entry, syntax provide escape statements which allow control to
checking, editing, and the like, but don't really exit several nested modules. All systems forbid the
provide much help when it comes to deciding how use of unconditional branching.
to solve the problem at hand. The program is
expected to blossom forth in full bloom from the The rationale behind structured programmin is the
gestalt mind of the user. A corollary to the minimization of the connectivity within a program.
above observation: BASIC programs written at the 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 Levenworth, B. M., Programming With(out) the GOTO,
sufficiently clear that a flowchart is not necessary Proc. ACM Nat. Conf. (1972), pages 782-786.
to tour all paths in the program. In addition,
the conditions under which any given path is to Liskov, B. H., A Design Methodology for Reliable
be executed are clearly spelled out. Software Systems, Proc. FJCC (1972), pages 191-199.
BASIC is the antithesis of a language for writing Mills, H. D., Mathematical Foundations for Structured
structured programs. The GOTO and the IF...THEN Programming, IBM FSD Report FSC72-6012,
both result in unstructured transfers of control. Gaithersburg Maryland (February 1972).
No means is provided for collecting statements
into a group to be executed as a module. And Naur, P. and B. Randell (eds.). Software Engineering,
instead of eliminating labels, BASIC requires all Report on a Conference Sponsored by the NATO
statements to have one. Science Committee, Garmisch Germany (1968).
True structured programming is difficult in BASIC. Wirth, N., Program Development by Stepwise Refinement,
It requires unmitigated attention and discipline CACM 14 (April 1971).
to maintain a structured programming style. And
the clarity which ono normally acquires is lost Wulf, W. A., A Case Against the GOTO, Proc. ACM Nat.
because module boundaries are not distinct. Conf. (1972), pages 791-797.
4. SUMMARY
27
Page 6 February 1976 Dr Dobb's Journal of Computer Calisthenics & Orthodontia Box 310, Menlo Park CA 94025
MUSIC OF A SORT Data For THE FOOL ON THE HILL Data for “DAISY”
Beatles
Steve Dompier, 2136 Essex St, Berkeley CA 94705; Address Data Address Data Address Data Address Data
415-841-1868
[Reprinted from May 1975 PCC, Vol. 3, No. 5.] 040 105 120 055 no 250 040
034
041 105 121 053 171 034 251 042
IT WORKS! 042 125 122 071 172 034 252 046
I received my ALT AIR 8800 in the mail at 10 a.m., and 043 100 123 066 173 042 253 034
044 071 124 100 174 042 254 034
30 hours later it was up and running with only one bug in the
045 063 125 071 175 042 255 042
memory! That turned out to be a scratch in a printed circuit 046 063 126 256 046
071 176 053
that took 6 more hours to find. After that was fixed, everything 047 063 127 100 177 053 257 053
worked!!
Now, what do you do with a machine that so far has no 050 071 130 071 200 053 260 053
051 063 131 066 201 071 261 053
I/O boards or peripherals? Well, there’s always the front panel
052 055 132 066 202 071 262 053
switches and machine language, so I was soon busy making up 263 046
053 053 133 071 203 071
programs to test all of the 8080’s functions; and getting a good 054 053 134 100 204 063 264 042
set of calluses on my ten input devices. There’s a lot of 8080 055 055 135 100 205 055 265 042
instructions! 056 071 136 100 206 053 266 053
057 063 137 071 207 063 267 063
ZZZIIIPPP
060 046 140 066 210 063 270 063
I had just finished setting in a ‘sort’ program, and at the 271 053
061 046 141 060 211 053
same time I was listening to a weather broadcast on a little 062 046 142 060 212 071 272 063
transistor, low-frequency radio, which was sitting next to the 063 071 143 066 213 071 273 071
Altair. I hit the ‘run’ switch on the computer and it took off 064 063 144 071 214 071 274 071
sorting the same list of numbers over and over again. 065 046 145 066 215 071 275 071
066 046 146 066 216 071 276 071
At the same time my radio also took off! 277 071
067 053 147 060 217 071
The computer was sorting numbers and the radio was going
ZZZIIIPP! ZZZIIIPP! ZZZIIIPP! 070 042 150 053 220 046 300 053
071 046 151 046 221 046 301 053
Well, what do ya know! My first peripheral device!!!
072 046 152 046 222 046 302 042
The radio was picking up the switching noise of the 8800. 073 063 153 046 223 034 303 046
I tried some other programs to see what they sounded like, and 074 071 154 046 224 034 304 046
075 063 155 044 225 034 305 071
after about 8 hours of messing around I had myself a program
076 053 156 046 226 042 306 053
that could produce musical tones and actually make music; of a 077 053 157 053 227 042 307 053
sort. (Or any other program you have!)
100 063 160 053 230 042 310 042
MUSIC 101 053 161 053 231 053 311 046
The closest sheet of music that I could find was The Fool 102 071 162 053 232 053 312 042
103 063 163 053 233 053 313 040
on the Hill by the Beatles, so I translated it into OCTAL code,
104 063 164 002 234 063 314 034
picked up the Altair, and headed down to Menlo Park for the 105 071 165 002 235 055 315 042
3rd meeting of the Bay Area Amateur Computer Users Group- 106 063 166 002 236 053 316 053
Home Brew Computer Club. I thought everyone there should 107 046 167 377 237 046 317 046
see just what a computer can do!
110 046 240 046 320 046
111 046 241 042 321 071
RECITAL
112 053 242 046 322 053
This being the Altair’s first recital, it was a bit shy at first, 113 042 243 323 053
(046
and refused to power up--even though Fred’s tape recorder was 114 053 244 046 324 053
plugged into the same wall outlet and working just fine. One 115 046 245 046 325 053
forty-foot extension cord and half an hour later we were ready. 116 046 246 046 326 002
(Fred’s tape machine turned out to be running on its own 117 053 247 042 327 377
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.)
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
A 146
A# 140 011 MVI D 026
B 132 012 b2 XXX
- TEMPO DATA
013 DCR 8 005
C 125 014 JNZ 302
C# 120 MIDDLE OCTAVE 015 b2 020
D 114 016 b3 000
TO RUN THE PROGRAM:
D# 110 017 MOV B,M 106
E 105 To run the program, push the 'RESET' switch,
F 100 020 DCR C 015 then push the 'RUN' switch.
F# 075 021 JNZ 302 To stop the program, push the 'STOP' switch.
G 071 022 b2 013
G# 066 023 b3 000
A 063 024 DCR D 025
TO MAKE YOUR OWN MUSIC:
A# 060 025 JNZ 302
013 Begin loading your music data anyplace after
B 055 026 b2
address 034. Be sure to load the starting address
027 b3 000
into H&L at address 002, 003.
C 053 030 INR L 054
HIGH OCTAVE Q31 Each data entry will be one beat of music.
C# 050 JMP 303
D 046 032 b2 003
D# 044 033 b3 000
E 042
F 040
F# 036
G 034 NOTES
G# 033 f Tempo-- The tempo is controlled by the value placed in
A 031 address 012. Start out by trying 040.
A# 03C f To Play Backwards- Put 377 in front of all music data
B 026
(to cause looping). Change address 001 to read the END of the
C music data. Change address 030 to DCR L (055).
025
f To Play all of the Memory- Change address 001 data to
Q 002 Note; This is the quietest of the data notes. a NOP (000). Change address 004, 005, 006 to NOP (000). This
It can be used for spaces and rests. will cause program to read all of the memory, including the pro¬
You may also like to put a number of gram instructions themselves.
these quiet 'notes' at the end of the t Radio Information- A low-frequency radio around 330
music data, to give a space between KC works best, but any AM radio will pick up the music at
playings. 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
With a little experimentation, you can make all kinds of will pick up different sounds from the computer. Also, try mov¬
interesting sounds, ie; sirens, ray-guns, etc. 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
30
February 1976 Dr Dobb's Journal of Computer Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 Page
31
Page 10 February 1976 Dr Dobb’s Journal of Computer Calisthenics & Orthodontia Box 310, Menlo Park CA 94025
The IF combined with the THEN state¬ The RETURN statement is used to in¬
ment allows the programmer to have the pro¬ dicate the end of a subroutine. When a
gram make decisions. SCELBAL will allow RETURN statement is encountered the
more than one condition to be expressed in program will return to the next statement
the statement. Thus: immediately following the GOSUB state-
32
February 1976 Dr Dobb's Journal of Computer Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 Page 11
merit which directed the program to the colon at the end of the statement! A comma
subroutine. sign in a PRINT statement will direct the out¬
put to start at the next TAB point in a line.
SCELBAL permits multiple nesting of A special function may also be called upon
subroutines in a program. to direct the output to begin at a specified
position in a line to allow for neat formatting.
DIM for DIMension is used to specify
the formation of a one dimensional array The power of the language is further
in a program. Up to four such arrays having enhanced by the inclusion of seven functions
a total of up to 64 entries are permitted in that may be used in statements. The seven
a program when running SCELBAL. The functions available in SCELBAL are discussed
statement: below.
PRINT is used to output information SQR returns the SQuare Root of the ex¬
from the program. Using the PRINT state¬ pression, variable, or number.
ment the user may direct the program to
display the value of variables, expressions, RND produces a semi-psuedo-RaNDom
or any information such as messages. The number in the range of 0 to 0.99. This func¬
PRINT statement allows for multiple mixed tion is particularly useful to have available
output on a single line, and the option of for games programs.
providing a carriage-return and line-feed after
outputting information or suppressing that CHR is the CHaRacter function. It may be
function. For instance, the statement: used in a PRINT statement and will cause the
ASCII character corresponding to the decimal
PRINT ‘X IS EQUAL TO: ’;X value of the argument to be displayed. (A
reverse function is available for the INPUT
would result in the program first printing statement which will return the decimal
the message “X IS EQUAL TO:” and then value of a character when it is inputted.)
the value of the variable X on the same line.
After the value of tbje variable had been TAB may also be used in a PRINT state¬
displayed, a carriage-return and line-feed ment to direct the display device to space
combination would be issued. To suppress over to the column number specified in the
the issueing of the CR & LF the program¬ argument. This function allows the program¬
mer would merely include another semi¬ mer to format the output into neat columns.
33
Page 12 February 1976 Dr Dobb's Journal of Computer Calisthenics & Orthodontia Box 310, Menlo Park CA 94025
34
February 197 6 Dr Dobb's Journal of Computer Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 Page 13
TINY BASIC, EXTENDED (Part Two) 031240 133 310 232 330 275 132 343 231
031250 256 254 331 200 031 245 324 147
Dick Whipple, 305 Clemson Dr., Tyler TX 75701 031260 231 265 273 031 240 322 304 322
John Arnold, Route 4, Box 52-A, Tyler TX 75701 031270 375
033326 231 233
In the preceeding article on TINY BASIC, EXTENDED
(TBX), notes concerning the loading and use of TBX were pre¬ RELOCATED VERSIONS OF TBX
sented, along with an octal listing of the entire interpreter At the requests of readers, we have made two relocations
[Dr Dobb’s Journal of Tiny BASIC Calisthenics & Orthodontia of TBX. As you are no doubt aware, the original TBX began at
Vol. 1, No. 1]. This article presents source code matching that 020000 split octal. The two new versions begin at 000000 and
octal code, documentation of the implementation, some modifi¬ 011000. The octal listing of the 000000 version will appear in
cations and error corrections, notes on the addition of the DTA
a later issue of this Journal. The 011000 version seems to es¬
statement, and an announcement of two relocated versions of
pecially interest people with Suding operating systems (Suding
TBX requested by some of our readers. CRT, etc.). At the present, either version-or both-can be
TBX is not meant to be the last word in Tiny BASIC
obtained from us on Suding cassette. If you have already
interpreters. Almost certainly, its users will find ways to improve
ordered one and received the original version on cassette, we
it. Please keep its creators, and our readers, informed of those
will provide the relocated version free of charge if you will
improvements. return the cassette with your order. The charge for new orders
will be the same as indicated in the preceeding issue: $5, for the
NOTES ON NOTES Suding cassette. Be sure to request the version desired, namely
Before continuing, a few remarks are necessary concern¬
020000, or 011000, or 000000. Send orders to:
ing assumptions and working used in the source listing and the
text that follows it. TBX Tape
1. All addresses will be given in split octal with no sep¬ c/o John Arnold
aration character, i.e., 012504 (true octal); 025104 (split octal). Rt 4, Box 52A
2. Registers will be referred to by letter: A, B, etc. Tyler TX 75701
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 HOW IT DOES WHAT IT DOES
first letter. IL Executor, ILXQT and IL Program (021254-022037, &
3. 77ie source listing is NOT the result of computer 031300-033376):
assembly. It was hand-typed in a format similar to assembly The fundamental IL instruction consists of two bytes. The
language. One caution-labels are unique only within a given two most significant bits of the first byte are used to encode the
routine. Therefore, in the whole of TBX, labels may be dupli¬ type of IL instruction while the remaining bits in the first and
cated. second byte represent an address. The four IL instruction types
4. The terms “label” and “line number” will be used are specified in octal as follows:
interchangeably when referring to BASIC lines.
IL JUMP Oxx Transfers IL Program to IL Instruction at
5. On the source listing, double lines are used to
separate major routines. yyy Oxxyyy.
SUBROUTINE TO LOAD BUFFER BUFIN: A software buffer is used to hold line data from the
BUFIN 020000 041 111 020 LX I 11 BUfSTRT
020003 006 1 10 MV I B 72D SET LINE LENGTH input device. BUFIN is an ML routine used to load and edit
OVER 020005 33 7 RST INPUT the buffer. Character deletion and whole line erasure are pro¬
020006 376 015 CPI 'OB' vided for in this routine. B is used to count characters. If B
0200 10 312 036 020 JZ END
exceeds 72, an error is reported. If entry to BUFIN is made at
020013 3 16 177 CPI •DEL'
020015 312 040 020 JZ RUBOUT GETLINE (020070), a colon is output at the beginning of the
020020 376 014 CPI ’CN1RL L* line. HL is used as cursor in the buffer.
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 LINE TOO LONG
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 MODIFICATION OF INSERT
SUBROUTINE REQUIRED FOR
ASCII VERSION OF TBX
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 * OUTPUT PROMPT
020072 357 RST OUTPUT
020073 303 000 020 JMP BUFIN
020076 000 000
020272 376 CPI ’$£' carry is set and return is made to ILXQT. Otherwise, a zero is
020274 023 INX D placed in CURLBL and return is made with the carry reset.
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
CMND 020311 042 350 033 SHL CURLBL
020314 000 NOP
020315 321 POP D
020316 311 RET
020317 000 NOP
L8L 020320 315 331 020 CALL BIN
020323 042 350 033 SHL CURLBL
020326 067 STC
020327 321 POP D
020330 311 RET
BIN 020331 315 221 020 CALL ASCIN ASCII-BINARY SUBROUTINE BIN: As the text cursor DE scans an ASCII number, BIN con¬
020334 376 012 CPI 10D verts it to binary in HL. The first non-number encountered
020336 320 RNC signals the end of conversion and return is made to the calling
020337 023 IND D
program.
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 NUMBER TOO LARGE
020351 117 MOV C,A
020352 006 000 MVI 0 0D
37
Page 16 February 1976 Dr Dobb's Journal of Computer Calisthenics & Orthodontia Box 310, Menlo Park CA 94025
38
February 1976 Dr Dobb's Journal of Computer Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 Page 17
39
Page 181 February 1976 Dr Dobb's Joui Box 310, Menlo Park CA 94025
>040-022100 IS UNUSED
rear 022101 345 PUSH H INTEGER OUTPUT ROUTINE IOUT: IOUT is used to convert the binary number in HL to
022102 325 PUSH D HAL IS OUTPUTTED IN DECIMAL ASCII for outputting. The routine works by subtracting binary
022103 305 PUSH B PROVISION MADE FOR ZERO
equivalents of decreasing powers of 10 from the binary value in
022104 353 XCHG SUPPRESSION.
022105 016 000 MV I C 0 HL. The number of times each power of 10 can be subtracted
022107 041 020 047 LXI H 10,0O0D without producing a negative result represents the digit for the
022112 315 147 022 CALL CNVRT respective decimal place. If C is zero, leading zeroes are not
022115 041 350 003 LXI H 1,000D outputted. CNVRT is a subroutine of IOUT that actually does
022120 315 147 022 CALL CNVRT
the conversion and outputting of each digit. BCDOUT is a sub¬
022123 041 144 000 LXI H 100D
022126 315 147 022 CALL CNVRT routine that adds 060 to the BCD value of the digit to produce
022131 041 012 000 LXI H 10D the ASCII value. ASCOUT is called so that ZONE will be dec¬
022134 315 147 022 CALL CNVRT remented.
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
CNVRT 022147 006 377 MVI B 377
LOOP 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
000 000 NOP’S BCD TO ASCII CONVERSION
BCDOUT 022201 000
022204 000 NOP
022205 306 060 ADI 060
022207 315 026 022 CALL ASCOUT
022212 311 RET LST: An ML routine used to list BASCI program lines beginning
SUBROUTINE TO LIST BASIC
022213 325 PUSH D
LST PROCRAMS at the location stored in LSTSTRT and ending at the location
LHL LSTEND stored in LSTEND. LBLOUT is used to output the line number
022214 052 306 033
for each line. The text length byte is skipped and the text is
022217 053 DCX H
022220 104 MOV B,H outputted until a CR is detected. The CR produces a new line
022221 115 MOV C,L and so long as the address in LSTEND is not exceeded, listing
022222 052 304 033 LHL LSTSTRT continues.
022225 353 XCHG
022226 033 DCX H
NLINE 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
40
February 1976 Dr Dobb's Journal of Computer Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 Page 19
41
Page 20 February 1976 Dr Dobb's Journal of Computer Calisthenics & Orthodontia Box 310, Menlo Park CA 94025
.—
42
February 1976 Dr Dobb’s Journal of Co Box 310, Menlo Park CA 94025 Page 21
023233 312 022 023 JZ CONT+1 ®CONT® IN NXT SUBROUTINE INNUM: INNUM is an ML routine used to input a number from
023236 303 330 026 JMP ERR? LABEL NOT FOUND the input device, convert it to binary, and place it on the AE
INNUM 023241 325 PUSH D ML SUBROUTINE USED TO INPUT stack. The routine first outputs a question mark and a space.
A NUMBER FROM TTY AND PLACE
BUFIN is then called permitting the number to be inputted to
ON AE STACK.
023242 076 077 MVI A the buffer. When a CR is detected, INNUM examines the buffer
023244 315 026 022 CALL ASCOUT to see if a minus sign is present. If so, the program branches to
023247 076 040 MVI A 'SP' NEG1. Otherwise, BIN is called to convert the number to binary
023251 315 026 022 CALL ASCOUT and HL is pushed onto the AE stack. For a negative number,
023254 000 NOP
023255 315 000 020 CALL BUFIN NEG1 makes the binary conversion, calls TWOCMP, and then
023260 021 111 020 LX I D BUFSTRT pushes HL onto the AE stack.
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 ML SUBROUTINE USED TO TEST TSTV: TSTV is an ML routine that determines whether the
FOR VARIABLE AND PLACE cursor points to a variable. First, TSTV scans over spaces. 300
ADDRESS ON AE STACK. is then added to the first non-space value. A no-carry condition
023325 376 040 CPI 'SP* will result if a shifted character or number is present. Return
023327 023 INX D
will be made to ILXQT and the next IL instruction executed.
023330 312 324 023 JZ TSTV
023333 033 DCX D An ASCII letter (A-Z) will produce a carry and at the same
023334 306 300 ADI 300 time zero the two most significant bits. In this case, the
023336 320 RNC address of the variable is computed by doubling A to form the
023337 007 RLC lower half. The upper half is a constant, 024. With A moved to
023340 157 MOV L,A L and 024 in H, PSHAE is called to place the variable address on
023341 046 024 MVI H 024
the AE stack. The carry is set before return to ILXQT causing
023343 315 044 023 CALL PSHAE
023346 067 STC the next IL to be skipped.
023347 023 INX G
0233 50 311 RET
TSTN 023351 032 LDAX D ML SUBROUTINE USED TO TEST TSTN: This routine tests for the presence of a number in the
FOR A NUMBER AND PLACE IT BASIC text. Spaces are scanned over and the first non-space is
ON TOP OF AE STACK. checked to find if it is a letter variable. If so, return to ILXQT
o
o
DONE* 024100 032 LDAX D ML SUBROUTINE SIMILAR TO DONEX: DONEX is identical to DONE except that detection
DONE BUT NO PROVISION FOR of a dollar sign does not lead to transfer in the NXT routine.
TRANSFER.
Instead, it produces a simple return to ILXQT exactly as a CR
024101 023 INX D
would do.
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 DONE FAIL
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 ML SUBROUTINE USED TO IND: This ML routine pops the AE stack to bring the address
REPLACE TOP OF AE STACK of a variable into HL. The value of the variable is then obtained
BY VARIABLE IT INDEXES. and pushed onto the AE stack.
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 ML SUBROUTINE USED TO STORE: An ML routine that first pops a variable address off
PLACE TOP OF STACK INTO the AE stack and places it in BC. A numeric value is then
VARIABLE INDEXED. 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
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
024205 315 071 023 CALL POPAE
024210 Oil DAD B
024211 315 044 023 CALL PSHAE
024214 24 7 ANA A
024215 311 RET
SUB 024216 315 071 023 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
STAtl\* produce the subtrahend. From that point on, the routine is
024221 315 115 023 CALL TWOCMP
similar to the ADD routine.
024224 104 MOV B,H
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
024237 000 NOP
KUt 024240 325 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
OF AE STACK sign determination while another routine, MULT, actually per-
024241 006 000 MV I B 0 forms the multiplication. Register B is used to logically deter¬
024243 315 071 023 CALL POPAE mine if either or both of the factors are negative. B is originally
024246 174 MOV A,H
ORA A set to zero and then incremented in NINOX once for each nega-
024247 267
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 174 MOV A,M this case two's complement routine is called. All other values of
024260 267 ORA A
B indicate a positive product.
024251 374 301 024 CM NINOX
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
BY DAE ANSWER IN HAL and DE. The product is shifted into BC as multiplication takes
024307 104 MOV B,H place. This routine is a little unconventional and may require
024310 115 MOV C|L
024311 some close study to understand.
041 000 000 LX I H 0
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 Journal of Computer Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 Page 23
45
Page 24 Februarv 1976 Dr Dobb's Journal of Computer Calisthenics & Orthodontia Box 310, Menlo Park CA 94025
46
February 1976 Dr Dobb's Journal of Computer Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 Page 25
PUSH H SUBROUTINE USED TO OUTPUT LBLOUT: This routine is called by LIST to output a label
026205 345
LABEUNO ZERO SUPPRESSION) number of a TBX statement. IOUT is used with C preset to
026206 325 PUSH D 377 octal preventing zero suppression.
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
ERRMAIN: This routine is used to process an error condition.
0262 17 000 NOP
RST CRLF “ERR” is outputted followed by the error number and the
026220 327
026221 000 000 000 NOP'S CURLBL. Entry to ERRMAIN is made through ERR1, ERR2,
026224 076 105 MVI A 'E' etc., where L is set to the error number desired.
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
47
Page 26 February 1976 Dr Dobb's Journal of Computer Calisthenics & Orthodontia Box 310, Menlo Park CA 94025
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
10*4 MOV B,H one-dimensional arrays. At the time these routines are called,
027073
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 221 SUB C array name is used to hold the location of the beginning of
027102 117 MOV C,A
that array.
027103 174 MOV A,H
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
FOR 027305 325 PUSH D ML SUBROUTINE USED TO SET UP FOR: When a FOR statement is executed, this ML routine
Stop 027306 023 INX D FOR LOOP. places the address of the next statement following the FOR
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
027323 311 RET
027324 325 PUSH D ML SUBROUTINE USED TO CHECK NEXT: This ML routine is used to process a NXT instruction.
NEXT
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 043 INX H
exceeded;
027333 106 MOV B,M
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
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
o
o
030033 376 CPI 'SP* recognized by the occurrence of two letters in sequence, i.e..
030035 023 INX D RN for the random number function.
030036 312 032 030 JZ TSTF
030041 033 DCX D
030042 306 300 ADI 300
030044 320 RNC
030045 325 PUSH D
030046 023 INX D
030047 032 LDAX D
o
o
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
031000 052 354 033 LHL PRGEND ML SUBROUTIME USED TO DETER- SIZE: This ML routine computes the amount of memory being
S2?£.
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 Bs H
031042 115 MOV C9L
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 HSA
031066 311 F(ET
031067 352 033 LHL PRGSTRT ML SUBROUTINE USED TO LIST LSTO, LST1, and LST2: These three routines set up LSTSTRT
«Tg 052
ENTIRE BASIC PROGRAM. and LSTEND so that when LIST is called, only the required
031072 042 304 033 SHL LSTSTRT lines will be listed. LSTO is called if the entire program is to be
03 1075 052 354 033 LHL PRGEND
listed. LST1 is called to list only one line. LST2 sets up a listing
031100 042 306 033 SHL LSTEND
031103 247 ANA A between two given lines.
031104 311 RET
LST1 031105 315 165 031 CALL EIND ML SUBROUTINE USED TO LIST
__ ONE LINE.
031110 042 304 033 SHL LSTSTRT
51
Page 30 February 1976 Dr Dobb's Journal of Computer Calisthenics & Orthodontia Box 310, Menlo Park CA 94025
52
Dobb's Journal of Computer Calisthenics Orthodontia Box 310, Menlo Park CA 94025 Page 31
04
fO
~*4
032321 116 105
032324 322 304 DONE 033165 325 337 LIT3
033167 322 300 RTN
032326 032 000 JMP STRT
R6 033171 325 342 LIT4
SI 7 032330 326 347 ERR 12 033173 322 300 RTN
S5A 032332 232 154 TST S5A •$' 033175 000 000 000 NOP'S
032334' 244 SU 033200 232 275 TST SIS ’DIM*
032335 323 034 NXTX 033202 104 111 315
032337 000 NOP as 033205 323 324 TSTV
EXPR1 032340 232 343 TST EXPR ’+* 033207 326 352 ERR 13
032342 275 033211 233 077 TST F3 *<*
EXPR 032343 232 354 TST Et> 033213 250
032345 255 033214 132 343 CALL EXPR
032346 133 003 CALL TERM 033216 233 241 TS1 Z1 V
032350 325 133 NEC 033220 254
032352 032 361 JMP El 033221 132 343 CALL EXPR
077
V 032354
032356
232
253
357 TST E3 * * 033223
033225
2 33
251
TST F3 . *>*
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 *ITS FaA $/OoQ (F m/cy jc^ec T*&y CP IV/ ft4AAH€T at (.-AST 56$
54
February 1976 Dr Dobb's Journal of Computer Calisthenics & Orthodontia Box 310, Menlo Park CA 94025 Page 33
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,
A BIT OF BLUE SKYING monitors, and cross assemblers. We are currently
experimenting with minimal editors and assemblers
Bob, February 19, 1976 and have a strong desire to put together a micro-
By all means keep up the Calisthenics & BASIC (Tiny BASIC). The editor package looks like
Orthodontia. But I suspect that as Tiny BASIC it will be around 510-512 bytes and the same for a
matures it will acquire a full set of canines, bicuspids, “mini-assembler.” We are also looking for 4K, 8K,
and molars. As the price of main memory continues and 12K BASICS which are public.
to drop, the need for a minimal BASIC will assume We are hoping to eventually acquire a TV
less importance and the emphasis will shift to better Dazzler and a floppy disc to extend our system.
performance and convenience. Still, IL is a good tool Future desires also include the IMS shared processor/
for those who may want to experiment with variants memory and an additional CPU board in addition to
of BASIC or some other language. As unlikely as it 12K-16K more low power status RAM memory.
may seem, I think that by 1980 most hobbyists will Who knows what else the future has in store?
be using a subset of PL/1. I also preduct that the We are strongly interested in developing soft¬
1980 hobbyist will own a computer system the size ware (for the Altair and other micro-processors)
of a breadbox and comprising a 16-bit CPU, 25 6K which can be used for instruction and instructional
bytes of main memory, 8M byte floppy disc, dual support in the school media center.
tape cassettes, full ASCII keyboard, CRT display, Our research interests vary considerably here
modem, and non-impact printer (all in one box). The so we also will be running some basic human learn¬
whole thing will sell (assembled) for $695 at Sears ing experiments under processor control. We have
and will have the computing power of an IBM 370.
been involved in research in CAI and computer-
Last, but not least, the CPU chip will be designed
managed instruction for about 9 years here. We have
expressly for the hobbyist, not for some pedestrian
PLANIT, COURSEWRITER, PICLS, PLATO
application such as traffic signal control.
(TUTOR), and BASIC available and a wide range of
instructional programs for these languages.
Jim Day 17042 Gunther St
Granada Hills CA 91344
Franz Frederick 112 Education Big
Associate Professor Purdue University
W. Lafayette IN 47907
55
Page 34 February 1976 Dr Dobb's Journal of Computer Calisthenics & Orthodontia Box 310, Menlo Park CA 94025
034 346 177 22 slot mother board, 8k Ram, regular price, $1835.00. Will sell to
ANI Mask parity bit
highest bidder above $1700.00. Also, IMSAI 8080 kit, still in box,
036 376 033 CPI “ESC” large mother board, regular price $578.00. Will sell to highest bidder
040 312 000 000JZ System entry above $547.00. Send bids to: Eric Stewart, 664 Via Alamo, San
043 357 RST Echo character Lorenzo CA 94580.
044 311 RET
56
dr dobb's journal of $1.50
COMPUTER
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 Proposed Functions for Tiny BASIC
Notes to Tiny BASIC Implemented Tiny BASIC Suggestions & Mark-8 Needs
Parser Saves Pain & Another BASIC Bombout 6800 Tiny BASIC for $5
APL’s Appeal Signetics 2650 Tiny BASIC
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
Quik Bits
Seattle Computer Hobbyists Unite Diablo Printers
New Jersey Computer Festival Microcomputer APL
Southern California Computer Society 8080 Systems for the Wealthy
16K BASIC for the 8008 (public domain) 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.
March, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 3
58
€uik bits
SEATTLE COMPUTER HOBBYISTS UNITE DIABLO PRINTERS FOR OEMers
The Northwest Computer Club held its first meeting on For those who are into daisy-wheel printers, Diablo is hi-
January 12th. The Seattle area almost had three clubs start, balling their printer developments. The HyType II is in production,
independently of one another, in January. Fortunately, however, and is rumored to be a considerable improvement over the HyType I.
their organizers discovered each other and joined forces. OEMers (Original Equipment Manufacturers) can buy ’em for
They meet at 7 p.m. on the first and third Tuesday of about $1,335 in single-unit quantities. With appropriate stationery,
each month, usually at the Pacific Science Center. Their first you or your distributer probably could do so, also. There is cur¬
newsletter was published in March. The Editor is Bob Wallace, rently a 3-4 month backlog on orders. Diablo has also announced
Box 5415, Seattle WA 98105, (206) 524-6359 (11 a.m. - 3 p.m.). 45- and 55-CPS printers, and more options: bottom paper feed,
Phone him for subscription information, or write: Northwest end-of-ribbon and paper-out signals, 8-bit parallel microprocessor
Computer Club, Pacific Science Center Foundation, 200 - 2 Ave and RS-232 interfaces, more type faces and ribbon options, etc.
N., Seattle WA 98109. Diablo is located at 24500 Industrial Blvd, Hayward CA 94545.
Page 4 Dr. Dobb's Journal of Computer Calisthenics & 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
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 DOMPIER’S ALTAIR MUSIC PROGRAM
& ALTAIR HARDWARE GLITCHES/FIXES MODIFIED
ADR DATA
Dear Editor, March 30, 1976 000 333
I am sending you my modifications to Steve Dompier’s 001 377
Altair music program [see Dr Dobb’s Journal, Vol. 1, No. 2, 002 147
p. 6]. Using this program you can store several tunes in mem¬ 003 056
ory and select which one will be played by using the sense 004 000
switches. Each tune is stored with its first note at HI adr. 005 176
“XXX,” and LO adr. “000.” (“XXX” is any HI address avail¬ 006 376
able in memory.) Each tune will be played when its HI adr. 007 377
is selected by the sense switches. If a new address is selected, 010 312
the first tune will complete, and then the next one will start. 000
Oil
Perhaps some of your readers would also be interested in 012 000
some of the problems I had in de-bugging my Altair. The fix 013 026
for the RAM board has been published before, but it is still 014 XXX (Tempo: higher = slower)
not in the Altair manual. 015 005
On the 4K dynamic RAM board, connect pin 10 of IC 016 302
“T” to ground (pin 11) instead of to plus 5 volts. If IC “T” is 017 022
already installed you must remove it to get at the PC board 020 000
land that must be removed. Also, connect a .01 MFD capacitor 106
021
from pin 5 of IC “T” to ground. These changes stabilize the 022 015
operation of the protect flip-flop. 023 302
On the CPU board, some of the capacitors being supplied 024 015
for C5 in the clock circuit are off tolerance, causing the 02 000
025
clock pulse to be too wide. This prevents the CPU from writing 025
026
into memory correctly. (In my case, the result of any arith¬ 302
027
metic operation was octal 377 written into memory.) The Mits 030 015
engineer I talked to suggested trying other lOOpf capacitors for
031 000
C5. I didn’t have any so I instead changed R42 to 5.6K and
032 043
this worked fine. 303
032
If your kit comes with a little blue capacitor for C5 you
033 303
should be on the lookout for this problem.
034 005
035 000
Bob Wilcox 902 N. Washington
Owosso MI 48867
Page 6 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 March, 1976
61
TINY BASIC EXPANDERS,
TAKE NOTE
«If you only subscribed to the first three issues, m*
Dear Bob, 28 Aug 1975
‘ YOUR SUBSCRIPTION HAS RUN OUTl
1
It would be nice to have CLOAD, CSAVE for cassette
If you like what you have seen, and want to see more,^!
LOAD/DUMP. Also eventually a floating point package to
hurry and send in your subscription renewal.
replace the integer arithmetic.
See page 33 for details & form.
3723 Jackstadt
Paul Farr San Pedro CA 90731
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
Page 8 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 March, 1976
63
SIGNETICS 2650 KIT FOR UNDER $200 -- IK bytes of PIPBUG ROM (in socket).
-- 512 bytes of RAM
[from Roy Blacksher, MOS Microprocessor Applications -- Two latched I/O ports
Manager, Signetics, 811 E. Arques, Sunnyvale CA 94086; -- Four non-extended I/) read/write user strobes.
(408) 739-7700] -- Tri-state buffers on data, address and control lines.
- Serial input/output port.
The Signetics Adaptable Board Computer, ABC 1500, is a -- Single +5 volt supply requirement (1.7A max.) for card
modular microcomputer containing a CPU, memory, I/O ports and 20 ma current loop interface (+12 volt supply for RS 232
and support circuitry. It is designed to cover a broad range of interface).
applications from software development to system hardware - Simple memory and I/O port decoding with two
prototyping. Cost performance trade-offs have been carefully 16-pin dips.
considered to achieve maximum flexibility and allow the card - Interrupt and single step capability.
to be tailored to a variety of individual requirements. - Simple clock configured from dual monostable multi¬
vibrator.
The basic configuration consists of the 2650 microprocessor, - 24K memory expansion capability.
512 bytes of read/write memory (four 2112 static RAM’s), IK -- Directly compatible with 4K RAM card (2650PC2000)
bytes of 2608 ROM with PIPBUG*, two 8T31 I/O ports and and power supply demonstration base (2650DS2000).
buffering on data, address and control lines. A single +5 volt -- Card dimensions: 8” x 6.875” with a 100-pin
supply will be required to power the card and communicate connector along the 8” dimension.
with a serial 20 ma current-loop terminal.
Modifications to the basic system can be easily made to allow *PIPBUG is a basic monitor having the following commands:
for various memory configurations and operating modes. Unused
ALPHA CHARACTER INPUT COMMAND
plated-through holes are provided for the PROM memory chips
(82S115’s). Other options are jumper selectable. A Alter memory
B Set breakpoint
The ABC 1500 is sold either as a completely assembled and C Clear breakpoint
tested card (2650 PCI 500) or in kit form (2650KT9500). The D Dump memory to papertape
kit is priced below $200. G Go to address
L Load memory from papertape
FEATURES S See and alter registers
-- Expandable printed circuit card: unused area on card
filled with plated-through holes on .300-inch centers for Note: the program is entered by resetting the card. The termin¬
wirewrap sockets. al will then respond with an asterisk (*).
PUBLIC INTEREST SATELLITE ASSOCIATION communications costs, and in determining how satellites-and
what kinds of satellites-may better serve their needs; and
The Public Interest Satellite Association (PISA) was 3) Explore ways the technology can be used by them
formed in October, 1975, as a non-profit national organization to form new networks of information exchange, and to im¬
to explore how satellite communications technology can be prove their outreadh to the public-at-large.
adapted to meet the long-distance telecommunications needs
of non-profit users. In March, 1975, PISA received grants from the Stern
Fund and the Ottinger Foundation to permit the following
For the past fifteen years, satellites have been providing first steps to be taken:
global links via television, radio, telephone, data, telex and 1) Conduct a survey of the communications needs, uses,
facsimile for business, industry, and the military. Up to now, and costs of non-profit organizations;
though, the technology, for a number of reasons, has been 2) Prepare written material informing these groups about
beyond the reach of public groups, despite the fact that satellites, the potential benefit they hold for the non-profit
satellites have been developed with nearly $80 billion of public community, and what must be done to realize this potential;
funds. But recent technical breakthroughs in the field promise 3) Design one or more demonstration projects, using
to greatly reduce satellite costs, and make the technology available NASA experimental satellites, to give non-profit
available for low-cost public use. To spearhead the public effort groups some experience with the technology; and
that will be required to turn this potential into reality, PISA 4) Plan PISA’s organization structure.
has been formed.
For additional information, write or call:
PISA’s goals are to: PISA
1) Help non-profit groups understand the many facets of 55 W 44 Street
satellite technology; New York NY 10036
2) Assist these groups in examining their long-distance (212) 661-2540
March, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 9
64
COMPUTER PROCESS FOR RAPID
PRODUCTION OF MUSICAL COMPOSITIONS
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 The cost could be billed to his phone
misfortune to get his work accidentally or be provided for by a coin-in-the-slot
mixed up with that of the great Johann arrangement. The computer in the Li¬
Sebastian Bach. brary of Congress could assess the royal¬
This came about when Bach, taken ties due the composer, if necessary, and
with Bonporti’s ingenious “inventions” credit the amount to his account.
for violin and string bass, hand copied the The Stanford computer’s value as a
latter’s work. When someone else in¬ research tool has no limits either, Smith
cluded four of them in Bach’s collected feels.
works, they were credited to Bach’s One doctoral candidate already has
genius until researchers discovered the started a computer-developed thesis,
error. working on a method which could pro¬
Using the computer printing method. duce thematic catalogues of the works of
Smith developed and expanded Bon¬ the classical com posers-a job of monu¬
porti’s “Inventio Septima” (“Seven In¬ mental drudgery if attacked in the tradi¬
ventions,”) adding a double scherzo of his tional manner.
own, based on Bonporti’s original. His project will be so comprehensive
Smith published it under his own that it will be able to compare composers’
“logo,” the San Andreas Press, with the themes, where and when they were used,
credit line: “Graphic Realization by down to the book, page, and line of the
PDP-IO Computer.” original score. It also will cite the places
The computer printed the entire score where the same themes have been used or
and the title page, including a “snapshot” adapted to other compositions.
of an oaktree against rolling Peninsula Anything the computer does can be
hills-the “San Andreas” monogram. stored on magnetic tape for permanent
Smith has produced computer scores instant recall, or erasure and reuse.
for Renaissance and Baroque chamber The Smith system could quite readily
groups of ancient instruments in the origi¬ be adopted by music publishers. “It
nal notation—square instead of round would cost them only about $130,000 to
notes, or special notation for the 17th set up this system,” Smith says, “but
century lute. they seem to be afraid or reluctant to
make the change.”
Students in Prof. George Houle’s
Smith, 50, is a native of Oakland who
classes in early music already are finding
was elected to Phi Beta Kappa as an
this handy for producing music required
undergraduate at UC-Berkeley. He also
for their master’s degrees.
earned his master’s degree in music at
The computer is coupled with a video
Berkeley, where he studied under the
display screen, which presents a five-line
noted composer Roger Sessions.
music staff on the operator’s command.
He took additional postgraduate work
The notes appear in response to the
at the Paris Conservatory under Olivier
proper typing on the keyboard.
Messaien.
These are fed into the computer which
Smith taught at Mills and the Univer¬
transmits them direct to the Xerox or to
sity of Chicago before coming to Stan¬
the “Calcomp” plotter, whichever is de¬
ford in 1958. He has received many com¬
sired.
missions for his original compositions,
The plotter, about 40 inches wide, has
which include “Orpheus” for harps¬
two parallel metal arms across the width.
ichord, harp, and guitar; a string trio, and
On these, a special ink-laden pen travels
an opera, “Santa Claus,” as well as
sedately back and forth, placing the notes
“Three Pacifist Songs.”
on the treble or bass staff while the drum
While he has been extremely busy in
moves up or down to accommodate the
the last few years developing the Center’s
notation.
comprehensive program for editing and
To the casual observer it looks as
printing computer music, he has also
though a giant musical Ouija board was in
found time to produce a piano trio, a
action, operated by an invisible hand.
“Rhapsody for Flute and Computer,”
Smith foresses the day when hundreds
“Arabesque for Small Orchestra,” “Six
of computer-produced scores, reduced to
Bagatelles for Piano,” a suite for mixed
digital form, can be stored in the Library
trio, and two motets for mixed chorus.
of Congress.
Almost all of these have been perfor¬
From any place in the country, he
med at Stanford, the Cabrillo Music Fes¬
predicts, a musician could dial up the
tival, or at other universities.
Library’s computer, code the correct
numerals for Dvorak’s Fifth Symphony, An accomplished pianist, clarinetist,
and bassoonist as well, he has played with
for example, and have the full orchestral
the Chicago and San Francisco symphony
score delivered by telecopier.
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 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 If you are interested in having this
Environmental available in $1K kits, write to:
Operating Temperature.0° C. to 50° C. John McDaniel
Storage Temperature.— 20° C. to 70° C. Vocal Interface Div.
Operating Humidity.0 to 95% with no condensation 4340 Campus Dr.
Suite 212
Command Word Newport Beach CA 92660
6-bits: 64 selections available, Includes phonemes, pauses (714) 557-9181
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
67
TOUCHLESS SENSING available that "see” clear plate glass or 3 mil clear mylar
FOR UNDER $100 or liquid surfaces at more than 102 cm (40 in).
We just spoke with a representative for a manufacturer of The AL3093 can be mounted anywhere, indoors or out,
low-cost proximity sensors (about $95@ in groups of 50; $133@ submerged or in a vacuum. Interference from ambient
in single units), and turned him on to the hobbyist movement. light, environmental contaminants and thin film accumu¬
These sensors are capable of determining the presence or lations of dust, oil, etc., is virtually impossible in normal
absence of materials some distance away. They can “see” water operation. A form of automatic gain control (AGC)
flowing from a pipe or through a semi-transparent tube, doors maintains the modulated beam sensitivity under chang¬
that are opened or closed, people, hands, fingers, spokes of a ing operating conditions.
rotating wheel, etc. Their range is from at least 24 inches for
sensing highly reflective material, or 40 inches for minimally SPECIAL FEATURES
reflective material, up to about 30 feet when a reflector is used * Responsive to virtually all objects and materials,
beyond the material “under surveillance.” They can even “see”
many color and texture changes.
through materials that we normally think of as being opaque
■ Simple to set up with adjustable, wide sensitivity
(e.g., cardboard, skin, thin wood panels, etc.) much like you can
range—visible alignment indicator—no focusing.
see the glow of a flashlight that you have stuck in your mouth-
for some obscure reason-through your cheeks. ■ Range to 102 cm (40”) in proximity mode, to 9.8 m
We will carry much more extensive information on this (30’) as a retro-reflective control.
within the next several issues. In the meantime, if you are ■ Long, maintenance-free life—solid state throughout,
interested in such devices being made available through distribu¬ never a bulb to change. Circuit protected output.
tors, mail-order hobbyist sales, and computer stores, write to ■ Operates anywhere—rugged, sealed unit is com¬
the manufacturer and tell them so. You might also tell them pletely self-contained.
the maximum that you would be willing to pay for such sensors. ■ Invisible modulated beam unaffected by ambient
Please do not ask them for literature, schematics, etc., however, light, even bright sun.
unless you are planning on purchasing them in quantity. We
■ Automatic compensation for fog, dust and other
will be furnishing such information in forthcoming issues; the
atmospheric or ambient conditions.
company is not set up to deal with very small retail sales . . .
and we want them to be happy with the hobbyist community
■ Versatile system component—available in custom
. . . and eager to enter our marketplace. We do not want them O.E.M. configurations.
to avoid the hobbyist market because they feel they can’t deal OPERATION
with the end users. The STI Model AL3093 is simple to set up and operate,
Just let ’em know you are very interested in their making requiring neither focusing nor critical adjustment. A
the products available at the lowest possible price, to the hobby visible LED indicator glows brightly when the sensor is
community, via the already-existent retail distributors (and, of aligned on target and permits visual monitoring during
course, group buys can be set up at any time).
operation. A potentiometer provides range and target
Send your quick statements of interest to: Anthony
sensitivity adjustment.
Lazzara, President, Scientific Technology, Inc., 1201 San
Antonio Rd, Mountain View CA 94043. 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.
-fl-fi.fi a .a g a a a a a go a o a 9 a.gg aa a aoooooooooooooooooooooq
Service life is conservatively rated at 10 years.
Any number of sensors may be interconnected for
simultaneous or sequential operation. Outputs can be
DESCRIPTION
ANDed, ORed, or arranged in any other logic sequence.
The STI Model AL3093 is a self-contained, complete,
sensitive non-contact proximity and retro-reflective USES
sensor system component. All circuitry is totally sealed The STI AL3093 is useful for every type of non-contact
in the shockproof 4.4 cm (1%”) by 10.1 cm (4.06”) long sensing application within its wide range capabilities.
aluminum housing. Major uses include sensing, counting, routing, position¬
ing, inspecting, measuring, code reading, web moni¬
The AL3093 responds to any surface or object entering toring and performing a wide variety of other automated
its field of view, irrespective of material. It also detects process control functions. Additional applications in¬
certain changes of color or texture. clude safety controls, perimeter or intrusion protection
or alarms and many, many others where visible
Range of the AL3093 is up to 102 cm (40 in) as a movements or changes must be sensed automatically.
proximity sensor. When used with a retro-reflective A series of externally mounted relay and switch outputs,
target, range is up to 9.8 m (30 ft). Long range units are 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
Input Power
Normally 12 VAC or VDC, or 24 VDC at 200 mA.
Externally mounted transformers available for other
input voltages.
Control Options
Time delays, one shots, alarm latches and other
modular control options are available for remote,
external mounting.
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.
Page 14 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 March, 1976
69
Our current solution happened in three stages.
Parser saves pain 1. A subroutine for all input. Pass the number and types (numeric or
Harvey E. Hahn February 24, 1976
string) of inputs wanted to the subroutine. Input the entire user
630 N. Lincoln Ave., Apt 208
response into a character string and parse it. One special input was
Addison IL 60101 always recognized — STOP (the user could type STOP anytime to
stop the game). We never bothered to tell our game players about
In reading PCC [article, below] I was intrigued by your Control C (remember, we never wanted a game player to give com¬
parsing subroutine, which avoids the direct input of the user mands directly to BASIC). Return the inputs and a condition code
(which can prevent game players, etc., from initiating control to the calling routine; 1 = STOP , 2 = couldn't find all the inputs
commands to BASIC itself). This would appear to be very useful you wanted , 3 = o.k. The '2' wouId cause a "helpful" message to
in situations where inadvertent input commands could upset or be sent to the player and the input would again be requested.
destroy a program, particularly by someone who is not conver¬
sant with programming or computer languages. It would appear The parsing of the inputted string was complicated because there
to be a useful “safety” feature to incorporate in BASIC was no direct way to convert from string to ascii (ascii is the numeric
interpreters. representation of a character) and numeric operations (like subtrac¬
tion) could not be performed with strings. If we could compute
Sometimes in the old days, often in the middle of a game, and usually The problem (and the reason that step 1 was not our final solution)
to somebody new to computers, our terminals would say: was that it took a lot of time to parse the input. People got really
ERROR xx IN LINE xxx impatient, especially with multiple terminals running.
READY
2. We eliminated the parsing subroutine. We tried all programs having
(By which the computer meant: "You typed the wrong thing when I
line numbers greater than 1000 (hopefully, it would be harder to
asked for INPUT so I've kicked you out of the program. Out of the
accidently erase a line since most inputs to the games were less than
goodness of my heart. I've described what you did wrong (i.e. ERROR
1000). The player was supposed to ignore an ERROR when (and
xx) and where the error happened (i.e. IN LINE xxx). To understand
generally when, rather than if, for first-timers) it occurred and
it, all you have to do is look at page xx in the reference manual, then
blindly type RUN.
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
It was faster than before but it didn't solve much — "What does
language — well, ask somebody then), you can figure out where you
ERROR xx IN LINE xxx mean"? And a player couldn't continue
went wrong. Naturally, the READY means you're in BASIC so if you
where the game aborted because of the zero-all-variables insanity
type some "random" number (like the input you tried to type in the of our BASIC. So, . . .
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 3. One night, after everyone was asleep and all was quiet, it happened.
zero all variables so you can't really start where you left off so you may Did you know that if you compute
as well start over. Be more careful next time!!")
T = CS
Games encourage non-standard responses — like, I THOUGHT YOU and X = INT(LOG(ABS(T))) + SGN(T)
WERE ‘IT’ when the terminal is asking, WHERE DO YOU THINK THE that X will be unique for each possible ascii character (on DEC
HURKLE IS HIDING?. People were being heavily discouraged from EDU20, at least)? This gives you a unique index into an array where
exploring and seeing what would happen if. the ascii value of each character can be stored.
Suppose the terminals would print something like, I’M CONFUSED — So, we redid phase 1 with a streamlined, razzle-frazzle lookup that
I NEED 2 COORDINATES FROM 0 TO 9. Then the computer is would gladden the heart of the most hardened hacker. And — our
the dummy — it doesn't understand me. "Watch me get the computer method of parsing INPUT isn't perceptibly slower to the user, even
ail confused."Quite different than feeling upset because the program has with multiple terminals, than good (or is it bad) ol' INPUT.
to be reloaded (on our 10 cps reader — no mass storage, alas) because a
few random lines were erased. Blahh! 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 OUTMASK Is it readv?
066 346 ANI
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 PORT
075 000
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 PORT
100 001
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 PORT
107 000
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 entering, the program counter is printed, followed by the active
FOR 6502s flags, accumulator, X index register, & index register, and stack
pointer, terminated by a carriage return and line feed. It then
John Zeigler waits for the user to type in a new op-code. Upon receiving
8 Seaview Dr., Pittsburg CA 94565 that op-code, the original 00 code is replaced with the op-code
(415) 894-3661 that was input, the stack is returned to pre-interrupt status, and
execution of the original program continues from the breakpoint.
[This routine was distributed at the Homebrew Computer Club To use this routine, it is necessary to load the interrupt
meeting, March 17, 1976. It is reprinted with the author’s vector, FFFE and FFFF, with 64 and 02, respectively, and
permission.] place the 00 breakpoint op-code in the desired location. The
following storage is required: 0000-0007, 0200-02E3,
This routine is entered via a software breakpoint. It is FFFE-FFFF. Note: This routine calls subroutines located in
entered when the processor encounters a 00 op-code. Upon the TIM Monitor.
March, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 17
72
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
Page 1 8 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 A6 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 1RETURN 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 Zone spacing suppression on PRINT statements using a
semi-colon (;)
[An earlier release of Fred’s Tiny BASIC was submitted to the Expressions may be input (e.g., 3 * 5/2 is a valid input)
Denver Amateur Computer Society. This release is a considerably
improved version.] ARITHMETIC OPERATIONS
+, -, *, / allowed. Expressions are evaluated from left to
This is a version of Tiny BASIC based on the design notes right with multi ply/divide precedence unless otherwise
which have been published in People’s Computer Company parenthesized.
newspaper, and in the Journal. The program is written in 8080 Too deeply nested parentheses is the most common
assembly language for a system utilizing a TV-Typewriter and a cause of error number 45. The expression complexity
Suding-type cassette tape interface. The program requires which can be handled is a function of the program
approximately 2.75K bytes of memory, including storage space being processed. Variables and expression operands are
for variables. stored in a common memory block, with variable
values entered from the bottom up, and expression
COMMAND SET operands from the top down. If overlap occurs, the
LET IF DIM error message is output. If only a few variables have
PR (print) CLEAR REM been referenced, a very complex expression can be
GOTO LIST CLRS handled. If the maximum allowable number of vari¬
GOSUB RUN SIZE ables (120) have been referenced, arithmetic expressions
RET (return) END TAPE must be kept very simple.
IN (input) LOAD
COMMAND MODE
DIM - allows single-dimensioned variables (only single A “greater-than” symbol ( > ) is output indicating that
letter variables may be dimensioned) the interpreter is awaiting a command from the keyboard.
REM - remarks follow Commands entered with a line number will be entered in
CLRS - clears screen on TVT proper numerical sequence in the program area. Com¬
SIZE -- prints number of bytes used, and number remain¬ mands entered without a line number will be executed
ing (does not include dimensioned-variable stor¬ immediately if possible. Errors encountered in the direct
age areas, which are above the program) mode will be output as mmm AT O since there is no line
Control - X input in response to an INPUT statement number associated with them.
returns control to the Tiny BASIC monitor. The LIST command is optionally followed by two
numbers (LIST mmm nnn). If no numbers are entered,
FEATURES AND RESTRICTIONS the. entire file will be displayed on the TVT. If LIST mmm
Integer Arithmetic only, +/- 32767 maximum range is entered, line mmm will be listed. If both mmm and nnn
Single letter variables optionally followed by the numbers are entered, the listing will be from line number mmm to
1 to 6 nnn, inclusive. If mmm or nnn do not exist, the first line
1 -dimensional variables number greater than the input numbers will be used as
Only one function available RND(X); random number limits.
generator, returns a value between 0 and +32767. If LIST, RUN, CLEAR, TAPE (Output a program to cassette),
X i 0, initialize the routine and return a random and LOAD (Input a program from cassette), are designed
number. If X = 0, return a random number. to be used primarily in the command mode. If these
Multiple statements per line allowed using a colon (:) commands are included in a program, they will execute
separator. properly, but upon completion (with the exception of
Strings ok in print statements; string variables not RUN, which will simply restart the program), they will
allowed. return control to the monitor portion of the program
Direct mode operation (except that GOSUB and INPUT (i.e., a “> ” will be output as a prompt, and no further
will not operate in the direct mode) statements will be executed until a command is input).
Built-in editor for creation/modification of programs
Full line erase using a ?. No single character erase. OTHER FEATURES &
Dump and load programs to/from cassette tape A SAMPLE PROGRAM
Implied TFIEN in IF statements. The THEN clause may Some other features of the system are best illustrated by
have any recognizable Tiny BASIC statements. Multiple the following sample program:
statements following an IF THEN clause will be execut¬
ed only if the relational clause is satisfied.
Single byte line numbers, 2 to 255
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 lines.
22 IF X=0 GO TO 230 Lines 85 and 130 illustrate zone spacing suppression.
23 IF Y=0 GO TO 230 Only the semicolon is required to suppress zone spacing.
25 IF X <0 LET X=-X Zones are eight columns wide, which is convenient for a
30 IF Y<0 Y=-Y TVT. Zone 5 then starts a new fine. Leading zeros are
40 IF X> =100 X=X/7 :GOTO 40 suppressed on numerical output.
50 IF Y> 120 Y=Y/lll:GOTO 50 Line 200 illustrates a special feature included for the
60 IF X< > 0 IF Y< > 0 Z=RND(X*Y) TVT. CLRS calls a clear-screen routine, to avoid overwriting
65 IF Z> 100 Z=Z/8: GOTO 65 old data. Scrolling would be nicer, but my TVT won’t do
67 C2 = 0 that.
70 PR Throughout the program, blanks may be included or
75 PR “I MADE A NEW NUMBER” omitted freely. In general, blanks may be used or omitted
80 IF C> 5 GOSUB 200 between variables, constants, commands, etc., to make the
85 PR “GUESS MY NUMBER”; program more readable, or save memory space. 10X=3
90 IN Cl works just as well as 10 X = 3 but it doesn’t look as nice.
95 C2 = C2 + 1 : C = C + 1 GOTO and GOSUB may also be separated by blanks if
100 IF Cl = Z GOTO 160 desired. Blanks do act as separators.
110 IF Cl <Z GOTO 130
120 PR Cl,; “IS TOO HIGH” CONVERSION TO OTHER SYSTEMS
125 GOTO 80 Conversion to other 8080 systems should be fairly straight¬
130 PR Cl,; “IS TOO LOW” forward. The program was assembled with a starting
140 GOTO 80 location of 000 003 (split octal), but could be relocated
160 PR “***** THAT’S IT s{: 4: > 5 elsewhere. The only routine not contained within the pro¬
163 PR “YOU TOOK”,;C2,;“GUESSES” gram is CRLF (output a carriage return). This routine is
165 PR “INPUT 1 TO TRY AGAIN” contained in a small monitor PROM in my system, which is
170 IN Cl also the reason for the starting location not being 000 000.
175 IF Cl = 1 GO TO 5 This location is normally loaded with a jump instruction so
180 END that the monitor PROM is entered when the system is
200 CLRS reset. All variable storage locations are provided within the
210 LET C=0 2.75K memory allocation. The 8080 stack for subroutine
220 RET calls and push/pop operations is external to the program. I
230 PR “YOU CAN’T USE ZERO” use a 128 byte ram dedicated to this purpose.
235 GOSUB 200 The main conversion problem will occur in the I/O
240 GOTO 10 portions. My TVT uses hardware control of the 8080
ready line, and will operate directly with an IN or OUT
line 20 illustrates multiple inputs. The input values must
instruction. If it is necessary to modify this approach, the
be separated by a single character (normally a comma, but
best technique would probably be to change the IN and
this is not required), and the entire input string of num¬
OUT instructions to CALL instructions, and write sub¬
bers terminated by a carriage return. The input routine out¬
routine suitable for the particular I/O device. The IN
puts question mark as a prompt to indicate it is awaiting
instruction is used only in the one input subroutine
input data. A question mark input will erase the entire line
(DTIN), but the OUT instruction is used in several
of input.
routines (DTIN, DECA, CNW, PRS, LIST, and ERRS).
Line 30, and several others, illustrate the implied LET
The tape routines for the TAPE and LOAD commands
statement. LET X=8 and X=8 both produce the same
are based on software timing control of a Suding-type
result. Using the LET statement speeds up execution.
cassette interface. They would have to be replaced if a
Omitting the LET saves space in the program memory area.
different type of interface was used. (Note: the output to
Lines 40, 50, and 65 illustrate a special use of multiple
statements per line. The statements following the colon will tape routine does not include the usual 5 second delay at
execute only if the relational operator is satisfied. Thus, the start; data transmission begins immediately.) The
each of these statements will loop on themselves until the timing constants used produce a data rate of approxi¬
variable value is reduced below the relational limit. mately 660 baud in my 8080 system operating with a 1.25
Line 60 illustrates chaining of relational statements. The MHz clock and no memory wait states.
final statement will be executed only if both relational No change is required to utilize Teletype lingth I/O
operators are satisfied, which, for this program, will always lines. The input buffer accepts a 72-character input fine,
be true. and will store it in memory properly. This also allows
Line 70 will print a carriage return. This statement will program lines which are longer than the 32-character TVT
only work with a C/R terminator, and will produce a capability to be processed properly. Program lines are
syntax error if followed by a colon for multi-statement terminated by a carriage return and not by any fixed length.
March, 1976 Dr. Dobb’s Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 21
76
Another variable which may require changing is MMAX, PLANNED MODIFICATIONS
(used in the editor portion, subroutine RPIN), which sets (Things I would like to add)
the maximum memory size (high portion of address only). More Commands
The Tiny BASIC program to be processed is stored above FOR NEXT loops
the interpreter, and is limited to a maximum address of Multiple-dimensioned variables
MMAX. This value is currently set to octal 040, correspond¬ String variables
ing to my 8K system. Floating point arithmetic and I/O routines
For conversion to non-8080 systems, good luck. More functions
Conversion of the code from the listing should be faster Etc., etc.
than writing a new program, if you are familiar with 8080 I haven’t really devoted any time to them yet. Any help,
assembly language. suggestions, routines, or whatever anyone cares to contrib¬
Some is bound to ask how I get my listings since I ute (especially a printer) will be greatly appreciated.
have no hard-copy device. My assembler produces a
listing on a cassette. This is then processed by another [A collage to two letters from Fred; February 21st, and April 2nd]
system which has a printer.
All TVT I/O is handled through subroutine calls for ease Dear Dennis and Jim,
of conversion to other systems. The two 3-byte subroutines Excuse the lack of detailed comments in the assembly listing.
I have an 8K system, and an assembler which requires 4K. Even
TVTI at 002 156 and TVT0 at 002 161) may be replaced by
with only the few comments, and Tab capability in the source
JUMPs to more complex I/O routines. If the new routines
code generation, the source code requires around 14K, which is
are placed at the end of the program, the value of TOPL
assembled in four blocks.
which specifies the first available memory location must be
There are a few misprints in the listing (they are obvious,
changed. I think the only reference to this symbol is at
the entire line is moved to the left), but I don’t think that will
location 000 014, where the EOF pointer is initialized. No
cause any problems if someone wants to implement the Tiny
other changes should be required to change the I/O
BASIC interpreter.
procedures.
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
ERROR DETECTION edit capability without sacrificing memory space during execution.
Errors detected during execution of a Tiny BASIC program
2) Only referenced lines (GOTO, GOSUB) numbered. Without the
will cause an output of the form mmm AT nnn, where mmm
resident editor, line numbers are not nearly as useful. 3) Partial
is the error number, and nnn is the line number where the
symbol table formation prior to execution. Numbered line
error was detected. The following errors are detected by the
addresses stored in the symbol table to reduce execution time for
interpreter program:
GOTO/GOSUB statements. 4) Scan off all blanks at load time,
10 - Syntax error except in string prints, to reduce program memory requirements.
15 - Invalid line number (<2 or > 255) detected by I will probably also go to an IL type of program rather than
editor also direct coding in assembly language, since I am beginning to
20 - Memory overflow (program too large) understand it and appreciate its features after numerous readings
25 - End of file detected of the PCC articles, and the first Journal.
30 - Attempt to transfer to a non-existing line number I have been programming in assembly language and high
(GOTO or GOSUB) level languages for some time, but this was my first attempt at
35 - GOSUBs nested too deep (8 maximum) implementing a new language for a machine. The Tiny BASIC
40 - Too many variables (120 maximum) design articles have been a tremendous help. I don’t think that I
45 - A-stack/V-stack overflow. Combination of number would have been as far as I am now without their help.
of variables and expression complexity too great. I have a couple game programs running in my Tiny BASIC.
50 - RET with no GOSUB If I figure out how to get a listing of them, I will send them
55 - No closing quote on string print along. The program that I use to generate the assembler listings
60 - Relational operator error will not handle programs written in (Tiny) BASIC, since the line
(=, <, >,<=,>=,> <, <> ) numbers are stored in Binary rather than ASCII.
65 - Missing right parenthesis If you’re interested in it, I also have a fairly sophisticated
70 - Undefined variable in expression evaluation text editor program. It is a string/line-oriented editor modeled
75 - Add/Subtract overflow after the PDP-9 text editor. It has 28 different commands.
80 - Multiply overflow
-Fred
85 - Attempt to divide by zero
90 - End statement detected
YES! We would be delighted to publish your Text Editor. Send it
95 - Empty A-stack on pop operation
along ASAP, and keep up the good work. The more everyone
100 - Input line too long (72 characters + C/R maximum)
shares, the more everyone gains. -JCW, Jr.
105 - Dimensioned-variable error
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
March , 1S76 Dr Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 23
78
001 073 ♦ INSERT NEW LINE
001 312 322 320 001 JNC BUM2
001 073 072 326 011 LDfi FNUM
001 315 321 POP D
001 ©76 022 STAX D
001 316 031 DAD D
001 077 023 I NX D
001 317 325 FUSH D
001 100 052 323 811 LHLD APNT
001 320 315 256 001 BUM2 CALL HLRS
081 103 176 INS3 MOV A, M
001 323 ©42 33? 011 SHLD PRD2
001 104 022 sTax D
001 326 005 DCR B
001 105 043 I NX H
001 327 302 276 001 JNZ BUM1
001 106 023 I NX D
001 332 321 POP D
001 107 376 815 CPI 13
001 333 052 335 011 LHLD PRDi
001 111 302 183 001 JNZ INS3
001 336 315 256 001 CALL HLRS
001 114 311 RET
801 341 311 RET
001 115 * LNFD - LINE FINDER
001 342 * BUDV - BINARV 1
001 115 041 261 013 LNFD LXI H, TOPL
001 342 315 23? 001 BUDV CALL HLCM
001 120 072 326 011 LDfi FNUM
001 345 345 PUSH H
001 123 107 MOV B, A
001 346 006 021 MV I B, 17
001 124 176 LNF1 MOV A, M
267 ORA fi
001 125 376 002 CPI 2
001 351 052 33? 011 BUD1 LHLD DVD2
001 127 330 RC
001 354 315 24? 801 CALL HLLS
001 130 278 CMP B
001 357 042 33? 011 SHLD DVD 2
001 131 320 RNC
801 362 005 DCR B
001 132 043 I NX H
001 363 312 014 002 JZ BUD2
001 133 315 141 001 CALL NXTL
001 366 852 335 011 LHLD DVD1
001 136 303 124 001 JMP LNF1
001 371 315 24? 001 CALL HLLS
001 141 * NXTL - GET NEXT LINE START
801 374 042 335 011 SHLD DVD1
001 141 176 NXTL MOV A, M
001 37? 321 POP D
001 142 043 2 NX H
002 000 073 DCX SP
001 143 376 015 CPI 13
002 001 073 DCX SP
001 145 310 R2
002 002 031 DAD D
001 146 322 141 001 JNC NXTL
002 003 322 351 001 JNC BUD1
001 151 053 DCX H
002 006 042 335 011 SHLD DVD1
001 152 311 RET
002 011 303 351 001 JMP BUD1
001 153 * RND - RANDOM NUMBER GEN
002 014 321 BUD2 POP D
001 153 315 154 005 RND CALL ASPP
002 015 311 RET
001 156 175 MOV A/ L
802 016 # SPNZ - SPACE T(
001 157 264 ORA H
002 016 072 341 011 SPNZ LDA CHCT
001 168 312 171 001 JZ GEN
002 021 10? MOV B, A
081 163 862 345 011 STA LORD
002 022 326 010 SUI 8
001 166 842 343 011 SHLD HORD
002 024 312 032 082 JZ $+3
001 171 072 345 011 GEN LDA LORD
002 02? 322 022 002 JNC SPNZ+4
001 174 016 017 MV I C, 15
002 032 117 MOV C, A
001 176 107 MOV B, ft
002 033 015 DCR C
001 177 346 041 AN I 33 BITS 19 & 24
002 034 076 040 MVX A, ' '
001 201 352 285 0G1 JPE GEN1
002 036 014 SPN3 INR C
001 204 067 STC
802 037 362 051 002 JP SPN4
001 205 052 343 011 GEN1 LHLD HORD
082 042 315 161 002 CALL TVTO
001 210 315 256 001 CALL HLRS
002 045 004 I NR B
001 213 042 343 011 SHLD HORD
002 046 303 036 002 JMP SPN3
001 216 170 MOV fi, B
002 051 170 SPN4 MOV A, B
001 217 037 RAR
002 052 062 341 011 STA CHCT
001 220 015 DCR C
002 055 311 RET
001 221 302 176 001 JNZ GEN+5
002 056 ♦ VSIN - INCREMEf
801 224 062 345 811 STA LORD
002 056 315 063 002 VSIN CALL STOV
001 227 076 177 MV I A, 7FH
002 061 042 331 011 SHLD VSTK
001 231 244 ANA H
002 064 311 RET
001 232 147 MOV H, A
002 065 * STOV - CHECK FC
001 233 315 134 005 CALL ASPH
802 065 052 32? 011 STOV LHLD ASTK
001 236 311 RET
002 070 353 XCHG
001 237 * HLCM - HL COMPLEMENT
002 071 052 331 011 LHLD VSTK
001 237 175 HLCM MOV A, L
082 074 043 I NX H
001 240 057 CMA
002 075 043 I NX H
001 241 157 MOV L, A
002 076 175 MOV A, L
081 242 174 MOV A, H
002 077 223 SUB E
001 243 057 CMA
002 100 174 MOV R, H
001 244 147 MOV H, A
001 245 043 I NX H
232 SBB D
001 246 311 RET
002 102 322 214 011 JNC STOF
001 247 * HLLS - HL LEFT SHIFT
002 105 311 RET
001 247 175 HLLS MOV A, L
002 106 * TAPE INPUT ROUT]
001 250 027 RAL
002 106 ©16 001 TPIN MVI C, 1
001 251 157 MOV L, A
002 110 021 010 000 LX I D, 8
001 252 174 MOV A, H
002 113 333 001 IN TAPU
001 253 027 RAL
002 115 241 ANA C
001 254 147 MOV H, A
002 116 302 113 002 JNZ TPIN+5
001 255 311 RET
002 121 006 300 MV I B, 192
001 256 * HLRS - HHL RIGHT SHIFT
002 123 005 DCR B
001 256 174 HLRS MOV A, H
002 124 302 123 002 JNZ *-4
001 257 037 RAR
002 127 333 001 TPI2 IN TAPU
©01 260 147 MOV H, A
002 131 241 ANA C
001 261 175 MOV fi, L
082 132 202 ADD D
001 262 037 RAR
0©2 133 017 RRC
801 263 157 MOV L, A
002 134 12? MOV D, A
001 264 311 RET
002 135 006 200 MV I B, 128
001 265 * BUML - BINARV MULTIPLV
©02 13? 905 DCR B
001 265 345 buml push H
©02 140 302 137 082 JNZ $-4
001 266 041 000 000 LX I H, 0 ©02 143 035 DCR E
001 271 042 337 011 SHLD PRD2 ©02 144 302 127 082 JNZ TP 12
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
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 003 072 052 323 011 IFNX LHLD APNT
002 150 271 CMP C 003 075 315 141 001 CALL NXTL
002 151 310 R2 003 100 053 DCX H
002 152 043 I NX H 003 101 042 323 011 SHLD APNT
002 153 303 110 002 JMP TPIN+2 003 104 303 164 094 JMP NXT
002 156 333 000 TVTI IN TVT IFMS DB 'I'
003 10? 111
002 160 311 RET 003 110 306 DB 'F'+128
002 161 323 000 TVTO OUT TVT 003 111 021 166 003 LXI D, INMS
002 163 311 RET 003 114 315 076 004 CALL TST
002 164 * END BLOCK 1 063 117 257 XRA A
082 164 * STMT - STATEMENT PROCESSOR 003 120 862 341 011 STA CHCT
002 164 021 226 002 STMT LX I D, LTMS CALL DTIN
003 123 315 141 00 3
002 16? 315 076 004 COLL TST 003 126 315 303 804 INM1 CALL TSTV
002 172 315 303 004 STM1 CALL TSTV 003 131 067 011 JC ERRS
332
002 175 332 067 011 JC ERRS CALL NCGV
003 134 315 025 006
002 200 021 222 002 LX I D, EQMS CRLL STOR
003 137 315 052 085
002 203 315 076 004 CALL TST LXI D, CMM1
003 142 021 153 003
002 206 315 226 006 CALL EXPR
003 145 315 076 004 CALL TST
002 211 315 150 004 CALL DONE
003 150 383 126 003 JMP INM1
002 214 3l5 052 005 CALL STOR
003 153 254 CMM1 DB '+128
002 217 303 164 004 JMP NXT
003 154 25? XRA A
002 222 275 EQMS DB '='♦128
093 155 062 341 011 STfi CHCT
002 223 303 067 011 JMP ERRS
003 160 315 150 004 CALL DONE
002 226 114 105 LTMS DW 'LE'
003 163 303 164 004 JMP NXT
002 230 324 DB 'T'♦128
003 166 111 INMS DB 'I'
002 231 021 310 082 LXI D, GOMS
003 16? 316 DB 'N'+128
002 234 315 076 004 CRLL TST
003 170 621 204 003 LXI D, RTMS
002 23? 021 256 002 LXI D, TOMS
003 173 315 076 004 CALL TST
002 242 315 076 004 CALL TST
003 176 315 150 904 CALL DONE
002 245 315 226 006 CRLL EXPR
003 201 303 066 005 JMP RSTO
002 250 315 150 004 CALL. DONE
003 204 RTMS DW 'RE'
122 105
802 253 303 216 004 JMP XFER
003 206 324 DB 'T'+12S
002 256 124 TOMS DB 'T '
003 20? 021 220 083 LXI D, ENMS
002 25? 31? D8 '0'^128
003 212 315 076 004 CRLL TST
002 260 021 302 002 LXI D, SBMS
003 215 303 271 011 JMP ENDM
002 263 315 076 004 CALL TST
003 220 105 116 ENM5 DW 'EN'
002 266 315 226 006 CALL EXPR
003 222 384 DB 'D'+128
0O2 271 315 150 004 CALL DONE
003 223 021 234 003 LXI D, LSMS
002 274 315 250 004 CALL SAV
003 226 315 076 004 CALL TST
002 277 303 216 004 JMP XFER
003 231 303 310 010 JMP LIST
002 382 123 125 SBMS DW 'SU'
003 234 114 111 123 LSMS DW 'LIS'
002 304 302 DB 'B'+128
003 237 324 DB 'T'+128
002 305 303 06? 011 JMP ERRS
003 240 021 265 003 LXI D, RNMS
002 310 107 GOMS DB 'G'
003 243 315 076 GG4 CALL TST
002 311 317 DB '0'+128
003 246 315 061 G00 CALL INIT
002 312 021 043 003 LXI D> PRMS
003 251 041 261 013 LXI H* TOPL
002 315 315 076 004 CALL TST
003 254 176 MOV R, M
002 320 021 013 003 PRTi LXI D, QUMS
003 255 376 002 CPI 2
002 323 315 076 004 CALL TST
003 257 332 14? 011 JC ERRM
002 326 315 204 005 CALL PRS
003 262 303 204 004 JMP NXT1-4
802 331 021 345 002 PRT2 LXX D, CMMS
003 265 122 125 RNMS DW 'RU '
002 334 315 076 004 CALL TST
003 26? 316 DB 'N'+128
002 337 315 016 002 CALL SPNZ
003 270 021 301 003 LXI D/ CLMS
©02 342 203 320 002 JMP PRTI
003 273 315 076 004 CRLL TST
©02 345 254 CMMS DB '+128
002 276 303 003 000 JMP STRT
002 346 021 375 002 LXI D, SMMS
003 301 103 114 105 101 CLMS DW 'CLEA'
002 351 315 076 004 CRLL TST
003 305 322 DB 'R'+128
002 354 052 323 011 LHLD APNT
003 306 021 317 O03 LXI D, TPMS
002 35? 176 MOV A, M
003 311 315 076 004 CALL TST
002 360 376 015 CPI 13
003 314 383 114 005 JMP TAPE
002 362 312 005 003 JZ SMM2
003 317 124 101 120 TPMS DW 'TAP'
002 365 376 072 CPI ' : '
003 322 305 DB 'E'+128
002 367 302 320 002 JNZ PRTI
003 323 021 345 003 LXI D, LDMS
002 372 303 005 003 JMP SMM2
003 326 315 076 004 CALL TST
©02 375 273 SMMS DB '} '+128
003 331 841 261 013 LXI H, TOPL
002 376 315 076 340 CALL CRLF
003 334 315 106 002 CRLL TPIN
003 801 257 XRA A
003 337 042 315 011 SHLD EFPN
003 002 062 341 011 STA CHCT
003 342 303 024 000 JMP ERNT
003 005 315 150 004 SMM2 CALL DONE
003 345 114 11? 101 LDMS DW 'LGA'
003 010 303 164 004 JMP NXT
003 350 304 DB 'D'+128
003 013 242 QUMS DB '"'♦123
003 351 021 005 004 LXI D; DMSG
003 014 052 323 011 LHLD APNT
003 354 315 076 004 CALL TST
003 01? 176 MOV A, M
003 357 315 303 004 CALL TSTV
003 020 376 015 CPI 13
003 362 322 310 011 JNC DMER .
003 022 312 376 002 JZ SMMS+1
003 365 021 376 003 LXI D, DMC2
003 025 376 072 CPI ' : '
003 370 315 076 004 CALL TST
003 027 312 376 002 JZ SMMS^l
003 373 383 357 003 JMP #-15
©83 032 315 226 006 CALL EXPR
003 376 254 DMC2 DB '+128
003 035 315 105 005 CALL PRNV
003 377 315 150 004 CALL DONE
003 040 203 331 002 JMP PRT2
004 002 383 164 004 JMP NXT
803 043 120 PRMS DB 'P'
084 005 104 111 DMSG DW 'DX '
003 044 322 DB 'R'+±28
804 007 315 DB 'M'+128
©83 045 021 107 003 LXI D, IFMS
004 010 021 024 004 LXI D*SZEM
eo3 050 315 076 004 CALL TST
004 013 315 076 004 CALL TST
©03 033 315 226 006 CALL EXPR
004 816 315 254 007 CRLL SZER
003 056 315 074 006 CALL RELP
004 021 303 024 000 JMP ERNT
003 061 315 226 006 CALL EXPR
004 024 123 111 132 SZEM DW 'SIZ'
083 064 315 324 O07 CALL CMPR DB
004 02? 305 'E'^128
083 067 322 164 002 JNC STMT 004
084 030 021 041 LXI D, RMKS
004 033 315 076 004 CALL TST
804 836 303 072 003 JMP IFNX
March , 1976 Dr. Dobb's Journal of Computer Calisthenics & 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 JNC TST4 005 004 376 170 CPI NSVM
322 137 004
004 145 353 TST5 XCHQ 005 006 322 207 011 JNC SMOE
084 146 POP D 005 011 176 MOV A, M
321
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
MOV A, M 005 027 041 147 012 LXI H, VSTR
@04 167 176
004 170 043 I NX H 005 032 031 DAD D
004 171 376 072 CPI ' : * 005 033 170 MOV A, B
005 034 326 340 SUI 0E0H
004 173 312 210 004 JZ NXT 1
005 036 322 141 007 JNC TSV4
MOVA, M
004 082 CPI2 005 041 315 134 005 CALL ASPH
177 376
EOFR 805 044 361 POP PSW
004 201 332 161 011 JC
005 045 314 056 002 CZ VS IN
004 204 062 325 011 STA LNUM
207 I NX H 005 050 361 POP PSW
004 043
000 NXT1 CALL SBL1 805 051 311 RET
004 210 315 301
STMT 005 052 * STOR -STOR VRR. VALUE
004 213 303 164 082 JMP
004 * XFER - NEW LINE FOR GO 005 052 315 154 005 STOR CALL ASPP
216
ASPP 803 055 345 PUSH H
004 216 315 154 005 XFER CALL
005 056 315 154 005 CALL ASPP
004 221 174 MOV A/ H
ORA R 005 061 321 POP D
004 222 267
JNZ ERRM 005 062 163 MOV M/ E
004 223 302 147 011
004 175 MOV R, L 005 063 043 I NX H
226
004 227 376 002 CPI 2 005 064 162 MOV M, D
ERRM 005 065 311 RET
004 231 332 147 011 JC
FNUM 005 066 ★ RSTO - NEW # FOR RETURN
004 234 062 326 011 XFE1 STA
CALL LNFD 005 066 652 333 011 RSTO LHLD RSTK
084 237 315 115 001
005 071 053 DCX H
004 242 302 175 011 JNZ ERML
NXT1—4 085 672 176 MOV R, M
004 245 303 284 004 JMP
* SAV - SAVE RETURN LINE # 005 073 267 ORfi A
804 250
005 074 312 221 011 JZ RNER
004 250 315 141 001 SAV CALL NXTL
805 077 042 333 011 SHLD RSTK
004 253 332 161 011 JC EOFR
005 102 303 234 004 JMP XFE1
004 256 106 MOV B, M
005 105 * PRNV - PRINT VARIABLE
084 257 041 357 011 LXI Hj RSTR+8
005 105 315 154 005 PRNV CALL ASPP
004 262 353 XCHQ
005 110 315 256 005 CALL DECA
804 263 052 333 Oil LHLD RSTK
005 113 311 RET
©04 266 175 MOV Rj L
005 114 * TAPE - OUTPUT TO TAPE
004 267 223 SUB E
005 114 041 261 013 TAPE LXI H>TOPL
004 270 174 MOV A. H
005 117 176 MOV A, M
©04 271 232 SBB D
005 120 315 252 010 CRLL TAPO
004 272 322 202 011 JNC QSER
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 J2 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 J2 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 SOFTWARE CONTEST
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 Sponsored by People’s Computer Company
811 165 312 024 000 JZ ERNT
Oil 170 056 031 MV! La 25 P.O. Box 310, Menlo Park, Ca. 94025
©11 172 303 071 011 JMP ERR1
011 175 056 036 ERML MV I La 30
011 177 303 071 011
011 202 056 043
JMP
GSER MV I
ERR1
La 35
FIRST PRIZE: $500 certificate for hardware
011 204
Oil 207
303 071 011
056 050
JMP
SHOE MV I
ERR1
La 40
from CROMEMCO
011 211 303 071 011 JMP ERR1
Oil
011
214
216
056 055
383 071 011
STOF MV I
JMP
La 45 SECOND PRIZE: $250 certificate for hardware
ERR1
011 221 056 062 RNER MV I La 50 from CROMEMCO
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 OBJ ECT: Develop a program resulting in a new and
011 235 303 071 011 JMP ERR1
011 240 056 101 RPER MV I La 65 interesting display using the Cromemco
011 242 303 071 011 JMP ERR1
011 245 056 106 UDVE MV I La 70 TV Dazzler. (The Dazzler is an interface
011 247 303 071 011 JMP ERR1
011
011
252
254
056 113
303 071 011
ROFE MV I
JMP
La 75
ERR1
that permits a home color TV set to be a
011
011
257
261
056 120
303 071 011
MGFE MV I
JMP
L, 80
ERR1
graphic terminal for certain microcomputers.)
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 RULES: All entries must use the Cromemco Dazzler
©11 273 303 071 011 JMP ERR1
011 276 056 137 SUFE MV I La 95 display and must not require more than 20K
JMP ERR1
011
011
300
303
383
056
071
144
011
ILTL MV I La 100
of computer memory.
011 305 303 ©71 011 JMP ERR1
011 310 056 151 DMER MV I La 105
All entries will be judged by People’s
011 312 303 071 011 JMP
♦VARIABLE
ERR1 Computer Company on
011 315 DEFINITIONS
011 315 SP EQU 6 1 — originality
011 315 PSW EQU 6
011 315 TVT EQU 0 2 — general user appeal
011
011
315
315
TRPU
CRLF
EQU
EQU
1
0E03EH
3 — clarity of documentation
011 315 CLRS EQU 0E090H Entries should include source code and object
011 315 STAR EQU 0E780H
011 315 NSVM EQU 120 code on punched paper tape. A listing of an
011 315 MMRX EQU. J20H
011 315 XBLN EQU 74
appropriate bootstrap loader should also be
♦
Oil 315
011 315 ♦ STORAGE AREAS
provided.
811 315 ♦
011 315 EFPN DS 2
Software should be compatible with MITS REV 1
011 31? TMP1 DS 2 serial I/O port convention for I/O require¬
011 321 NMLC DS 2
011 323 APNT DS 2 ments (i.e., data transfer is on port 1, bit 7
011 325 LNUM DS 1
011 326 FNUM DS 1 [active low] of input port 0 is used to indicate
011 327 ASTK DS 2
011 331 VSTK DS 2
receiver ready, and bit 0 [active low] of input port 0
011 333 RSTK DS 2 is used to indicate transmitter empty).
011 335 PRD1 DS 2
011 337 PRD2 DS 2
011 341 CHCT DS 1
011 342 TEMP DS 1 Microcomputers can be incredibly versatile. The Dazzler
011 343 DVD1 EQU PRD1
011 343 DVD2 EQU PRD2 adds the dimension of full-color graphic display to the
011 343 WORD DS 2
011 345 LORO DS 1 microcomputer.
011 346 DS 1
811 347 RSTR DS 8
011
012
357
147
SVMT
VSTR
DS
DS
120
256
What can you develop? — games? — business? — education?
013
013
147
147
ASTR
IBUF
EQU
DS
$
74
— art? — others?
013 261 TOPL EQU *
813 261 4>
013 261 ♦ END OF PROGRAM SEND ALL ENTRIES TO: PEOPLE’S COMPUTER CO
013 261 ♦
P.O. Box 310
Menlo Park, Ca. 94025
Page 30 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 March, 1976
85
6800 Tiny BASIC FOR $5
interface, as well as resolving some bugs in my Micro-8 Vol. 2,
Dear folks at PCC & Readers of DDJ 2 April 1976
Issue 1, page 11 article. I made the mistake of not indicating
I have gotten a version of Tiny BASIC up and running on
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¬ the 6800. It largely follows the logic and philosophy outlined in
ware, I’m interested in writing a “suffix” notation program¬ the PCC articles (saved a lot of time!), but I have enhanced it in
mable calculator, some sort of relocatable loader, and, perhaps, the following ways: two-byte line numbers, LIST can specify a
some sort of pseudo-assembler. range, semicolon formatting on PRINT, REM added, INPUT
I’m disappointed that there doesn’t seem to be any place accepts expressions, and RND and USR functions ( = machine
or journal that effectively supports the Mark-8.1 think there is language function call) are available.
a tremendous need for national journals specializing in individual The interpreter fits into a little less than 2K bytes (may be
microcomputers or at least individual microprocessors-and ROM) and uses a single JMP to each of three user-supplied I/O
teaching programming, solving problems, creating hardware and routines (character input, character output, and break test). I
did this as a commercial venture (software is my living), but
software for that particular machine. This would be very
I am asking only $5 for a hex tape (Motorola format) and 20
valuable for the individual user with that machine.
page User’s Manual. Please specify RAM-based (ORG at 0100)
Sincerely yours,
or ROM-base (ORG at E000, I/O preset for AMI “PROTO”
Thomas R. Amoth 228 Fox Rd
Media PA 19063 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
(215) 566-1068
to add extra functions. How about an assembler written in Tiny?
For a copy of this TINY BASIC for the Motorola and AMI
Dear Tom, We will try to publish everything of value that we
6800, send your name, address, and $5 to:
receive concerning the Mark-8. There is a need for machine-
Tom Pittman
specific journals, however the market isn’t yet there to support
P.O.Box 23189
them. (It costs much bucks to publish a quality periodical.) Of
San Jose, CA 95153
course, there are the manufacturer’s newsletters, and user
groups, but it seems to me they don’t meet hobbyist needs; PS As was noted in the TB articles, there is no such thing as a
particularly not inexpensively. We’re gonna try. free lunch. Software comes in the lunch category, but perhaps
Send us your software as you get it running so we I can offer you a cheap sandwich.
can share it with all Micro-8 owners. -JCW, Jr
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).
APL’S APPEAL If you wish for him to publish his Intermediate Language
code (IL) in the Journal, write him and encourage him to do so
Dear Dragons: soon.
I have an Altair 8K system (the 8K currently on vacation Tom - What do you mean by, “an assembler in Tiny?”
in Albuquerque due to MITS’ recall order). I hope that you don ’l mean an assembler that is written in Tiny
Incidentally, my favorite language is APL, although I know BASIC.
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 ERRATA
easier to attain. My initial bias against APL (and what I see as
your continuing bias) comes from my background-I started off The author of the 6800 version of Tiny BASIC was
on FORTRAN, so BASIC (an “extended subset of FORTRAN” incorrectly given, in one place in the February issue, as being
as Jean Sammet might call it) seems as natural as English. And Tim Pitmann. His correct name and address is:
old FORTRAN hand would likely see BASIC as the ideal language Tom Pittman
for beginners. You really should look into APL, and how it can Box 23189
be implemented on small machines. San Jose CA 95153
At least as a beginning, BASIC looks like fun, and is (408) 578-4944
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. Anyone out there know anything about Arrow Micro¬
Sincerely, 419 Simons Ave computer Systems in Farmingdale, NY? We’d like their address
Ed Luwish Hackensack NJ 07601 (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 AND NOW, TINIER BASIC
Would give away time on machine in return for help on
desired goals--Computer Graphic Animation!--software or hard¬ Dear Bob,
ware implementations. However, to be honest, don’t want I’ve almost finished my version of BASIC which will
total beginners for this project. Otherwise all time will be inevitably be called Tinier BASIC as it fits in 2K.
spent teaching instead of building. Any of your readers in the Cleveland area can join our
Sincerely, club, Cleveland Digital Group, by writing me or our president,
Charles R. Patton Alpha Electronics Svcs. John Rabat, 1200 Seneca Rd, Apt 407, Broadview Heights OH
8431 Monroe Ave. 44147. We are in contact with groups in Buffalo, Pittsburgh,
Stanton CA 90680 Toledo, Detroit, Lansing, Dayton, and Columbus, as well as a
(714) 821-4400 few others, and would like to get in touch with other nearby
groups.
Gary Coleman 14058 Superior Rd, Apt 8
Cleveland OH 44118
Dear People, Dragons, or whatever, 4-1-76
(216) 371-9304
I have some suggestions for articles you could include:
1) An article on how to get something (especially a
Gary, Hope you will forward Tinier BASIC to us as soon as you
computer program) copyrighted, and just what rights the copy¬
get it finished, so everyone can share it. --JCW, Jr
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). FORMAT DIALOGUE
3) Construction projects for ‘make-believe’ computer
peripherals. Gentlemen: December 9, 1975
One of my old PCCs says that PCC was trying to build a I’m not interested in the games or letters in PCC so I feel
model for a ‘recreational language,’ more suited to games and impelled to subscribe to Dr Dobb’s Journal. I wish you and the
simulations than other languages now available. I have tried to MITS people would change from the tabloid size. Newsprint
design one myself. I came up with lots of ideas and individual paper should not be used for anything worth keeping. I’ve
features it should include, but was not able to organize them copied everything I’ve wanted to keep out of PCC before it
all into a consistent whole. Were you able to do any better? I crumbles and turns to dust. Please change!
will write the compiler or interpreter if someone helps me Yours truly,
invent the grammar and syntax. Richard R. Kenyon 18609A Del Rio PI.
Sincerely, Cerritos CA 90701
Bruce Smith 57 Glenside Way
San Rafael CA 94903 Dear Richard, 12/31/75
Sorry you don’t like our tabloid format. We can’t afford
Bruce, Send me your ‘make-believe’ fantasies! And ... I to change. We operate on very little money with part-time
would very much like to hear your ideas about a ‘recreational people who are grossly underpaid ($2/hour?) and occasional
language.’ We would be very happy to publish random ideas volunteers. A newspaper of standard size is the least expensive
about this. Cheers, Bob Albrecht 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
SIGNETICS 2650 TINY BASIC teachers & students in secondary schools or college people--they
love the games & letters! Cheers,
Gentlemen, Bob Albrecht
I have a small system with a Signetics 2650. Using only
about 3K of the present 4K, “T.B.” works quite well (one or Bob, 1/2/76
two bugs present, but they’ll soon die out). Our preference for Sorry-I didn’t intend to sound like a chronic complainer!
expansion is to tailor software for use on wide-platen I do like your publication and was interested in a more
terminals (e.g., Teletype Mod 38) for much nicer plotting “filable” format and more permanent paper. I know I’m in the
(where time is not a factor). minority not being excited by games. Tiny BASIC stuff has been
2635 Littlaton Rd great and I marvel at the way it has been presented for begin¬
Melvin B. Smith El Cajon CA 92020 ners. (I did subscribe to the Journal-which is a positive indica¬
tion!) I would enjoy more material in this area-including other
Is your system a homebrew, or a commercially available kit? languages such as the SP/k family of PL/I subsets, math sub¬
Also, I hope you will choose to distribute your 2650 Tiny routines, etc.
BASIC via Dr Dobb’s Journal, as soon as you’ve finished I hope that you and the rest of the staff will not have to
fumigating it. We are eager to provide software support for maintain a shoe string existence with the growing, explosive,
non-Intel systems. It improves market competition, promotes computer hobby. Last, but not least, the artwork is outstanding.
the general welfare, and slows Intel’s rush towards being an Dick
IBM look-alike. -JCW, Jr
Dick- Ho, ho . . . is this better? -JCW, Jr
Page 32 Dr. Dobb's Journal of Computer Calisthenics & lodontia. Box 310, Menlo Park CA 94025 March, 1976
87
dr dobbs journal of $1.50
COMPUTER
C 60 alisthenics rthodontia
Running Light Without Overbyte
April, 1976 Box 310, Menlo Park CA 94025 Volume 1, Number 4
In This Issue. .
FEATURE ARTICLES
First Word on a Floppy-Disc Operating System 5
Command Language & Facilities Similar to DECSYSTEM-10
SYSTEMS SOFTWARE
MINOL—Tiny BASIC with Strings in 1.75K Bytes Erik T. Mueller 9
An outstanding implementation by a high school junior
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 lies will see a slowing growth, and l-squared-L will see, at best,
NEWS (Fairchild Publications, Inc., 7 E 12 St., a questionable growth. P- and N-channel MOS is expected to
NYC 10003; (212) 741-4230) increase from $728 million (in 1975) to $959 million. C/MOS
is projected to jump from $96 million (1975) to $153
DROP IN DEC ORDERS CAUSES LSI/11 - million.
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 MOTOROLA & AMD AGREE
recently told its creditors that the company had a "cash flow ON 2901 SECOND-SOURCE
position where it could not operate," due to drops in DEC Motorola Semiconductor and Advanced Micro Devices
orders (e.g., from $400K in March to less than $100K in recently signed a licensing agreement for Motorola to second-
April. A vice-president from DEC indicated that, although source the bipolar, bit-sliced, 2901 microprocessor family
their LSI/11 sales had been going as expected, they could not developed by AMD. This makes Motorola the third second-
afford to continue to buy in the same quantities they had in source for 2901's. Others include Ratheon Semiconductor,
the past. Evidently, DEC had been purchasing more than they and the Sescosem Division of the Paris-based Thomason-CSF.
were using; they indicated that their inventory was filled to
capacity. The creditors’ committee recommended giving West¬ FLOATING POINT SOFTWARE
ern 30 days to rectify its financial position. IN P/ROM's FOR 8080's
Editor's Note: If I remember correctly. Western agreed Recognition Systems in Van Nuys, Cal., is offering a
to sell their chip only to DEC. If DEC really wants to keep floating point package in P/ROM's for $495. A number of
Western afloat, as appears to be the case, then DEC could try routines are included: floating point multiply, divide, add,
releasing Western from that exclusive sales agreement. My sus¬ subtract, fixed-point to floating-point conversion, square root,
picion is that, if Western were free to peddle their PDP-11 and floating-point to binary-coded decimal conversion.
look-alike microprocessor to everyone who wished to buy it,
they could cure their financial problems rather quickly. MONOLITHIC MEMORIES OFFERS
MICROPROCESSOR-BASED NOVA COMPETITOR
NATIONAL'S SC/MP KIT FOR $99 Monolithic Memories, Inc. of Sunnyvale, Cal., recently
National Semiconductor has a microprocessor kit avail¬ announced a 16-bit microcomputer that is said to be both
able for $99. This includes their SC/MP m-p (46 instruction software and I/O compatible with Data General's NOVA 2
types, single- and double-byte instructions, built-in serial I/O and 3. MMI expects to be producing about 50/month by mid-
ports, bi-directional 8-bit bus, parallel data port, and latched, July. The systems will be priced at $2500 in quantities of 50
12-bit address port), a preprogrammed 512-byte KITBUG ROM or more, including 32K words of memory. The systems use
(monitor and debugger), 256 bytes of RAM, TTY interface four of MMI's 6701 four-bit bipolar microprocessors. The 32K
(including buffer and driver for 20mA current-loop), voltage word memories use of 128 of MMI's 2180 4K RAM's.
regulator, data buffer crystal (1.0 MHz), complete literature There is also a rumor of a NOVA-on-a-chip in the fore¬
and schematics, and all the passive components and a PC seeable future.
board required to build a wee microcomputer. Contact
Semiconductor Concepts: 145 Oser Ave., Hauppauge NY 8K PDP-8/E MEMORY FOR $650
11787, or 21201 Oxnard St., Woodland Hills CA 91364. WE Computer Extension Systems of Houston has an¬
Any computer stores carrying SC/MP kit? 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.
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 Floppy-disc drives.$550-$65Q
We expect to carry more information, including firm prices,
We have the first tidbits of information on the floppy-disc and one or several articles by Dr. Kildall in near-future issues.
operating system to which we have alluded in past issues: From our experience, this is the hottest deal going! It's
The system, called "CP/M," runs on an 8080. It is available cheap, as far as floppy-disc systems for micros go. The software is
from Digital Research, Box 579, Pacific Grove CA 93950; well-designed, based on a well-known and easy-to-use operating
(408) 373-3403. Its user interface is patterned after that of the system that has been around for a DECade. Additionally—major
DECSYSTEM-10. The file commands include RENAME, TYPE, points worth considering—it has been in use for some time, it has
ERASE, Dl RECTORY, LOAD, and auto-load/execute facility been used by a number of people, and it is fairly completely
(type the name of an object file; it will be loaded and begin debugged. We know Gary personally, know 'where his head's at,"
execution). File-names follow the DEC standard of a 1-8 character and know that he backs his products and is responsive to his
name with a 1-3 character suffix. An Editor is included that has customers. Incidentally, he has an excellent and ongoing working
somewhat the flavor of TECO. There is a PIP facility that allows relationship with Digital Research.
easy transfer of files to and from any available device, e.g., You should very seriously consider obtaining a floppy disc
terminal, paper-tape I/O, cassettes, floppy discs on any drive, etc.. subsystem—hardware and software— for your home computer
Note: PIP is DECeze for Peripheral /nterchange Program. Other (either Gary's or someone else's). A short-access mass-storage fa¬
systems software is likely to be included. cility increases your capabilities by several orders of magnitude,
Internally, the system allows for dynamic file allocation of particularly when it is backed by comprehensive, well-designed,
files ranging from 0 to 250K bytes in length. It is initially set up debugged systems software. Note that the IBM 650 (the Model T
to allow up to 63 different user-defined file-names (CP/M system of computers, and the one that moved computers out of the
files do not impinge on this file-name space), and can be simply laboratory and into mass production and widespread usage) had a
modified to allow up to 255 such file-names. The system is main memory that was a 2000-word rotating drum with access
written in PL/M. At an absolute and rather undesirable minimum, measured in milliseconds.
it will run on 8080's with only 8K bytes of memory. To be
[The Dragon sez we should tell you that the 650 had 2000
really usable, it requires 12K or, preferably, 16K bytes. The
ten-digit words. Think of it as about 10,000 bytes.]
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 | A PLEA FOR EXPLICIT DIRECTIONS
modular that its designer feels he can easily modify it to operate
on most floppy-disc drives and with most floppy-disc controllers. t Dear Jim Warren Jr., 4-27-76
This system already exists and has been in use for over a My problem is interfacing (hooking all the components
year. It was originally designed and implemented by Dr. Gary I together so they work as a system). For instance, I can find no
Kildall, a Computer Science Professor at the Naval Postgraduate | where instructions on exactly how to hook my SWTC keyboard
School in Monterey, and a well-known, independent consultant in and TVT-li up to my Altair through my 3P + S and 22" video
the area of mocroprocessor systems software. Gary is also the I monitor. I don't mean a few general instructions. I mean a wiring
designer and implementor of PL/M, the "industry standard" high- I diagram showing exactly which lines go where so all the strobes,
level language for microprocessors. PL/M was produced for Intel I waits, readys, etc. work together. The same is true of my suding
for their 8000-family micros. Gary recently completed PLuS, a I cassette interface. Then, if I order a tape from John Arnold what
language for the Signetics 2650 microprocessor that is upwards- I do I have to do to get it to work. I have no trouble building the
compatible with PL/M. Incidentally, since CP/M is written in parts and getting them to work, but nobody will furnish me with
PL/M, and PLuS is--for the most part--a superset of PL/M, Gary , comprehensive instructions on putting them together into a
feels that it will be relatively simple for him to make this operat¬ I system.
ing system also available for 2650-based systems. I Sincerely,
It is expected that Digital Research will offer all of the parts I John Greiner, Jr. 20002 S 57th
for an inexpensive floppy-disc system, ready to build (kit), and/or I Temple TX 76501
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, SAN FRANCISCO BAY AREA STORE:
however these are the conservative estimates: COMPUTERS & STUFF of San Lorenzo
CP/M User's Manual + Editor User's Manual + CP/M
Interface Manual.$15 Computers & Stuff, a new retail computer outlet, has opened
Extensive systems documentation package.$35 at 664 Via Alamo, San Lorenzo CA 94580; (415) 278-4720.
Formatted, verified, "loaded" disc.i.. .. $20 Its hours are: Wed. - Fri., 4 - 8 p.m.
Note: a "raw" disc costs about $8
Sat. - Sun., 1 - 7 p.m.
Floppy-disc controller.$100-$350
April, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 5
91
Hardware & software for speech synthesis
by Lloyd Rice Computalker Consultants "It was a dull subject," and "They were going to subject him
821 Pacific St., No. 4 Santa Monica CA 90405 to cruel punishment." It is not evident from the spelling
The process of generating voice output with a computer can which usage is intended, and requires that a fairly complete
be broken down into several steps. We will examine the opera¬ grammatical analysis be carried out to make that decision. One
tions at each step to determine the flow of information into advantage at this point is that good use can be made of the
and out of the step. This examination will give us the back¬ recovered grammatical structure in the next step, where a more
ground needed to decide which parts of the overall process elaborate assignment of stress is performed.
should be wired into a hardware device, and which parts The second step in the synthesis process deals with the
should be kept as software to retain flexibility and control assignment of sentence stress levels to the phonetic text string.
over the process. Perhaps the easiest way to carry out such an To clarify that operation we will first have a closer look at
examination is by following an example phrase thru the sys¬ the nature of the linguistic feature known as stress. The
tem as it is transformed into a speech signal and sent to the strass will be coded as a numerical value attached to a vowel
loudspeaker, resolution of grakmatical 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¬
Figure 1 shows a flowchart of the speech output system nation pattern by the speaker which is then decoded back
to be described. We will see that the kinds of external infor¬ into the phrase structure by the listener. Using the term
mation needed for the first 2 steps is quite difficult to obtain "grammar," I am here including several kinds of information
and can require large amounts of processing, whereas the in¬ about words, such as the noun-verb distinction discussed
formation needed in the third step is easily determined, and above as well as syntactic information about the phrase and
in most applications can be set as constants in the system. clause structure. The second function of the stress pattern is
Finally, the acoustic parameters contain all the information to indicate which item or items in a sentence are to be given
necessary to control the last step, the actual synthesizer, to special emphasis. The meaning of a sentence can be shifted
produce audio output. As a result of these observations, we around by emphasizing different items. The sources of infor¬
will see that is most cases, one should specify the material to mation needed for marking these two components of the
be synthesized in the form of marked phonetic text rather stress pattern are quite different and must be considered sep¬
than raw English text. In order to present a more complete arately. Our example, with the stress pattern marked, would
description, however, we will begin with the first step shown be something like, "DHIH3S/IHZ/KAHMPYUW1TER/
in Figure 1, input of English text. SPIY2CH.#". Notice also that the word and utterance bound¬
Beginning with the sample text, "This is computer ary markers have been kept explicitly in the text string.
speech.", we first consult a phonetic dictionary, which per¬ The purpose of the portion of the system described thus
forms a direct translation to phonetic text. A phonetic coding far is imply to generate strings of phonetic text with marked
scheme suitable for this purpose which is compatible with the stress patterns which are to be synthesized by the 2 steps in
ASCII character set and Teletype output was developed by the bottom row of Figure 1. Marked phonetic text strings can
the Advanced Research Projects Agency (ARPA) as a part of be obtained in other ways, of course. In the case of pre¬
a recent speech recognition study. That phonetic code, known determined phrases, marked phonetic strings can be stored
as ARPABET, is listed in Table 1. The output of the phonetic instead of raw English text, making the synthesis task much
dictionary in our example would be, "DHIHS/IHZ/KAHM- simpler. On the other hand, consider synthesis of speech from
PYUWTER/SPIYCH.#". an information network of some kind. The grammatical infor¬
The main problem which arises at this stage is due to mation could come from a phrase struo jre grammar which is
homographs, words that are spelled the same but pronounced being driven by relationships in the network. Items in the net¬
differently. Two different types of homographs, however, pre¬ work would be coded as phonetic strings, or in essence, refer¬
sent quite different problems. The first type consists mainly ences to the phonetic dictionary described above. There are
of short words such as "bow," pronounced either as in "tied many significant problems remaining with this approach, but it
a bow" and "bow and arrow," or as in "off the starboard is perhaps one of the more exciting applications of synthetic
bow." In these cases, the pronounciation can usually be re¬ speech. The third box in the flowchart in Figure 1 is the acous¬
solved by examining the surrounding context. The other type tic rules section. In order to describe what the acoustic rules
of ambiguity is a lesser noticed but very widespread phe¬ are and what they do, we must first look at the acoustic
nomenon in English: the situation where a word has a differ¬ structure of speech. The speech code must be broken down
ent stress pattern depending on whether it is used as a noun into components so it can be synthesized by controlling, in
or a verb. As an example of this, notice the difference 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
phoneme
Computer Representation __J! __ L Computer Representation
Example
2-Characters
Table 1 L-Character 2-Characters -Character
- ■■ ■ --t
i i IY beat P P P get
COMPUTER
I I IH bit t t T ten
PHONETIC k K kit
e s EY bait k
E EH bet b b B bet
REPRESENTATIONS c
« a AA Bob g g G get
NOTE: Spaces
A AH but h h HH hat
are ignored
A
w r shut
U u UW boot s or f s SH
a X AX about V V V vat
roses D DR that
i X IX *
jT R ER bird z z Z zOO
V
aU or aw W AW down z or 3 z ZH azure
V
al or ay Y AY c C CH church
V
ol or oy 0 OY boy J j JH judge
Y %OU H WH which
y y
non-speech
segment J 1 I laugh, etc.
Word boundary
* ** Comment (anything except * or **)
/
1 1 Apos--surround special symbol
* Utterance boundary
in comment
3 Tone group boundary
STRESS REPRES ENTATIONS (IF PRESENT MUST IMMEDIATELY FOLLC>W THE VOWEL)
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, described in the forthcoming Byte article. The synthesizer
is a symbol representing one or more acoustic speech segments, constructs an audio frequency signal as specified by the con¬
each such segment being produced by a particular pattern of trol parameters. The audio signal is then sent to a loud¬
values on the control parameters. Each pattern, or configura¬ speaker as the speech output.
tion of control values, must be held for a specific length of It would be impractical to consider simulating the syn¬
time before changing to the next pattern. As a first approxi¬ thesizer module in software because of the speed needed to
mation then, the rules would consist of a series of table look¬ generate speech in real time. That task is much more appro¬
ups to convert each phoneme into a sequence of parameter priately handled by analog hardware. Such a hardware syn¬
patterns, along with the duration each pattern is to be held. thesizer module is currently being developed by Computalker,
Now comes the catch! This first approximation makes 821 Pacific St., No. 4, Santa Monica CA 90405. The Compu¬
rather poor speech. The problem is that the transitions be¬ talker synthesizer module would be driven by the microcom¬
tween parameter values are often more important than the puter output data bus as described above. The software inter¬
actual values at any given time. The flow of parameter values face consists either of a direct, manually-controlled parameter
must be more carefully orchestrated. Actually, the only tough pattern generator or an implementation of the acoustic rules.
problem here is that correct transitions between phonemes are Software for the acoustic rules will also be developed by
just as important as having the correct temporal structure Computalker as the hardware becomes available.
within a phoneme. This means that phonemes cannot be I believe it is important to consider at this point some
coded as independent sets of parameter time functions which of the trade-offs involved in implementing the acoustic rules
are merely joined together sequentially, but that some interac¬ in software rather than hardware. A synthesizer system such
tion must take place between phoneme patterns before they as the Votrax VS-6 contains a hardware implementation of the
are sent out to the synthesizer module. Briefly, the different basic acoustic rules. As a result, the language available for
phonemes of a language can be classified according to the coding the phonetic text is fixed and cannot be extended. In
effects of boundary interactions. The transition of each param¬ addition, the phoneme table values are fixed so that each pho¬
eter value across a given phoneme boundary can then be de¬ neme has a set phonetic quality. By implementing these rules
termined from the boundary characteristics of each of the in software you could retain the flexibility over pitch pat¬
neighborhing phonemes. Such boundary behavior information terns and speech rate and also have control over the phonetic
can be stored in phoneme look-up tables. qualities which determine the language and dialect. The acous¬
In addition to assigning initial parameter values and tic rules determine a number of qualities in the resulting
mapping the transitions across boundaries, the acoustic rules speech which are characteristic of a particular speaker, such as
must also assign and modify durations. For example, a the sex and age, and other qualities which vary from occasion
stressed vowel is given a longer duration than the same to occasion, such as voice quality, speaking rate, distinctness
vowel in an unstressed position. of articulation, etc. Because of time constraints, a software
A third function the acoustic rules must perform—proba¬ version of the acoustic rules may not have time to handle all
bly the most important for natural sounding speech—is to as¬ these possibilities as on-line variables. Of course, it is cheaper
sign the time pattern of values to the pitch frequency to produce a synthesizer module if a hardware acoustic rules
parameter. First, an archetypal intonation pattern is chosen on system is not included.
the basis of punctuation (retained in the phonetic text just How could speech output from a microcomputer be
for this purpose). A period selects a falling pitch, a comma used? Several applications come to mind for the hobbyist
signals a level pause, and a question mark indicates a rising environment, such as responses in games, voice readout of
pattern. Other diacritical marks could be defined in the pho¬ measurement data, system status warnings, etc., etc. Other
netic string to generate more complex pitch patterns such as applications might include telephone answering and intrusion
singing. The selected archetypal pitch pattern is then modi¬ warnings. What about generating audio tape labels automatical¬
fied locally by specific phonemes. Such local modification of ly? Each of these applications makes its own demands for
the pitch pattern is one of the effects of a stress level marked quality, naturalness and range of vocabulary needed. I would
on a vowel. Also, some consonants affect the pitch value very much like to hear of your interest in computer speech
slightly. output. What applications do you have in mind? What prob¬
To complete the synthesis process, the acoustic param- lems do you foresee? A note to the above address will
eters generated by the acoustic rules are output, in real time, assure that you receive further information as it becomes
to a synthesizer module such as sketched in Figure 2 and 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 PR 56+!/A,B
DONE BY A HIGH SCHOOL JUNIOR PR
A semicolon at the end of a PR suppresses CRLF. A blank
Dear Mr. Warren: May 1, 1976 PR produces a CRLF.
I have a Tiny BASIC program running on my Altair PR Format: Numerical values are printed with one lead¬
that I think you might be interested in. I call it MINOL ing and trailing space and with all leading zeros suppressed.
(mine-all). It fits in 1.75K memory. Unlike the other Tiny All strings and literals are printed without leading and trailing
BASIC's, MINOL has a string-handling capability, but only spaces. No zone spacing.
single-byte, integer arithmetic and left-to-right expression GOTO<expr>
evaluation.
Transfers control to the specified statement. GOTO 0
Additions to TB include CALL machine-language sub¬
transfers control to beginning of unnumbered statement.
routines, multiple statements on a line (like TBX), and
Ex: GOTO A*10
optional "LET" in variable assignments. Memory locations of
GOTO 78
the form (H,L) can be used interchangably with variables, per¬
mitting DIM-like operations. IF<expr> <relop> <expr>;<statement>
Sincerely, Executes the statement following the (semi-colon) if
Erik T. Mueller 36 Homestead Lane the specified relation is true. If it is untrue, control is trans¬
Roosevelt NJ 08555 ferred to the next statement on the line (if present).
Ex: IF X=5 ; GOTO 20
MINOL is an abbreviated form of BASIC with additional IF A='Y' ;PR"SURE, WHY NOT?"
features. It has twelve statements: LET, PR, IN, GOTO, IF, IF A+B*C # !;GOTO 20 : PRA+B*C
CALL, END, NEW, RUN, CLEAR, LIST, and OS. IF Y # 6; S=!
Variables: A letter from A to Z, or a memory location IN [< var> |<str>] [,[< var> |<str>] ] *
of the form (H,L), where H is the high address (decimal), and This statement permits two types of data to be entered
L is the low address. H and L may be expressions. from the terminal: a) Numeric data; and
Number: An integer from 0 to 255. b) Alphanumeric data; either a single
Expression: A series of terms separated by arithmetic letter, or a string of n characters.
operators. Using a <var>: The input data is tested. If it is numeric,
Terms: Numbers, variables, schars, random. the number is deposited into the variable. If the data is not a
Schar: A single character enclosed in single quotes. Gives number, the ASCII value of the first character typed is
the ASCII value of the character. deposited.
Random: "!" (exclamation point) gives a random num¬ Using a <str>: (of the form $(H,L) The inputted char¬
ber between 0 and 255. (Subroutine by Jim Parker.) acters are deposited into memory sequentially starting at loca¬
Arithmetic Operators: + - * / tion H,L. 255 is placed in memory after the last character
Relational Operators (not permitted in expressions): before CR. All spaces inputted are ignored unless enclosed by
= # < ("less than") quotes. Note that (H,L) refers to a single location, but
Arithmetic Evaluation: All expressions are evaluated from $(H,L) refers to a series of locations beginning at H,L. (H,L)
left to right (no precedence of operations). can be used in expressions as a variable, but $(H,L) can only
Statements: A statement consists of one or more sub¬ be used in I/O statements (IN, PR).
statements separated by (colon), and terminated by CR.
CALL (H,L)
Lines up to 72 characters. Line numbers from 1 to 254. All
Calls users subroutine starting at location H,L decimal.
statements may be used with or without a line number.
END: Terminates program.
Statements without a line number are executed immediately.
NEW: Deletes all lines of a program.
Statements with line numbers are edited into the existing
CLEAR: Sets all variables (A-Z) equal to zero.
program.
RUN: Starts execution of program at lowest numbered state¬
Substatements: [LET|tJ> ] < var> = <expr> Assigns the
ment.
value of a variable. The "LET" can be left out if desired.
LIST: Lists program in memory.
Ex: LET S = 0
OS: Transfers control to user's operating system.
LET (24,0) = P-59
A=B+C*J-198 Line editing and correction:
(25,5)=A*7/B Typing Xs deletes the last character typed.
PR <var-list> [; | cf>] XL deletes an entire line.
<var-list> : Literals, strings, or expressions separated by Xc stops executing program.
commas. Prints: BREAK AT LL (LL is the line that was to
Literal: Characters to be printed enclosed in double be executed before the
quotes. interrupt occurred.)
Strings: $(H,L): A series of memory locations starting To delete a line, type the line number followed by CR.
at H,L which contain characters previously entered. To change a line, type in the line with changes. The new
Expressions: Simple variable or expression. line will replace the old one.
Ex: PR"YOU SAY YOUR NAME IS",$(10,0) ERROR MESSAGES !ERR L AT XX
PRA,B,(6,0), 1. Label does not exist
April, 1976 Dr. Dobb’s Journal of Computer Calistheni & Orthodontia, Box 310, Menlo Park CA 94025 Page 9
95
2. Input is over 72 characters. altered.
3. Unrecognizable statement type. Must CALL, INT 315
4. Illegal variable. 363
5. Syntax error. 002
6. Out of memory. This checks for keyboard
EM MINOL 2.1 SYNTAX Apr. 1976 interrupt (Xc).
< line> :=< number> <statement> cr | < statement cr 000 116 - 006 377 MINOL Interpreter
<statement> :=<substatement>* : <substatement> 000 253 L Highest memory location available
< substatement > [LET |(J>] <var> = <expr> 261 H for MINOL programs.
PR <expr-list> [;|<j>]
001 142 L Address of user's operating system,
IN <var-str-list>
143 H or monitor.
IF <expr><relop><expr> ; <statement>
GOTO <expr> All input text is stored at 006 210 - 006 320
CALL <memloc> Free speace is left for short strings at 006 333 - 006 377
END Variables (A-Z) are stored at 005 007 - 005 042
RUN 007 000 + Program storage
LIST Executing MINOL:
NEW To start MINOL and initialize program area, EXAMINE 002 350, RUN.
CLEAR To start without initialization, EXAMINE 000000, RUN.
OS
<humber> =<digit>*2 <digit> Dear Jim: May 24, 1976
<digit> =0 h |. - Is |9 I am enclosing the listing of MINOL—manually typed!
< var> Y Z < memloc> There are several features of my program, both positive
<relop> :< and negative, that I might point out.
<expr-list> = [literal > | <expr> ] < str>] [,[<jitergl> j On the plus side, MINOL uses only 1.75K of memory,
<expr> | < str>] ] * including the input-output subroutines (although since writing
<var-str-list> :: = [< var> | < str>] [;[< var> | < str>] ] * it I see how I can make it even smaller.) Memory locations of
<expr> ::=[<termXaroper>] * <term> the form (H,L) can be used similarly to one- or two-dimen¬
<term> ::=< var> |<number> I '<schar>' 11 sional DIMs in higher BASIC's. Simple input or output strings
< literal > ::="<char>*'' are possible by specifying a series of memory locations—of the
<schar> ::=< char> form $(H,L) where H,L is the first location where characters
<str> ::=$ <memloc> are to be deposited. I am enclosing three programs to illustrate
<memloc> ::=(< highadr>,< lowadr>) these features. On the negative side, the
<highadr> ::=<number> program is not designed for arithmetic functions, having no
<lowadr> ::=<number> grouping of operations, and being limited to a value of 255.
<char> ::=any character except " and cr The relational operators are restricted to =, #, and <, although
> ("greater than") can be done by reversing the logical expres¬
Notes: < >encloses an element of MINOL sions. Fewer error messages are provided than usual. MINOL is
(J) is the empty set written completely in machine language without using IL.
repeat limited by length of line
*2
repeat from 0 to 2 times When I can supply MINOL on a cassette I'll let you
MINOL know. You might like to know that I am in my third year of
Memory Allocation: high school.
(All locations are split octal) Yours truly,
000 - 000 115 I/O Routines, etc. Erik T. Mueller Britton House
System Reset: 000 000 061 LXI SP Roosevelt NJ 08555
001 377
002 017
Additions/changes since the May 1st letter:
003 317 RST CRLF
004 Spaces are ignored: a. During line/statement entry
303 JMP, MINOL
005 unless enclosed by quotes.
116
006 000 b. When inputting variables.
CRLF: 010 c. When inputting strings if the L
A subroutine to output a
address is zero.
CR followed by a LF.
INPUT: 020 Spaces are accepted: a. When inputting strings if the L
Moves a character from
input device to the A reg¬ address is non-zero.
ister. Parity equals 1. b. When enclosed by quotes.
Must output an echo Instead of GOSUB/RET statements, use the following
check of the inputted substitute statements to perform the same function:
character. First initialize the GOSUB stack pointer Y,Z:
OUTPUT: 040 Outputs character in the 2 Y=14:Z=255 (Y and Z are the H,L address of
A register. Parity equals 1. some free space in memory.)
No registers may be 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 On a directly-executed IN statement, although the data
< subroutine label> will be correctly stored, an error message may appear after
its execution.
Instead of a RET, substitute: Z=Z+1 :GOTO(Y,Z)
The monitor gives a "]" as a prompt. The IN statement
Free space is left for very short user's strings from gives a "?" unless a sense switch is up.
006366 to 006377. 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?XC
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
<D
c
P
§
u cji 3 u
10 «3 P^- A
JG ii d •• 3
u 0 P
P ra p
<0 S3 O
<M U 4? 0 OS
*H O H *H O
P A ^ 0
^ P (3 ^ P
O 4) -H U
4> H >. 3 Q
X « ,n
O > 0 a
eg
Z
H os
8 a
8 o o
H a z O O CQ
o <
vO Eh
O ^
<
•
2
Q
O
W W r"
- * r"
i w Q D m Q ^ w
H <h .. w r- CQ < h w e< «' W O M O O KT O
fN O < p CQ CQ CQ O < n
Oi §qu! iQ^O^^QOCrHCO
• EWOr^D • cq
< WCQOEhQ nOfDQOf
HQDU^Wc!|
5 Z Q
y
u < s OS
NOT
NOT
SEC
1
0 § a
H
8 A S3 Pk
ft*
M
a
Gl Qw
JQ<0 0
D>
•H p
n
<a <TJp
to >
n CD
A 4-1
E o
u
«
o
u
X0)
*0 p
>o up •o
< p
c cS
H W
p —
s P
c
*H
cu * p
8 A
CS
oEh
oQ «/)
8 § o § o
n 0 0=1 OSts = Kc; : OS2 = OScs = < < H O W £o< £ w y o o “HO< WO e~O'
5 t3 ^ < E-* *ffl O Q J • ID ' J 'SO
— ^ Z vo -J -too
JO<
a m z
Z >10 -0000
** • H w
£W[COXS:o< „
d s s: m m i
« iWCQWCQKQWfQ
•• * 5J H < eg o K < UChUWhnu2<U£hWh<(NMsS2o
to ra o« o
• » < O•• Q H WO
Q n K o• Qw UO Ho ro
< > O Eh C0 Xi > H > X > A ’«*
!ODOj^o3p; >sdouo2u> °'>H>XXXd><0<HWHHH>QSfc
*X>O.H( ia.HftHfcHD.H
N Z O £ P> : ;£>£>£>£
:^sos^so QO<c OO^^wVw-w
0 r. odozzz-<oehowdxd>o3uo O ft N 1
JSUOJfcQSWSlQSUb bSwSHHHostoaSftdBisjQxoi JUKI
■o<* ■otf •«*o <fro in in "d* in kj-
o o o c oo oo 00 o
00 o
oo r"HvorgvorOiO,'tiOiniOiO in O H O eg ro O O O O
eg
iniocgvoejioojvorgiorgio
0''gegrgegrgegegegrv.egeg
O O eg
H m n
f"
H
VO
eg
vo O O O ro vO
eg n o r*
iD eg o eg
[■"HO
000
r"
f"
0 ro O O ro eg onoo O n 0 n
H in eg in ["• in ro vo vO r" n vo in eg VO VO ro vO
nYWUUUUUUOO! eg H r" 0 h 0 <n in [■" eg 0 in HfOHHMlOOl
H ro H ro O eg in m h n r- h ■
rooHroomorooroof O ro 0 H n n n 0 H n H O H ro ro O O n ro gonnnonn<
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
HHHHHHegegrgegcgr 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*
22992990000< O O OOO OOO O O O O O O O O O O O o o 00 ooooooooooooooooooooooooi
O O OOO OOO O O O O O O O O O O O ooooooooooooooooooooooooooooi
OS H eg ro
O o M
OS Pi ps
I
wi
K
m
2
w
2
w % p. 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
X
0—
3
3 UJ a
O X
UJ
o •>. ZHI-
« 3 UJ 0-4
CO or u. or
w
based microcomputers «
* or
IsJ
o
X
or
UJ
>-
* o UJ
or uj
o co a
a
■K 1— X X 3
by Charlie Pack, 25470 Elana Rd., Los Altos Hills CA 94022 3 8— UJ X
* CL oc x o y-
X 3 UJ 1-4
* o a U. CD 3:
After developing an 82-byte octal loader using nothing o o
* o •h.
or ■ « <
but the switch panel on my Altair 8800, I concluded that a * o to CO uj
M X lu or i
system monitor was needed to provide better communications * X x «x a:
or >- m
between myself and my machine. The required functions were: « Q cd CD X <C
UJ » o or
(1) display the contents of one byte or any segment of * ru co 3 or aO O z
ru c UJ CL -£> X e
memory in octal, (2) display the contents of all registers, * 0c > r- uj
9 uj or X CO UJ
(3) enter programs in octal from a keyboard, (4) load and * O 3 UJ x X
CO X to cr X
store programs or data, and (5) jump to a program. The I/O * O UJ x nr lu X tc
device to be supported was an ASR-33 Teletype with paper- co CD o 0-4 X o
* <£ U X 3 X
tape reader and punch. The Monitor described in this article Z 3 x o CO u
* <r CD CO Ul z <t
meets these requirements. z X -3 «s. UJ
* O -3 o 1— UJ
Since the Monitor has several hundred statements, and Z —8 UJ W o z K
* <1 CO X f—« O
the memory in my computer is limited, I needed a cross- UJ 3 CO X U
to or z UJ = o
assembler that would run on the computers and with the soft¬ £T UJ i—i UJ LD CO <s CO
1—
LD
co CO X CD 3 0-« X CM
ware to which I had access. So, I wrote one—would you be¬ o 3 O a 0-4 O
3 •3 Z to UJ CD
lieve—in COBOL?!! The program listing for the Monitor was CL UJ X <c lu «s a 0-4 C73
y X o UJ = x o
printed musing my COBOL cross-assembler. Since COBOL is o 1— UJ nr x 0 <
o co X 1— X o UJ 3 UJ O
rather inefficient at non-structured string handling and sub¬ o o Z X «f X UJ 3 <r X
a UJ X X Ul x >-
scripting, I made the source format fixed and eliminated o UJ X 5— or X O CD ra
3T <C UJ c_j o a
punctuation. Register operands were made a part of the in¬ *— >- s o -3 a
UJ 3 or O 3 •• UJ UJ
struction code, for example MOV AM moves a byte from o o CL < 3 UJ X co UJ a
LU a Z a Dr or z or
memory to accumulator. Otherwise, the microprocessor in¬ to CO *-« to UJ o o
M
X to
Z X n X O a i— 9-
structions are normal. The only pseudo-instructions used are CO o or 3 x z a 1— *—» o
8 0-» u_ -a 3 LJ u CD T—
CO
ORG, DB, and DW. ORG sets the location counter; DB de¬ o X X UJ z CO z c 0-<
CO <1 z »-* G 3 O
fines a single byte, and DW defines a doubleword (two bytes). O «_> X 0—» LU o U a
to c a X U 3 1— 3 3 03
Since it is difficult to do octal arithmetic in COBOL, the bells f*- z o ”3 0 O CD UJ O 3
or 53- 3 . C CO t~* X o CO a X
and whistles were left out of the cross-assembler. o in X 3 or X CO UJ UJ UJ LD O
rvi X -a. CG <t LU CO z X O 0
A paper tape of this system is being delivered to the Q *-h 3 OC or co LD 4— ■3 LU ©
or o or to o <3 M PO a T3
Program Repository at the Community Computer Center, o UJ o O 8 CO X e CO <i 0
o LU tO <1 a 1— LU UJ or ^ -3 =>. £
1919 Menalto, Menlo Park CA 94025. <s o a or O o 3 ^ o
a 0-1 -3 O o u <r a a O
o > Z or UJ UJ CO or i— x <r • LU
y UJ o or UJ Z CD »—i UJ t_> or a LU a 63
or o X ld a o O CD a <t
z a CO X ►-4 X or X >- < a
UJ UJ UJ o CO o o Z UJ UJ »-
O CL o
to x 0- X • or or uj
x o « o < 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 IJLS- o a* X c co a a X 4-
UJ 1— UJ 1- c 0- X • 0-1X 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
0
x a a co -3 CD E
a X > LD UJ *—« X X CO ►— 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
UJ X CO *-» o -3 to to o a Z <a z z CD O ~5
•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 S4® _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: »— L2 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 8-4 U U
UJ 3 UJ ffi UJ ffi o
© 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 CO ft— CD
ft- 3 ffi
•«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 H8 9-8 O *-» 8~* ffi 9—a CO 8—9 It 9 9-» O >- X o U Z
z 8-9 o ** 8J 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- *8S 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 5E
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 w8 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 we PV
O ft- vO N 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 w4 JJ CM 3 (M 3 <S 3 © CM Q PS, X o -4 3
o 4 to o o o (3 CD © CD o SOM8CE £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 4 -4 <?
3
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 ® © ® ©
ft—
3
9
7
Page 24 Dr . Dobb's Journal Computer Calisthenics Orthodontia, Box 310, Park CA 94025
of & Menlo April, 1976
110
ui
u
Ui
< -8 a
£T Ui
o 19 O 3 S—
z • O z Z 3 X
AC < UJ cc < ft- *-« a. ft- o
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 —1 CL CO Z ►-*
DUO M w m a z UJ W CL •4 UI ft- UJ 3 O
r mz _s CD <S O O X CL <£ :» b— s~8 ft- O
3 O <S £L UJ «o 9- «? Q to ZUtD 5-0 6—
O X 0L cr co cl UJ CL O CO £L 8-8 <1 CD CO
u_ir 3 Ui o OC z o ota Ui O CL tf> ft- -3
< < o » ZQCH O *-4 O QC ft- -v <S -« »-* _l
6~ U 9 M Q M -J CL 19 O *-o Ui UJ UJ X ft- UJ P* Ui ft- O
o o OC o z co a. Z Q Z ZD 3 P* t- 3 t_> tO 3 ft- 3 < M 6-
ft- o o UJ w < o UJ X M <5 O CM 8 or CL ft- O £L O ft- OC <L O O O
ft— CO CO X CO UJ CL z X 8 8 w Z K UJ I M K IS »- CO CO
Ui tO 3 UJ UJ CO Z UJ z UJ 8 es 19 X ►— 19 *-<> 6- *-
S- 2 CL £L 2 uJ CO UJ fr-* cr z M U. U. I— U- H 1l O U. M w
>- >- or «s O D w OC < 3 z 19 3 *-• Qm m UI On W CO CD UJ *—•
2 M
35 < D Cl CO I X Ui CO X = _J O UJ S— Ui *~ X
Ui
_S ft- o <1 J- ft- o ft— CD ft— 8 8 QL CL ft- fL CL o oo.za»-uo>- li-O UJ CL
Jj CL UJ oc o: t- 3 8 8 p- x p* x COXP-XXO [£ I O 1 < UI «s UJ ac x
2:
> to a H ^ 5 UJ -«i o 8 T9 Q3K3 aorooua j «— 3 o 3
o *-« UJ <L to f- o Gt •-9 Ui Ui X ui o o
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 ft—
o X ft- z ft- z O X 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
(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
Lli
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 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 —>
a: o
DO s ts 53 8 8 63
3
=5 >- CM rO CO ©
O
O Q. 8 8 8 G? «s S3
CL X ft— ft— I— ►—
o O O o
(O ■*
* * * * * * O -*! O * a o o o
Ui ^ CM CM S3 (\J S3
CM — CM CM CM S3 s> S3 CM S3 S5 s
o S3 Si o (9 03 ® S3 S5 S3 S> S3 S3 65 S3 <S S3 IS 6B S3 s
o SJ S3 65 S3 S3 S3
65 ® © S3 S3 «S 63 S3 S 65 s S S3 s
o
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
o —» fO <von r> CM Si S3 fO S3 ro S3 »o ro S3 CM rO 63 to CO cm
UJ -•
ac
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
o 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
a 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
■**
s 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
CD 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
CL 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
50
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 tOO
> £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 m4 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
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 0l <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 3h &- 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 3 X <S 3 2 PO u © o CO © »—4 © Ir-t
a oh
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
actuj 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 © © © © © © © © © © © © ©
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
so
o
re
tu re
Z dc
u
•*«
CO
CO »
Xtf) JO
ocu ■ ?
ui UJ 1 re a i m 4
1 X re £3 JC X
o o *re o
® o <wo *c T*
o * CO UJ (9 X o • SO
CL CO o -J •TH UJ •«« CO CD
<L Z o UI -* re re o fr¬ O CD UJ
so > M UJ re UJ Ht UJ 2 eer UJ ui re UJ
eo re -H 3 u 5 Z < X re 3
UJ 2 ■*S z O M UI 50 z Z
re z M CO UJ M UJ 3 z X ft-« CO Z M M
o •HI ►-« CSL 6- @3 W 40 o ft- z m M ft-
o UJ <s z CO 8-8 M UJ UJ z
0L UJ CD CO o >- CD UJ ft— z u. re 3 UJ CD o
CO i o Z to re o re -* z re O -J O 3 CD Z u
UJ re z « JUi o UJ X MOO UJ >- UJ Q UJ O Z 4 3
L3 US *«« << re s re »- O 8- ft- o o —ft Z 3 a re <J Z 3 z 4 re 8 o
z re re h re IOM t— u uj re «* _i z UJ o < z »- UJ 4 o: X 9-
< uio co co o z z o < z X >- ■< o z UJ co
re p- x uj u 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
z o so UJ X o <s ft— co re co < OUJ <8 X X o o UJ ■4 4 CO UJ CJ
re 3 s HOQ UJ re ft- X X 3 UJ Ui I US X 3 re X • ft- u; re ft-
o o z z 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
JU^ 5£ < < o O Z_l *H UJ re xoo 3 <3 o re ft- w X 3 -4 o re Q O z UJ
o O o < X CO UJ ft-MM • ft- z «s (*• i— ft- 3 m: 4 UJ UJ O 4 co
I— I— <t < Q £C 4 UJ UJ ft- CO X »- X X co < »-» ft-
re UJ UJ ft- -4 ft-4 o ft- re re 4 UJ CO
Z 2 ffl 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
UI LsJ
x x a.
Ui UJ
re re re
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
uHUO o o o 3 X iC ft- o •HI —S Z ft— ft— re ft— Ul re a ®o 90 UJ ft- re *- o Z 3I
re re o OhH O UI o re x »-« X 3 <* X 3 3 X UJ UJ re 3 X 3 6- o U re
sj SJ _J j co oo 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
z uj
+-*
UJ UJ
re re
UJ UJ X <c CO UJ re «)Z < 3 Z Z z O UI UJ z -4 z Ui >- UJ iaJ X CO
o <d id U X 3= -i 3 UJ re »-• o *-* o X o O ft-* O »-0 re re ID CD u 3
»- x o
UJ z
z z re re re x *-•
8 O *-* X I UJ UJ 8— t- © © © *-s © © CD ft-* M X
CM re i oi- Z ft- «_> re co re cm cy X 5f* O re re o ft-
© © o o oo O MK -4 13l D
i <f © © C © UI © © —• © UJ Q o o
ui © S3 O O O ffl X *4 3 re z &- O ® 51 Q O o © o © o re Q 0 0 4
X < < < r > re o <L co 3 © © 3 3 3 © 3 © 3 o 4 4 4 3C
re (3 - »
UJ Z X IUJ Q CO
o 9 x « G UJ
O CO O 0Q < o re re O UJ r <i i < j i x o
UJ
o 3 ID 3 3 _» 3 o o re x 3 C3 _J 3 _J
x aNaia h -J jxjj<ao.ojj _J o -• «o *-*?ss *-« >>re >a ox o re re *- JI J J J
° ISJZOZXOOUI <ao<c<aot_>xz<i<* _j reco co 3 z z z z inooi oox z o z re id z x OUJ UJ < u < < <
^ m o ^cl a. re UXUOJQU^UU o re id t-» re*-«<i-o*-«o*-sx iu^r o^owa -> •-* re re z oxooo
re
UJ
re re -<t
-> © re ©
UJ © © © X
ro o x co z CM to ^ lO X o o
O gj X CO <c ft- 3 H S © © © UJ re z
© UJ o I- o o o o o
CO x •e -*
X ft 4 « re _j
CM CM CM — CM CM CM CM CM CM CM CM 9-4 9-4
Q © © © © © © © © © © © © © © © © © ©
O © © © s © © © © © © © © © © © © © ©
u
O tn rO vO rO IV —o © Fv © 4 cs -• -h m in m ro »n
IS. PO © rt 4 — ftv 8s. CM © © CM *£? © VJO © 4 4 4 «H 4
o © © © «-• ro ro CM © © —• -0 «r-e Q © W PO fO
• Cd{V(VWMNfM(V 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
“(SGiSSSCSlSGI © © © © © © © © © © © © © © © © © ® © © © s © © © © © © © ® © © © © © ©
H-OGDSSSSS © © © © © © © © © © © © © © © © © © © © © © © © © © © © © © © © © © © ©
Page 30 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 April, 1976
116
X
o
2
Q O «9
2 2
C frH9 UJ o
m
tOIK
QC
*«S
i ac
la.
X UJ o
O CL » X a
(X O CO CO UJ QC
lv Q 13 Q 3 &-e J > o
UJ <C l&J 2 3 U. 3 Q o
u Q cr <a 3 fr-9 Z X QC
M uj *-> L 5£ z o w tai
> o O Q.
—? CL 2 CO UJ X
UJ 3 UJ m w -ta CL K x
o <S X Ui fr- fr- X CO U2 x r> UJ
o o to cr to CO UJ B 3 o
fr-
UJ «
J co o 0 QC M u. o at
3 UJ ^ UJ o UJ Ui <3 Ui < LD
Cl oc a X X UI GO a: «** t~ o <*a o
fr- o o 9- fr- 3 3 *- h 3 cr
3 >- 2 O fr-
CL to X £L
O < m <« aj 2 2 U_ 2 U- £5 ui fr- CO o
X 6— Ui O O O 6—8 O QC 3 ui ui > X 3 QC
2 cr ^ x O
o o < X o u. UJ fr UJ
O Ui < CL O O 3 to < CO fr¬ 2 2 2 UJ o o 2 P. 3 *-* to
2 fr— UJ fr—« UJ fr- ill o < < 2 u> 2 o m
uj <3 QC QC X 2 UJ UI 3
•—«to X X Q O X •«£ X UJ O O <1 o < UJ <t 3 2
2 fr- ts 2 2 0 Q U •“> to CL O 3 X CD 2 >- <4
M D UJ m uj **S <S 2 2 UJ Ui to CC 2 0 3 u <r < fr-
3 O X X X M 3 UJ <c
2 2 UI o <2 3 X M X.
a »- ^fr- S3 X 3 M
<
CO CO Ui O X X CO L3 CO M fr u s o
to < o o to X 3 UJ X X 3 < o -4 X
UJ fr- OO I S3 ®
UJ Ui u. X o Ui fr- > 2 *4 CL la-
2 3 <S
2 fr- CO CO fr- fr- X o
CL O»-« fr-« QC CL CO UJ fr- o u_ ID *«* <4 fr-
0 0 3 3 3 so UI O X fr- U- < fr*
<2 fr- 3O X
to X CS
UI Ui O O O UJ UJ UJ 2 CO >- o 2 >- co < M O 3 Ui
3 2 QC QC > QC X to <1 fr- X o < fr— O 3
fr- O fr- UJ S3 I X X DC O O *— UJ 3 »- 2 a X fr— <x a »- 3
QC tO 2 Ui UJ o o O UJ or fr- X X cl >r <3 < 2 3 O X 3 o <4
<S U D UJm > > z 2 Z eo o <c ■<* o to Li 2 • CL -3 X QC U
fr- Q.IIH *4 ■< 3 3 3 QC 3 fr— o *-• •<* UJ CL 2 CO 2 UJ
tO -* 8- 12 CO to CL CL
fr- cr •<
CL X o to < o cr 3 tO O Ui »-« 8-4 M CSI UJ
2 CD
Ui o fr- 8-4
X X CO 2 CO © S © © © 2 X QC md m 43 fr~ >-
UI UJD< X CM X •M lO ro X to <r O UJ •o »- 2 CM »4 3 -4
2 CL Q o S u (S © © . ~e
u s 2 tj CO »-* O X X
fr- <3 UJ UJ CM © fr— X fr- X X vO © f—
X X fr- to »- LD in © fv a © — O —8 K
3 X • fr- <0 © 3 o 3 u
O X Q fr—
o u ro © 3 2 to 3 X 3 ui S "M —s © © 2 © K to
E 5J O CL O CL Q. Ql s © o CL uj O > O CD © © •4 »— © CM © —-9 Ui
Q< ZO QC *-« 3 2
z o: < a CL QC CL
»-« C3 fr- to X X Q fr— 2
X O Q 3 • CD <£ CD *«2 «C O z>
3 OX O CO XX 3 3
3 _1 £L ® O wwhhja Is)
fr- 2 o
> 3> > CL O X CL Ol £— o 3 »-♦ 3 X Q *-t M M fr— ct
<1 3 CO tO X 3 3 :> o- <y o 2 o «s o O Ui UI M 4 X <2 X X X X X 2 2 2 2 2 UJ
O O x O »-• <r
U_ UJ UJ X
a cl x x o o *3 X O X CL QC 2 fr— o 3 03 0 o o ** M< O •— « X
»—« < o 3
to X *4 X ts © Kl S3 fr- X OD a.
UI 3 3—0 fr- CM PO tn ua 3 UI ro >-
X 2 <3 «f 3 © © cs o X X
»- <t »-< o cn
S3 S3 2 «Z> UI 3
O X X X X X X o O CO u o
fr- o o o o u X X 2
S CL Ol * CL a. CL a. ■» ♦ ❖ •0 > > * * * M
CM CM CM CM CM CM CM CM CM CV CM © CM
© © Q S S3
S3
© S3 S3 © © © © © ©
S © s Si S3 S3 S3 S3 © © © © S
CM © CVJ
VO CSS VO
-*3
CM
CM in <o S(V •—» «o rv © »© in no © --4
in —• Pv
ro
43 in ur> ro (SJ to vo © ro in CM —• w-a © © ^ © N
© © fO CM ro CM CM © © ro cm ro ro ro © — «r-e © CM ro ©
;n tn »o vo in in cm
© "M © Pv —• © ©
•OlOCM-M W r-o ao (VfO ro —e f-9 in in ro
<F-» ■=3’ -« s ©
© fSw Si ro 43 CM rO ® -hi
ro n s (vin s © «-« ro "tr © ro —«
nos sos ro —• ro —• oi ro -*wnsn ro ro ro © ro ro © © 0 to ro ro ro ro ro
so « K ® (V M N CSS a
CM ro 43 — -V* Pv ro 43 fN. ^ ■V 4) S
• CM CM CM CM ro rOPOrO^v'sj’S'giDifi K rv Pv rs. © © ©
cu ^ ^ CM CM CM ro
CM CM CM CM CM CM CM CM CM CM CM CM CM CM CM CM CM CM CM ru CM ro ro ro ro ro ro ro ro ro ro to
CM CM CM CM CM CM CM CM CM C\J CM CM OJ CV CM CM CM CM CM CM CM CM CM CM CM CM CM CM CM CM CM CM CM
S3 (S s s ® s S ® sasscscass® S © © © © © © © © © © © © © ©
Q S ® S S E® K SSSSQSSSOS) © © © © © © © © © © © © ©© ©
^
'*
Si Si Si SX
' * *** ** "3 *3 r/ rO PO rO K) ’si M ^3"
— • — —• — LN»CXJC\JC«CXJCMC\JXV<>MCMr-3r-->l^>PO»-->rO^>rOfrOfrO^ ^
*K£ ^3 ^3 ^3 ^
^ ^ -vr
^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 UJ
1o o
w
u. >•
UJ
3: o
I 13
►“ Z D -*oe
(3 UJ CL QC UJ
Z 3 UJ CO
UJ 13 CO 13
u O 3
O
2 >- 2 o ►-
M EO UJ O »-
ft Q ui
co uj 2 UJ 3 sr 0
UJ 2 ft— O 3 CD 0 Ui
0
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
2 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 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 »
uj a ui
k- X k— CO CL O O O ro ro 8 8 CM ui
O 3 X r— X X 3 U. cr 8 8 CL CL Ql a 0L >
OL 0 CO O 0 3 u. to 8 8 2 2 2 2 2 O
*a »— 1— 0— in »— CM ►— IS cs IS »— WM ro r*v cr UJ 8 8 8 —• *—« *4 8 M 8 M M 8 —* •-* -« X
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 s> css —» <S> 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 8 8 m S 33
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 a
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 X M fM OL o
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 0 2 2 Z Z £
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 Q. w < at
cc k— 2 CO O M UJ
to *-« cr to X IL r— ►— 3 UJ CM
3 K CC *— k~ UJ Q_ X 3 X X O O CL >• a.
3 »— 10 to 2 to l_> 3 *- CL O UJ 2 0 2
O O to *- k- r- k- H O O 03 ac M X
3 3 3 3 3 3 CD b- 3 3 8
so * * * O O O O O O * X X X * ♦ -* * CD CD 8
03
8
UJ CM CM CM CM CM ro to ro ro fO fO ro 1
0 8 S IS S IS 8 8 8 8 8 8 8
0 8 GS 5J 3 IS 8 8 8 8 8 8 8 CO
fr-
CM ro to CM CM CM O O IS ro 8 8 rO S ro 8 tO to —• to 2
k— <0 ro «o OD *3 IS IS to IS 8 8 8 CM 8 8 8 8 in in 8 in 8 M UJ
0 r> rO IS ro cs» ro IS CS CM ro IS 8 8 CM fO 8 8 ro 8 ro ro 8 ro 8 ro X
UJ UJ
—> 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 •O 8 ro 10 k—
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 M 8 ro 8 <1
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 lO ro ro ro k-
to
IL
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
, 8 8 m Pm O
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 tO tO vQ -O
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 ro ro ro ro ac
UJ
• 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 *0 ro ro ro CD
C2 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 8 8 8 8 X
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 8 8 8 8 3
Z
►“ w.K^OiKJ'Uin'ONflOO Q^AJfO'Jin-ONCOOvG!
NCOOQ^CMPOTjiniOKCOOlS^IMfO^lCWJN©® {'3-~*OJfO’'XX>‘©KCOO
X 'M M‘7^Jl^tOinifiiOU)|jOin^«0‘£)iO'OC'C©'ONNKKNNNKKN MDCO©IlCO®COCOa)a3<M>OvO»0»000>(M>Q
V -!? U3
40
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 60 alisthenics rthodontia
Running Light Without Overbyte
May, 1976 Box 310, Menlo Park CA 94025 Volume 1. Number 5
In This Issue...
Copyright Mania 3
TIDBITS 6
40 Chars/Line Printer for $250
Day Recommends Science Articles
NOTES
What’s a BAMUG? 27
JIPDEC Visits PCC 27
Chicago Stores 27
The Alpha-Numeric Music Sytem Malcolm Wright 31
Program Repository & Tape Duplication Facility 32
Byte Swap want ads 32
BASIC Just Won’t Cut It letter 32
How ’Bout Small PASCAL, editor’s reply 32
Subscription & Information Form 33
PCC Bookstore Offerings 35
10% off IMSAI Products for Journal Readers 36
119
COPYRIGHT MANIA: It’s mine; it’s mine, to copy as are copyrighted newspaper articles.
and you can’t play with it! 3. We feel this proprietary preoccupation is a waste and
misuse of time and energies of talented software professionals.
During the past year or so. People's Computer Company 4. We feel there are differences between marketing soft¬
has received several letters-with-enclosures from one Calvin N, ware to hobbyist/consumers for their entertainment, and mar¬
Mooers of Rockford Research, Inc. in Cambridge, Mass. We keting software to the business and industrial community
initiated the rather unfortunate contact by asking him for in¬ where it is used directly or indirectly for financial gain. We
formation about an interesting but relatively obscure computer find it unreasonable and impractical to attempt to sell soft¬
language that he had developed called TRAC. (Note: TRAC is, ware to hobbyists when its price is half the cost of their hard¬
at the least, a registered trademark, and probably patented, ware systems. It is unreasonable because it's too expensive. It
copyrighted, and marked with infra-red dye to boot.) What we is impractical because, at best, software is very difficult to
have since received from this person, however, appears to protect against reproduction.
primarily be concerned with copyrights, patents, trade-marks, Furthermore, it is naive to attempt to market software
and the like. We don't really know because we didn't take the to hobbyists via a royalty agreement with a hardware manu¬
time to wade through all of it. He has sent us a copyrighted facturer. The analogy comes to mind of someone developing
price list for his software and documentation that included an an excellent and useful reference book, then attempting to
entire paragraph about its copyright protection and registered market it via a royalty agreement with a manufacturer of
service mark, a mimeographed policy on copyrights and copying machines, knowing that the manufacturer is going to
trade-marks, an article concerning a $3 million suit against place the book next to their copiers with a sign saying, "If
some companies that purportedly have used Mooers' language, you want a copy of this book, you must send us $350."
and two copies of a major article that Mooers wrote concern¬ We feel there are only two practical choices in marketing
ing software copyrighting (we hesitate to give the actual name software for the hobbyist community: 1) Charge very little
and source of the article—we might be sued for reprinting the for your software, and depend on volume sales for your
title without the author's permission). Oh yes, he also included profit; 2) Charge a great deal for your software, and sell it to
some information about his computer language. Incidentally, your only controllable marketplace: the hardware manufac¬
he explicitly prohibited us from publishing most of his letters turers. They need it to enhance their hardware. They are also
. . . which saved us at least several microseconds in our reach¬ the only ones who are making sufficient profit to be able to
ing the decision not to reprint them. Needless to say, Mooers afford your high price.
has shown great interest in (preoccupation with?) the manner We believe that we are exemplifying these viewpoints
in which many hobbyists obtain their software, and has writ¬ relevant to the copyrighting of PCC publications. Please note
ten us concerning this topic . . . but we can't let you know the statement of Reprint Privileges inside the front page of
what he said because he prohibited us from printing or para¬ each issue of Dr. Dobb's Journal. You may also note that,
phrasing it. since we are marketing to the non-profit-making hobbyists,
If you are interested in the topic of proprietary soft¬ our subscription rate is $10/year. Compare this to, for in¬
ware, you might look up Mooers' name in some readers' stance, the $28/year that Microcomputer Digest charges for a
guide to computer science literature. smaller, monthly publication, or the $10 to $40 that DataPro
There is an interesting clincher to this little story: charges for a single copy of some of their slender reports. But,
Enclosed with Mooers' most recent paper deluge concerning these latter publications are being marketed to the highly
copyright protection were reproduced copies of two articles profitable business and industrial computer communities. We
from Computerworld newspaper. Yes, Computerworld is copy¬ have no particular quarrel with this. We are simply pointing
righted and includes an explicit prohibition against reproduc¬ out that one adjusts to the realities of one's chosen market¬
tion of material appearing in it unless written permission is place.
obtained. No, the copies that Mooers included with his letter Finally, to those software professionals and hardware
did not include any indication that he had obtained such manufacturers who choose to provide low-cost Software to the
permission. hobbyist community: We wish to actively encourage your
efforts. As you develop such software, if you will forward
[Editor's Note: We have no quarrel with copyrighting, information about it, we will be pleased to publicize it, with¬
whether it is applied to publications or to software. You may out cost. We believe that you are taking the right track in
note that most of the PCC publications are copyrighted, this new and exciting area.] --Jim C. Warren, Jr.
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
THE SIX PROJECT STAGES
all hobbyists: ". . . most of you steal your software'' (the
essence of Bill Gate's widely publicized February 3rd, open- Wild Enthusiasm
letter to hobbyists). Disillusionment
1. We feel that it unjustifiably casts a shadow on the Total Confusion
entire hobbyist community. Search for the Guilty
2. We know there are many hobbyists who are not Punishment of the Innocent
thieves in spite of the fact that copyrighted software is as easy 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
Page 4 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 May, 1976
121
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
May, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 5
122
40 CHARS/LINE PRINTER FOR $250
sounded like the best musician I have ever heard.
The other talk I heard was Dr. Robert Suding's concerning by Southwest Technical Products Corp. staff
the new Zilog Z-80 Mpu. Bob had received an engineering 219 W. Rhapsody, San Antonio TX 78216
sample of the Z-80 about 6 weeks ago and quickly and easily (512) 344-0241
reworked a Digital Group CPU board to accept the Z-80 (it
is not pin compatible with the 8080). Bob showed his sys¬ Southwest Technical's PR-40 Alphanumeric Printer Kit
tem with a very impressive CRT display of all those Z-80 is a 5x7 dot matrix impact printer similar in operation to the
double registers. well-known Centronics printers. It prints the 64 character
All I can say is, if you were not there, you really missed upper case ASCII set with 40 characters/line at a print rate of
the event of the year (there must have been about 100 Mpu- 75 lines/minute on standard 3-7/8" wide rolls of adding
based systems up and running). 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 . . .
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 der $1K
by John McDaniel
6 Data In, Phoneme MSB 1 TTL load.
Neg. True A
Dear Jim: April 26, 1976
7 Data In, Phoneme 1 TTL load.
This letter is to confirm our conversation with regard to
Neg. True A
the VOTRAX Synthesizer Kit which we had discussed.
8 Data In, Phoneme 1 TTL load,
As I indicated in our conversation, VOTRAX was not
Neg. True A
aware of the computer hobbyist market, and therefore had not
9 Data In, Phoneme 1 TTL load.
addressed itself to providing anything for that community.
Neg. True A
As a result of preliminary investigation, I am pleased to
10 Data In, Phoneme 1 TTL load.
relate to you that we could provide a VOTRAX Synthesizer
Neg. True A
in a kit form for a price not to exceed $1000. However, we
11 Data In, Phoneme LSB 1 TTL load.
require more information as to the specifications of the kit
Neg. True A
and the size of market potential, before we can commit to
this price. Our quotation on a minimum order and delivery 2 Output, Phoneme Clock 2 TTL loads.
would be contingent on receiving this data. Neg. Pulse B
Based on the text of your announcement in Dr. Dobb's 3 Output, Zero Decode 2 TTL loads.
Journal [Volume 1, Number 3, page 12], I believe that I have Pos. Ture C
mislead you with regard to the size of the VOTRAX market. 13 Output, Audio Control Ext. 50K Vol.
Your inference was that the VOTRAX market is not very Con. Wiper D
large at present. This is not correct and, I am afraid, would 15 Output, Audio Ground Audio Return D
tend to mislead your readers as to the impact the hobbyist 1 & 10 Output, +5 VDC Interface Supply E
market would have. This is not to say, however, that we're S Output, +12 VDC Interface Supply E
not interested in providing something for those users. P Output, - 12 VDC Interface Supply E
I hope that this information will be of benefit to you. A&N Ground Signal Return E
I look forward to meeting with you again at the Home-Brew
SIGNAL FUNCTION DESCRIPTION
Computer Club Meeting. If I can be of further service, please A. Data In (Pins 4-11) Six bit phoneme code and 2 bit
don't hesitate to contact me. inflection code inputs. All phoneme inputs high are
Sincerely, Null code causing no output condition.
John H. McDaniel 4340 Campus Dr., No. 212
Regional Sales Manager Newport Beach CA 92660 B. Phoneme Clock Output (Pin 2) Provides internal tim¬
Vocal Interface Division (714) 557-9181 ing of synthesizer and must be used to control data
input. Data should only be presented or changed on
BASIC SYNTHESIZER INTERFACE SPECIFICATIONS the positive edge of this signal. When all phoneme data
inputs are high, this clock runs with a period of 6
GENERAL DESCRIPTION milliseconds. When data input is present, the period
The synthesizer requires 8 parallel data bits on its input lengthens, depending on speech rate and the par¬
pins in order to operate. Of these 8 bits, 6 are used for ticular phoneme.
phoneme slection and 2 are used for inflection level selection.
The synthesizer provides a clock output which must be C. Zero Decode Output (Pin 3) This signal indicates the
used to time the input data. Data should only be presented or status of data by a high signal in absence of data and
changed on the positive transition of this clock. a low signal when any phoneme data input is low.
Also provided is a status indicator (zero decode), which D. Audio Control Output (Pins 13 & 15) 1-2 volt maxi¬
signals the presence of input data. This is useful when the mum audio signal from 50K external volume control.
synthesizer is operated from a buffer memory interface. Additional external audio amplifier required to drive
All signals are TTL signal elvels, except audio output. speaker.
Pin Description, Conn. 6, (Front Mother Board) E. Power Supply Voltages. The basic synthesizer re¬
Connector See Signal quires the following power:
Pin No. Function Description Function +5 VDC regulated @120 MA
+12 VDC regulated @160 MA
Data In, Inflection MSB 1 TTL load,
-12 VDC regulated @ 200 MA
Neg. True A
Pins A&N should be used for power supply returns,
Data In, Inflection LSB 1 TTL load,
and Pin 15 for external audio amplifier ground
Neg. True A
return.
May, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 7
124
III. DIAGRAMS
Conn. 6 Conn. 5
J=-
4 M
«-
DO? 71
5 <6- -» DQ6
6 F DQ5
-»
7 K DQ4
-»
8 JL 2 DQ3 >,
DQ2
9 A»
10 DOl SYNTHESIZER
10
11
2
D
C
«- -»
-»
11 DO0
„ PHONEME
3 CLOCK out
-*■
u Circuits No's
538, 539, 540 h 541
“ ZERO
3 2 DECODE out
«r
Mother Board
Audio Output ‘volume
Inputs
13
Audio Out tF 1 50K
15 /\udio Qnd,
|Powe r
Input
1
10 U- g t 5
5 o . 12
R □ -12
□ Gnd
A
=r FRONT MOTHER BOARD
INPUT/OUTPUT W AVEFORMS
i i
i*b MS ~ £-350.US jj- (C 6 b MS
Phoneme Clock
u IT Lb—Varies with—_1
phoneme h
))
u u
speech rate
Zero Decode
NOTES:
Page 8 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 May, 1976
125
BAD BIT GETTERS: A065 06 TAP CLEAR CCR
Memory Test Programs A066 A7 00 NVAL STAA STORE A AT X ADDR
A068 A6 00 LDAA LOAD A WITH DATA
by Ray Boaz JUST STORED
A0 6 A 11 CBA COMPARE B-A
(reprinted with permission from Homebrew Computer Club A06B 26 OD BNE IF NOT SAME BRANCH
Newsletter) TO ERROR
A06D 4C INCA ELSE INCREMENT A
Every computer system needs a memory test program or A06E 5C INCB INCREMENT B
two to ensure a high level of confidence in the memory sys¬ A06F 26 F5 BNE IF B NOT EQUAL TO 00
tem hardware. One bad memory bit can send a program off to BRANCH TO NVAL
Never-Never Land. The memory test programs listed here are A071 08 INX ELSE INCREMENT X
for use with 6800 systems operating with MIKBUG as a system A072 8C —
CPX COMPARE X TO END
monitor. MIKBUG is a simple monitor (as it was meant to be) ADDR
which has many useful subroutines. Several of them are made A075 26 EC BNE IF NOT SAME BRANCH
use of in these memory test programs. TO OMT
The terms used herein are consistent with the 6800 nomen¬ A077 7E E0E3 JMP ELSE JUMP TO MIKBUG
clature. A and B are the two accumulators, X is the index CONTROL
register, PC is the program counter, SP is the stack pointer, CCR A07A 3F ERROR SWI PRINT ERROR STATUS
is the condition code register, and M is the memory location of MT2
interest.
0000 FE A002 START LDX LOAD X WITH START
Of the two programs, the shortest, MT1, is written to be
ADDR
used in the 6810 RAM used by MIKBUG as a scratch-pad. It is
0003 4F OMT CLRA CLEAR A
27 bytes long and fits into address space A060 to A07A. This
0004 5F CLRB CLEAR B
should work well for the SWTP 6800 Computer Systems. The
0005 06 TAP CLEAR CCR
second, MT2, is a more general test program but takes up 58
0006 A7 00 NVAL STAA STORE A AT X ADDR
bytes total. The start and end addresses in MT1 are direct
0008 A6 00 LDAA LOAD A WITH DATA
operands and therefore, shown blank in the listing. MT2 uses
JUST STORED
locations A002-3 for start, and A004-5 for end addresses. So
000A 11 CBA COMPARE B-A
these locations must be loaded before the program is started.
00OB 26 OD BNE IF NOT SAME BRANCH
Also in MT2 the I/O interrupt pointer locations (A000-1 are
TO ERROR
used so if applicable it must be set after running MT2. In
000D 4C INCA ELSE INCREMENT A
general, both MT1 and MT2 operate the same until an error is
000E 5C INCB INCREMENT B
found.
000F 26 F5 BNE IF B NOT EQUAL TO 00
In both programs a store is made to an M start address, then
BRANCH TO NVAL
the data is fetched back, compared to good data, and if true, it
0011 08 INX ELSE INCREMENT X
is incremented to test M again with A+l. This continues for all
0012 BC A004 CPX COMPARE X TO END
256 bit combinations—00 to FF. Then X is incremented, and
ADDR+1 AT A004
the next location is tested. This continues until the address is
0015 26 EC BNE IF NOT SAME BRANCH
encountered.
TO OMT
In MT1, on finding an error, a branch to MIKBUG software
0017 7E E0E3 JMP ELSE JUMP TO MIKBUG
interrupt is made which results in the status registers being
CONTROL
printed out as follows: CCR-B-A-X-PC-SP. B is the good data,
001A B7 A000 ERROR STAA STORE A AT A000
A is the error data, and X is the address with the error. If
001D F7 A001 STAB STORE B AT A001
testing 1K bytes, 2000-23FF, and an error was found which
0020 FF A002 STX STORE X AT A002
resulted in BOO, A=00 and X=007, the chip containing data
0023 CE E19D LDX LOAD X WITH ADDR
bit 7 (MSB) at M=2007 is bad. M+l must be loaded as the new
OF CR/LF/* STRING
start address to continue the test to end address.
0026 BD E07E JSR JUMP TO PRINT CR/LF/*
MT2 on finding an error goes to a routine to print A-B-X,
0029 CE A000 LDX LOAD X WITH ADDR OF
then continues to the next M until end address is reached. Here
ERROR DATA
again, A=error data, B=good data, and X=M error.
002C BD E0CA JSR JUMP TO PRINT ERROR
Both of these programs have worked well as memory testers
and as chip testers for 2102 type memory chips. (A)
002F BD E0CA JSR JUMP TO PRINT DATA
MT1 (B)
0032 BD E0C8 JSR JUMP TO PRINT ERROR
A060 CE_START LDX LOAD X WITH START ADDR (X)
ADDR 0035 7C A003 INC INCREMENT M FOR
A063 4F OMT CLRA CLEAR A NEW START ADDR
A064 5F CLRB CLEAR B 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
107 F AC 85 XRA M ;
ANO COMPLEMENT IT (THAN
EDITOR'S NOTE: A game called TEASER, written in BASIC,
1080 47 86 MOV B,A ;
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
1082 79 08 MOV A ,C ;
FETCH CENTER OF UNIVERS
was redone by Willard I. Nico under the title of “Shooting 1083 AE 89 XRA M j
COMPLEMENT CENTER
Stars , and was published as an eight-page article in the May, 1084 4F 90 MOV C, A ;
AND SAVE THE CENTER OF
1005 C3 0E 10 91 JMP UNIDIS ;
GO DISPLAY THE NEW UNIV
i7/o, issue 01 nyie ipages umz,Ar is a variation oi 1080 FE 51 92 INVALD: CPI QUE }
WAS SHOT 'QUIT1? •
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 JMP
10 96 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 HQ" 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
CPI 03H 10D2 C2 DC 129 JNZ ; IF NUT DISPLAY 3 0I6ITS
1018 FE 03 35 | IS LOUP IN 7TH CYCLE? 10 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
XRA A ; Yr
102S AF 39 NF.D0T: ; CLEAR CAHRY (UNO A) 1000 C3 ES 10 133 IMP iSTSir.
; 0,SPLAY a <»'■' ‘
1026 70 40 MOV A ,8 j MOVE UNIVERSE TU A 100 E CD 28 11 134 TliREEO: CALL CUT HUT
j FETCH MIUULF ol d!
1027 0F 41 RRC ; ROTATE NEXT PLALE INTO 10E1 79 135 MOV a.i:
; DISPLAY 2 UL.IIS, LUI
1/2B 47 42 MOV B ,A ; SAVE IT IN 8 FOR A UHIL IOC 7 CD 28 11 136 MIOPRT: CALL UUTPUT
A,C ; FETCH I'b
1029 D2 31 10 43 PSUDOT: JNC LJAOUT ; IF BLACK HOLE, UO BLACK 10F5 70 137 L5TSIG: M.V
102C 3E 2A 44 MVI A,STAR ; ELSE LUAQ A STAR. 10C6 CD 2il 11 138 GALL UUTPUT ; DISPLAY HLMAINING OIGIT
1020 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 A6 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
NO EHROflS FOUND IN THIS ASSENOLV
113E 01 31CE12212512ED321106000E0150141E,'A1[JCA9r'107OFf 06CA3E1v'FE03CA3E10FE'05CA46
113F to 10AF7Ut'F47D231133E2AE3331i.'3E2OCC2U113E2i1(:O2U11C3111v!3E,i!K:D?!111i.3?S1l’.AF79
1140 01
0FC3291,1216111CD3211UD10111E >921301 iaEEA6910ini:A inii)23232323l.3OA10237EA7
1141 32 179 DO 32H,02H,07H,00H,33H
C27F.1079FT01C21211C3701 07<>A6CA1211237i-Ar472379AE4FC3,1E10FES1E2O610217711
1142 02
CD3211E3EF10216F12003211U30F1078FEFFC2001179A7C24C10219211C032111E30434B
1143 07
1S7AA7CAE5103C3H1 C0RC2f Ullll E3 J0t‘<9C2Eu10HE3S0415C2IIC1.17UFE3CC20E1 {I79FE3*!
1144 00
C2E210C3ES10CO2O11791'.D2O117H{.D2Ii1121AC111.03211210A11003211001 Hi IFESiOAUW
1145 33
10C30790A7C24C1 (179A7C24C1021 Ell 120321103EF10210112Ol)3211O3v;F10L52O1u0.2ED
1146 04 100 DO 04H,16H,01H,34H,0OH
F401590E0OCOF4l117nC1 r.9Ofi4rCOF401 Cl OU7EFEFF02CU2E1123033211311.100,.1370207
1147 16
0033041601340r:29,'035005Ai‘1361 09420372066013.. 43E00039HOO001002020202,12020
1148 01
2020594F 55522 0534. ,4F542P3E2PFF pnP0v'D594F 552 ,*,4749564520555..20544 F4F 2 P4541
1149 34
53494C590DFF0[)0P.'O594F6520S74r4E20212121,iO594f 552046495245442V!FF20534i::4F
114A 08
5453202E2E2E20424553S42,153434F52452 049532031312 00UFF0O574F554L*442v15,940 55
1143 29 181 DO 29H,00H,35H,00H,5AH
204C494U452H544F2,154525920414741494E3FFF0D4li4b59212S594F562,l4C4! 53542054
114C 00
4n45204?414n450DrF10OP[)594r55204D41592L,l4F4E4Oby20S34i'4F 4F5420535441 52532C
1140 35
2555455524 D45S90DF F 00,1D0D2 A2E2 A2E2A2E2 A23554E495A4150202 A2E2A2E.2A2C2A0O0D
114E 00
20202P202P20202031 20,322033PO202P2 020202 02P2P20342;i352036,-0202020202 ,'2020
114F 5A
2020372 03n2S'390Oi'O0DFF0O54595S45203120544,152 S5203921J2E2E2E204F5220225122
1150 01 102 DO 01H,3SH,10H,94H,00H
1151 36 SYMBOL TABLE
1152 10 NAME VALUE
1153 94
1154 00
GETCH 0218 NXTBYT 1070
1155 37 103 DO 37H,20H,68H,01H,38H
ECHO 01F4 IN’JALD i ooa
1156 20
HOLE 0020 NOTVAL 1 $96
1157 68 STAR 002A WINTST 1 V»9F
1150 01
WHY 0059 MORDEC ivioc
1159 36
SPACE 0020 TALLY 1 $C8
11SA 40 104 DO 40H,0E0H,00H,39H,U0H
QliE 0051 THREED 1 COE
1158 E0
COLON 003A MIDPRT 1$E2
115C 00
ZERO 0030 LSTSIG 1 viC 5
1150 39
CR 0000 AGAIN IV'EF
115E 80
MESND 00FF LOSTST 11 $0
11SF 00 105 DO 0O0H.01H
START 1000 BA0P1GU 1112
1160 01
UNIOIS 100E INPUT 1110
1161 00 106 URSHOT; DO CR
L'NLOOP 100F OUTPUT 1120
1162 107 ASC 1 YOUR SHOT > •
UL00P2 1011 MESAGE 1132
1176 FF 108 DO I1ESND
CR,CR,CR NEDOT 1025 P1SKTBL 1130
1177 0D 109 HEQUIT: DO
PSUOOT 1029 URSHOT 1161
1178 00
LOADOT 1031 HEOUIT 1177
1179 00
ASC 'YOU GIVE UP TOO EASILY' OOIT 1033 WINKS1 1192
117A 190
CR.flESHO CRLF 103E UINKS2 11 AC
1190 00 191 DO
TE5T5 1046 AGNfCS 11 CA
1191 FF
DO ['.R.CR.r.R GOTSTR 1 04 C LQSTP1S 11E8
1192 00 192 WINMSIt
NXTGRP 105A BADMES 1201
1193 0D
FOUND 1069 TITLE 1225
1194 00
193 ASC 'YOU UON 111' UNI2A 1078 BADNUM 126F
1195
11A0 00 194 DO CR
11A1 195 ASC 'YUU FIRED ' Note that the assembler doesn’t calculate the ‘ASC’ values in
11AI3 FF 19b DO flESMD the listing-but leaves space for them. The hex dump has the
11AC 197 WINMS2i ASC ' SHOTS ... BEST SCURE IS 11 '
11U! 00 190 Dii CR.rCSND ASCII in it. Prog, requires less than 700 bytes. The 11 step
IV 9 FF solution is 5,2,1,8,5,3,2,7,9,8,5
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 ASC i 1 2 3'
1240 [ID 214 CO CR
124E 215 ASC 4 5 6
125C 00 216 OB CR
125D 21? ASC i
7 8 9'
1260 00 218 DO CR, CR ,CR,KESND
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
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 complete interface & commands for mass storage
significant program & variables editing features
Within the first five issues of Dr. Dobb’s Journal we have extensive package of interest built-in functions
published complete details and listings of four versions of Tiny full BASIC capabilities in under two kilobytes
BASIC:
Jan. & Feb., 1976: Whipple's 8s Arnold's Tiny BASIC We are very interested, however, in publishing complete
Extended (TBX) information on some versions of Tiny BASIC for the many
March, 1976: Greeb's Denver Tiny BASIC other microprocessors, for example:
April, 1976: Mueller's MINOL 8008 PACE 6502
May, 1976 (now): Wang's Palo Alto Tiny BASIC 6800 SC/MP ETC.
All of these have been for 8080's. We think this is Also, as you read through the articles on the first four
enough for the 8080, at least for the time being. Therefore, implementations, you should see better ways to do things,
we will publish no more 8080 versions unless they have some features that can easily be added, improvements that are
very unusual or valuable features, for instance: possible in the documentation, etc. We hope you will imple¬
floating point package (well documented) ment those, as you note them; write them up, and forward
comprehensive string & substring operators them for publication in the Journal as enhancements to these
well-designed graphics/display interface & commands four Tiny BASIC dialects. --Jim Warren, Jr., Editor
ept
hen
The
to
he
0 I rH
* a O O 4-» +» X id
O' «—■ s> •H H II (0 O
w o © P — o 4J 0 • d) M X +> -H O
•H ^ O > CD • P U fd 0 0 <D 0) O CD
43 H P •H O 10 a O •» id +> Si 44 (d O 0
• 4J o 43 to p © 4-1 0 + •H 4-* rH •H rH (D
kj a 4J 0 cu W -H 4-1 Ui 43 *. id P 14 ©
r~ 4-1 © rH <d W CM (d \o o (d >
VD Jl o s o U © P O O rp © «H• O U in -m 4-1
r~ tD 0 43 <1) st id <D ©
CN 0 0 © *H 4-* © © id 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 10 444- £ 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) 4J 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 win CM C\
a) a) w 0 O id 0) Id CD 4J to U 0 E X * r- O O id
-P —
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 4J 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 id d>H U t—( QJ 44 rcJ m 0) rH V p id w r- 03 44 *H U 44
> w 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
<
P 43 P P 44 a. <D rQ
>
Si •H *4 P id U W u (4 CQ ^ M 44 \ # 1 4- II A V 1 r 0) p 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
•> •
VO p t- Ul G
0 0 <d U Ul o
* o «- X MOW
will print the string "ABC", a CR without a LF, and then the
X X O Ul 0 p
in Q) P ui
T— P P % *H P U
1 0 0 x a>
-
Ul 0 U 0 <d 0
£* x a o P t> X
% CQ G
ro iJH ai r— 0) G 0 0X0
Ul Ul X Ul
(N fd X X 0 * O P X p X
> X x 3 X G X CQ o 0 p 0 (d 0
XI id o U G X U) o G O > o
O <d G
X r* td
O 0 X <d g x Cu ro cr P 0 G
G CQ
•H <D X X O X P XI z • rH 0 td
% 0 *0 P X > G 0 Ul
Ui g p <d Oh X
• D*pH 0 td td X •H >
U) r-f > 4- tr* td X
0 G X X X C P 0 X X
0 (TJ O X a > a)
X P Q) •H G 0 P 0 *H X O Cr* Cr*
X > P 0
0 •H M O P 3» p G
eu X G x 0 id
P W- P td p Ul X td O
K a) x p O P X <D
1 W E CQ*H 0 G G
0) x X 0 P X
CQ tr* r~ w 0 X G Ul td X 0
p 0 p Ul <d
concatenation are not shown in the examples,
G + 0 o 0 0 X H 0 o
0 rH a> Ul <D P
X o x ui 0 X a> ui •H ro x X X rH u Pm P X
td p
T— P p td X Ul X rH * P 0 0
«< pH P • 0 CQ p X x
I •H CJ CQ o
x (d cr* w B Ul O 0 >
c P — l-l <D X
G G G G 0 0 td X
II O a) X G
'G O td •H B X P Ul VO P rO
X > P O id X
* Ul X 0
cr* 0 td 0 0 G •H Ul O G
+ g cr* a> *0x r- **X td W % Ul • P *H 0 G 0 U P
•H G 0 G
X r-t ttf x: C 4-> to *> W s
0 4#
X X 0 X X o
X CQ X
• W+J Ifl • U 0 0 •H *< X CQ P
id
P 0 o X CQ CQ M (Q X <d CQ *» PQ td Ul X
X (B >
CQ <C P * O r— X P ^ u U CQ r» P CQ u U) Ul G P-. > CQ
*. X •H id H O Ul
Eh 0 0 t p
■B 0 ro 0 p % G 0 0 0
o X 0 Ul CM 0 *e •H rH G
rH G CM G p s d* o td X O X
o p G 0 id O
r~ X * * rH G M % 0 r- P X *» G 0 G P td
XI G *
O td cr* G X id z X.P *H 4* C CQ X
1 o (0 —. • (d o
X fG p •H CM 0 > X CQ X 0 « P P u X % 4*: P -H P rV u; x
P
a> II x o • w V •H 0 re CQ
4H «re
p U) CQ
«•
G G
W
* G
td X »
X
c % 0 P M 4 0 0 0
rH p-H U CQ • Cr* CM 0 W o X CM S X Q 0 UlO G
Cr* CM a* • o a. X
1 ABC'’XXX•
\ X 0 o ui X * X O 0 CQ (d G U JZ P r- id 0 G 0 G X
X XI
*£ 0 ___ fd •H pH 0 U) ui a) g * rH o 0 td
id p • 1- mH
•H 1 CQ •HO O M u td P • o X G U <d td >
U) Q) li •H
XI «< X P w T— 0 A M P O P I-l CQ > u CQ 0 CQ 0 P *H > CQ p
0>
T~ «e <d re td X P p=C X P % Ul O 0
O ai 0 X <d
w • 5 0 X 1 o z 4J X G m 0 G X
Cr- rH % > Ul CM G p >H HH o
rH VO \ O 0 ll id o «i 0 X td CQ G 0 O 4* X ro P
•b f=e *rH td o % P X (J Cr *. 0 P U p 0
tr •pH * 0 M m > 0 G C3 G
G in X je Cd >4 tr (d •H r— o r- 0 P * G X *
3 *0 — Ul 0 o
•*H G P G- G Ul X % P 0 0 e 0 > 4- P <d O 4- G (d o 03 p X (0
i
XX 0 fd G O O 0 0 CQ % B W 0 fp) G p P m P G 0
m U w' G 4*: P P X u G rc * •H o G * O Cq • « •H w 0 P
p G
•rH
E
B CM
P
0J
CM *H
ui a. rH 0 o o
o
u td icC In 0 »o X X B £ rt X X G •
G rH ll ui * w X T- (d W G M U P CQ tr*X 0 CQ * tdEh cQ^a 0 X
O II
G X X
print
id *e • 0 0 o > 0 * EH Eh G E-* G P Ul Eh CQ X X X <d
u
Ul rH 0 X T— *H W X G E rH Cu rH •H G 5Z rH (J CT*
XI X <d P CQ 3
El •pH X E-i rH . CQ 0 0 EH H *H P (d Xi H rH P XI rH X fO XI X o CQ H X
W X w W •pH X X X X o CQ •H mH X cc CQ •H G CQ •rH p G 0 CQ •H O X CQ CQ •H P 0 G
P-. E- XI X 3 w 0 P p p XI > re 0 P P4 04 > O CQ > w <d X CQ > G CQ£ CQ > o H X td
In order
Remember
*o 0 <d G
0 td
Ul P Ul Eh X 0
•
X X 0 0 •X
p P H X X X G
(d 0 X X Ul 0 O CQ > o 55 CQ in td £
G S p id id X X G CQ 0 P B 0
d id Q) id o o 0 G z X X o S G X
0 O P •H X X 0 P o X o O
ui td CT* X X B X % 3 X X CJ X p
G SHP G 0 0 G s *0 s td 0 O U2
0 Ul X s B G 0 G 0 CQ fcQ X o G
0 X p G G td CQ X £ D CQ B • 1 B
x p id X G G P 0 P-4 p P CO *e G Ul X
td td > Ul z U) o £h E w G E Ul
G -p p G G X td o 0 u io W CM G 0
Id 0 O Ul X •H p X X * Ul p II H CQ H P td G
Ul
O 0 o s X X • X II in C s td
X P B Ul W p p 3 • o CO II £1 ii 0 B s
td
XXX td 0 0 CQ o CQ X o • W ■ B o E
0 p td X p P 0 G 0 £ Ul o X CQ in 0 O Ch O •
P CQ Cr* G G U M • £ P X O P
td cr* O 0 0 X G E td 0 G
X G w X B B 0 td •o • EH 0 p X 03 £ 0
x td CQ P P • 0 G Td 5S X Ul o 0 55 B
rO 3 <d td • Ul e> td O H Eh B P CQ 0
0 O p 0 P P o P >-t Ul B •H CQ
in front of the commands.
td td D P
X x o X U) Ul CM G X 0 B X CQ •• CH X X EH id
X X G P V— 0 Ul 0 s o 0 z • Ul CD Eh p o td W P
X O 0 0 B X 0 cd o CQ nd 3 CQ IS o 04 CQ Ul
U P X 0 X X P 0 G X G X 0 o CQ 55 H 25 0 0 £
Ul G P p P G P <d 4H X cd o
P X O M CQ P O Ul G Ul G
0 0 id G 0 id X G X p P X (Q II CQ CQ Eh p o X 0
fO X O X X s p X Ul O id >1 •H c II • II II II U) 0 G >
P *o 0 ® »—1 X 0 Ul X X fD B p • 5S • • O •H >H X id X
W G X X id id p X G p <J> G o
Cm H CQ CQ Eh Ul X id Cr*
Ul p td 0 0 id X G id 0 p B <d Ul G «•
X G CQ S X P p p X td X G <d 0 P 0 td O H~ £
G id 0 b O B G G U) td X G o X Ul X EH o 0 G CQ G
<d BOO P G O o G 4H G P 0 w 3 0 O id
B E W O G p 0 o 0 G X G X X p o
B EH
B O 0 P P p id P X Ul H3 X 3 X id td Ul G X 0 tn G
O O P X P G G 0 p G G P O id O II P 0 X P £ X
o Ul o id G X o X CT* X id td rH U) G S o td Ui
did P 0 X CM X G 0 •H >. >i X £ nd nd EH CQ nd 0 0 p P * X X
p X G X Ul B CQ T— CQ X nzJ > id a. id o
• G X IT) X O O 0 B P Ul £ G G
o p <d x 0 P 0 s Ul B p E rd o CQ CQ W 55 £h •H 0 td r- O <d id
0 B rxj X P EH X EH X X X X •G H E 3 C M X CQ in X 4-' p VO 0 X B B
X X B S5 x id Ul X CO X Id 3 X X G X G X CQ B >. II II II II it CQ id Ul r- E o B B
•rH X o W E5 X P M X M X P W X X o o O G CL O 0 • Cm • • • B p CM td o O O
Q «< O (d CQ 3 Ul X 3 X 3 W IS 3 «ec 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
a> ® © <P nd
G >1 X * P G o rl nd
nd *h X Eh ro © © CO rH O I ©
W G x> a« X X o © >1 o nd *H Cl
© ©•HO P P nd <P B Xi P © G B CL
H • to U X G co nd p x © © O
W P v rH G «— © © CO G O P © © •H G >H G P B (0 P
P G nd O o + > X CP•H X X a X © O to
G © © P *S rH P © X <P P CO sc © 3 S B • G u ** o ©
© B P rd (P G P cp 'H p o © B H P O nd p p o ©
B © © nd 0) G CO * »H ►H X P p 3 X ' O © © H >1 Xi
© PPG p O B X p & Eh nd O 3 • G PH H U © nd B P nd P XJ
P © G © •H © G © O O U © © CO © *d © G CO G
© • P 3 B w,c ai nd o P P 3 P x x: © x P P co P © • © nd ©
P CQ ©OB CO P rH G U • P © CO P P . X P -H G © rH © o
W X U O (P Xi (d * O -H X P P *H nd P © G U S»
O ©GO P CO © E G nd P B P fd t>N > G © nd O © •H © O s
P T“ © 3 c5 *H B CP CP © O x nd x © O1 •nd G p o P > X rH ©
G * G © X O G OJ3 M N rG P © O nd B P • © G Cr> © P rH M
© *33 •H CO P © *H © UP (D © P Aipfl (1) S co a CO X! © o nd O tJ'
P •H P CP CO > P G X •H O © M O .X B •H P p © 4H o
© G nd G <p co co g G © 5 © © P > © u o G O •H (0 CL P XI p
4H O G nd o *H X <D © -H o © > G © x © © D, fd o u t7» at *H G © CL
<P «H © G P P P U X G -H O © <d nd p O to to BKO c © CL P X
•H W B © CO ft+J +J +> O U © Cn O O CO EH •H nd nd X G CO p
nd © BSP 0) p x © G P •x (d to © G U P. CL -h X P G G p •H G P o
© 0 B U G O <P »M 4-1 o <P O P U I X o s w CO © © B O
O P U O © o o © •H © p •H G © 3 © 25 © B B H P © G Cn
p CL O XI P © © X w © p o W rH © © P T"‘vH G s s H O PPG G
X P O 3 P Q> G W •H > CJi 0 G O H W P P P © 0 0 © P G © *H
CL © W 55 CL H P 6 O •H G Cl P © P rH p p 4-J o u 0 G Xi u P
B © 3 X © © *H nd p *H w o 5K P rH P O •H O B 10
3 © rH 3 3 P > P G P • G © at •H nd X’ CL © X -H »P K K P •H ©BP
*r~' x Eh t- a. O •h nd © cn O G © X -H J H D1 P O O © P P © *H
P 0) w © © G © © © B © rH © rH © nd G P Cl Cl B 3 P p
o X 3 o nd P X O P B G rH X © U X © ©P! -H CL O U O'1 *
P P P P P E-i CL © O o ■ P QJ © CL C3 > O • > © > nd P © to o •
o © CP W X U *tp p P -H W rH © *H nd O nd © H 3 X nd p ©
g <l) X J O G B © © P fcH © CO P G rH G o © © G 3 • W
x Eh O P o • © Eh > G rH <p P © CO 3 © rH © © •H nd ©
O Q>
•H 3 •H nd S X •rl O X H X > o O S O p © G nd © B © G G P
P rH P X p m w CL P © © © w P •H © © Q nd CO © S P EH © © X e © O cn
3 © to EK 3 3) • nd W © W P nd P SB •H W •H G CO P © rH X c P p P o G • 0 •rH O
O > 3 U in nd G EH W © a> G W W • P • •H P p © © u © H P © o •H X' S P P
G o 3 CL
© B © o © © CO P XJ © O © o © t— © nd © P © © • O G ©
X © • X CD p 6 W CL B w a. P X > G P P L-l nd G to 3 3 nd •H 3 p © © u U
© 4H
© P nd PC © © • S CQ •H X © P rH H CL © x^ O CL O p O G © • P B O u © B
P G U p © o * © fi © © •H © X w © B to 3 •H •H 3 •rl P © © P X’ © B © p X O
© © G G o u ro X © P P X © *H P B nd na Vf © B P © 0 P © © p •H P © 3
©
© a> P E © P O G G 3 © © •H © G © © P P •H P © p G
p B B © p © G
© C
CQ p o B p U © CL Eh O © p 3 P 3 G © CL O © 3 i—1 P a> rH P O G a. nd nd nd P p
© P © X Eh H p © G © fd P P3 <P O © EH P P O w © © G G X W o P •H
+ p O
O © 4H o P © P W P P >. o P Eh O 3 nd «P > © © © X © © o G P P
T— to to G P 55 r~ © MH © P P © CO o © X P 3 G X p B S p © G nd G
nH X G G CL nd 0) 3 P CO © • © P C O o © rH E B B a> G 3 U
* 3 nd 5s 3 P © o •H O :*
T~ © © PH c nd B © •H P nd •H •H G © rH rH O O 1—1 > © G ©
© © Ol © © © O © nd P
X P G o G > P © p X •H U u o P •H •H X
o P 5s CD > o o p G II © © 1 E S rH Eh © © © P c
© P G G •rl P © Eh •H O 3 O M © at p © 3' G 3 ©
ex 3 CL EH o B CQ © © X > © u © © CO
3
H CL D rH
P-1 H £> 3 P P e CL •H Eh © B u CO B P rH U •H 3 3 © p © O
ED 3 © P 3 •H G 3 X rH O ©
in H B E-< PLf-H rH © in © PL CL © rH nd © © p © w © X © 0 P p 3 E © P rH © O C
•H O o •rl P O p O o P © G P P 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 p
O f*3 CO CO Eh U © © V to
O > U C5 X p a P u p Cl Eh > © © W G CO nd 3 Eh P P E CL O P * HH a) 3 P > 3
© Ui rH
nd G P £ © O •H »H p to at
G © X •• P P at © ©•HO
© P © < © o © G X P rH
Eh G s •H 3 N O P • p P P rH
s © idi H *H G P M p G O
•• p © rH P £ 5= P W © G © © G ^ © P
c EH • P G CL •• <j> H O CO W B © P P © © a
r G P O S CQ H 3 G •rH © © a O P a © G
o O £ X CL P P P © 55 O © *• P ©
P • •«H P P P 3 C to P 3 © p p • P © u
G © CO O O CLP O •H X P © nd © G © p
CL nd G PI © CO p • G p O P to to
•H U CO G • o
P -H © © P © B •H P o w o © to •H P nd
P O nd © CO 04
CL > P 3 P 3
© CL rH © 3 PPG W P p -H P r- G P CO P X ©
CL © © <M 10 P P X O G © 3p a
rH nd X © X G
© > P •»-1 P M © P © p rH © P © a P
p cl a) © P P P G G O P 3 O G O a
G CO © © CO ©pH U O P © O © X X *H O ©
CL.H P p © U P cn © . © OP a i P © © X B
G 3 P 3 P © © © *H P P M ©
O G P P O X
•H •H P 5s nd co © nd *H • P v p rd P P B •H © nd x © P
to red rH 10 tO © © nd x G » X ©
►< CO O © - G to nd ©
X © © UH P © w to © © £ G © © © * P to • p © P P
3 X c • P CO © X X o © C H > U 3 id to « © a G o M
M > £ P 0 55 S O G © © U p a o
n3 p P ©
© © CO O •* O P H © • •rl to © © *H to o O 0 OH©
© X u ©
G B 3 CO •H X X Eh X © 3 (0 u C0 nd p P P 3 p X © p o P G
O •H O rH > 3 © ffi « EH 525 U) G p p C X © •H ©
Eh P © to © G 55 U * 3 © H © © O P CL P CL G O CO CL
P > *H nd © nd H G © X 3 P B «P * u o B nd P B H Eh O G B
G K -H P Eh CL B H — G G © H G © O CL O G
nd G © CQ P © IK © © w CO X O © G T~ it Si T-> S> O H
© O p 3 W to B Cn 3 © © U G O 10 O nd O
P •H p © CL G "X B W r=« Eh > P -H *H O H nd o G O O
3 W rH G O m © O © rO p p © p © I P
O 3 •
O w o X •H •H Eh O Eh p 3 P 3 X x © 3 5 O nd p to •H
© a> p © W p • p EH P P P P u 55 G P C G nd P p a p G
X p P © © O © m a £ 3 0© W O © O E G © © © G O
© CL p © P P H P H •• © P - O G X 3 *H © *H O © rH X to © •H
X © >' P CL w P w © to EH o — © © EH P X © P P B •H E B P
W © to X t* Eh N 1 la © X w 3 X 3 P S a 3 © © 3
•H nd B © w H 3 © M © 3 © -H nd O p O o •H c P U
G © G O w © 3 to G to P CC 3 P G nd © O P © nd u to © ©
X G W X © P x P X
nd © X © P o ad Dc 0 » 3 rH P © P © P
G <P w EH © r Q rH O © X -H o © G 3 © P 5a to G to ©
© G rH nd rH B 3 3 nd > CO P © a 3 3 •H © nd
M ro •H rH P © © o © 3 3 B G © ©
E •H rH © nd © in © © G
nd B •H X-’ © M W X a- © Pd © li © rH •rl > © X P X B 3 nd © © a P
O nd IB G © P EH X X P •H O X nd P nd H p O 3 G P ©
G
© u © •H P 3 Eh © nd ►« nd to CO P ■H at to p G G 3 o 3 © © •• co
© P X P © X © — tr> nd £h • nd © © © + © B P nd
B CO
w P CL G X P o © G G W P P p © © p B to B • O CO CO nd B CO © 0) o
B r— CM
*H © O *i © nd 3 to •H © H to •H G • 3 © B O 3 B CO 3 © G O p X 3
O x—
u P o rH © •H W • w rH © P B © © •H CL X O <N © O nd * © © U P © p ©
P p X •H © P •H G. O © P S CQ p to 6 to-r •H p O T— O O G •< u p G X u
W © EH © © X E- CO o V • © .X © Uj 3 3 © B G 3
E-i E-< ©
3 G p •H “ P X 3 W P rH 3 o rH © P O to © o o rH o B o rH X 3 3 P © •H 3
3
cl CL © •H P • • CL E CL •H CL G CL © rH • © p p e-» Eh rH H B E- rH B 3 3 P S 3
X © © CQ X 3 2S P © © © 3 P •H •H P © © o o O •H O O O •H 3 O O 3 © p O
ss 5z
a > £ © G H Eh •H P O H H > to N X 5Z CD O at O U e Pt G O CD U P •H CD
M
Page 14 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 84025 May, 1976
131
OJ H o X
* Z
* * U * za z * UJ
* * o * U
* oo * QQ
ND
* a * * p * >- zo * oa •» — t- <
* *-• X * A«n * za * PUJZ to
* 3 *U) o to * UP * * JO
* i a z * < 3 < 3 —> S tO
* OS< IL <u p 2 P P aoPUJidPUJ
PP td «H Q < CVJ o to< ro uj <t a h Id-.*- s;
* * J -J I uj ajcoop uj aa
QCIO to Z h-i u to tn Du. vD XU.
* IttJP p • O*- t- _] <Jh«H a IQ
* zoujh < P < to pa to p a < PI o
to tnujl*" to x to P p J p iduja PU mince 0“Di u-h-oo
* * »3JJH Z• PUJZ
to I — a torn ap u a umo a ~u tntoax < to ; auj«t>-:iJ- s <in<
* DO (J) «t0 _J *-« < (3 tooa U.I!
toaaoa p UJP < ^CPIO * upto 3 UJ tO a x uj p x au. p
* MOP aa3aa:UJ<QU oh h
a x a z u*- * a < •- *-• az a a *h \ZI U
* * UJ I « D_J o<<a (D H> HU!
z p id to i to c NUJ 0<<I * oasi o<P n j o' X< 3 Z X <
* i > < UJ O UJX<U
* * 2<t9 JO PN UJ jut- < COP X O < jj—a x max
aui a u CD CD DZ *-Z 3 >a xoax nu<o
* * P 0< CD D < a*-*x UCD < IL UX
P ItL J P U3C U. a h u. zuj too Z PP < Z UJ 2 h<<: hjdiup *— uj ®
* D t/) O UJ < JP
* * ow >- a «ujp p < to ujua a D 10O X< □ o a zoj o uj x uj j —* in> ra oxQ- ml *h
cuzujzxioa'p (0^0 p a u OhU UJ D u<a <o — a u a £D U. X P t- i~ - inoujz h ooo
* *
p p OPP 20P JP a dj OP I UZ ho hIvhjho mz
* * * Ul*- *inzH m jxzo
* odujpp z i * H4 * z to to * * «-« to * < to * Z P u. P * z oz
* *8- a * zo * UUild * * a u. uj * > id * Old D * o zz □ * xa *UJ»»OP PtO*-UJ*-ZULU.
* hpq; * * ana * tda * ua N CD * ua *HUZh(SIBhJI-U<mh
* CD * uj in j- s * *-*u
* O * > Z< "PD D> z
* CD * < I I to o Z CO
>\D
* a * x • ia at- acn
* J id * ZOJ CDt0>- - u
o < a 3t - 3 aa
* id o > # D ZJQDPJ
O P CO QC to eg UJ p > JO UJ o<
* H 2 «£) DC * OP< ZtO z
U a a o < p zxx oid io> to
* Z 0< N id * pto J< oo o (O V"
» »~s (3 a a * X J Z ZX • • ® a »o »>N < »
* * a z j oz o * •* *
• M UJ to a nujuj .tujH .j
* M c-»* IL UJ * * to 0<p tu<o * at- J J <-» • u. * o X JX 5 * Kl ® < U.“*0 a}
X # to to • < < << o ujiuj- <OZ<UJD» <• Z Q (0 <u.o- X* UZQO-XUQXtO UX
*
*
a
OZld
z Ida
_i
*
*
*
*
h>Muo:tn
ujmp on
td X^CZP
J M J ro
CD
a.
u. o I in > in * J U ZP JO a CD M T Jx a a j a a*- j x ja «-•
*
* hUZCLO * CO o d oto > a < u oa< izaa o co a a jtoa < oa p o a p < a p ua a ja < znt-aujaamiJrao
* UW | D Q Z * UJ p uj a -< uj j u uj a-oz i UOJJ o 300? os X □ SlUOSUJX DSIUZZ o <SI O3UJIZ<DZ30<aZO
* mhw-ujo * z uj jppqcpwct OQJTU x-*uo J a jh-> uanu juajuau uua*-^ auiu ~«un»u<naxuiJTj
* 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-
SSI
* > -J * a •h uj uj to P UJ m z < J
CA 94025
* 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 <3
* * to Z ptooDI (9 C3
* * < Z PO CD < 2 (OP (Si (3
* * a —< (3 Q
irk
* * T <UJOZa
to 10 o^o to tou.
0
* * o op id id uj • oO o CO N
* * a cd to a p >1 z coo o o o o o oo ooo o o*h
* * id oVMiauuPO o< CD D o < in ^ UJ O CD H <*■ o co o u. a oo
# * N coa pa too*h O CD vO O o -» io <* t\l CM a< to u_ a ro oo o
* * oto P n-nu n u. tdm UJ if) < r* ro QinnN U < O O CD O < ujoron hODN tL'etD(\jnot><iomoN<-» -
* * * UJ 21 »-i UJ UJ UJ o u IU0U<J UJ UJ CQU n Luro aju UUJUU) NCO UNCDU-d- HlLUnU tuu^ ujqou^ucmooujuujqcnj ro
* * * XUJXItOXSUJ
OH<t N CO 0'<CD UJ o <t 10 CO CD U U. o cm n <!■ Ifi OO O CD U O mO'D3UU-OM<l-N®0>000 s
* * * PZPPDPP to
* * oo o o o o oo o HhHH •H •>« 0-4 CVJ CVJ eg OJ OJ <\J CM cm eg CM CM CM rofo n ro -
* * ooo o OOOO o OOOO OOOO O O O O OO O oo ooo OOOO oooooooooooooo
* ****** * ** ************ 0000*0000*0* OOOO OOOO * OOO 0 000*00000*0000 ♦oooooooooooooo CO
G G 0
0 O 0 o o X!
G G w I M ra P P
P G P - M W P G G 44 P u
O P CL O *H G o G o a) O <d fG l
G P G "G | P 0 S p mp P M oj H
P Eh G P P 0 X 0) (d w E O u O
G P G 44 G Oj EH G 3 p G P
P G O G O o K (D O w G 0 P
G W G O -P X! VO O udjs . G G
0 3 03 » to G • P 0 *G o w P P *G O
-p o a. l *G P »H O to M 3 CM 0 P 0 G G G O
G f M G ® <d H 0 e Cb o m O go o <D 0 G
'G C P 44 O ed Cd cr> to G *G a a> G P p mo e o 0)
<D G 44 14 <d <d *«c tr 0 td cl a; G >-i M <d (d P g
w O J P % a, P4 P X m <d p p 0 -h 0 p M 0
G G G G 03 O td 0 w p p G w o •H .X 3 *G fd cl P
<D p in O U ® 1 P* 0 w o p •H g P 0) a
<P G •H | u G M ss G P w G w P o >c W p G M ro
rQ 3 3 M *P o H P 0 • p 0 w G G -H f G G
o 0) = P Eh M *G p W 0 3 O O W P 0 M
O
G M r P p Ce G P 3 o 0 p o PI G M G M P ro
ed G • EH 44 o W 0 G G tO p. O <d O c G G Kd P -H C G —
U 44 <D to c a 55 G O M P -H T3 G 0 G 3 0 G 3
(D Cd MO C CS u *U p P 03 P P 0 a a
>
Q)
0 w G M U 0
= Cd
WOP G Eh P CP W nd O GO Cd u 0 S E
0 G P 0 G G O G 55 G 0 G • 4h 0 *H 44 PM p G • o
'G •H 3 P CL • O r-» p -P M XI O (d P 0 G Eh p W G G 'G o
> W P 0 0 P P P 0 •H 0 P W 05 'O •H G P O 0 G P G 0
P 0 M 0 O-i 44 P 0 Cd P P 0 P 04 G G G P OQ W G P
o
G *G Cd P. % *G P ♦H G 0) O u O O CT P • 0 G
Cd m <d P fd *G G P *G -H 0 GJ a) M * >-n3 G G PPS G P 0 EH -H
"ro
C P *H Cd 0 0 0 G p G G p CQ •H 0 G G G to p c
*H G G * 0 G Cd P *G O Cd P G ® w w o Dj P X U *rl P M Cd
Cd Eh G 0 O CO G G • M 3
O G *Td a) n3 P P 0 Eh
0 G o CL Pi *H 44 44 0 p • = CD o
P 0 G W 0 P 3 G P G G 0
“3
G •H G P G CL P -H P O G o (d O *0 o 0 Cd G
P G 44 P G P <d o m G M-H
Control oE Output Device
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 PG 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
o> a> _ G (d Eh II ii p P 0) G , a)
P 0 G o p g G P 0/ P 5z p O p -H 1/1 * 0 X 0)
P »G G 0 t* G P G P G *G Eh o G 0) M <d 03 P P M
G 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
O 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
o G
Cd fO
P
Cd
Cd • P
03
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
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 ka u x
UJ (/) o a *-• cm CE OKU My oa UJ z in < a uj< a h ja: U
X k a ctu KK o M fr- _J O JD 7 uX M uj uK _i < or u. <->h <u.
K a ujuj (OUJ uu 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 <JM 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 < uu u m« u z Mu <uu zxzzin k
UJ tr z d-.'-z OO JU1 Ota: CD *- X Ou D * o Z X z Muu KU uenu J —u <zux
N aozojo 7 UJ _J z -J IL X 2 O I z »h o in Kin M ou • z> • UJ Z UJ CD UJ-I UlL -*XK
Z D in x~~ 01 10 z DUO -J O UJ < JZ“ < -J zz 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 Do jkjoz xuoau
— z <z CE •a o C5ZX U K < z aoj 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 ou 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 KX<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 ince 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 01
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 OJ 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 • • *
CD N z OIL id i x 11 m i« x n n j _j*t i
HI
u < u. o
A
A
A
A
8
H
D
D
A
p
H
H
H
A
L
_J IU»-*UJ (/) s
G
a uj*-* u- KXO CX K
c
D
A
COX
tr <1 Jffiiw u x_iin <<Ku r u zr J
u Z|- M (X K Z u M 1M _JM M ** JI- _lfD X IJI I-J _1 X— —
Mx o<< CEO *> zz 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 Dz □ cx aa _io_iuio_jcn_iwui_iua_iu« -J- a D ojmoj«iajioaua D au ajujBiajaaui<JJ<
UJ Kz >- * 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 ►- < KX 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 — KK V-. K K
Z K _J CD V -J M (0 *- cx < IL *->_JZ in in U) w
z MO 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 2 o - ko — c\j — c\jc\jujoin^#ou.cjin M < couwcBOCMtoofninoin w ino «-*<Qor'JM<MlOUJ<lDU-UJO
-J x uDJU'ncvjuwu.uULUco'onco
V) U ’ CD 10 (D UJ CL X CD >UJ< K K 10 U U-OiUNNNNNnuO-UUJMB u u — K — -K-UMMLUO u ou
O <|[ 2Z 5" UJ o K OCE X Z CD U u <*- u
Xz <oo*-<tK<Qonincoc>ou.o-‘ CVJ n
U- OUJ D M.< CL K I xxio «OKCDO'<CDUUjU.O —<■ in CD O' uooniooiiT'aJQUioro^uih
< co S Z w *-• Z K< ODUUOUUyOOOQOOOlUlU u u
< -JK Z K CO HKK- IDUUJUUIUUUUILU.IL IL U-lL ILILOOOOOOOO"'*’*'1-
ooooooooooooooooo o o oooooooooooo o o o O On** —hhh — —h»4hhh
****** ** **** * *** *** *** * **00000000000000000 OO oooooooooooo o 00*000000000000000
V) J
K * OU UJ o*
KO * <K—ZI K mz in ->• -1* * X
N< -JO * XV) A CVJK UJ K cn z K OK KK K CD 2- au * * <
u xu hZ I > CD M M a z mcohh M o- ua * a
ou o a — CU U — UJ UlO u — uj<o-oo uu CEU KUS # o
K z< a Ui O ISQ.I- u K o > M MM -z utn U>K * o
u cn •-« u K • U KK w hO < in X z JOllJQQ OO < <03 * a
< Nin j tnux KV> JOJ o * u z OX CE o in o * a.
z UUKU ao ma k Q-J.JU II x *k a u UUKU i - mi UJ Kin x *
ka x a _j — JO. X Qooa KUJ * D zoxxo iu (/) o X *
-D ODD o a 2 Ui LU UJ <U K D UJ K • -« KUJ z-< u< *
K OH”) I IH UJ < oa z ZI UJ in * z* w K w(/)« * V)
DQ< Z< * <
a in u o<-a j < KK •HI z-- > a a> + * o -u o a
—a a aou u z llJ II <1-0 X K z cx ocncEin JOZ UZ mo * CD
a Ml M m a *
X IU< H k in u urn x X o U V) Z KUU • HlflOH I-<
*K K K > UU in- x a 3 k KK O - a V)MQh zz nju Z * oa M »CE * >-
UJ wa IHW * Z
(5 O d a K K <□ O K - *u K ZO ODw CD A D OU K
te I _Jz <ak x cn aji ZUJ • a ii HDZ ZZCD X 2 O -a u -u K— *
2< OK * M.O X-Jh H- UJ 2 Q * </>Z < K CU H 111 — oa o u* *
UK
UZ ou u ox z — * xz Q O h U_ >• (/> • DU- Z * UJ IL uu □ JII ZK o o —* *
-UH< 3 *K< UIL3 •-•id a*-* D-< * K<- tn m a cd X 3 cn < in u oo* a a * UJ
z- U * X
a
z o <3 *
o o *
£D • * m * V)
a a a o o — — 3 «► * K
< <n o to - U. X J_I_IU_IUJ . ujZ oat- * <J
UJ OK IOJ * 111
O U tD ^ o < * a niaxo u.
S3 • <o < • ZO • * ♦X* MX • f . « • »— o <0 < w * *cro * -J
_J • • • _J *U * *.JUUUJ _J _l . O * U » N UUJJJJ *W. • • • u • muucrx *
D UJ -J * o
XXX xcax - uxz<xztDCDcoixxr<oxJj< IIBXZOOUJ*
* u
-J
-J *-• M Ml CD m CD m m ►* I — — CE a *
jat-aui OKQOOUOK xza aazaKaKOoauinooooo uaaaouaa aiooa< < *
OOOQOOOU UU2 OOOZIUZHjOZZZDODOOQQZZQOOOOOQZDOZI X * <
<au22i X
_ja <jj<ja X—U u *
* K
*
> * a
z 31* cx * o
u OO CL o
04 K *
K O -j
> in U V) TX
K o< V)
k K
*
*
o u * X
(9 in n *
*
(9
e u CN < 4 * * ui
m m m * * X
in O o mn r— CM * K
Q O o o cn < m * z
o U «n ©u cn CO u * — m
ro o o O U. G U O
vO — O O K O n UL O < O o K <<< < < < * < H
., ~__
pxiflW'OOHiiinnf'iO' < CM in^ncoouoKOno
*-• <t u.uj toujo uj < oj <in < o a>0* o< ro votnu ujuk — <ojin * X
O^OUJlLCOHMNmU-UJUNO
uouu.no^woiO'Ona)«u WUU^OOU^^WliJU <M<UUGUGm<UOU<CVJC\IQ04--UCO>OfO£0«OU-UO.- — U o —u<o<oinomo * m
* *
©ououo —wm-itino n<to>
K<(DUUJU--'C'J'^U)COC7\<lJOUJl.,-0-^OJ<tl/)»0<DO<CDUU.Olr)UJ<£DOUJ * * X
mOKccxcDuoc—cuminioK
inioir)ininif)i/)ir>vOtO'no*o»0'0 iDO'O’O'ONNNNNSN
CD CD
Kf^.NKKNCO«X)<n«ClOO£OCOcncDCDajOa»CMM>a‘C><M?'C'CM><<<<<<< 03 * K
w w ^,____w _ ooooooooooooooaoooooaaoOoaoooooooooo coo
ooooaooooooo
OOOOOOOC'OQOOOOO
ooooooooooooooo* ^# 4000000000000 #OOOOOC OOOOOOQOOOOOOOOOOOOOOOOOOOOOOO ooo
Page 1 6 Dr. Dobb's Journal of Computer Calisthenics 81 Orthodontia, Box 310, Menlo Park CA 94025 May, 1976
133
• u x~ • 3a3 © *
© © z u a ©©© a _j *
z X — -X a H H H © 3 © *
o z ax H Xw o P-Z-O- D< © *
t-H in < HUI X S3 < ^ Z *"> Hu * H ©H ©
H a _l ©HU UJ • •OHHX < * ZI © ©
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 U_J — o< <
UJ JX UJUJT2 © < o © ao * oz©a <© 3H
z o aUJ oz _J © U ©_J OUJ15JOO J© © 3 * ZhXH H ►" H na
; fr-s V-5
x ©a o uju < H © © •> 0 ha<< <© i© o UJ * <o©z © ©©<
H a H ouja 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 mo 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 3N< -J * ©© Q © H uu
X > H O V) U- A % A II V V X J UJ »UJ « * I » »© » J UJ©X *3 u 0m m © X * x a - (J)< ••© ©<A
•»
N
0
H
M
H
A
X© }
H
M
N
L
X
iVQ<Q-NIJN<02U © © ^
E
* * 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 3Z© 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 • H3
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© jauonj
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 £DUrr)«-,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© ah * ©© © < 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
3H 3 OO U© * Z H-» <• a ©ox 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© HH ^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 —
*© UJ© >©>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 OH 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 oOa ©
* 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© • wO 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 st
© ©© © ©a * © H<< • «CDU ©* ©*-. o < O— n © N © •& n O CM o a tL © n CM© st n <
oo o oo * © U3 UH © 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 ah
©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 — — r4 — — — — — — — — — 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 XQ a z3 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 0H 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 oaa Cl zo 0 HID
IL troai-H *- u <H < 2H a jil H fL</>HLL •3 UJ < Z #■ O < <UUD touix H Z 3 CL *-* CL to< Q 3 <C0
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 20 ►4 H to UJ a •4r IUZ< QHlL • *o< CL a • a
ID hqi xa IL 1 ID > ID <iucr h- JZ 0 UJ X * UJ ®D<H JDO Q2X UJ ana an • 0 z3
> IL X ID 1— U, ID O 0J 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 • ha a < Q za za
X ID (/) ZanOZQ II >Z to to <000 to
to < CL * X. wOO 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. aa00 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 zx 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« < zX3 H QCLHCOX
J© Z UJHJ*r.J © lL (/) 81 IL Z * N © a Z •a ocH H< to —3: a x<« X 0 <0 (0 OJWWHU
j** M> • jztr JZ® 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 va- uaaa® 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 Ha « a -j ax o X Xh Ji
a jjjajjja OH j an JaH 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 XO < Z LO <2 4mX3<OJ * UJ UJ UJ UJ 3>- < H x « < X 3 < 20 3030H0H2<
ww 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 DH <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 HH3 < 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 CM M) CM tnw 0 ^0 CD X zz X w H ox 0 M3 <0 O© CO 0© eowa
©4 ooooo ooo OO OO O 000 qo 0 0 * D UJ • UI^UJ oz to — H •< O 0 OO 0 c0 ooo
a3 N0<T0<WLJ< UJ O' UJ O CD CD CO CO C-.Q UJ UJ * to OCLH> <HD T - X •4 0*4 onm 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 <
HO 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 >
-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~*
CL Z
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<
* aa na < ft ft ft z ja J Z ft H ft 0 ozas <
• # 00 3a 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 a3 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 S3
»—• * a> aa H a 0 aa jan JZ J< H aa 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 a2 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 30X oaano ft ®H < a oh*-* a
z ana Z*4 a z a an a a a© a a 0 3ao ft •< a ©*4© H H
-ft
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 3aa © 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 a2 azo^ ft X zaa a a« X
z * ft H •a <*4< ►4 ft as- 44 < Xx2 a H a
H 4 ft O a ©a ana j ►4 a
0 ft an 0 _j a a za z
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 ZJ - z< m<aa 0 z H
hwmQ cr m. X HH ©X x 0 J ft *4 0 0 0 a *4 K«B» Z
CO ft 0 H -j 0 X *H a a a
»-4 * z H • X a ixx X XX z < W3a o<a xzx a ft ja ana oaaaa a a a
ft a H 0 ®a Z^HZ xo OHH 0 OH OJH QUQW «4K O J< H ft a h oaz ao a3 u
a ft ►4 z • an 3a 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 xjj ft > • aa 0 <0< J J4 a
ft 0 a 3J *-* aa » JO JH JO oja X IU joa a a J -J a a a ft OH© • a a>a j < a
ft H HO< ©ax aj < OH <a <Q o< 2 OH Oz <02 X3<<2CZ ft a< ©aa a >- ©4 a < H
• ft z aa 0 aa aa aa 0 ja oa UJ JUT x a x *4 O J3 tuauoTaT ft * > 0 0X 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 HlH H H jtr a z H a 0 ft H J«ia CL *4 © a HOD *4 0 m
3 X
<® 3 0 z z Z z H ft z ** J *-• a-J© oa<z©4 H
2 ft * H U aa a ZHlil
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 ©4H na a 3 a 2 a
a ft to H 0 ZZH 2oan CC2 ft 0 a <a a oa 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 3S < *0 a ®J
*4 or 0 z ©
an
*4 0
0 a
©»
a ft * * *>* aao CC ft ft H © or h 2 ©z a
H ft ft ♦*> ffl c~. a ao a©© in a© 0© 0 © N *4 r4 iri ©0 CM •Si¬ ~oa 2 •< aaoo 3 a
3 ft a —• a a• * © xz ooo 0 00 ooo 0 OOO OOO O ft H aaw O © h ©h a O O < *•**
u * 3 a u ah0 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*4n * j HHO HHJ3 a za <94 a j u cc
a ft 3 0 zas tczzz na O CM CM OO 0*4 CM O O UJCMW4 U CM O 0 ooooao ft h aa zao 0 a20 H CD < 0
ft * a H 302 a3 3 3 oz ft * a*4*-o *4 uj a a a 2a a3 CD •4
0 * ft z a a uo xaaa O *4 »0(MJ cMa © n
aw c*oaa© &UIL
cm a< n <0 a ft * ©4 J jo
a ia lujoa. O
0 ft # ® * ® u H* • • * =J CM CM W
aaa <fr «<t -sT <• < <
CM© an * * a 3 < <h ©oa <0 < <
J® H
ft CM CM CM
CM CM CMCM 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*00ftOOOft0000ft000*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
ft o tout o
o ft © • © < «-* z
►4
© s UJ UJ a * a in
o • e'¬ z UJ UJ * o z©i Qa h© a
© er H 05 X a a HH * JDl CJ JCUJ H
O UJ < ft N© uj o -Z DH * _J>- Z J ©< Z ©
a tt >x Qkl
<«h
O UJ < Im
0©X
—o
O >©
*
*
©
H
ao
o o© ©
< o©©z ft©
U--JU. x<
o o J> ID © © an
© a 3t H ©= Z © XX © © zz < ja <h o * i UiXO
-J z © © O *- 3 X ©©H J ►4 © > H •© c * >> ©*-*H H© ©Z -J o >
«c OX© © “HQ a s ua©z <1 a IHn|~ q J * © • Z2< a *M *-4 © © illOQ)
o 0©D©0 «5< H
X © -ua z> ©©*-* a z © ©o©© © O 3 © © X HX X*-*© Z * Z
o > < z ©-J »_a > .. x< a Z < o H u NUJNJI< © ft Oo ©_jN«z O <*-•'(0 O
a z o ©H » *-* © CD © H © xu ©a o © © < H 3 H JhJ- H •* UJ*-* Q < O zz ©a;H H ©
© D X o in© H a< >x • z © >* D xa © 03 N4 OO «J ® X * CCH Z >> N4 < *-4 < 1*-*UJO
X o a z z o~< © a < © © H U a u© © X ©©© ona H ft o~ <ffl© •
©©
© > ft©©
j- © o d©o a oa©H < © 3t I © o ©X J z H Avaaoznz© * zo •ID I 3 U
o H aio u << > > © H«J© a I < o M JI <o*-*« an © * o z zqnui a CZ H© zo
• H > •© <3© O u© > A a aai-tnxxaz * NO O© © D< Z*~* *-*©tt
© © > o © o H ©> in in • »a o z o I o UJUJiV/rr'V a ft u N|-H Z < a©x © xa
X © a zzo z UJ O UJ < uJ OJXODZOO o JJ H hQUJDH<UO O * © h< *-® XH <H HH
H > H <♦-.-> < UZ>-W o otnujoza cou < xo ©©uaQ3co. a a ft UJ - © H 2s X©X <0
ft © Q UJ iZO o • Z©»-*
H a H u ££ H ft oj zaooJ •
a©©u«J©
U<H© ©►*
X < zz H X z < X # z< X UJ
a HZ > H jcr a z *•4 > J ft <UL U U)V) 02
DZIln
- U) (D
H»-* •< -3rf
n z cl <a a < aaa a a a a *-»uj #
cuj aJo©sja© x< ujo z NOD OUJ * o ujluo o XUJO ft ©ft <~ O J Z 3-* ©<
lt.QOVlI^QOIJD a > OJ 3 xju -JO<> j OOJ j zoj * z ©H »-H *-xoa • <*<
Z • **•*• • £) ♦ * • o • • •x < a z• • • •
z a POX X • • • *© • *x * Hi ©• OH< H a ©a< Znir
-J©-J.j • • •©□._JX *-J *JJ
-JJ J j ft XH ft © Z D X X an a> okc
<tilZIIICDXXZWIII xox:x^jisi Noa iziuiQir
xxxax ft H *h *h OH © • »H< JO
© </> in * H 3 • • ©© z i < o>
> x
X a j X
x -J ~jh» * Z a —x© ©©X U UJ
oo.axooooojo xz na ©x
©X oaazaa-j
oaazaaj aouo ©
wqi ouo atrauaa izjz * <® aa ©o© XIU© UJX
OZXUOOOOO<OOUM W)XHDUOOOZOXO<OXOZOODQUOOZOOaOZU<OSQI-QUM<w ft © x©- zX HH<n <IH
JUTXrJ<JJ<UJJXH mwaxjjmu-)aujTjNjja<xjjMjjamxuanjtf)Jxu.utL «• >■« ©IZ • ft H CO H
ft ©V H©OX ©© X > U-
ft oz
ZDiaSH X »-* < © © £~*
ft ft O H © O ft H
ft ©ft • NU J ©H4 oz
© X CM ft 3 HO J © e *-* ©*• •
a. UJ X X # n© © ZO Z© © ©© Z 3 a
IL z z z ft -J* •-aax o H4Xff < OOOL
* -J*-* O GOZ HZ ©o -JUJX
ft o-J ©0 3 — oh © Ja©
ft © 3«J © •H Zm -PH. o>
ft H OUlllHOZ < © U-H W
* ©M JZI fY O XlL© N
ft © jHHkUJU XOH • H © I
# © G ^ O On DCDH
n O o © © into CD lf> n ©fflH CD SO © © © ©©©© *Q * ZH © H Z UH3H O
o o o o o oo o o o o6 o o o OOO OOOO O # ft< ©ft ©©O ©oz OIL
© o Oft © u. ft © n io © in in o O' n cd o no nq-h in ft U© © OX NN Hi • H H OHO
CM o ft o u o <0 O < yQ 0 © © o O O (X) N O' o c o o ft a *-• Z H H H-J©a UJ
©tDCMtD — Oft-HC'OO'ftCQN U-<winm<uin<N<^o<©UJfn'0<inc'£D<fn©w<«^Noj©o^<<cj<©NQN ft • H < e •D o ja H ® UJ
NCDuacuroftCM — ua<\j©a aOCMO©c\JNCQU©UQUC\JU©N©C\l© — ©cUN<'JNC\iaCDa©UOQ<MCVjC\l©aUa ft X • x©a a u a <©- zao
ft ©*-» © xhcl© © Z D HlJ
o — cMtoioa'ftuaonftN© C‘ftQo~*cvj©©n<co©ac\i©©C'ftcQ©a©—ft©*oHft{Doao©ftN<ao«-‘cvj© * aco *-* oo x X X N>OZ ax<
ftftftin©©©LO©©©©©©tc<n»o©»rv0©NNNNNNNNNN©©©©©©C'O’<?'O' ft * H • UZUJ©© •D3Qn 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>
aH 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 HO©JO 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 ©
aH ..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 oo . 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 HJ 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 ©J2 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
oo ©© < 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>Ha 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 ao 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
© 3I ©
< u ft • H «• X*- ©HftttJ JH 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 JJX 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 >hh©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
•» inh < ©x oaxz x • x a *o«z
# <— »l3aO<JUh<HbC h •© auu o
* 0J if) 01^0 ZUJQ> U a >-* © © ©
* ••azican »<o: ozz •< (DO XXX • • H
* ©x<h>x < <© H <o hhuh* d a CM rn* © N
•» 3E © © w UJ © UJ • X © V) © © • *- *-*au o cc a aa a QL
ft a 23© ©a-©Hze>o< © - 0©OX
o©o: Q© a a a aaa a
» OO x©©<z> o»-©u© ©«az : z z*
z»-.©x
ft ©HX ••HOI -J<Z o<n X >a<~ c *-• <-J*
<. ©
ft a • H©0. ©©3 D © H aa>t ►© •
* OhOWOUJ- >o x©z X ©©a x©t
j©©o
# 3a© *Z3JrfJliJ(.ZlUC0HS cn • oout JIXZ
ft hx --«j_Jin- x x < o 2HH<
ft ©ow© << H •© - © * <<
© © © © © ft ft ©HZ > • • .X n«a ai X 2 hZ15 O \Q © ©«-«->• © •>« w* ©O©®© ©O® fO ffD
O o o O o ft <ao j ©« • Z • H J© ft H ©U an Z© oo ooo ooo ooo oo ooo o o
n ft n © ft a Xfto • J H > O H 1-4 a j jho > IftH ft X — O —© NO© ©V0© ©^a-^O ©<N ©
o < o o o ft o >©--z< a 2 < © 6-4 CD <© a HHO>H3(T ©N oo© OQ© ooooo ooo ft ft
ftU^ftO' CM -4fU^4 ON ft a - © 11 3 ©© • JU >a 3 <Io HO ©Z hCD oomcvj«~*r)©oj-*ro©r>-c\j<(vjcDOd.- <coo©a©a©n®<ium<eu
CUNCDU©©(\J©WQ«J© oca — a Q.ZQ-Q Hh-ct x x hJja Ou<NJrvjojuocgojoouiMcuwcj©ojoW©'0'OnnoNcvj©«JNCJfflo
* ooujo.nq:qhionoiimq: d ©OH©C< ©
ftN©aoQ©^«<Nj©«na' * ©©ix0ozxjij©iD<©a zzNiHiiouw <Oo^ftN<co©~ft©>eoco©*-'ftir>©m©©o-«rgmftinoN<JX)UO
OOOOOOQ©©©©© ft • * H©HU<H. H » ©H>N-w • QJII-Ot-HlLH ©©©©©©©©©OOOOOO^--* —
CMCVJCMcmCMcmCMCMCvJCVJ CMCVJ (vjwwwNwwwryjnnnnfonnnronrnnnnnnnnnnn n © o
ooooOOOOOOOOft **♦♦***#*#♦*** ft*ftftftftftftftft* ft* *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 AJ H J z
• X• a: * IUJ 0 v< —J II d -J CM< © IIM
•J 9 */
© OH < * • P* © © •< on X-J o X x a A3 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- JA O X dz a 11 0 II a 11 ©a a h- «
►4 * * P* UJ© * H < a U1Z C\J • t Z Dd » z j aj 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 Jw 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 »4va 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 * < © U1 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 •
0
H
N
X
N
H
U
A
H
C
A
U
L
U
C
E
H
L
L
ujiiiuxyjDxNjDXNyjDxjNg
X
•hX < ©M ©• JI * -j 0.UJ©O • X > 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<UJOujI<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 * UJ uivzvujz UJ© V OL CL •4 -4 -4 -4 *4 •4 -4
a
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
* ©AA >--«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^CM7'^©aoo©o^-4iij
out — U.U uuwooa * aa aDaaaa o.wa OJUUQ'OUUU®U«JUQvOUU'OUQ‘OUUU©UUOOUUJUNUJUJ*UUJUJUO<MPr)
* * XX 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 3RCT V3tVV V< V M4H44M ^CMfMCMCvJCMOJCMCMCMCMCMfM©©©©©©©©©©©©*-*^-^-*-*^*^-^©
■tf <f sfr * <■ < <3- <fr *
000*000* oooooo* ******************** * ooooooo oooo 090 00000oooooo00000000000000OOO
• • a © e'¬ < K
a H- • a z© er 0 0 a
a OO x • • WZH d OZ >© 3* K X O • a
X a 1 • ©©• • © —d © a— CO
© 0 © 0 a X ©x
0 H- dd CD Z C'-H- a a m X « P-U
© Z _j © DP ©<
♦40 <Z J© a h- Z ©H- O <• Kd a © p- d u d z<
OK© • M ©© —0a0a z © d 0 < m WHH
©a *> d Z < < _J a
© O s © 1- z >• ►4 n X 1 P O a 5 • a h- © z • © a d (D © z > P* o©-
a f'-IZ 00 • 0 p-©© * az a o< O O < © CD < 0 d X 0 © a h- © j z a •
-J z UZHQ 11 © Z (X *©a * ©Z> H <©d 0 O ozao x Z d z*
H-H- O
*©x © d--o OP © u Z HhOIJ ♦4 d K»4
_J~ < O <<d © • ©© * a p*
XO d Dd© • QD X * ©© 0 h- a a a zx © • O ©(DZ-JO o X «
>- 10 * X
3K O © © *H-3 * — * a Z IH d © CJ ©P- <H- a d* <p- *4 UJ < © O © — < © © u ©XI
* d •
Z * © * X -dKX dO- P-D H-U — na >—> dH- u © >OP *4 <0 UO O HZU
0 5 © a
oa • d >- O OO© * © P- — © © a D Huza Q H- > *4 < I K©- © O
z a K H- © *4 j- X X© ZXZ z a ©Q o z azK D ©— O © 5 < ©© z < k ©a Hh K H- < Q ODH
za J ©*4 z—x CD CD a CD <*• © d *4 © < a© © ©©<©© > © © X
•4 ©a zo H© H- ©— a © O©D
-ZD < © d -X U dO -00 0 — © < p- d P-O 0 IPOPDCDO O O©©
d H-X
*- *- © d JJP © H- - Z p- 0 ©z • — • UJ P- < ZH © 0 ©<© Z Z_j © OZ
d< O
©< © <©D * — * • ©0 # ©O O Q * > © d© >© Ip —© > © z > Q-Q-<Z • > P* Off
a >
i— a 0-0 * X *© o©za * ©z Z© * <©0©<©<0i© a© < J ©< ©d zo >< x < © z 0©
*© ©
© X ja © © oa x * p- * — ZH<M *d< <d *©~z>->>©xs 0 aa © < < <© oa <a©oo O <a—
IZH JZW © © < H-
H- © —0 © >— © © a p- p- k d a K
xa ©Z * X © z z Z Z© z Z
Jtrj
• H-O a z X <© © p" — d K d aa - d ©
© X0 zaz X d < 0 d -d a X a a
— D
©►4© ©© P- *H-Z D^O P-J D u ^ I© © H- © ©D - zo
ao up © 0 h.
—© < 0 d©d ©X 0 K a 3»o 0 © O DU ..©CD
WUO ©© O u •
©©0 HXU » •
•» X •0 • • * • © CM *4© O w< w KCJ ® * • » • • •
• H- • •© Q
H- K-J H- P- JPZ
O < * < a ©©x © • NJZU © a © © tu © ©k a •a © • • • • ©d • _l .UJUJ UJ -J • _J • ©©©a •
O > OHZ a <©0 X <JZU.ZI- X©XIOQ * QOh u*-q u<u<<oa< <JIIIIIIIIQ<UQ pioiiixiiq<*
O • —Z— • - u d
z© J«Z« H-dO - a d J < X© > I> _j X I« *-* I »-• © *4 d U
©01 <a a d ©< z* 0*4 aoa a©ap- on a. a o©©an-aa©p-a qcd ajoo cox too oq wojoaaaxooQii aap-
>a ©a •4 > < P* ox xoox<x© QOOH-oa OD<ZWSJDWXOODl-0<OllJHDUODOhDO^DO<OXOOgOZOOhOOW
JJh
©0 Z © H- © -J © • ©© ujHiuna jjawaa ujauohT)ahTjj«waujowaxjajwj<wajUJiuzQ.xjHja.«)aaH
DUO —a a < •-!•
O K KZ < a* h a
o< ©OO »4 aa © a K
© hZZ* HOXUlL © D
< © © J© X a a-* CM m *
d >-J
© OQ © a 2 2d a a a
O©© • J z
< as -J — OHUZ * d *4
UJOw a>- ©© X <
-J©d xa 3 0 5-P-X>
0 X ©d © 0 © © <9
ZO> OZJ JZWO
—J H-© 0 a JO©©© (1
© -J© d: hz OUHJZ a
ox a v- < a <<o
zan ZdDX xo 0 0 CM® W © © on rnr) © © © m ©o © ©a o ©
M HOU ©©-1© 0 ooo o o oo oo o o o o Oo o o— o o
OH- a© ►4p< J © 0 O'CM CM in — CD IL OIL * u v-i *-S O © < ©K o
©s x — ->-— 0 4t© <* o o * CD ILU < n © oo o ro o fo o
ZW© in ana <n©a << aNcv —oa'nocuincD <©~cm-.0'<m©©o —a o —conmcM — cM — —ao
Hh® X ^*© • ©3r —© a o©cmocmn <o «-*W
<z P> X © cm n OMDUUOU CM U, UJ 04 Q D OUUlLOUQUQ- — -.oujCM©(MCM<Mr>CMOr)U*MQOQ©KCMN©CMQaUCM
H5 ©
0^0 O© M a u—— —
0 a* <®uoor)'0
_J < ©©X N<COUlLO •*^CM©©OUU.O-,<!,©©^©OUQUJLLO-*<*©ffl©UJU.(M©©©fflUU-O~,C\J©*©®<><0
<dz axxi
Ht h-H- C>0'0'a<« <<<<<(£ CDtQCDfflCDCDCQCUuUOUUUUUUUUOOQOQOOOliJUJUJUlULJUlaiLaiLatUULlLlL
~a< 00 - UHHH
©© n©©n©©© .,.
nrtnnnn nnnnnwnnnfonnnfonrinfonnnnnnnnnnnnnnm^nnnnnnnnnnn
***************00*0000000 *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© < K O * ©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
OK3© 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 ©OKXS * ZK© z
ZK ©a ZO <UI Z KO K s > ^© 1 KO O 2 W*- <U * © ©a * »-4
UXK K 30 K >3 »—1 ♦-« «-* < 03 z 02 a II ©©X •• * N UJ CO < * <
^ UJ © *-* ©u © OO © O O a © z2 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 > k2 < 0 * ©KZ * *KkO 0
U,Z_| 3 x 0HZQO< < 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* K2 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< © HK < © 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 yi 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 33 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 OO 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}MJr' -«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
UJ a z IUJ ui
_ zz in 3
UJ A o*-o VA A xo > V© OCM o
N • fflN 3ro a a© JO < UJw zo z~ ZUJZ
Z I 32 JK k a a kv© * u. K •-* K ko in U.UJJU. oz
o o©o <a z hZZhlU in a 2: a in o o JfDhZ in OQION S-4 J
A >x o XOO J> -4 X UJ x -Off z in ITJ2J3 hqq: o inKX
©© r> UJ *-« ©*-.~0< UJ X UJ ZQZ zin UJHDDO zo ZZZz
©y a: uj vlu j<n k ©©© x n UJ V K VN ©CMU. O UJ JOW J 3 Q©U ©imil KUjSz
UJ y~© a > Qi UJ K > > > *”• OIh J Ul 3 o > *-• »-* CD J>an
> <3> x < o UJ ©ooa© u <Q O KJ <k coin in A < •wcro o UJ 0- <K CD inoKin O<C0
IL UJ ©zzza a z z * < in zujq tna inui zz J Ah Z j XUJ inui z in uj iinOK
K hh V <\j < ocmcm© a CVJ»— < oay y J in a< U <no a y cm — y o : in j
< M c- * a K »~© K * < • <u O I o in < a wH • <O Dh uj 3
o CO UJ to K Q WKQKZ lOhh in CD WhOO hJ cnoujuj OK UJ in Kin*-ujo UJ z> inoui UJK K UJ > >-inuiin
< ujct o ©O ©© z©o UJinino jd UJ UJ UJ z Ul 3 UJZJI zinx in ouj 3JIJQ > »-• *-) 111 z J IDUJXm < jinuj
z >h-CL —< >ocm-*u a -*-«©© © >oz< 02 xuu cm«-*o «“■* ZK a<Ku< o no ><u uaouo ©©3a
CM in cm <• cm
CM cm cm r> < n 3 r> <t
a a a a r) cm a z a z az o CM in s © a z a z 3 uj
x x m x m©© uj cm a x roo <x <t o ©©o UJX n©on a x < o©©o o ou
oo - a * ao~ o a xj • a© < a * a in o^-in o< o a ao 1 xtn • a tnowin x «tn
“CM - a- a * -x •o- aow a« aox - »xx • *3 * xo -© - x •< aoy • *xo < > •
-ia + x+ jxjj • * jtu in i t jxxa x* jx .ijji . 3^ -J
_ •j - Nas -JX *ijjx - ®u M J
ix» uj • IUJII<Q<IQWIZCJ« xiuux UJ® XUJCDUXXU<<N< QXZ<I<NIU<ZX* XUJODUXXU<UJNCOQX
CM n
a CM fO < © a-« CVJ ©
a CM CM CM CM CM CM a© © © n
x a a a ft. xa a a.
© X XX X X X ©x x x
o <■ <■
«*o <* 4- <$■ © © < 0 in in © tn
00 O o
00 000 o O 0 0 00 0 00 o o o © ©
OIL O O'
<u 0 <00 < 'O © ON N © O o CO ©ON N O <o»
OK © ©
0a CO 0 O © © ©00 0 < < COO Ul O© © < <©
o* (MDlLOn IflOQfO QlL<UmO'OOCiriOUS«NII)NO
u UCMoCMUUCMoUUCM^UJUUJUJN<N-*oii.<|A.LJUlMffiUIUUU UU<MC\JliJUOUUJUJUKCDUr'-COUJUN(MOQU--QfOUUOCM<UJUOUUIUJUNCDUUU'0
©©N©tDUIU.O-»<©©NlDcDOQUJao-«nj©©OUQUJU.orO© C‘UOUJU.On©fflC'<OUMLCMfO'<t©©0‘UOO-H<©©©UQUJU.W<-N©0'UOUJ^tVin
© 10©©©©©©©©©©©©©©©©VO©NNKNNNNKNN©©© ©©©©cCO0>0'0‘C'O<7*OO<<<<<<<<lD£aC0lDCD(D(DrDCDC0OUuUUOOUOQa
o#000000oo000000000c00o00000000000* 000000000000coooooooocooooooooooooooooooooo
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> <za < < 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 az CL Z * o-H * * * cw <0 < V3 • 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 ®< wn<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 * zX ***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 • <ao X ON ON<<inao<t «l« <aHQOUJ 0
0
A
A
<a «
p
c
A
H
H
A
M
* z
A
A
H
zo 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 dh aoa huq: njwuajawwjajHM itjhdu aawjowuaajn * u. — UJ
UJH ZUQI * -J>
zz 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
oa o• • > «$* 0 O' CT 0 UJ U — 0 N< IL U ti- © * H • <
zw 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<inuirr)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 *
*
0
0
*
****
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
c
0
0
* * * ******0000000000 0000*
0
0
* *
*
UJ UJ * © -
O oa * OUJ • — H
z UJ * * ZJ •w u a D
< ox H * * <CD s X H u a Ha
X ZH u Z -J * * < •*H mw 0 0 z
u <- muj < X JO X a * Z— • — XS H Z-
UJ 0 a 0 I- CD s * oa in a HH
9 -J *UJ z\ H a * tn * u. 0 * tn —< xo tno -jzo tn
1 I * Q —~ 2) *IL * U- *0 a u * 0 <n> HZ —H 3 0 UJ 0 — 0
• * j uo * * OUJ * — UJ * z —— xtn < aa z
IL t *0 >- H + U2tn * UJ 0 z J ao * ID JUJ 21L H tn wawo*-»
— > H UJ uim ja — Q zzz ZO IL N<Z * — <x O OIWQNZH
_j ZO • O D UJ ZHHH UJ oo< o~» za < * a OH OH Z zh h <<
j uj ztn *-* x tno -DCDZ OH tn-x inin 0 os * u. O UJ — •< UJ-OWAZU
• < a<0 > UJ z O D CD U betnu 0 tn HOI * UJ H O a 3 J 1 X-
UJ z UJX< — uj a >-* nauio D< X IUJ J inuu * 0 W z * u •• 0 Dtn 00
0 0 U u -J 00 < -J QU in a u* • Ut5 < X * ztn id a z z- 0 —• uz
z — iLirn — UJ X D CQ — H u 1 z 111 * * < u xa <hx h -
z in • * a 0 H H D vZWfflZHv
< H — UJ * > > Ui tn s >0 * CD * UJ *< 0
— * — <a UJ D*~* Z * XU. *X z <wo * 0 >z —< —H a —nau
I O NtU * OJ
u O ZX * 0 tn — aoo< * tnx * v>~* *u < innz * a 22< 3W wa a w 3*
Z IL-H * a IL X a coaiLDa
— * Ui O • —H 0 UUJOU —UJ
0 O wa — >• H * Q>
z u HH * w •
z 0w * 0 *a 3 OQ CD ZZ -
« D • zo CJ — * ox ® • ZH >-OlLIUH
• * * JUJ oow w0 0© O — — X<
♦ UJ UJ>UJ
zwa uj an ho
CD 0 *o - 000 0 uo * * -J 0
IL ZH IO-UJ <J CD • • J «I < T X <J < CQ®< I • * * aw <QUJ tn — HO p * UJ
— O 00 -j • •> - • -1 • • DU-J • » » * * tn » • • * J ** * • tn j * u. x X ZX — ZWHOtt *z
z z*-a x j x 0 a < i x u utn z 1D < vj -j < a x o «<z < • J X < X 23 D <OZX D * X H X UJ H • —HXWW—
< <inui * X » O oin ozwx>oA
• a X — —1 — —J — a * u wtn UHS zo a-HWwz1
_j < QfflOgcQOH oan 0<00<QUQCCOH oaaxxH * O ww —O <z 0
-J _JtU WQQJOQ a OQUjaoh oow oioaiazooouj 0 oxuo w * z CDH < a X< oao ox*
X X no. D O O < O O OOOZ< XOUJ Q D O O © O UJ
<< z j»iih
• < 2 -jm_j jenja j —a jujjujhjxjq: jxdxu a * UJ ILU. X X
U- 0 u. u.tno * -D u- 0 X -woo oz
0 0 0 u UJ z z UJ * * a _j 0 w uo az h ua
IL Ul 0 w 0 0 0 + * << 0 u H-W • CL
zo z z-z — 0 in tn j ♦ * >> 0 *z < O-jXtnOHD
0 0 O UJ > — cu 23 * 0 X * UJ ztn — z HHtUUO
-z — - X — >> X X X ^ * z < UJ WH IL — UJUJ ZHUJ.
tno tn tn • h 0 00 tn 0 u U U * H DZ —< xxw-aa
— 0 * IL tn — UJZO H HHtrO< — u.
tn tn in tnuiuj * H X —u tna wano —
* UJ * oa * * u • HH yw mini m
ua 0 uz < * * W ®UJ ZO ou HHi^UKO
UJ — z UJ < * * a rr
D inoz w zz xa z
XJ X XXUJ * XQ.-J xu< xz — — HU O<
UU. u uuo * J WX < u u— a a *c<mz
tn tn * < w> wzw a a h—-• -•
a mm
• 0 «, • UJ-J 0 00 0 *
*
>
H
:
JZH
xoz
u— —
s 0
Xw 8 zW
om h •
—< Q
zz z UJ H X 0 in U. ON 0 u
0< 0 0z cm u- mm © N * UJ <<< H-J xa a wh W(duuj
OfOU-U<HC* UNO U U- N O IL u. n © UJ N ^ u<n©n O' * in > X S D 0— 0xa IH—H
tn in -J*- * mu © 0 — o — N UJ u 0 cu 0 o> anwH oz
*z 0 X UJ OJCNUtMUOOOUO-U NO"nH(7"OU NWU. ncvoncmnocunw^u N<lLUJUJU * HZH ZUH OD
xo X *iuin * * ww —w X zo a in oz —
0— <tnuuj — wn<MnN©tDujtL 0 — t\jm <t\n m
u u a< NCOO <©uouju-o— oj<rm m NOCD UQ * * tnx 0 U.X w ww WHZU.z-a
• in <f«c*^<finimninininininiotn m m m m m m m
• <u mmm oO'ommmNNNNN N NHNNN * * 8 HH 5 WZ t a s ——0 <—a
inwrn ininintnmmmtnmmm m mm mm m *
mininminininmininmininin inmminmmm
********* oooooooooocooo *0000000* 000*00000000000* 00000 0 * * -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 u
© * M co i fr— UJw** < • a o X z o fr- UJ uj<o
* a a o * a a > oy IU o y> Ct A * UJ k z<to UJ o Ct 30 X to * o Ua-
* u * 0.0© ou fr- 3~ < ct uj m A * fr- < fr- * < to z er Ofr- Ml © Ul * < -t <✓)
* oy o * o< o o ujX*-* < * u or w- o- * UJUJ to Ul < X fr- UJ > * A a >
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 © ©<4(D
a Z~ UJ * a©© a o O UJ yx z O o a' fr-_jfr fr- u a Ml o O 3 fr- < y MUJ I o CD X 2
y »- y • * * Ofr- > OIL A ZDZd z fr- < Z03Z 3 o s K O er > • (0 u JH 0 o < 3 < 0 WZJN
© ©oa© * * hZ- • Ml UJ O-J <Z < <0 X M* fr- Mi <fr- fr- fr- Zfr-< m < 5 3 < Z © w* ©0 io
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- 3© UJ co z y m<
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 <<zu 0 z<©©k
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 X U< y mi fr-0 QJ
azu * _j - <_j oct o OUJ Ofr- a > z UJ CL UJ *UJ « Ml Z 3 cl 3 *-* »MW » Ml 3 UJ uj *- a UWh © mO
* >-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 * U > © © UJ ©• > > ©
* 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 UJ < II II XO II I < UJ UJ
* 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 * 0©mu UZCD- ©Qa
* 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 z-* tu
UJ A # * £t fr-O © z Z fr- ^ •a • UJ to o • fr- z o H ® © oz* Q
Q © * a©< z Mi <>z -Jy5 y)>uj UJ Q 0. » s to 3 n <3» O < • wa i
wa • — * x UJXX * *a <n x mo X fr-<> z <w cr * m e> fr-a Ct * -Jfr- ra-«y X <M y •-
> SO
» UNUJJ * 3 fr- fr- 3© UJ M« IL w Jh M • UJ UN s * C£UJ » A xo «» fr- CD * fr— UJ ©© i© Uw •
rk
<liZOIl * Z z*-> on¬ X oini. ZOUKfr- J QJ < 003 N 03 Z 3 » < a rax N I xra <ora < I 03 o QQlDVUZaJUfl]Q<,
* 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 -I J « IJ
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 ov)oujaou(fljQ
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 O 30©<X 0©3<O
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 jajocnjoauj
* * 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¬ -«<\i
z * cn 3 k© © O e> o Xfr-D uj <0 a <0 1- fr¬ fr- fr- fr- fr- et zz
IL * k << •- ao o UJZT fr- ZUJfr- a CL o et CI Cl O a a aa
* o U (f) o X X~ O CL Z <
* © »-< U. uj fr- fr-fr-< y>< ui<3
* * KO zM z frai a to
* * Zfr-UJO oo 5 Zm> Z frWU fr-
* * •-« fr- _j yz 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 © © in'O ©
o o * © * Ofr- • < *~* I CO * UJ *G o o o CM O o o oo o
a-< u * fr- Ofr- x^. • Ct fr^o TOOL O a oo CM uo O' n h-O o © < K©0 <
on ^ * Ct fr-UJUtt o • fr- fr- X DUJUJ JUJ z on CVJ no n CM (M<t CO © O ONW *
< 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* © ^inwOQf'J^OOtnoeD
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 ^Q^OUILOOUUN
* * a O ©3 HO h- UJfr* UJ tr 5 M4 et
CVJ nmcoo * * azx< oo o UJ ©<v©<m©mQ©©cvj
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
n nnn n * * • <KU • o o © ONNNSNNSKMO
fr- < o • wiua m n n nn *t <t <* in io in in ininininmin»O'O»o'0\o <0 © © ©
vO o o «o * © i0\O'Q\Q'C'£)\£)'O\Q*Q\Q 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 oo ooooooooo
• © C- 0 Ml UJ CVJ
J o X > a © k a x Z a
J fr- • © u < © z X © © © © o©o 0
— z z •* a © K m. 0 KKK©ct< 3 K Zxz
fr- o »a ©M.N < U -J 0 3UVZHJJ 0 a 0 V a 3K *#
©uj ©a 3 HJIJ K
©©© © < a a<ZMifr-to k a © © a) cw a ©KO N
fr-COUJfr- IK © ZhI
x »y> • y a © k a © za<_iz 1 3 ©a -J K tn ©© O©© K Z ©
fr~ UJ 3 > UJ K K m*
©to K * • K u < A 3© z© m. < y a z< 1 z © y QKZO CL> O * K
3_J OCt K
© <U LJ fr-I MQK< X O ak ^W I©©0u Z HI | 1 ~ * < uz©-.a 0 a zu * ©>
© UJ © ZhIZ ' *o X ©ct u * zawe u x z z ACL Ku>-Ja< mi ja * © 0 * a <©030 ©© z * zm
OmjO *“• K ©k
Ct N Z z<a * w-<< 5 Ml Ml © x <0 m 3 * 0© a * m xai© * Ml
* _J fr- X
© ©z*~* • «fr- < * 050 A fr¬ O © ©KXia K © * CD *© 0 •©3 0©Kmi.* 30
©OQ< ^ *© ct x ©
K©X-J©© om I A © © ©a f'- O© Zy> jd< x ao Z K a 3 *©KXO CM-Xm, Q K ©
-Jfr-O - ^ao<0© ou © ZZfr -U© 3 < X > a a < © y © W« Z Z O fr— X z© ©Ofr- A IK©kZ XK©
-J 2frZ X© Ml
© K
a ©z _J<©K©J Z -J K < a u OO frJJOUO ZK< JM.O © JZIL ©© z © M.O zx©
3fr- 1 m. A K00XUO0© <I©K k y3 © X zx © o< x Z 0©ZK Own z< ©© k©k© 0 O© <
Z H fr- fr- ZZZ0 ©©k 1 a
zz ©k a •© © © © 3K © 0 © 0 uj m u K ©© z z Z A *wa o-a >a03 a© zza
-J fr-UJ Mi^iM. < < Z
0MI (/) fr- < oa y zi-ii a k k • © Ml • k Qa © © -J ©y< • © y J M.I < m<z o** ©
O LLl< a 0
wCZ-J ©< zer a a JUwDO O © © © »© •© • 0 O UUK ©u n ok a a © n OK
z<o <-
a z© xa u K ©O QK *c© az z jioj©©o© to© ©_jk • ©0 Q «* * UJ w- * >© KZ X KX a© . • * z©
< 30 fr- Ml
I-OOh
< ZtflUJ
fr-<
o
zzI©Z © *axozo
* auznH
0
mi
©©©©uz< ©-J
o>o>©<5 >©
©© 30 © z 0 ©a * IK Z
* U*-*MI
* © »©©o ©oo-jku *MO <1
Z© K < >-omz>< oau * tnu 0U 3*-U OU Z © mi z *©n
©u< ©x©z Jmz © - X z
- 03
Z © CD < u< oa oua© a z ©
U.O *Z < fr- ©< ©©oaux © A A z 0
Jfr-<uA © *?-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 © UJ CM
a©
©K
UJUJOZZ
*1 <
J O X < oz CDmiJ A JUJJJO ©_J CD ©3«J XK ©0 K O O 3
> O©<Z© K© QZ< •yo ©0 0U0U0W a ©© *©©o ra x 0 • a M < X ©
c? 3 5
wito»- Z : ■*. >
y> j X©Z« ©x • A * »o *o • »©u ON *3 •© • ja •© * •© AAA A • • UJ * • UJ UJUJ
Z W< a 0 < ouo<© • qun ra n < n o n ra n <Q <3 N<UJZ<CUNQ< u< < <©Q ♦ XXX IU< JCU Q <IU O© 0 0
*OQ 3
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
iwoiujix
fr- fr- UJ I «J
© . ©K © N O CVJ
0 *»-t <
Ko-jQ-Kaaaaaaaa
DO<X3XXOXXXXX fr-ZZ ©oxxSxx©o3x<Ox
ua KoaaoaauoKauca
oozo
era q 3© UXaK
030© 0 0© 030
CD 0 fflauai-
© X©O©
OU
zz
0 u
zo
S
W3I5 k 3 a k q: k © X Jiv 0-Junou~>M,-)unun © — u cjLnjuoOJonyjo jmj tuajD u act jv)j mi -J © "> Q m> £t
OKMl < © K * ©U<KO)Q
1 IWJlLlO
UJ MNK hm Z a H
• COIL IU.
‘-JOM-ILZ M.< K 5 ©»- z z z X
© 3 ** K O
oa w
© M.
Z © 5 © K (/)
. O 3© wi
©<(0 ZK
O© A -J z A
K Ml © 3- 0 O «■* Q CM
X mi O UJO fr- O fr- O mi *-ia a 0 © A A A z ZJ z
u -Ja kz ©>ZZ ZUfr-IU <XK O O O O © ©© © U.
UJ •UJUUJ oo i mi© mi X K K 3
y k-j
< « too UJ Z H Q (A 03 UJ
ou< ©ui < » ^a©a Ml 5 Z O (9
z<a ox©© o O x < K aA (9
<©<
x o
Z<3
K
Oaz —j © © k
ZO
JKJJJIU
©_J<-Jwimi©
m
ra
axuK© O©*- OOh|-h333
©© ©©©X4I *UJ<JW3
A ©K© © © © © O ©O © 0© M5
U. X K K <
> K ? OIJ • • • «-«oo O 0 0 0 O 0 OO O 00 O O
u_ K to M, z
3
• <©
Z CO Mi *<0<
< 0
K ZU© • o©a t-a N C\J <
nno
<<
oo
<©©OU
0n©n 0
0 © < KU U < ©© © u>
0 -•
n r-» O
ZfrZZxt 0 k0 no © 0 oino fO
CD © J ©M
-J 4*Jo© * *w jzw a N — 0<N©<K<©<©< <Mn©mco©(McD©<ffl©fw.noujn UN<- ©< CO K Ml O < © K fO<U<CDoO Wf*)
o ©©
OK©©K©a©Q<KOOQ Q^UUO©UCDU©U©U hhIlumi uk ©u -*nou unu K CD © •- ©cgCM©©0 — (><r
©I ©3 zxz » : z Z© 3Z ZZ
xux<a ©©mim«©( ©mi ©ao©©© 0 «N<Oo-noN<UU.^ <»© COO<U©OCM©O(Da'U©^ 0
*©»oo» uuoo cvin<©0 MDC<QIUU. OOh -4
HUfrUU• K „J —• Ml Ml 3: _J ® «a®-• QOQO©©©©©©©©© ©U. ©©©©©©OOOOOOOOO •™i r— M H •^•mu-iCMCMCMCJCMNCM cm cm cvj cm {\j cm cm nnr>
» ©©©©©©©©©©©©© ©©©©©©©©%OM500©M>iOOM> 'OOC'O iO'OO0*OOO0'O<O «0 vO \0 O vO o'O <o<o«o
******************** *0000000000000 00000000000000000 *0000*0000000000 0000000*000
May, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 23
140
N o o ® Q N
CL * II ©13 z I Z3 2
o •© * ^ -JUJ 13 < u a a U N
V) HH • * in O < -1 3H < o c- r
a <ao UJ * u o N_J •_» N 3 CO o o
id 9 © uj x< > « * o ©«J U. UJO ~ - 3 UJU KLU uj z
UJ X a ©in>©j < a * H*- J 2 I UJ 5 © a < > < a a <
C£ N n ujP J © o * U. O < ttNhH « o N K U. —4 ak 3n
O zo o a ora 3 o * HZIL o Z- OIL) oo *-* o 3 z < a
2 a <- * octooa Q < * -J * .U.UJO oa z < -1 G a * JCDUJQ u.
3 UJ * o< u.o< Ul N * © z LUh-^2 *-* -j< <G 30 o O 3 * U. QL u
O Na z * < UJ J> CD z * • »-•« a: CL 3 3 y- H UJ ZU * * © o
Z UJ o a z > a UJ a * - 3 a *-jx HK \L K
M >-UJ a©
X UJ UJ o HD •< N
ttN 3 < z aa o j a 3 * S26 JZIO.U <U. IL < UJ ©a < o •-NNUJ
© © N X aya>jj o N * © © a uj O Zu. a (DO 13 oo *-• 03 cd<oq: N
z OUJ (U in DUO< ~ x UJ * UUU2 >- dO ©© □ OUJUJ < z z UJ© * w
< oa a 3 N<©©a3 a * OO *©UJtJ ® « H m © UJ • UJN»-* 3 a X ©©UJ • 03
UJ a UJ N »-• * * * < H -*3 oa ¥ ©© o 3a > © •“* U. o o 3 a >-
x n or© »a n UJ ii * u. < N 0©< UJ ©u ►-« »-4 H» Ul N o •© N ^ oy
aa ii in to n < © * X^© *-• Ul Bi < < o© © * <©H< ©
o UJO u * UWUJDX J u * u *-o a ex _J XX HH UJO O ID z <o UJ X UJ * 1— < O UJ <
k >*z CD * CDi-*>-UJCOH Ul CD * • J— UJ • UJ X < t-o >-4 au © za <3Z 13 * ©xza X
•HO NX *U©U
a u N N O a ©3a<z DH<Hw
< z S Z N x a< N z X z < N ©aI < a *-• uj
> M -1 J a -j c> a J -J •- > JHX ZUZSDI
a a a a a y z oa a a a a a * ZUJJ u »-♦»-.>-•© | n 3 m
o o o o o no a©o -o o o o o * ~a<tL -J © u • © IL a • «
-i a j J J -j © © woj 3J J -i -i J * < u*-uj O ©9 00 U O WO -J u o u»
x a • • • • »13 • • *x a • 9 9 • 9 * © 3 CD Z *w3aH o • oo a 0 (3 N
*j j.JJJJJJU JIUJUJ 9 •JJJ JJJJJJ * UJ N UJ © b- U. • MU- * * LL UN • 9 9 9
«l «*
U
A
< •XN- X
0
X <JNIX3LXXXXXCD3 xuajxzi<jNixixxiixi * ZU.X •>- ILUJUJUZZ <<<ZOOXN<rtfdZ
* mD1-<< •-*© Nooa
X *-• j X X X X XI * N© X >9 u 3 X - ^ *-• o M ►«»
oaaa cl cl a. wh jaoa oo: a to in to to ©©n * 3 OZ L3 CD N © c:aai-aoQ-[iHO.i- OH ONa aoH-a Q
N OOSOHOHOHOHDUJ <002000 20000Q3000D011J * 0<K»^© •< UJ<UJ 3Q0X0UJZZX03XUJ 03 QUIZ OZUJZ Z
©_i*-«->a©a©a©a©aa DQ.<*)JJh ojD.JaJajo.jaaa a id HJHX a ajHoaaM<oaouaJOJawz<aH<
>- z a < DlLDhlL
otcahj a a *■<>-
< \ 3 >\L znz * o
X o ^ O N CD ►-• »-o z
w »-« UJ UJ UJ UJ I • CJ ro *
a 3 y > jaiui UJIUJJJOO u X
a a X JJ IH IHI:oiuq 8 o o
u ZOHH N h• az
C£
3a jo > nao
<9 NON J 10 ?o)ZoZ
JZOOZ • y !QH<
:a aoo O »<CUUJ
•UJH UJ UJ cc~
jo a IttOi< oo
•0 © © (0 CO IL © ©© N® © © © © * J©»-0 *o OUJUJ■ ©N N N
o o o o o —• o OO OO O o o o * J HH ja:©►-« o o
U- O* 03 o IL N< IL N Ml Q © O N * t join * j« LL -40
OCvJU. <000 •"* u.
UJ o o r- O < O OO —O O o o o * 3 - •> joa o<uj 13 C — OOh oO o o o w ON
U ©< ^fU^CVJ CM — 0^<7‘CVJ<U©<<©<©<©<©<©©0 * o joo*- a ►-* U J N< < <M — OvCD'Z><-'OUJOUINUIO'£DO'OCDCOvO
Ntuuuicgiijc^ujrvjujcjuu WUUmQlNNOJOOJUJOJUJCVJUJlMUJlMUJOU * 1HHJQ y u 3 JN UlLUQUJUU.QlLljrOQrOUQOUJUQU(
J OO ZUJ IUJ aa©
N<rauaon<*Nco©uao 9*<tN©0\uaO.-«<N©©UaorO<*NCOO' * * <QUJU.-»rO\ONOQ3UUJlL^(M<J‘l/)NCO< IQOHUJa ox© z uj
QOQQQUlUJUJUJUJUJUJUJli. IU.ILILILILH.OOOOOOOOH--HHH * 4 •-^^^wwojevjcvjrjcvjfvjcgnfnnfofonfo -m m »-• to < * N *-* hnk
<00'0»£)'0'0'0'D'0'0*0'£>CiO OiO'O'OOOONHHHHSNNSN^N^ N * NNNNNNNNNNNNNNN^NNNN
ooooo ooooooooo •aoooGoeooooocooooQooo o******************* * * *000 000 0 0 0000000 000 00
UJ * ©
* J a
a
o * * »-• a a
z X a N N
*-» N UJ X *~4 H- y * N A
UJ * z 1 N X Z N a 3
z U *-* z •©
© ©u z < N * 3 J N H4 a ©o
UJ u © 3 Z o
Q moH o y 9«UJZ < -• UJ 3 ►-» j X * I X O N a< z a
oa m UJ * A o O z a U > na< o *
JZ Ul 9*9* U z -J J *© © >a oa
<© jaza o o UJ N * 1 a a N a
-J*- U O ID * ©u© <<
3 Ul »-• O ZHlUX * z N < * U a a Z 3 X
<< < »->-»-♦ UJ -jy M *u a aa >
ZO IL a i **-« X UJ * © a * na n
X au ©o u ©z < * aN o • aa z<oa za
Z N 3NNtt * -J 13 >- X * X
K U ©mi- < < za > i a hn ao
zaHHU a M © N * a 3 a < * a >* © a
oa -jujo a o_j n a o 300N 3aNz*-y 3J
HQDOJXU) z© UO < 1D< © UJH-lL za UJ O * a a a © z
ID m < CL a 9 a o O X O N > © *"* U N
*-< a >z JUJ o o Z * O
UJ ZJ(fl«<U *-• X —-J
< DJUIHW O oa aoaoo< aa
<t © UJ * X N
UJ > 3 O UJ >
3< O
<N
a *-• H-H- <
Q ID
<2
© 1 liJQiL
CL
o«- y
♦ oau
NO
aa
a
o 3 X * * 3 a >XZh< >X0 9 a x*-a o© aa
N O N * * A > a x a o J x i3 a a o
© u© oo© UJ •-• hhid y© o a< a a
Z * * o 1 < :> ii
lua w ©
N • a xza II N
9* uj id y -JO Ul ZfflN O*- © © © X J ©
a »-•> ©uj ©o ID >-« J o * N a © < * N >U N * © *> ©©hnao
© • o >O UJO < * 3 oa
o a< <io ILJZO * O —4 a O z * < o © *aaoz z * ao < aJ30I0
UJO ZJ02UJIO O UJ
* Q 13 X *— 3 * N ZX > a ©©n J ©a
zJ x ax jo-« * J X a © < * I A a
HZ <XX<3HJ a a
* © 1 J
* 3 in a CD J
* a o a < ©
* X X <
X o * © UJ 3 a X ,s*> •* z
a < cc au o a 3
* a
F>©
Zw
U
CD
©•
Z
UJ
o
W<
uj
o
w<
3-
Z
< v— «■ N
10
N
*
*
*
*
tu
X
X
o
> <
>
o© a
3 ©
X
9U
o o
«-'<0
a * • oj u a- <© JUJ © 9 »IIJU> 9 N * aj * •> uJ
•> *0© o z » *uj f *uj *a • a * * 3 a a
•J JJZU • * • z • ©X
A
O
N
A
Page 24 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 May, 1976
141
A NOTE TO MEMBERS OF THE Fields did NOT donate these copies, and, after having the
SOUTHERN CALIFORNIA COMPUTER SOCIETY opportunity to see him in action, we wish to adamantly state
that PCC does NOT support Mr. Fields in any way!
by Jim C. Warren, Jr., Editor, Dr. Dobb’s Journal 2. Along with these 500 free copies of PCC, we also
forwarded a number of other PCC publications, as per Mr.
i am writing to object to several of the actions of Fields' telephone order of April 12th. His order totaled
Louis G. Fields, vice president of SCCS, that have recently $359.75 (unrelated to the free PCC copies). We forwarded
come to our attention. the telephone-ordered publications to Mr. Fields with the
1. On April 12th, we sent Mr. Fields 500 copies of the understanding that he was representing SCCS.
March-April issue of People’s Computer Company newspaper, In spite of repeated billings, to date he has paid only
for distribution at the Aoril 24th SCCS meeting, compliments $59.75, received June 10th. Our contacts with the other
of PCC. SCCS officers have consistently shown them to be responsible,
I happened to attend the meeting and found that, first trustworthy, and responsive.
of all, Mr. Fields had failed to bring most of that supply to 3. As a result of the above-noted incidents, PCC will
the meeting, and secondly, those he had distributed were make no further donations or sales through Mr. Fields to
stamped in oversized red letters, "Compliments of Louis G. SCCS. We will be delighted, however, to work with any of
Fields." the many other SCCS officers.
This may have given the completely false impression that Note: We do not mean this to in any way reflect
either Mr. Fields was the donor of these complimentary negatively on the SCCS, nor on the many Society officers
copies, or that PCC was somehow supporting Mr. Fields. Mr. who are doing an excellent job of administering a worth¬
while organization that provides many useful services to the
computer hobbyist community.
f l»»f f
UJ
X Z a © a *
36 Z • X < M < ©< z © u
©O • Ott - Uj H UI-© u < X
U ® m to CD H a zcroo
o: © HU
©OO H O • m •
Z UJ H hd a < -< © z a © < ©
o*Z 1- Dr* »-< H © Q o • uj co a z© a O CD © CD H a
c*-.© au: cd UJ O H © CD o. uio z UJ
Cl h a© ©
i xau z i nh© Z < H H-4 • V H H a o ♦-* > X < < a o X
-jz u fr-S u X UJ N Zina a =■ • <aujuiiM u a
OUJ^IO OS H< H O Z M H <ao a uj a©H a a
© oil a a ©
axu aa ca a H a -J m UJ ux UZGZ a ©co << w © ©© © H
HU • UJ KZ<W o IL z rr t— ^ *-s
a © HSQ <a©©o© a
z oil izah a: a UJ a D UJZO o a oh m za©©© huzhh <
OUJ 1 U. HO DOW o a X o a >3t U na oa o z X «ZJ» ©> a©>-»-» H
ucr jo ouhujw O z H o oo ©H© j© a O _J<< a co m mx ©
OO z UJttI \ » < © O max © © X z a x*-s©© CD a «
Hzao <na h »-« V) <0 < u H© © - uiH OIL <<H©<J X
— H H »- • o (0 t-4 a UJ H zuiauj a a *-«uj hqzhh »-a au a u
*Z H »0)Q UJ a Q z » Jan H>?> oo xz xza xx anauH a <
i/)Odz ©© o ©© x (0 Z A < © J UJ B O <UJ< U-Zhn ©< A©© <x zaxo H
wZUO O Z > UJ H < UJ z <X© a © h© na i hh > © 1- CD © H ©
Z a X u X <
a a X < U
> a o a a
< X u to z «
-B B X X UJ O z 2o o
— © no V a. UJ Q I o • HU 0 a o
uu a H cc > O u COIL a m COUN CVJ o o
o »o oxu 5 < o o M» oil <H a-.oj«iH st cm
UN* »IUN > a H X © -J HX < • ♦ J J -i •
•
*
V
0
(9Z< •<UO Z H •
0
0
0
0
0
0
T
0
*xx H>XWXX#X# X#
cc
►* M <(T oc a cc a e cc
a cl <cl a uh< < < < < < < Da a a© a aoaa
XXOXHX x ©©X X X X X x x offaissoafjjjjijtjwOawwwowoaoz
unjgcnuaau u u u o 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
*4 © O' o © IL © © © sfr O UJ O' st ■* niL NO H ©a^ a xa aa a a zhh k a <
IL U X
oj <t fU © © OJ St St st <t © © <t st ©OJ © oan 4HQ o o ao<x xx < H H
3d
u O' © © © u. UJ o u U- *—4 st O o O' © s ©Oo <0-4 ou© >©_J U-J JJaHHH > mm © ©
in «* st © CVJ CVJ OJ St st St © © OJ st *n stoiojroro
St n o O' O' CO ro o n O m n n a uoinuj^N
<t in <t <nj <* <t © © CVJ st CVJ © © <t oj <t st n n
o o »«* © o St o N IL 0 n UJ CO O' O' o^oinoo
st CVJ *t <?• CVJ © <t St St OJ © st CVJ <t St oi st © stOJOJ
o <t o n © © © © St © St © UJO o <J *t uj oj <o u ©
C\J st © © <t © © st St © OJCVJ OJ st st st st sto» st
N © © N in © n © IL o OJ o OJ UJ © n O' O' O U- — 0©N©
O © c O in <t © © st OJ <t OJ © St st©© OJ OJ st st oj <t ^
u_ CDo o OJ n u. © OliH CMUU- © OJ IL *■« oiu cn © © IL O st O' UJ © OO Oo O OO O 003
o sto © © o <t st cvj st st © © CM<t OJ © <t St OJ <t st st st st oj © oo ©ooooooo
UJ cvj
< IL t\J n ©ON o> llJ n o o on <t o U.-STO o stu.n n CO ©NfflU. U~ < IL O O OOOOOOOK)
IL V n fNJD u U U U © st ©©© P4 04 ©© © St ^-sf st <t st © st st OJ <t<t st it <* U-OO OOOOOOO-*
May, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 25
142
INDEX TO THE COMPUTER HOBBYIST from subscribers, and want ads free to subscribers. Occasion¬
ally, as the material warrants, book and product reviews are
VOLUME 1, ISSUES 1 THROUGH 9
printed. Frequency of publication varies from 4 to 12 weeks,
so subscriptions are for a particular number of issues rather
This is an excellent newsletter. We strongly recommend it to
than a time period. The Computer Hobbyist is offset printed
every serious computer hobbyist. Not flashy; no side-show . . .
on looseleaf 8’/2"x11" paper suitable for ring binding (except
just excellent, comprehensive, well-written articles.
—Jim Warren for the first three issues which were folded to half size) and
is mailed third class to subscribers in the continental United
States.
The Computer Hobbyist is a newsletter/magazine totally
Occasionally, printed circuit boards and other hard to
dedicated to the use of computers and associated devices as a
find components are made available to aid our readers in
hobby. Both software and hardware are discussed in feature
articles. Circuit diagrams and program listings frequently sup¬ constructing the projects written up.
plement these articles. In addition to the features, each issue For further information write to: The Computer
contains an editorial and regular columns on surplus, letters Hobbyist, Box 295, Cary NC 27511.
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.
Itty Bitty Machine Co. (handles IMSAI, etc.) (Reprinted with permission from Homebrew Computer Club
1316 W. Chicago Ave. Newsletter)
Evanston Ill.
TedNelson of Computer Lib has a hand in the second one.
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 one of the others to take the
Box 6528, Denver CO 80206; (303) 861-1686
poisioned "byte"!!!
b. CHECKERS; You against the com¬
QUESTION: What could almost be better than having your
micro programs run correctly? puter in this classic board
ANSWER: Having unique micro software to utilize to your game - WARNING; The computer is
heart's content!! Whether to create some fan¬ as crafty as a 6-year old playing
tastic program(s) or to have the facility to his first game!!
entertain yourself and/or friends with programs c. TIC-TAC-TOE: The computer plays
and games requiring a bit of "think power" . . . a fairly reasonable game with
especially for those days when your "think just enough randomness in its
power" could stand a bit of bolstering!
selection to make the game in¬
All this is possible thanks to the software packages now teresting - Can be beaten.
being provided by Digital Group Software Systems, Inc., d. DIGIGUESS: Try to guess a 4 di¬
(DGSS), which was recently established and is headed by
git number "thunk" up by the com¬
Chuck and Dianne Howerton. Software which is now available
puter based upon clues it sup¬
on cassette tapes, complete (for the most part) with docu¬
plies.
mentation for each offering, is as follows:
e. BRAINTEASER: A strategy game - You
1. TINY BASIC EXTENDED (TBS-TVCOS) against your own worst enemy...YOU 1
10K, VERSION 1
Try to create a pattern working with
Created by Dick Whipple and John Arnold of Tyler,
a set of rules to drive you nuts!!!
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¬ PRICE; $5.00 @ cassette with documentation
faces between TXB (TINY BASIC EXTENDED) and the TV-
Cassette Operating System (TVCOS) for the Digital Group NOTE; TINY BASIC GAMES, DGSS Set 1, and
8080 microcomputer. This is a superset of TINY BASIC as all TINY BASIC GAMES are read in
originally proposed; a limited and modified subset of the full
AFTER "bootstrapping" TBX-TVCOS
BASIC language. It has 26 possible simple or dimensioned
program into micro-computer....
variables, 4 immediate commands (LST, NEW, RUN, and SZE),
and away (:RUNcr) you go!!
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¬ 3. TINY BASIC GAMES, DGSS Set 2
mands. Also included is a RN or Random Number generator.
14 pages of documentation, which lets you do everything All the games in this set were adapted to
with TINY BASIC EXTENDED that is presently possible, is TBX-TVCOS by Dr. Robert Suding from 101
also included. COMPUTER GAMES, PEOPLE'S COMPUTER COMPANY
and WHAT TO DO AFTER YOU HIT RETURN.
PRICE: $5.00 @ cassette with documentation. a. WAR-3; An artillery duel between 2
or 3 armies - OBJECT; To blast the
opponent(s).
2. TINY BASIC GAMES, DGSS SET 1
b. THERAPY; Have a relaxing "conver¬
Contains 5 games written in TBX language—3 games are sation" with DR. THERAPY and in¬
TBX versions of games listed in either 101 Computer vestigate your inner problem(s).
Games or What to do After You Hit Return [Both are c. GOLF; 9 holes of championship
available through PCC bookstore. Please see inside of play on the "micro-links" - Hooks
back cover.]. Other two games are original products of and slices are rare and 1-putts
author Howerton. Games on Set 1 tape are: from 40 feet are fairly common.
d. REVERSE; Test your skills at ar¬
a. CHOMP; 2 or more players take ranging things in sequential order
turns biting into the poisioned from a random beginning according
cookie - Each trying to force 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 guesses the computers' number by
chart based upon your personal sta¬ asking questions.
tistics. e. BLACKJACK: From 1-9 players -
Play against the house in this
PRICE: $5.00 @ cassette with documentation Casino game.
f. FACTOR: A bonus program which
4. TINY BASIC GAMES, DGSS Set 3 will compute the factors of any
number up to 32,767 or tell you
All the games in this set were adapted to if it is prime.
TBX-TVCOS by Ted Holdahl from 101 COMPUTER g. BATUM: A super bonus game which
GAMES. is a varient of 23-MATCHES. Good
a. TAXMAN: Test your knowledge of fac¬ selections will really make the
toring by trying to beat the TAXMAN!! computer think!!
It's tough but he can be beaten!!
b. SNARK: Learn symbolic logic and the PRICE: $5.00 @ Cassette with documen¬
use of Ven diagrams while trying to tation .
find the SNARK.
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 "Delete" (DEL) routines which allow one
instruction set. to insert or delete octal code at any
point in your program. These routines
PRICE: $10.00 @ cassette with documen¬ move the following instructions in mem¬
tation. ory to make room for the new instruc¬
tions or close up a space. In addition,
the addresser of JMP and CAL instruc¬
8. AMATEUR RADIO HAM CASSETTE
tions are modified as appropriate to
FOR 8080
maintain proper loop registration. A
program to zero memory was added (ZRO).
Amateur Radio (CW) Send and Receive
And a program to load ASCII directly
RTTY (Baudot) Send and Receive
into memory (helpful for TVT output)
was also developed (TXT).
CW Receive is automatically self-
adjusting to any CW speed sent
The use of this operating system in
CW Send has 8 100-character mem¬
program development would typically
ories that may bo individually
involve the following steps:
callod up
CW Send also features a 256-charac¬
1) ZRO - zero program storage area
ter software FIFO buffer
2) Symbolic input of rough program
draft
RTTY Receive can select 60, 66 and
3) TOT - input of any ASCII
100 Words per Minute (WPM)j upper
characters needed
or lower case output to TV.
4) DPS - symbolic dump to ver¬
RTTY Send program can send at 60,
ify program
66, or 100 WPM.
or DPO - octal dump
to verify code
All 4 programs are designed to re¬
5) XQT - execute program as sub¬
side simultaneously in a 10K
routine of monitor
Digital Group 8080 system.
6) SBP - set break point to
print out register and
PRICE: Documentation and cassette
flag status at any pro¬
HAM-1 $5.00
gram step
7) EDT,INS,DEL - these functions
can be used to change,
9. OPERATING GUIDE - TVT MONITOR 8 insert, or delete, in¬
FOR 8008 BASED SYSTEMS structions at any loca¬
tion. A particular ad¬
The TVT Monitor 8 is a modification and vantage of this monitor
extention of the Monitor 8 published by is that on deletion or
MIL before their untimely demise. The insertion of instructions
original Monitor 8 was written to be
the code following is
used with teletype/paper tape input and
moved up or down in mem¬
output. The TVT Monitor 8 is designed
ory and all JMP and CAL
to be used with a Digital Group TVT,
instructions are modified
ASCII keyboard and Digital Group Cassette
to maintain registration.
tape interface as input and output.
Page 30 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 May, 1976
....I-------—... ..— ’ —-
147
new page numbers unless accompanied by a self-addressed
10) TAS - can be used to store stamped mailer. Obviously, if many
completed program on users send in submissions, duplications
cassette tape will occur. In this event, date of
11) PRG - can be used (if one has receipt AND quality of work will
the proper hardware) to determine which contributor's
program EPROM's. submission will be utilized. Royalties
will be paid quarterly in cash or may
be applied to the purchase of products
Price: MONITOR-8 $6.00 at a discounted rate.
• ttOOOOOOOOOOOOOOC&OOOOOOOOOOOOOOOO
PLEASE NOTE: This package runs only on '
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
byte swap
We are experimenting with offering a “Want Ad” section. We
repository for program tapes; both source tapes and binary tapes. will continue to do it as long as we can afford it (in terms of
Everyone wishing to contribute programs to the public domain staff time and printing costs). Note: the charge for running an
may do so by forwarding appropriate paper tapes to CCC. In ad will undoubtedly increase as our circulation (and printing
particular, if you are hesitant about submitting a program for costs) increases.
publication in Dr. Dobb’s Journal because you don’t want to Please follow these instructions in submitting ads. Ads received in
other than this form cannot be accepted, and will be returned to the
hassle with its distribution, you are encouraged to forward the
sender.
tapes to CCC and the documentation to the Journal for publication. 1. Type the ad, with a blank space between each line, in lines no
The CCC will thus serve as a desirable alternative and more than 50 character positions in length.
supplement to the User Groups that are controlled and operated 2. Include at least your name and address as part of the ad.
by many of the processor manufacturers, some of whom charge "Blind" ads will not be accepted.
3. Compute the charge on the basis of SI per line or partial line,
up to $100 for “membership” and access to the programs that
per issue.
their customers developed and offered to the User Group, without 4. Forward the typed copy and a check or money order payable
compensation. to "PCC," to: DDJ Byte Swap, PCC, Box 310, Menlo Park CA 94025.
There is no membership fee for access to the tapes from the Do not send cash. Your cancelled check is your receipt. Payment
Community Computer Center. Instead, one pays only for the must accompany the ad.
► QUULIUL8JU;_il_fi_0.iL5-S-0-S.S SLSLSLSLSULSLSLSLSIJLSL^
duplication and mailing costs:
Duplication charge: $1/ounce or fraction thereof, for tapes SELL: MIL MODS with MONITOR, TVT-1 with UART and key¬
(weighed after punching on fanfold tape) board, Creed TTY, Altair 8800 new kit, unassembled. Send SASE to
(Add 6% tax for orders mailed to a California address) R. Schultz, 611 N. Dexter, Lansing MI 48910. -5/14/76
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. “BASIC JUST WON’T CUT IT.
GET STARTED ON A NEW LANGUAGE.”
Lists of available tapes will be published, periodically, in
Dr. Dobb’s Journal, as well as being available from CCC:
Dear Jim Warren, May 15, 1976
Community Computer Center I think you are wasting good space with still another
1919 Menalto Avenue version of BASIC. BASIC just won’t cut it.
Menlo Park, CA 94025 Suggest you get started on a new language for hobbyists
(415)326-4444 with the best features of many languages. Should come in
The following source tapes are currently available. They various sizes, always upward compatible. Also, it should be
are programs written for the version of BASIC that is implemented interpretive for fast programming, and compilable for fast
for the HP 2000F minicomputers, and are discussed in What To Do execution.
After You Hit Return (available from the PCC Bookstore, $6.95). 24365 Clipstone
Number Guessing Games SI 2
BiU Roch Woodland Hills CA 91364
Board Games Sll
Number 2 Qubic5 5
Abase 3 Gomoku 4
Trap 2 Teaser 3
HOW ’BOUT SMALL PASCAL?
Stars ■>
Rover 5
Clocks 3 Welcome to the Caves S 9
Bagels 2 Caves 1 5 Bill,
Quailgt 3 Wumpus 4
Button 2 Caves2 5
I fully agree. You’re asking for a lot in requesting various
Word Games SI0
2
Business & Social Science S22 sizes + upwards compatibility + interpretable + compilable, but
Letter flamrbi 3
Abagel 3 King 5 I hope to offer at least part of that in our next HLL (High
llanumn 3 Civil2 7
Madlib 6 Market
Level Language) for micros. Unless someone else volunteers to
5
2
Word Stock 5 initiate a HLL project through the Journal in the next month or
“Nimlikc” Games SI 1 Policy 4
23Mtch 2 Point 4 three, I hope to start a build-your-own-compiler project called
Batnum 3
4
Science Fiction Games SI2 SMALL PASCAL. My plan is to detail the design of each
Nim Tradei 10
Chomp 3 Sttrl 9 module of a compiler in a series of articles. The compiler will
Zot 5 Last Chapter SI0
Hide-n-Scek in 2D S 4 Crash 4
be for a block-structured PASCAL-like language, trimmed for
Murkle 2 Lunar 3 microcomputer size, and modified as appropriate for a pre¬
Mugwmp 2 Revers 2
Snark 2 Zeros 3 sumed interactive, stand-alone environment (as opposed to a
Pattern Games Sll Taxman 3
2 The following games arc in
batch system). At this point, expandability and interpretability
Dannie
Sun sen 3 Dartmouth BASIC are low-priority goals for this project, but I’ll keep them in
Biosin 3 Motic 5
Mandal 3 Rescue 5 mind.
Life 3 I definitely wish to “push” a “good” HLL, instead of con¬
Amaze 3
For historical reasons. tinuing emphasis or reinforcement of BASIC. BASIC is better
CCC maintains a different price schedule for postage and ha ndling than nothing (and, currently, nothing else is available for
on this particular set of tapes;
duplication charge and tax, as above hobbyists). However, I see no reason to continue to eat 19$
postage and handling;
SlO.SOon orders under SI0 hamburgers when classy filet mignons are available at the cost
SI .00 on order of S10 or more of a little interesting effort. -JCW, Jr.
i 32 Dr. Dobb's Journal of Computer Calis & Orthodontia, Box 310, Menlo Park CA 94025 May, 1976
149
dr. dobbs journal of $1.50
COMPUTER
C 60 alisthenics rthodont ia
Running Light Without Overbyte
June/July, 1976 Box 310, Menlo Park CA 94025 Volume 1, Number 6
SOFTWARE
A Bootstrap for the 8080, Lichen Wang 8
Byte-Saving Programming Tricks for the 8080, Tom Pittman 9
An Exercise for Novice Translator Implementors, Bill Thompson 11
A Classy 8080 Text Editor, similar to a PDP-9 Editor, F. J. Greeb 13
includes general comments, user documentation & extensively annotated source code
Tiny Trek for Mueller’s MIN0L, Erik Mueller 37
Button, Button Game in 8080 Machine Code, Ron Santore 38
VIDEO OUTPUT
48 Lines of 64 Characters on a TV for $499.95, Video Terminal Technology 27
512-Character Video RAM from Canada, Matrox Electronic Systems 27
Variable Character Spacing in Video Displays, Jim Day 28
TVT—II Mods to Get 64 Characters per Line, David Valliere 29
Homebrew TV Display System with Graphics, Glendon Smith 30
complete design & implementation details, including complete schematics
$98.50 Graphics Terminal Kit, Southwest Texas Products Corporation 33
MISCELLANEOUS HARDWARE
4K Static RAM Board (Unpopulated) for $18.75 4 Adaptor Makes LSI-ll’s and 11/03’s into Real PDP-11’s 36
$450 Dot-Matrix Printer for 6800’s and 8080’s 36 Western Data’s 6502-based Data Handler Kit for $169.95 43
RCA COSMAS & |jScope [letter], Jim Day 43 LED Replacements for Burn-Outable PDP-8/E Lamps 43
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—
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 4K STATIC RAM BOARD
(UNPOPULATED) FOR $18.75
and
A Minor Complaint . . . With Tom’s Response
Dear Friend, May 10, 1976
Dear Bob, May 17, 1976 I would appreciate your disseminating the spec sheet
I bought Tom Pittman's 6800 TINY BASIC and enclosed to your friends and club members. A discount of 5%
think it's the best $5 I've spent in a long time. I haven't
will be given to clubs with an order of 50, and 10% on 100.
tested it exhaustively, but it seems to work admirably, though
Several months ago I received several inputs on making
slowly. The user's manual that came with it was simple and
an unpopulated 4K RAM board, hence I am producing the
comprehensive, and gave enough info to make the program board for the hobbyist that does not want to get ripped off.
run on anyone's system with a minimum of fuss. Mine worked The board has been fully tested and is in use by many
almost as soon as I got the paper tape read in. Tom Pittman people here in Dallas. I might add that it is in use on 8080,
is to be applauded not only for producing a good TINY 6502, and 6800 CPU's.
BASIC that uses less than 2K, but for doing such a good job Sincerely yours,
of explaining how to use it. If all hobbyist vendors con¬ Jim Garrett Box 2161
formed to Tom's standards, there would be far fewer Micro Applications Garland TX 75041
complaints. 4K STATIC MEMORY BOARD (unpopulated)
My only complaint about Tom is that he staunchly
FEATURES
refuses to release the source listing of his program. I need to 2102 and 91 L02 compatible
make some modifications to the program, for use with my User selectable options
Protect/Un protect switch
cassette O/S, and I would like to be able to expand it. It is
Battery backup
very frustrating to be kept so ignorant about his program, Selection of address by dip switch
particularly since it seems to work so well. He seems con¬ Fully compatible with MITS/ALTAIR and IMSAI 8080
Can be used with other micro/homebrew computers
cerned about his ability to retain control over the integrity of Full buffering of address and data lines
the program, and perhaps about the investment in time and Bipass capacitors on all ICs for improved noise immunity
potential money he expects to receive from it. I can't see how SPECIFICATIONS
he'll ever make enough money (at $5 a copy) to keep himself Double-sided MIL-spec board
100-pin (50x50) on 0.125-inch centers
in business. But the price may serve to discourage people from
Standard dimensions
circulating clandestine copies of the program. Anyone who Plated through holes
uses Tom's program without paying Tom for the privilege, Gold plated edge contacts
PLUSES
100% tested
Instruction package
Dear Jim: 11 June '76 Plated through holes and gold-plated edge contacts
I have to agree with David's complaint—I would be very Uses 2102's or 91 L02's
unhappy to find the tv I just bought did not have a sche¬ PRICES
matic, but then a $5 transistor radio is something else. 1-3 <§> $18.75 each
Though he does not seem to realize it, David has actually 4 or more (s' $16.25 each
$1 for instruction package (one is included with each order)
touched on the reason why I have not made source listings
Texas residents add 5% tax
available.
DELIVERY
When I first started this venture, I too was not sure I
3-4 weeks
could make enough money to stay in business; it was in fact
a sort of experiment in economics. Therefore, as a hedge Coming Soon: "The Extender."
against possible losses, I sold copies of the source and main¬
tenance documentation to a company for a lot more money We are interested in receiving consumers' compliments
than any hobbyist would be willing to pay, though it was and complaints concerning Micro Applications, and all other
still considerably less than I usually sell custom programs of large and small marketeers to the hobbyist community. --JCW
comparable size for. While the sale was non-exclusive, I do
not think it fair to devalue this company's investment when
(yes, I know it's slow), but already I am time-sharing my
to some extent they helped make Tiny possible.
efforts between this, new software, and those expensive cus¬
Aside from that one large sale. Tiny BASIC 6800 has
tom programs that keep the rent paid; the projects with non¬
not yet paid for itself, but the promise is there, so I expect
zero financial return seem to get higher throughput.
to go ahead with other software for the hobbyist in the same
price range, and I hope to make source listings available for Tom Pittman Box 23189
the new packages. As for Tiny BASIC, I am presently pre¬ San Jose CA 95153
paring a comprehensive description of the IL (which is sub¬ P.S. Your readers may appreciate being made aware of the
stantially the same as that originally published in PCC) in¬ fact that Tiny BASIC does run on a Sphere configuration, but
cluding instructions for modifying it to add functional capa¬ they should mention which computer they have, since the
bility or change syntax, to be published in DDr^{if you will code is slightly different for the different operating systems
have it). I had hoped to include an assembler v#nten in Tiny (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 I've been spending most of my time figuring out what
makes the Monitor work. The DC documentation is not much
Dear Bob: April 26, 1976 help. I've also found out that machine language is a far cry
I finally broke down and bought myself a system. I from Fortran.
took out a bank loan, added some cash of my own and I will echo what some others have said about the DG
mailed my cashier's check to the Digital Group for their system:
Three-board system. It does what they say it will do.
Three days later I read in PCC that caution was needed It worked the first time I turned it on, which says a
in dealing with DG. I also read some mixed reports in Micro-8 lot considering how complex it is. It's definitely not a
News. I was really nervous, had bad dreams, and didn't sleep beginner's kit.
for nights. More documentation: flow charts for the Monitor
2/10/76 Order placed with DG: 3-board system kit plus (I'm working on a set), clearer instructions, spec
power supply. They promised 3-week delivery. sheets for the IC's and a better description of how it
Order placed with Herbach & Rademan: Clare/ works would be nice. But that would mean more
Pender Keyboard. money and maybe in that case the documentation is
2/21 The three boards arrived, missing 74121 and 22uF
OK.
capacitor. Last week I got info about DG's Tiny BASIC. I plan to
2/25 Keyboard arrived. order that and another 8K of RAM from them.
2/26 Power supply arived. Materials I'm finding helpful: The Bugbook III.
3/3 Mother board arrived. Hopefully my Intel 8080A Users’ Manual will get here
soon.
Total time: 3 weeks, one day. The missing parts took 4
weeks and two letters. I want to get: 8080A Microcomputer System’s Manual,
All parts are of good quality. Intellec 8/Mod 80 Microcomputer Development System Ref¬
TV-Cassette and Mother boards are slightly warped. erence Manual, SCELBI software manuals.
5V 6A supply by Eentak Inc.; looks impressive. Keep up the good work.
Documentation fair; assumes a lot. Several minor errors. Yours,
Chassis, switches and connectors need to be ordered Ed C. Epp Freeman Junior College
from other distributors at present. Freeman SD 57029
Time Spent
2.5 hours I/O card GOOD REPORTS ABOUT MOS TECHNOLOGY
4.75 CPU card
3.25 TV-Cass. card We hear that MOS Technology has sold about 1000 KIM's.
2.5 - 5, ± 12V power supply
We also hear that they are very responsive to customer queries. If
.5 Mother board
you have needs or interests, the "good guy" name we have been
6.5 TV modifications
given is Don McLaughlin, Product Manager for KIM,
17.5 Planning, cutting, mounting, wiring chassis
4.5 Checking things out (215) 666-7950.
June/July, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 5
153
ACCENTUATE THE SYSTEMS SOFTWARE;
GOING TO SUBMIT A PROGRAM ELIMINATE THE GAMES
TO A MANUFACTURER’S SOFTWARE LIBRARY? Dear Editor,
WHY NOT SUBMIT A COPY You can eliminate 90% of the games. Almost all other
hobby publications specialize in them. Emphasize your unique¬
TO YOUR LIBRARY (THE JOURNAL)? 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
Dear Editor, May 12, 1976
too many other things. I strongly recommend that you push
I've got a gripe. I ordered my Altair back when Pop
APL as you did TBASIC
’Tronics first published the article (took four months to get it,
though). Anyway, they automatically gave me a 1 year's sub¬ Robert C. Minnick Box 306
scription to their Computer Notes. With each copy they in¬ Ouray CO 81427
clude at least one page of new programs available in their
software library. These are programs that they keep asking To a large extent, we will leave the games for publication
people to send in, for which they receive a couple of pro¬ in People’s Computer Company. We will reprint games from
grams in turn from the library. We are told these programs time to time, particularly when they are "games' systems," or
are all free simply for a small handing and copying fee. These are games written in assembly-level code. This might be con¬
"small fees" are almost all $2 minimum—or more for the sidered to be, so to speak, systems software for home computer
longer programs. The current offering consists of 29 programs users. Dr. Dobb’s Journal will definitely not be emphasizing
totaling $61 in fees if one ordered all 29 (28 are $2 each, games, however.
and 1 is $5). We would be delighted to "push" APL as we did Tiny
What I don't understand is why they don't publish them BASIC. All we need is for someone to provide design criteria
in their Computer Notes. As it stands. Computer Notes con¬ and details appropriate for hobbyist consumption. We are
sists of 16 pages of virtually nothing but their own advertising. alwsys on the lookout for competent individuals interested in
They say a subscription to non-Altair owners is $30. Personally, providing the leadership for such projects. Incidentally, as soon
I wouldn't give 30 cents for a year's subscription. I bet after as he can find the time, the Editor of Dr. Dobb’s Journal is
the 12th issue goes out and they start selling subscriptions planning on initiating a SMALL PASCAL project, to be pur¬
they are going to be in for a big surprise. Who will pay even sued in much the same manner as Dinnis Allison's Tiny
$10 for their advertising sheet? They also issue software with BASIC project. This will be based on Niklaus Wirth's PASCAL,
a $500 price tag to the hobbyist and then lament the swap¬ a cleanly designed, excellent, block structured, high-level lang¬
ping, passing around, trading, of it. What do they expect? uage similar to ALGOL, .but with much more powerful data
But that's another story. description and manipulation facilities, and structured for
The point is—why can't you publish these (or similar)? single-pass compilation.
Just glancing at the latest list I see programs listed as being One final note: PCC is not a program repository. We
60 lines, 83 bytes, 73 bytes, 21 lines, 46 lines, 121 bytes, publish all available information about interesting software,
28/33 bytes, 56 bytes, 12 lines, 250 lines, 15 bytes, etc. You including information as to how it may be obtained. However,
could get all eleven programs I listed on 3 or 4 pages, and we do not distribute such software in machine-readable form
that represents $22 of handling and copying fees. Publishing (e.g., paper tapes, cassettes, etc.). --JCW
some would save us a bundle.
This is what I hope Dr. Dobb’s Journal is all about. SHORT ON LENGTH
Actually, a lot of people just aren't going to get many of the BUT LONG ON QUALITY
programs unless there is a lot of the lamented swapping, trad¬
ing, and exchanging—or, unless you become the "library" for Dear Jim,
all of us. Having just read your February issue (Vol. 1, No. 2), I
So far, you are doing fine. Keep up the good work. was sufficiently impressed to part with the money for a sub¬
Durward Landers 2509 Lakeside Dr. scription. What your publication lacked in length was more
Garland TX 75042 than adequately offset by quality and subject matter. Your
questionnaire scares me somewhat as you apparently are look¬
We will publish as many programs as we can, if people ing for some new directions) Additional coverage of other
will send them to us. Spread the word: Whenever someone topics is fine and may tend to broaden your base of appeal.
decides to submit a program to a manufacturer's software However, I for one, bought your publication for what it cur¬
library or users' group, encourage them to also submit it to rently is—"a medium concerning the design, development and
the Journal. If it's systems software or assembler-level, we will distribution of free and low-cost software." Should your en¬
probably publish it. If it's a program coded in BASIC or some terprise maintain its stated goal of presenting "detailed infor¬
other HLL (High Level Language), it will probably be pub¬ mation concerning low-cost systems software," I will have
lished in PCC Newspaper. spent the subscription fee well.
I remain,
We see nothing wrong with offering programs to manu¬
Dan Artman 1445 Adams Rd
facturers’ libraries. But at the same time, why not offer them
Cincinnati OH 45231
to your library: Dr. Dobb’s Journal?
As far as reproduction and postage costs are concerned: is doing little more than breaking even. Unfortunately, there is
there is a problem. The Community Computer Center (CCC) a lower limit on the cost of maintaining paper-tape equip¬
is maintaining a Program Repository and Duplication Facility ment + purchasing supplies + paying a paltry pittance to a
(see the Journal, March, 1976, issue) for all programs sub¬ slave to operate the equipment and verify tapes that are
mitted to it. We think their charges are reasonable: $1/ounce punched and . . . etc. (Note: People's Computer Company is
for tapes plus 50 cents (orders under $5) or $1 (orders ex¬ a publishing operation. We provide programs in human-readable
ceeding $5) for postage and handling. Note that these are form. We do not provide programs in machine-readable form,
quite comparable to MITS' charges . . . and we brow CCC 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. while waiting for this unit to arrive.
I had a little confusion about the proper procedure for
I am a little out of my field messing about with computers— completing the power supply and collecting it. I had docu¬
far more than some school teachers are whose interest is in mentation for connection of the IMSAI power supply using
propagating math instruction, etc. But even my life was not un¬ two alternative transformers and they had shipped a third
touched by some of the manifestations of the computerized version of the main power supply. This was corrected quickly
society—about four years ago, I made use of the IBM Mag-card enough, and a minor problem with the 1 K memory board
Selectric typewriter during a period of heavy work. Ever since, I was quickly corrected when someone pointed out that I had
had been struck with the convenience—and high cost—of interchanged a .01 mfd capacitor and a 33 mfd one. Testing
mechanized typing. of the front panel board and the cpu board had to wait for
More recently, I heard that John Arnold and Dick Whipple arrival and assembly of the mother board and additional
were assembling a computer for what appeared to be peanuts, memory.
compared to the charge gaily levied by IBM for its typing units, When the additional units arrived, everything tested out
much less its Mag-card units, and still less than its computers. satisfactorily, except that there was a single bad LED on the
Based on this information, I could hope to install a powerful front panel. I recall that there was an embarrassing pause
typing system with greater capabilities than anything that I after this LED was replaced—we thought that the entire
could expect to purchase from IBM with available resources, equipment had gone berserk. However, I found that a piece of
and at less cost. wire had worked its way behind the front panel, and was
Having decided to get into the microcomputing stream, shorting the deposit switches. I have had no further problems
with the help of John Arnold, I decided to get an IMSAI with the computer, or with any of the parts supplied by
rather than Altair because the IMSAI unit with memory was IMSAI-except for the problems involved in learning to speak
the same price as the MITS unith without memory. Also, machine language like a native. (Apparently I don't do that
MITS' prices for memory were substantially above those yet.)
charged by IMSAI. My remaining difficulties in getting the initial system
I placed my order for the basic IMSAI unit on into operation have revolved around input and output devices.
January 22nd. They received this order on the 25th, and the I joined John Arnold and Dick Whipple in the acquisition of
unit was actually shipped on February 2nd. I learned more three Burroughs Model 9350-2 communicating typewriters
about the units actually available from IMSAI on January 25th, from Herbach & Rademan of Philadelphia. These units were
and sent in an additional order on that date. It was not filled correctly advertised as receiving and transmitting a form of
until March 1st, when some of the parts were shipped. The ASCII. They appear to be based on the Friden Model 2300
I/O ports that were included in the second order did not typewriter, a modernized version of the Flexowriter. They are
arrive until about March 25th. not readily convertible to use as a computer input because
The serial I/O board was delayed by a considerable there is a direct mechanical linkage between the keyboard and
re-design of the board, which must have started in January, the keybars of this typewriter. Another thing that I found very
and must have concluded at the very end of February. The hard to get used to was that this "typewriter" didn't have a
documentation received with the original equipment showed backspace key! There was some additional major maintenance
the manner of assembling the SIO 2-2 board, Rev. 1. I re¬ to be done on this equipment. Although it could be induced
ceived at least one set of errata with the documentation, and to type, thus far I have been unable to get the typewriter
one after I had already got the equipment. Ultimately, IMSAI hooked up to the computer!
sent me their SIO 2-2 Rev. 3 board, with all of the changes After making the decision to use a separate keyboard, I
built into the board. bought one of the keyboards originally built for RCA that
I would like to point out that IMSAI was very prompt have been advertised by Sargeant's in Los Angeles. This key¬
in providing the kit buyers with errata when they discovered board was advertised to be fully ASCII encoded, and it was,
something that needed to be fixed. In addition, on certain so far as it went. Unfortunately, this unit had provision for
rather complicated modifications, they offered to make the upper and lower case letters, numbers, and punctuation marks,
modifications themselves if the kit-builder did not trust him¬ but it did not have any provision for the non-printing control
self to fix the unit satisfactorily. They have also been quite characters so common to computer work. In addition, upon
helpful with software for units of the equipment. For in¬ applying power to the keyboard, we discovered that this key¬
stance, with the CRI board they supplied paper tape software board carried a strobe that was valid as long as the key was
and a hexadecimal listing. pressed, and used negative logic. That is, the strobe output,
In the revised order, I had requested the EXP-22 and all the other outputs supposed to be made true when a
mother board. I recall that I could not proceed beyond the key was pressed, went at that point from a voltage of 5.0 to
assembly of the several independent boards during February 0.4 volts. It appeared that it would be necessary to add a
Page 7
June/July, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025
tair number of IC's to the interface between the keyboard
and the computer in addition to installing an additional key Bootstrap for 8080
on the keyboard for use as a control key. With all these
matters before me I decided to keep the keyboard for future by Lichen Wang
modification, and get another for my present use. But I did
(reprinted with permission from Homebrew Computer Club
get a pretty keyboard enclosure from Sargeant!
Newsletter)
[ Later] ... I am now in the process of putting that
pretty keyboard enclosure and keyboard to good use. It's going
If your 8080 microprocessor system is not equipped with
to take a certain amount of skill and understanding but one
non-volatile memory, you probably have to reload the memory
of my purposes in getting into this hobby was to acquire that
from time to time. To read the Intel hex-format paper tape,
sort of skill. Thanks to Sargeant's, any way, for providing me
you need to key in a loader of some eighty-odd bytes long. This
with an occasion for that sort of acquisition—even if it wasn't
is rather tedious and often leads to error. Altair BASIC has a
what I exactly expected.
bootstrap loader of twenty or twenty-one bytes long. In princi¬
I feel that I should mention the question of IMSAI soft¬
ple, you can use this bootstrap to load in your own loader which
ware before closing. In the advertisements that they began to
will then load in your program. I coded one myself, and what
distribute just after 1 ordered my IMSAI unit, they stated
comes out is a bootstrap sixteen bytes long. This is still too
that they would ship an assembler, loader, and monitor with
long—maybe our professional experts can make it shorter. For
every unit, together with BASIC and other languages there¬
after. This assembler, etc., turned out to be a re-write of the the time being, you are welcome to copy mine.
assembler originally distributed by Processor Technology Corp. The part that you have toi key in looks like this:
It uses all of a 4K memory, and needs an additional 2K of 0000 DB00 READ IN 0 ;READ AND
RAM, if not more. A complete source listing and paper tape 0002 E620 ANI 20H (MASK THE STATUS BIT
of this assembler were enclosed with the unit. IMSAI also 0004 CA0000 JZ READ ;NOT READY YET
provided a listing and paper tape of software for their Cas¬ 0007 DB01 IN 1 (READY, READ IN A
sette Recorder Interface board. On March 20th, IMSAI wrote FRAME
all of their customers, stating that they were now ready to 0009 010900 HERE LXI B,HERE ;LATER BECOMES INX B:
deliver their 4K BASIC, and expected to be ready to deliver STAX B, CPI
the 8K and 12K BASIC languages on April 15, and May 15, 000C 02 STAXB ;LATER BECOMES FF
respectively. The 4K BASIC was shipped at the end of March. 000D C30000 JMP READ ;LATER BECOMES JNZ
I was ultimately charged $4.00 for their cost of duplication of READ
the paper tape, and an additional $10.00 for a 70-page source
And the paper tape should have the binary equivalent of the
code listing of the IMSAI BASIC. IMSAI had apparently
hex numbers shown below:
enclosed it 'by mistake.'
IMSAI's price for its 4K BASIC thus amounts to $14. 01 01 ... 01 03 02 FE FF C2 00 00 XX XX.XX XX FF
In addition, IMSAI will sell the 8K and 12K BASICs for $1 <- leader -> <- bootstrapping -> <- your loader -> marker
per kilobyte of memory required. The source code listing for Where your loader is punched in binary format on the paper
these two extended BASICs will again be $2.50 per kilobyte. tape between the 00 and the FF is denoted by XX XX.
Compared to the longwinded philosophical discussions that one XX XX. Your loader cannot have any byte with the value FF.
hears from MITS from time to time, this is probably a great The marker FF tells the bootstrap to start your loader, starting
bargain, notwithstanding that the IMSAI BASIC may not be at 10H. After the FF, the paper tape is read by your loader. Use
quite as powerful as the MITS 4K BASIC. whatever format you want.
After acknowledging the assistance of my friends in If your loader cannot be loaded at 10H, then you will have
checking out the IMSAI 8080, I conclude that this equipment to write another loader which can be loaded at 10H. Use it to
is a well-designed, sturdy unit easily capable of expansion to load in your first loader to load in your program. This sounds
the full limits of addressable memory. IMSAI has acted in a very confusing, but that is how bootstrap works. Have you
very businesslike fashion, and has tried to be genuinely helpful ever tried to get yourself off the ground by pulling your
within the limits that are proper to a business organization. bootstrap?
IMSAI recently raised the price of the basic equipment, with¬ Incidentally, the I/O ports at locations 1 and 8, the status
out memory, to $599. Certain persons of my acquaintance bit mask at 3, and the jump condition at 4 may have to be
griped very strongly at IMSAI's action. I consider that in view changed for different I/O interface board. Your loader should
of the high quality of the merchandise, the IMSAI equipment copy them from the bootstrap rather than setting them up on
is worth this premium price to the individual who has never their own. (Or, you can code your loader to change location 9
attempted to build an electronics kit before. Anyone who to RET, and use READ as your input routine.) This way the
considers the IMSAI not worth the price, should consider same paper tape can be used on different machines. To carry
whether he or she could duplicate the system with available this one step further, your program should, in turn, copy them
resources. If he could match the high quality provided by from your loader, so that it too can work on different
IMSAI, could he deliver the goods to others, at the price? If machines.
so, why isn't he in there competing?
Yours very truly, HIGH SCHOOL CLUB IN CHICAGO
S.A. Cochran, Jr. Box 607 The University of Chicago Laboratory High School (1362
Attorney at Law Tyler TX 75701 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
June/July, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 9
FIGURE 1
2nd XOR
1st XOR
MASK
AND
Byte Packing Truth Table
< CD
i
0 0 0 0 0 0 = B ;
; DO THE OPCODE, OPPERAND, AND COMMENT
0 0 1 0 0 0 = A ,* MULTIPLE BLANKS BECOME SINGLE BLANKS
0 1 0 1 0 1 = B
0061 4F POC: MOV C, A
0 1 1 1 1 0 = A 0062 CD0938 CALL CO
0 = B CALL CRCHK
1 0 0 1 0 0065 CD8100 P0C1 :
0068 FE20 CPI * *
1 0 1 1 1 1 = A 006A CA6500 JZ POC 1
006D FE3B CPI ';'
1 1 0 0 0 1 = B FCl
006F CA4400 JZ
1 1 1 0 0 1 = A 0072 4F P0C2: MOV C, A
0073 CD0938 CALL CO
0076 CD8100 CALL CRCHK
; PROCESSOR TECHNOLOGY REFORMATOR 0079 FE20 CPI ' '
007B C27200 JNZ P0C2
; THIS PROGRAM TAKES 8080 ASSEMBLY 007E C36100 JMP POC
; SO'JRCE PROGRAMS WRITTEN ON INTEL'S
; INTELLEC 8 WHICH HAVE COLONS AFTER
; LABELS, CONTROL-I'S FOR TABS, ; READ A CHARACTER, MASK OFF PARITY.
! AND SEMICOLONS TO DENOTE COMMENTS. ; IF ITS A CARRIAGE RETURN, THEN
; DO THE END OF LINE THING
; CONVERT CONTROL-I'S TO BLANKS.
; IT CONVERTS THEM TO PROCESSOR ; REPRODUCE LEADER.
; -TECHNOLOGY'S FORMAT WITH LINE
; NUMBERS, TO DENOTE COMMENTS, 0081 CD0638 CRCHK: CALL RI ,*GET THE CHARACTER
,* AND NO SEMICOLONS AFTER LABELS. 0084 E6 7F AN I 7FH ;mask parity
0086 FEOD CPI CR
0088 CA9500 JZ CRC 1 ; ITS THE END
; THE READER MUST BE UNDER PROGRAM CONTROL. 008B B7 ORA A
,* THAT IS IT MUST BE STOPPED AFTER EACH 008C CA9900 JZ CRC2 ;REPRODUCE LEADER!!
,* CHARACTER IS READ IN. 008F FE09 CPI 09H ^CONTROL-I IS A TAB
0091 CO RNZ ;NOT CONTROL-I
0092 3E20 MV I A, ' *
,* THIS RUNS ON THE INTELEC/8 0094 C9 RET lREPLACE WITH * '
; IT STARTS AT LOCATION 10H 0095 El CRC 1 : POP H ,*FORGET RETURN
,* AND USES THE INTEL MONITOR 0096 C3AA00 JMP NLINE ;go to end of line
,* FOR I/O 0099 4F CRC2: MOV C,A
009A CD0938 CALL CO SOUTPUT LEADER
OOOD CR EQU ODH 009D C38100 JMP CRCHK
OOOA LF EQU OAH
3806 RI EQU 3806H ;READER INPUT i
3809 CO EQU 3809H ;CONSOLE OUTPUT ; PRINT OUT (< H,L > ) AS AN
; ASCII DECIMAL DIGIT.
Page 10 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 June/July, 1976
158
AN EXERCISE FOR NOVICE a transition table to evaluate an arithmetic expression. There
TRANSLATOR IMPLEMENTORS are 2 stacks: a transition stack, T, and an execution stack, E
(arrays "T" and "E"). The program reads the expression once
An Arithmetic Expression Evaluator, Coded in BASIC from left to right and takes various actions as directed by
reference to the Transition Table (array "D"). As the expres¬
by Bill Thompson 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
Greetings: April, 26, 1976 an operator: (4 ( + - * / ) then the program goes to the
I have been studying compilers, interpreters and the like, transition table for instructions. It does this by comparing the
and thought that some of the methods that I have used to current symbol with the top one on the translator stack (T).
gain a proper acquiantance with such a complicated subject
might aid other uninitiated persons. INSTRUCTIONS:
As such, having access to an HP9830 (programmable 1. Push the current operator on translator stack T, and
calculator—programs in BASIC) I have constructed in BASIC, continue reading.
an expression evaluator-sort of an interpreter. Since it is in 2. Perform an operation, push the current symbol on T,
BASIC, instead of assembly, the flow is a bit more obvious. continue.
Thanks and take care, 3. Pop Stack T, continue (deletes parenthesis).
Bill Thompson 614 - 35 St 4. Perform an operation. Pop T, then repeat the table
look-up with the current symbol and the new top of T.
Evans CO 80620
5. Error: missing right parenthesis.
6. Error: missing left parenthesis.
Following is a program and sample run of a simple
7. End—evaluation complete.
expression evaluator, written in BASIC. The program uses a
transition table to "crunch" an expression. I have restrained Notes:
myself from numerous embellishments which have occurred to A "stack" is a last-in-first-out data vector.
All operations are performed on the top two members
me as I worked on the program—had I started on that route
of the expression Stack, E.
I would soon have succeeded in writing a BASIC interpreter
All operations performed use the top of the T stack.
in BASIC! Nevertheless, I do suggest that the beginner who
All expressions must be followed by a blank.
wishes to learn enough to write a compiler or an interpreter A blank is denoted in the table by .
will find it particularly helpful to write this routine in Values are assigned by expressions of the form:
assembler code. If you have access to a version of BASIC with 'LET E=5'.
strings, add some of those embellishments I left out, such as
Reference: Translation of Computer Languages by Wein-
program storage, exponential functions, and assigning an garten, 1973, Holden-Day, Inc., ISBN 0-8162-9423-2. (Warn¬
expression to a variable. All of these will get you into the ing: the reference though good, contains errors in diagrams,
program, and hopefully into your own language. etc.)
A TRANSITION TABLE EVALUATOR 10 DU AS[«01,B$[ 1 01,CS t261 ,Cf261 .Traoi ,EraO] ,LX6,71
FOR ARITHMETIC EXPRESSIONS (IN BASIC) 20 HEM
30 HE,VI SET UP THE TRANSITION TABLE
This program illustrated the use of stack techniques and
40 HE,A
50 FOR 1=1 TO 6
60 FOR J= 1 TO /
Current Symbol 70 1EAD D I I ,J1
80 NEXT J
14 ( + - * / ) 90 NEXT I
(blank) 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
t 14 7 111116 4
1 40 DATA 4, 1 .4, 4, 1
o 150 DATA 4, 1 ,4, 4.1 » 1 » 4
lune/July, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 11
159
350 GOSUB 530 1150 RETURN
360 K=K+I I 160 Et1]=E[21*EI1 1
370 GOTO 310 11/0 GOSiJB 12 70
380 M=POS(CS,AS[5,5 3) 1180 RETURN
390 M=ROS(A S,) I 190 EtII=EI2 J/E11 1
400 C[M]=VAL(ASCN + 11) 1200 GOSUB 1270
410 PRINT "* ;CS [ , M ] *•■ = ••*CCM] * •* *" 1210 RETURN
420 RETURN 1220 REM THIS ROUTINE POPS STACK T
430 4= POS (C$,AS IK,K 1) 1230 FOR 1=1 TO 79
440 IF M=0 THEN 500 1240 TCI]=T[1 + 1 )
450 FOR 1=80 TO 2 STEP -I 1250 NEXT I
460 El I] = E[ 1-1 I 1260 RETURN
470 NEXT I 1270 REM THIS ROUTINE SHIFTS STACK E
480 Ell]=CIM) I 280 FOR 1 = 2 TO 79
490 RETURN 1290 El I 1=1:1 1+1 1
500 GOSUB 1320 1300 NEXT I
510 PRINT 11 INVALID SYMBOL" 1310 RETURN
520 GOTO 190 I 320 PRINT AS
530 GOTO DITCH,LI OF 540,590,650,710,770,830,890 1330 PRINT TABIK-I)l"~"
540 REM 1340 PRINT
550 REM INSTRUCTION I I 350 RETURN
560 REM
570 GOSUB 990 RUN
580 RETURN INPUT EXPRESSION?LET A=5
590 REm
600 REM INSTRUCTION II
* A= 5
610 REM INPUT EXPRESSION ?LET Z=6
620 GOSUB 1050 * Z= 6
630 GOSUB 990
640 RETURN INPUT EXPRESSION?LET D=4
650 REM * D= 4
660 REM INSTRUCTION III
670 REM INPUT EXPRESSION?LET X=3.25
680 GOSUB 1220 * X= 3.25
690 RETURN
700 REM
INPUT EXPRESSION?LET P=3.14159
710 REM INSTRUCTION IV * P= 3.14159
720 REm
730 GOSUB 1050
740 GOSUB 1220 INPUT EXPRESSION?A*A
750 GOSUB 530 A*A =
760 RETURN
770 REM * 25 *
780 REM INSTRUCTION V
790 REM
800 GOSUB 1320
* STOP *
810 PRINT "MISSING RIGHT PARENTHESIS" INPUT EXPRESSION?A/Z*P
820 GOTO 190 A/Z*P
830 REM
840 REM INSTRUCTION VI +
850 REM
860 GOSUB I 320
870 PRINT "MISSING LEFT PARENTHESIS"
INVALID SYMBOL (missing j, that is, missing terminating blank)
880 GOTO 190 INPUT EXPRESSION?A/Z*P
890 REm A/Z*P =
900 REM INSTRUCTION VII
910 REM * 0.265258463 *
920 PRINT ASS" ="
930 PRINT "* "SEC 1 Jl" *"
940 PRINT * STOP *
950 PRINT "* STOP *" INPUT EXPRESSION?(A*Z)+D*X
960 El 11=0
970 GOTO 250
(A*Z)+D*X =
980 END *43 *
990 REM THIS ROUTINE ADDS A SYMBOL TO STACK T
looo For 1=80 to 2 step -i
1010 TtI]=TII-l] * STOP *
1020 NEXT I INPUT EXPRESSION?((A-Z)/(X*Z)+P
1030 TIIJ=L
1040 RETURN
((A-Z)/(X*Z)+P
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" MISSING RIGHT PARENTHESIS
1090 GOTO 190 INPUT EXPRESSION?((A-Z)/(X*Z)+P)
1100 Ell]=E[2 I+EII 1
1110 GOS JB I 2 70 ((A-Z)/(X*Z)+P)
1120 RETURN * 3.090307949 *
I 130 Et1J=EI2 3-EII 1
I 140 GOSUB 1270
* 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 Discs and controllers. A 16-bit system. High speed printer and
1915 S. Cape Way, Denver CO 80227 controller. And on and on and on . . .
(303) 986-6651 PLANNED APPLICATIONS—Indefinite. I designed and
May 6, 1976 [received at PCC June 21st] built the system to learn more about the hardware. That pur¬
pose was accomplished: I did learn a lot. As for what I do
Hello People, May 12, 1976
Enclosed is a description and source listing of my test editor
with it, only time will tell.
program, along with some comments on conversion of the program to
other 8080 systems. This material is being submitted approximately THE EDITOR
simultaneously to both the Denver Amateur Computer Society News¬
letter, and to Dr. Dobb's Journal for publication as either (or both) The text editor program is a strong/line oriented pro¬
organization sees fit. As far as / know, all the bugs have been re¬ gram written in 8080 assembly language. The program is de¬
moved from the program. / have been using an earlier version, which is signed for use in the development of source programs to be
essentially the same except for the variable storage locations and tele¬
type routines, for several months.
processed by an assembler or compiler, or for general purpose
/ am also including a current description of my system, which ASCII file generation. 29 separate commands are recognized by
will probably be out of date by the time you receive this, since I the program
keep changing it, and some other genera! comments. The editor does not require line numbers to be present
Keep up the good work.
Fred J. Greeb
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¬
GENERAL COMMENTS 5-12-76 leted, replaced, modified, or printed with simple input com¬
TEXT EDITOR SOURCE LISTING-The listing is not mands. Once initialized, the program contains self protection
generated directly by the 8080 assembler. It is the result of features so that it cannot overwrite itself.
playing the source tape generated by the assembler into a HARDWARE REQUIREMENTS-The program occupies.'
system which has a high speed printer. The playback timing is approximately 2.5K words of memory, plus memory space for
not perfect and some errors do occur. All known errors have the file being edited. An additional 128 words of memory are
been corrected, but consider this factor as a potential source
used for the 8080 stack. Peripherals supported are a TV-Type-
of errors when implementing the program on another system.
writer, Baudot teletype (output only), and a cassette tape.
TEXT EDITOR PROGRAM—The program has not been
Several of the driver routines for the peripherals are contained
optimized for either memory utilization or speed. The original
in the system monitor ROM, and must be supplied externally
design goal was to use less than 4K, for compatability with
for conversion to other 8080 systems.
the assembler. The first version used about 2K, and therefore COMMAND FORMAT AND DESCRIPTION-AII com¬
no size reduction was attempted. mands to the editor are input as ASCII data terminated by a
Most commands execute with no noticeable delay. A carriage return. The only non-printing ASCII characters recog¬
long string search or deletion of many lines will cause a few nized by the program are carriage return (C/R, octal 15), end
seconds' pause.__ of file (EOF, octal 1), and Tab (Control T, octal 24). The
DESIRABLE HIGH LEVEL LANGUAGE FEATURES program outputs a greater-than symbol, >, as a prompt indi¬
(personal preference)—Efficient utilization of memory, possibly cating that it is waiting for a command to be input.
by converting source code to opcode (binary) equivalents, The commands recognized may be classified into three
rather than storing source code directly. This conversion general categories: Initialization, Edit, and Utility. All com¬
could be accomplished at load time, or by a separate pro¬ mands must be followed by a space and/or terminated by a
gram (a compiler?). C/R. Additional parameters associated with a command (nu¬
User definable I/O handling, including multiple I/O ports. merical or string data) must be separated from the command by
Considering the price of PROM's, I suspect most I/O routines one or more spaces.
will end up in PROM sooner or later, with everyone using Initialization Commands—The initialization commands
different techniques and addresses. set the file start address and define the end of file. All ini¬
External subroutine call capability, including variable tialization commands request the file starting address, which
transfer capability. must be input from the keyboard.
User definable integer and floating point variable The initialization commands and their results are:
capability. NEWF Defines a new file location starting at the input ad¬
Several others I can't think of off the top of my head,
dress, and enters the input mode.
and will undoubtedly remember after I mail this.
EDIT Edit an existing file at the input address. Outputs the
SUPPLIERS—Excellent: James Electronics, Bill Godbout
first line or page of the file, as specified by the out¬
(2 week service on custom-programmed PROM's). Major sup¬
put mode.
plier gripe: refund credit slips rather than cash refund on out-
LOAD Loads a file from tape, beginning at the starting ad¬
of-stock items. These have a habit of getting lost when re¬
dress. Loading begins wieh a C/R is input following
turned for a cash refund. I don't know how the two men¬
the address input to allow time for manual tape setup.
tioned suppliers handle this problem. Out of numerous orders
for a variety of merchandise, they have never been out-of¬ Edit Commands—The edit commands are used to display
stock on any item. Poor suppliers: why bother to mention and/or edit lines within the file. All edit commands operate
them—most have already received an abundance of criticism. on, or with respect to, the current line. In most cases, the
WANT LIST—High level language. Floating point arith¬ current line is defined as the last line displayed on the TVT
metic and I/O routines. Floating point arithmetic hardware screen. The program utilizes a line pointer which always con¬
and/or schematics. Scope driver software using D/A converters. tains the starting address of the current line. This address
Games. Cheap paper tape reader. changes as different lines within the file are accessed.
DREAM LIST—Cassette tape controllers, hardware and In the following descriptions, a string is defined as any
software. High speed CRT terminal, 72 column line minimum. sequence, of any length, of valid ASCII characters. Parameters
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 line in the file (or move M lines) and dis¬
may be included in the command line. Only the parameters, play the new current line. M may be pos¬
and not the parentheses, are included if the optional itive or negative (max. range = ± 255).
parameters are used. P (M) Print the current line (or M lines). The
last line printed becomes the new current
A String Append the string to the end of the current
lines.
line and display the result.
PAGE List one page (15 lines), beginning with
BOTM Set the current line pointer to the end of
the current line. The current line is un¬
file.
changed.
C %string1%string2 Find the first occurence of stringl in the
R string Replace the current line with the input
current line and change it to string2. The
string and display the result.
two string lengths need not be equal, and
T Set the current line pointer to the top of
the second string can be null (i.c., a C/R
the file and display the first line or page
following the second delimiter). The de¬
of the file.
limiters (%) may be any printing ASCII
character. Utility Commands—The utility commands allow display¬
D (M) Delete the current line (or M lines begin¬ ing of the various pointers used by the program; specifying
ning with the current line) from the file. parameters to the program; and outputting files to tape. All
The file is moved in memory so that no addresses output by these commands are displayed in split
empty space exists in the file. M is input octal, low order address first, followed by the high order ad¬
as a decimal number, maximum value dress. The utility commands interface with the TVT only, and
= 255. do not putput to the TTY.
F string Find and display the first line in the file The utility commands recognized, and the functions they
which begins with the string. The search perform, are:
begins with the line following the current CLRS Clear TVT screen
line and continues until a match is found DISP Displays current line pointer. This command is
or the EOF is reached. The found line useful for the INSM command to determine the
becomes the current line. starting address of the lines to be inserted.
I string Insert the string as a new line following DEOF Display end of file address.
the current line. The file is moved up in DISM Display current setting of maximum memory
memory to make space for the new line. size.
If no string is included, or if only a C/R SETM Set maximum meory address. This value is pre¬
is input as a command, the editor enters set to 7.5K for use in an 8K system, leaving
the continuous input mode. In this mode, ,5K free for later additions to a large file. This
multiple lines may be entered in the file command requests an address input.
by typing in each line followed by a C/R. MODE L Sets the output to the line (L) or page (P)
Exit from the continuous input mode is P mode. In the line mode, only the current line is
accomplished by inputting a null line (C/R displayed following a command. In the page
only). When the continuous input mode is moade, 15 lines are displayed. The first line
entered, the message INPUT will be dis¬ displayed is the current line.
played. Upon exiting this mode, the mes¬ OUTM S Sets the output device to the TVT (S) or tele¬
sage EDIT will be displayed. No prompt is T(C) type (T). The T parameter initializes the TTY
issued between multiple input lines, which only (set to Baudot letters mode), and the TC
indicates that the editor is in the input parameter also outputs a carriage return/line
mode. feed.
INSM M Insert M lines from memory following the RUBO X Sets the rubout character to X. X (initialized
current line (M = 1 to 255). The file is to ") may be any printing ASCII character. The
moved in memory to accomodate the new rubout character erases the previous input char¬
lines. The location (starting address) of the acter in a command line. Multiple rubouts may
new lines will be requested and must be be used to erase (back up) multiple characters.
input from the keyboard. This command KILL X Sets the kill character to X. X (initialized to ?)
is designed for merging together of two may be any printing ASCII character. The kill
files, but may also be used to move lines character deletes the entire input line. If the
within the same file if the destination is at kill and rubout are set to the same character,
a higher memory address than the source. the kill function will take precedence.
If this is not the case, only one line at a Q Quit. Exit to monitor.
time may be moved correctly within the TAPE Transmitts the entire file to cassette tape. Two
file. subcommands are associated with this command
LIST List the entire file on the output device and require responses to queries displayed on
(TVT or TTY). the TVT. The first TVT output is "REMOVE
L string Locate and display the first line in the file TABS?". An input of Y (yes) will cause tabs to
which contains the string anywhere within be converted to spaces prior to transmission to
the line. The search begins with the line the tape recorder. If N (no) is input, the file
following the current line and continues will be taped unmodified. The next output mes¬
until a match is found or the EOF is sage is "FULL OR PARTIAL FILE?". If an F
reached. The located line becomes the cur¬ (full) is input, the file is terminated by a double
rent line. end of file on the tape. If P (partial) is input,
N (M) Move the current line pointer to the next 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 ters
two tape end formats are not used directly by TAPO B, C registers Single character output to tape.
the editor program but are for use in an asso¬ Data in A register output and
ciated assembler, where they signal the assembler returned unmodified
either that more data is required or that the TMDL A, B, C registers Time delay (approximately 5 sec¬
end of the source code has been reached. onds) for tape output routine.
Transmission of data to tape begins when the Enter at TMDL+6 for 0.05xC-
C/R following the F or P response is input. Register value delay
ERROR MESSAGES—The program will output the error HL All except D, E Address input from keyboard to
message "WHAT?" in response to unrecognizable or improper¬ HL registers. Carry set for normal
ly formatted commands. In addition to this general error mes¬ return. Carry clear if input error
sage, several other error messages may be displayed. occurred.
MONT - System monitor
On all commands which require an address input, the
LTRS, FIGS, BEQV ASCII/BAUDOT conversion tables.
address is tested against the minimum useable file address. If
the input address is less than the minimum, the error message Numerical values of Baudot sym¬
"MIN ADDR (LH) = XXX YYY" will be displayed. This pre¬ bols listed in ASCII sequence. Bit
vents overwriting of the editor program by the file being 8 set for ASCII symbols which
edited. have no Baudot equivalence, with
5 LSB's containing the relative
If a command is entered which increases the size of the
address of the double character
file, the new end of file location is tested against the set maxi¬
equivalence in table BEQV.
mum memory value. If the maximum would be exceeded by
the command, the message "MEM OVERFLOW" is displayed in addition to these routines and tables, a memory area
and execution of the command is inhibited. During the LOAD for the 8080 stack is required. The program uses a 128 word
command, the maximum is not tested until after the load from memory dedicated to this purpose. The stack depth require¬
tape is complete, and can overwrite data stored above the ment has not been determined, but 20 or 30 words should be
meximum limit. sufficient. The two TVT I/O routines (TVTI and TVTO) may
During execution of the INSM command, the data to be also have to be modified. These routines use hardware control
inserted is verified to be valid ASCII data. (Note: ASCII data, of the 8080 ready line, rather than flag testing or software
as defined in this program, is the 64 character upper case timing.
subset) If a non-ASCII character, other than a control char¬ The most convenient location for these additional mem¬
acter recognized by the program, is encountered, the message ory requirements is at the end of the present editor program.
"BAD DATA XXX YYY" is displayed, where XXX YYY is Only the value of MMIN (Minimum useable file address)
the address of the invalid data. Execution of the INSM com¬ would have to be changed, and this value is referenced only
mand is terminated if this error is displayed. in the address input routine (HLIN).
If execution of a command, such as Print M, causes the
end of file to become the current line, the message "BOT¬ SYSTEM DESCRIPTION-HARDWARE May 12, 1976
TOM" will be displayed. This message will also be displayed Custom design and construction. Based on 8080 microprocessor.
if a Find or Locate command fails to match the input string, 1.25 MHz clock. Full front panel control and display.
indicating that the sting is not present in the portion of the Memory
file searched. 8K RAM, Address 000 000 to 040 000
128 word RAM, Address 347 000 to 247 2000 (normally
CONVERSION TO OTHER SYSTEMS-Conversion to
used as stack)
other 8080 systems should not be exceedingly difficult. Sev¬ 512 word PROM, Address 340 000 to 342 000
eral hardware dependent I/O routines, which are contained in
Peripherals
ROM, are called by the program. These routines will have to be TV Typewriter (Radio Electronics TVT-1). Multiplexed half
supplied by the user. The routines called, the functions they duplex type parallel data interface with hardware control of
perform, and the registers which may be modified by these the 8080 ready line. No "echo" required.
Cassette tape mass data storage. Suding type interface with
routines are:
software timing (inPROM) at approximately 660 baud.
CRLF A register Output a carriage return/line feed Two channel D/A converter.
to the TVT Baudot teletype with UART interface. Primarily used for
CLRS A register Clear TVT screen hard copy output.
June/July, 1976 Dr. Dobb’s Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 15
163
0
0 lli 3 UJ 3
3 in lY 2 3 2 2
IX 1 j j U
>T IX LL 3 ■*j UJ 0i J i-i i_i
01 UJ —i lli ■ i i i fi u 3 3
X
IX LL LL in *i- Ul 3 r j 0 i_i 01 2 UJ
• •
if 1/1 i_l <x 3 m 'X 3 'X n 3 2 ill 2 3 LL _i
1- i, ‘i III ill J LiJ 3 iX 3 Ul 3 in 2 ill »*' UJ i j 2 3 >x
«n i- in ill •X Ll LJ LX UJ m 0 it'. 01 >x i LL 2 01 Ci i i i.L Ul _i 2 01 Ll O
iii iY.
X m •X X III 'r—1 1 1 Lj ■ i 3 rn 3 fi III i n III 1 Cl Cl LX 11. .J i_i o 3
111 _| UJ 2 111 J— n in 2 ill .J 3 3 2 10 3 2 rn X Ul r j _1 i' j LL 01 X •X fi U 2 ‘X _J 3
2 iT 2 i"i lY 111 in i.n fi in 'X i i.n f> 1/1III .. 1 .1 LX i _i 'X _i ■X _J >x ul ILl 3 ll. »r r l 01 X 3 Ll u LX •r—• !- U ■X -J _J cn
£ 'X 2 t—i Jr- t_i -J Ll Ll 0 fi o i i l_l _i _l u i LL
LU LL 'X 2 UJ UJ 0 2 III _i i UJ LL 2
1.11 _• '1 •X 2 LL 'X 2 Ul IX LL _J
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 u 3 3 3 2 2 III 01 3 3 i—i rn 3 UJ LU LX -1 Ul U. u 3
v i r— III u ill ix Cl Ll LX u\ _J 01 X 2 —i 3 2 3 3 3 2 'X o Q 2 u
' 'u. U
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 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 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 ■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
h- i Ul i •r h- 3 LX IX IX i- 3 i—i 3 'X IX lY LX Ll 01 3 3 CO III i i i j LX _l 111 'X iii Iii 2 _i LU 3 u Ll UJ
i/i i i h- LL in 3 I- U. 1— O 'X LL h- ~l 3 il. 3 i, i '1, UJ IX LI. 3 ■X 3 i-i i 1 3 iY IX LL u u: 3 LL 3 3 LU LL U
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 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
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 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
1- UJ LxJ 2 0 EI m 0 f- 3 5- Ul in 0i LL i—i 01 01 3 3 3 Ul 01 01 3 01 0 01 'ID i—i 3- 3 3 0 01 3 01 3 *“* _1 01 3 3 3 2 LX Ol 01 Ol 3 UJ UJ
£
TO
LX ll Cxi
H i_) in Ul 3
H-I 2 IX 2 h- 3 it. IX 2 LU 2 (• i 3 ll. _l _J i.n LL 0 Z LL LL LL i 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 2 i i LU i “i LU O Ll •X U. CO 3 LL i_i 3 3 3 2 _J LU
111 Li E) h* 71 h- h + 2 X UJ 1 3 'X U. 3 LL j: Ul l_! 2 iLl lli '1' LU •X 1 ■X 1 X Li f j .X. LU LL
i.i,i LL i i X •X *Y 3 •I 1- X 0 ill X 01 3 'X 3 3 3 Lj 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 'X
h- X
T 1 3 1 1 1 1 |- i J 3 _J -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 >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
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 “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
LL u_ i_j '-j Ul li L-l i_i 3 X i.n _l u u 2 3 U 3 i/l -» 3 _l 2 3 o 3 J; x: 01 3 X 2 i j 3 3 3 3 3> -J o 3
u_
in Cl n •0 2 i' j
'I LX
2 U- o 0i 3 i_i i_i _J
Li LL 3 ill U_
Lli + + +• h- 01 2 + + 3 3 3
CM
r4
*t in ij Ll rH C-.J 0' Ll rH CM Ll CM «!— 0 0 1 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 lvl 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 ivi rl 0 0 0
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 lvl rl lvl I'-l rl rl rl i-1 l-l rl lVl ri •'I rl rl n rl I'-'l r l i -l l-l i'-'l lvl 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
Li.
UJ 2
ill iY LU ill ill m 2 111 'X 01
Lli
i.n 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 l£ Ul
_i V UJ t_i 01 — X 2 h- 1- 3 i- 3 X 2 0 *X LU 01 LU 3 LL
iM i i h- 1 1 si. H-I i i ! 1 fi i 1 1 i—i 3 X 3 LL 3 'X i—J
2 GE 01 l-l 2 h- ill fi •X fi IY X i i i l 3 l—l Z LX l—l *_ i-i
«X 1- H-1 •[ 2 IX 2 ‘X LL rn i iT LL LL l' 1 m LX UJ ■T I/I 2 _J l-l E 3 'X H-I X 'X
_l 01 rn iii ,- Ul 1- 3 *1. _J ii! 3 X i- Lj LX 1 3 l.'l H-I X u I LL I—' ‘—1 i_l
'•£' 01 S- UJ 2 UJ H-I i__i 2 UJ i—i LL *x T fi T 'T f j 'X 2 T. E UJ LU l—l |_j LL '_' 2 LU LL 3 •jj
i- i- h- Ul H LX i LL LX h-i h- LX L_j LL >_ 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
1 iT'i i 2 III 1 UJ 1 1 LU _J ill 1 l UJ LL i i U. il i j ■X i i LX i j 3 2 >1 rn 3 IL 2 U 3 Lx U_ U
m LX i~i I/I 01 _J h- LU 1- 'X 01 01 Ul i_i li f| •i-i <T 'T UJ Ll •r X in 3 i—i _' js. u i-i u _l 3 3
2 i—i i i ~l ( j o .H 0 h- i_i r~i 1— 2 ill UJ rl- 01 H-I LL III X „ IX i_i LX 1J 3 LU LU l—l l—l LU 3 LL 3
1— h~ 2 h-
i i i i Y 1 2 •T • r 01 <T 01 «r 01 i i IL UJ •X LX t—i z LX H-I 3 i—i LL
UJ ij LL" LX 'X ' Y—
2 m '-£' fl iji i-i LX LX >X i~i <r. LL Ol LL _i 2 >X III T il _l LL r ll LX n III IL LU 3 2 ■X 3
Ol LX h- 1- ■X h- >X Ul J- UJ t- 01 L— ll. 'X 3 _J 2 11 i i 'X IL :- i i 3 3 3 3 Ol LX •X 3 i—i 01 3
<1
y- i—i .1 UJ _i 2 i—i 2 —| <T fi fi •X 3 UJ IX *r i 1 3 UJ U UJ UJ UJ LL i_i UJ 3 3 3
LX >x Ul I UJ I _l lU UJ i
rn -J h- IX O 01 • i I/I .- j I j 01 i- i i *_J 2 1 H-I Ol O 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
i i 0' i—i 1- i l nr V, T O
IX . 1 1 lY h- LJ •X Lx in in hi 3
U_ l;,l U. H h-i i_i h- il TT Ll 3 f j X i_i rH LL
III 'X fi 2 in 1 ••• . 1 r fi III in i- j LL > • 2 UJ H-I 3 3 l'l rt- T r j X LL T 3 U. Ul 3 3 + 3 UJ 3 u xL.
LX in . —i ••• LU l'l >1 LX UJ H -- 1— H-I z 2 ,-j ’t T 2 01 3 rH T 2 01 'X 2 X •X 0 2 2 2 'X 2 2 2
i l 2 i 'X LL H-1 , ~~i o 2 -J i r- i_l UJ LL ( -| i i 3 'X 3 i i 3 I' LU i_i LL LL X i—i LL 3
i- i—i 3 l-l 01 'X Y >X LL >X X ,- l l ± fi E LJ Ol til 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—f LU 3 h- l—l
i_i h-i T 0 3 Ll 3 ill c 3 c C
Lj 2 2 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 Ul H-I1 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
H >—i f1 i—i ~z- i— > H LL h- :r »T >X > 'X ■X '.L 1- X T 3 'T N 3 'T T c i”i :- X *.l. X i_i LL 2 'X X X
3
h- 1- 01 01 J 2 01 ZI 01 X 01 -J 0l ■ 1 li i—i EI CJ i_i 3 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 01 3 LL 3
i—i LX h- ill H LL lY
LU IX ill 01 Ul 2 h- 2 T 3 X 0 3
}— 2 01 LL |-| Cx N r i 0 i—i
h-
i—j 3 3
■t -+- *-* 01 + * 21 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-- 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
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 '-£' 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'
rH ■H rH rH rH rH rH 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 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
T
T
0i •H rH rH rH
CO _
01 0 000000000000000000000000000000
co 0 0 0 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 0 0 0 0 0 0 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 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 000000000000000000000000000000
Page 16 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 June/July, 1976
164
LL LL LL Lti I 0 1—1 01 LU Cti O'lX X LU
X UJ 0 0 UJ i_l Lti _j z l.i*l Hi i_i 1 l'l Cti O'lX 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 1—1 _l Ll G ill UJ Lti z G X X LU
ill Q o cc Ul z LU l_l i_l z LL ui 0 ill UJ in Ul LU 0 Cl 1—1 0 0i 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
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
LU 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 •—* CO o O'l o UJ g LU ~z u iz CD z i_i Ll i—i ■X ill 2 0i CD G X X X l~l X U
1—1
_J
Hi UJ
z
Ll G © 0 0 z
1—1
cc i—i UJ 1—*
_j
i_i
O
0 X
H
i—i LU lL
II
>—i i—i i_i 0 4-1
LU
X G G V—1 LU O'l
G Ci
X G
0i 01
X 1—4 1—4
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
'.‘ •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,
0 1-1
r-- LO ••£' Q ■H X'
0 Q C'J i n lvl M
l-'i r -- r- in ■-D 0
© -H M i-1 X' M
in r-- r-- 0 r-- x> in '•£' 0
X' 0 ivi M ivi M C'J © M
Ul' ,T
01 01
r- !.£l © 0 01
© C'J
un r - r -- i n ■-D 0 ui r - r- 0
C'j Ul
X* 0 © i-i r-1 in ©
lvl l'v'l © 0 i -l M Q M
Ul x> rn in in I'-i CD 0 C'J Ul Xi i-i lVl fn in fn CD r-- 0 'T r-- © © © © fn 't CD 0 fn •D r-- C'J in fn fn lvl 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 ivi ivi '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 ivi lVl fn M fn M M lVl f-1 lVl M fn M f-1 M M fn M ivi ivi M f-i ivi M lvl f-1 lvl 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' © X1 © © © X' X' 01 © © © lTi X' X' iTi © © © © X* © X' © X1 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' X1
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 111 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 i1 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
0
ll CC
0
r--
z \-
0 c-.j r -
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 X1 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 0 C'J C'J C'J C'J fi fi fi z z z Z Z z z Ul
1
1
1
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 © X1 ©1 © © © © ©1 © ©1 © © X1 ©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
LL |3 m iz X X X
m IX X 1- Ul l_l X X l-l
m in iLi 3 in 0 X Ul b- X X LL X X X X 0 1—1
UJ X X X X X X b-X X X X 1- X X ■r 0 m t:
UJ 1 X X in 7 i- if 0 1- X z in 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 n
i i 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- 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
m y
III m X 1 X 1- X III X X 0 X b- X b- X IJJ X
l-~, ill y, n X m i y hi X LL LL 1— X 7 X Ul X 0 0 0 X X ui
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 b*
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
y y n in m 2 X t—, n 0 0 0 H X Ul 3 1_1 Ul
_l 1- _j _i 3 X UJ _l h- _J X T n 0 X h- X Ul b- Ul Ui Ul X Ul X 1-
_l 0 _l
X
0 i i 0 i i in X m
in 1 in 1 i i 77 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- m
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- •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
B
H
UJ 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
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 N 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 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 X
m 1i 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 •3 '3 rH
't id ’1- \D
0 0 © © >3
rH 01 CJ CJ '•0 •3 CJ CJ CJ >3 Ul 10 CJ CJ X rH tH ■J" rH 0 CJ CJ rH M CJ CJ X rH •H M rH rH rH X 0
•H •3 '3 »3 »3 rH 0 0 *3 n rH rH 0 0 0 rH rH 0 rH 't 0i 0i rH 0 0 0 O rH rH 0 rH rH rH 0 ’t
•3 »3 «3 •3 rH rH 0 0 0 0 H rH rH 0 01 •3 0 0 01 0 lv1 0 0 0 0' 0 0 0 0 0 0 01 0 0 0 r'l
lvl r-- CJ Ul © ■■t 0' rH ■•t Ul Q rH ■•H ■H rH -t Ul 01 lvl X CJ X CJ M X r-- CJ lvl r-i M lvl 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 rf r- © Pi X X X X
0 0 0 rH rH CJ CJ Ivl M M lvl ’t -T ’t 'T ’t Ul Ul Ul X X N P-- N p-- 0 01 0 01 0 rH rH rH CJ CJ Pi Pi lVl 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
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'v1 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 OJ 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.1 CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ Pi Pi Pi Pi P i Pi Pi Pi Pi
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 © •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 0 0 0 0 0 0 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 01 0 0 © 0 0 0 0 0 0 © 0 0 0 O 01 0 0
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 C1 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 i1 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 if1 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 fi 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 T i I y y o y o o LUz 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-
I— 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
LxJ 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
Z 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 Ci 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 +■
Page 18 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 June/July, 1976
166
Lti
X
0 •X 0 1- 0
h »x b- r—*1 i',,i
lil 3 X 'X 1— i X it: LlJ
—1 3 X 0 1- 2 X n fi 0 X 3 01
i i
2 LX HH 0 If! lli 3 0 b- 2 •' i b- X X 0 l_j •0 0 0*1
>-L X•J 1- Li •X X 01 <X z 01 IX £,j KH X X X X X 0 0 X
X_J 0 tH b- 0 X h- i—i X 0*1 O X 2 X X X b- 1— h- Jr X X X 0 LL
XX X it: .J X X XI i—i 0 III 01 0 i«i 1- i—i X 1- X b- liJ 1-1 2 0 X LL X LL X 0
2 111IX l j LX D 0 0 1 2 z X I— 0 01 10 X *3 0 T 01 X 01 t-H 2 2 i-i z L— b- LU LL X X 0 0
1*1 ,IU L_1 0 ill iJ X 0 X l—1 01 1- 2 lr‘ X X LX III b- ij 1 j n i—i i—i i i LlJ X LU 01 2 LU h- 0 X X
U X X 0 X 1- 0 h- ^ LX 111 0 0 L_l UJ
I- 2 b- Q b- b- b- •rtf n ill X 0 0 LX *7 X- i-i IU U •0 X
i_i LU LU 2 IU X 0 111 2 0 •IT 0 t—<
b- X b- 2 X t—i X h- i'1 h* LU 2 1- z t—i X •_• 0 IU •-J X X b-
IX X X IX IU 3 2 ill u: lu 01 X o X 01
2 •X 1- t—i 2 2 10 X 1—1 u. III lil 0 •0 0 UJ it: X X X 1-1 z
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 i—i X IU 01 111 IU X LlJ 0 0 X 2 X X X X 0 •_j X 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 0 01 2 i—i 2 UJ 111 •J i—i b- X 2 X t—l X X z
u 2 _l UJ 0 0 0 u LU 0 LU 0 lli ill i~i O 111 lil i—i z 2 0 X 01 X X I-I X X
1 1 1- X L-j 111 LX 7" III 0 0 111 2 b- III If. 0X it: 1- X b~ T IU 1- o ll X >0 III 0 0 L-j 0 L— LL L- _1 LL
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 0 >' 1 01 i i 1-1 b- b- b- 0| Z LJ X X Ol 2 L— 01 h- <0
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 l—l III n III h- 0 10 2 lil lil LlJ Ul 2 i-i U •0 •0 X _• X X X z
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- 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
3 01 1- 01 X + X
01 2 2 ll 1 0
01 tii 1 h-i "1 2
I/I _l 2 2 2 1- 0 i- LX 1- X 2 CJ 0 b- 2 2 X b- 0 X 1- X X V u: 01 0
•r: 1- X LX LX IX «r 2 b- o X 0 III X 0 •11 0 i0 X n X i—i 2 01 X h- 2 Z Z •ri b- b- X z
2 > o U J- Li X X X Z 2 0 0 X hH - , :• 2 2 X 1 2 IU i-i 2 •-J -V
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 LU CD 2 1—t i—i o •0 X i—i 2 2 U- •_• h- X 2 LL •0 X ■H X
X LU 0 0 o
Li _J iLj _l Lj 0 0 0 0 0 0 0 0 L-j 1.0 X 0 0 1 0 0 0 •0 X 0 0 i-j 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 V X i—i 1 J . J ..J 0 b~ X 0 I 0 0 i—i J-.
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 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
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 2 X 0 i—i 0 0 0 01 CJ 0l 01 •0 X Z b- 0 —X. 0 >_• Z U LL l—l
0 i ‘i 0 2 X 01
2 X -J 0 J> 2 H 2 i—i 1 X X tH
•. i X X X •X i 1 it: l' j n 01 10 X b- X X
Oi 2 .X. 2 2 X X
z •+• LX z X IX •it- i—i : X X
iTj 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
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
i-1 i-1 iO Mj
•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
ri i-1 fO i-1 i-1 fO ro i-1 i-1 m;
lvl 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 •0
0 0 0 0 0 0 0 0 0 ©
0 0 0 0 0 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
b-
2
H
1.0
111 i ill b- z
i j ijj 2 X z "J
X z 1-0 3 0 ■r"\
•1 ' i
LO u 111 ■1 LL X A 1.0 xh- a 0 CJ X
0*1 2 X 3 LL UJ X 1— X O ill X X CJ 0
0*1
2 1—■ in 01 L— X •X i- X X X X X
X X
~i “*! O 0*1 ill h* 1— X X X X b- h- X X X Q
X •T b- LlJ X
01 in z X X X 2 HH b- X X X b-.
ll l"l \— 1- 1 o X LU it: IL i—i X 10
i i ill X 1 1 u LL X rn J- 1—1 X 1— X X 2 i-i 2 l_J 0 X CJ V
111 Li 1—4 X z
2 b- •r b* 01 X 10 CJ X i—i 0 0 O
X •X X b- X LJ If LL •-J (Lj LU
b- n •X >L. LU CD 0*1 LL X b- X X i- X 01 CJ \ X X X 2 X X + X
>• ' ill t—i 1—
X b- 2 L— b~ J • ) X CD Z X X X •r 1.0 X X 3 X b- o 0
•T
i—i Z X 2 CJ 1-1 2 t—i X X •X LL X ill X 0 2 X —1 01 X b- X X X X X z X X
X X y z
>T •-• III >.< X I- ui X X it: 1- X X X 0 z X X f~1 X ~Jr 0 0 X 0
X X 2 :-** ii i—i X 2 1- i—i z X 0 0*1 •X z 1- X h- UJ X b- 1—1 1—1 X 1-1 X 1—1 0 b- X X z 0 3
1—1 _i 0 h- X 2 X 2 X X 0 X X
Q X IU lil III 0 it: CJ i-j 0 1-
1 if ', b- ll. X X U. b- X Li 0 X HH X b- X i-i 0 X 0 0 b- X X X X 0 X z
b- 0*1 b- • 01 2 2 ' 1 Q 1- til 1— ' ' b- X L— h- b- 0*1 X b- h- 01 i- X X L— 01 2 1— H b- 01 0 z X CJ II X
i 'i n _ i LL •_i 3 X X 0 0 01 3 2 n X X 0 X X X 2 0 1-1 o z 0 01
lil ill X Z X _J Z D X III •X X
H-l h* i—. i i _i i—i O b- X X iii LL 0*1 _i U X
t-1 0 0 2 •-j i—i X 0 b- 0 0 01 01 i-i X b- X ►-• X X 1-1
• J 1-
IT l—l \— X v 3
b- X X LJ
CM 1—1 1- 2 1- X 01 X 0
CM 1
1- 1 j •X I/I •1. _1 0 ill b* 2 3 X
+ +
1- b- H 1— 1 2 2 l_i X Z 1-0 2 X z X 2 b- X 0 b- X
2 X i~i to •_• i0 o i- 2 i—i i_ 1— 3 LL h- b- <r __ 1-4 1- 1—1 i—i 2 0 01 b- X 2 X h- X 0
H X _J b- i0 0 X 2 > X 2 X X
X 2 X 2 1- i-1 z LL b- 01 > 1-0
X 1- _J h- J X 1- X Lj LU LL 1— X X L_! i— i— 2 1-0 X 0 0 X X rH 1—1 z X 2 o 1-1 X X CJ X X
•X CM
b- X 0 01
o
X Ci 0 X z 0 0
H
H
_J X \ t—l X X i-i 2 X X h- O -1 X
0 1-1 1—1 _J X 1—1 ~J- t—i X X z X X 1-1 X X I—1 0 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 b- z b* h- b-
l' j 0 Z) D 3 u i X u 1_1 X 1-1 z x O 3 X H X X X X 0 X N X X X X 2 X z > X CJ
•T •T X N •X 3
CJ X u_ LL U. X *-* X 0 X li -1 0 CJ X 2 0 ^ 0 01 01 CJ *-> X X »-« z 0 X
i—i o i—i i—i t—i i 1 LL •I •X X LL LL LL X '_•
h- 1- III .J b- h— X z
0 j- J- J* i~i 2 ill X 1-1 b-
0* 1- rH
X LU i_i b- b- P i—i 2 X X Z
o H X •X
b- 1— 2 z X
* P rC * 1—1 * * ■£ O
X * -+- Lj *
Ml r-- 0 CM rH 0 CM rH rH Ml Ml rH
ivi X rl in lvl
0 0 0 0 0 0 ■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 0 0 0 0
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 'D '•D '•D X rH CM i-1 ’ll- UJ •D CD CD 0 tH rH rH rH Ml ’t ’t ■M- N CM UJ 0 i-1 'D CD rH r- CM UJ 0 0 0 0 i-1 't CD i-
r- 0 0 rH rH rH rH CM CM CM Ml Ml ■M- ’t rt 't ’*■ 't 't -t
CM CM CM CM CM CM i-1 Ml M- -t ’t -t UJ UJ UJ UJ UJ UJ UJ UJ UJ UJ UJ UJ U‘. UJ '•D '•D CD '•D 'D 'D UJ 'D '•D r- r-- r- r-- r-- F- F-- r-- r- r-
0 0 0 •0 0 0 0 •0 •0 •0 0 0 •0 0 0 0 0 0 •0 0 0 0 0 0 0 0 0 0 0 © 0 0 0 0 0 0 0 0 0 0 rH rH rH rH rH rH rH rH rH rH rH rH rH rH rH ■H rH rH rH
0 0 0 0 0 0 0
i-1 i-1 i-1 Ml Ml i-1 i-1 iO Ml Ml i-1
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 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 i-i Ml i-1 i-1 i-1 Ml i-1 i-1 i-1 Ml
© 0 0 0 0 0 0 0 © 0 0 0 0 0 0 O © 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 •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 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-
I-
H 3 H 3 X 3 3 H
z X CJ 2 i i X 0 X Z
LL b- 3 O X X X b- 3 CD t- CJ 2 3
Ui 0 O X X X 3 in o h- V 4-1 10
K X o O X 21 J— X X CQ u 2 b- 2 UI D- CD 0
Z
4—4 Cl
LU X 2> 21 o 3 X 2 X X 0 y X b- X X OJ
X X X
X
H* 1- h- 3 X 4—4 3 X X X 1—4 X X 3 2 3 CD H X X
o UJ CL O X > X X X h- X Cl X X o Ci X X X X X CQ 0
b-
CQ <3 0
b-
Zh X 0 o 0
0 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 in X X 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 X X 2 C l~ CQ 2 0 X 0
Ct <X LQ X UI X 4-4 ~ 3 o X o CJ 1— X X 1- CD x 0 X UJ b- C X 1— CQ
J.- b-z 0 1- h*
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 c 3 X CQ X h- UJ X
X <X CD o o X 2 2 2 h- X X 4-4 -1 X CD 21 2 2 X X 2 CDh- X in c X X 2 b- 3 X 2 2 X
U- I LU UJ O X X
4—4
X X
4-4 1-4
X X X
4—4 X 4—4
X X X b- o o o X
4—4
X X X 0 X X
x
X X c in X V
b-3 b- X X
n 2 2
0 M 4-4 LU 4-4 X 0
X 4-4 0
3 cj CL H X X x X o X 2 O X X 2 21 X X CD X X 2 X X 3 X 0 H 0 2
X ZD X b- X X X 2 X X X X X X X 2 iI 2 h- 2 0 0 X H _t
X 0 CQ XXX X
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 X 3 X in X 3 X X 3 O X 0 1- X
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- 1- 2 X h- X X CQ X h- h- X X 2 X 0 1—4 x 2 1-
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 X 2 X X UJ \ 3 X X X 4-4 X X 2 X 3 X
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 0 4—4 CQ CD i0 0 X X 01 2 X 0 1- 2 0 X
X X 2
X V CQ 2 0 0 CQ X 0 0
o X c QD X 2 f— 2
H X o 0 4—4 2
4—4
X 2 I Y I X 1“ X 'n X X 2 X x + X X CQ X X b- 2 X h- h- 2
Z X X CQ X rl 1- o 4-4 o X CD X CD 2~ o 2 h- 4—4 X X c \ X 1- X I 2 CQ h-
LL 4—4 •V 3 > 1— h- f— Of CQ .
CQ
X X
o in
X X 1X ~i X 2 X 2 X X
■J-
0
__ X
X
X 3 2
X
2 10 2
0
.. X
X X 0
jiL UJ x a X 1- X X o 2 X X X 0 X 2 o \ CJ 0 0 2 0 0 7»- CD X
3
a
O cH in o Cl X X 2 rl b- 2 X b- 2 X CQ CO 0 X M
b 0
Cl _J X x X X C X X 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 1X 4-4 X X X X 1— > 4—4 4-4 X X X 0 1—4 X X X 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 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
UI _! X _J o o *-> O •"> Cl *-> Cl Cl 0 X o X X CD X 4—4 o *■> c o 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 X X X CQ X X CQ X 0
o o in CD C 2 X 2 X 2
f— 2 X 0 X X
2 LQ * Hr X X t Hr Hr X 0 HIf Hr * X
0 0 CM r-
■•t rt- CM CM
0 0 rH rH
\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 lvl 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* CM l A in
y r- ■H r-- 0 rH N
r-i N CM 0 tH r- 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 CM n 0 f-Q IQ 0 0 M rH M rH M n rl 0 0 0 M n 0 M M 0 M i'Q 0 M lvl 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 14' 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
UI
h- 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 LQ0 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 2 X X 1- X 2 X X 0 X b- X X X O X 2 h- X 1- 2 0 2 Ll
1 X 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 0
T X
Jr X 0 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 0 1- h- 2 0 X 1— 2 X 2 0 X b- 0 b- 2 X 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 0 X 0 0 x h- X •3 0 X 0 0 X X X 0 0 (J Y 2
X X D- X > X h- X »—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
> X X 2 0 h-
t Hr Hr Hr 0 Hr Hr 0 0 * it $ b * * ib 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 (ACM 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 vl (A rl rl iA 0 iA 0 rH rl CM iA rl CM CQ © 0 f Q M M 0
M fvl 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 ui D
X X IX O
b- b- 0 0 X
I/I in <D 0 m I-
x Z m l— X 01 UJ m
IX X UJ (D D m
UJ IX XX0 X X
m
m 0 h- b- X
I Ll J Z _J
0 1-4 z 2 0 X X 0 0 i i 0 0 4-4 X K h 11 I C 0 UJ 0 Z Zy X X X X 0 0 0
rr UJ i- UJ X 0 H X 0 X X o X 0 Ci IX b- II 0 b- 0 4-4 4-4 0 X 0 0 m X X
0 0 1-4
7*
X 0 0 X 0 X X X X X b-z 0 X Ci 'I LL 0 -J X M X X b~ 0 0 X 0 h- h- I
h- 0 0 h- X X X 0 X X 0 X 0 X X 4-4 Ul Ul X x & z X Z b- X OJ 0 X X D 0 H
X X i—i 0 0 1—1 0 0 X 0 0 0 0 X X 0 U1 UJCl Ll UJ *-< 0J 111 lO X X X 0 0 0 0
zz
Ul rl —1 X z LU 0 X 0 X O X X X X b* m z b- o0O LU X _l X 'I _J O
~y
0 X —1 X 0 0 1- 0 X
in z*- 0 1-4 0 0 X > 0 X m X X 0 z z .3 O LU LlJ UJ UJ 0 LU CD b- z z 4-4 b- X 0 X X LU
z X
n X
h- 0
Z UJ
>
X X Z m X X X 0 X y 3T z X h- X I- X U. U b- > I rl
U
0 _l X 0 0 Z Z 4-1 X Z X y 0 0 0 0
0 H UJ i X y X 0 4-4 01 X X X X X 0 LL Z •X LL Z O > 'X 0 £lh3 X X *-* 111 X X X J— CO 0 0
X X i—I O uj m X 0 ~y n X X 4-4 X X X zZ X b- o z 0 I- X z x hUu Z Z b- 0 0 Ll UJ 0 0 X z 4-4 h- z y Ul h- O z y Ul
UJ 0
X
LU X
b-
Z 0 UJ X
Ul X X
y
X
b- X 0 X
0 X
z X i— X
X
0 0
X in o ►H O
. b- UJ Cl "~ c z z
■X Z 0
i/I UJ
Z z
D
X UJ Z
0 0 0
h- UJ
01 X X
m 4-4 X
X X X X
_• 00
X X
0
z
X 0
UJ 0 z m b- x > X X *.f m z X X X i/i m X 3 l/l ill > «X b- 'X Cl IX I! > b- J- 0 0 0 o z h- h- z 0
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 i LlJ Ci 'X O UJ Q 0 m b- UJ 0 UJ UJ X O UJ 0 u 0 UJ
0 0 X *-<
D Z O H 0 UJ H ll
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 L—i 'X i/i _j m j u. x m 0 Z l/l N z i— in b- 0 J J O Ul J iL
I
0 2 X l/l 0 z z y 0 X X
y 0
Z 0 X
y 0
-> z X X
y
rl
TT
y X X UJ J— h- UJ
X X 0
X X X 0 X b- X X 0 X X —1 0 X X X X X X X X 0 X 0 0 z 0 1—0 0 Ul
X. 7" 0 X z X X •3 1—1 X X > X y X 4—4 X LU o •3 Z 0 Z ►-
b- X 0 0 X 0 X 0 UJ LL Z I 0 0
R
0
H
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 X z h- X X 0X0 X 0 X X b-
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
7
4-4 0 0 > 4-4 z> X 0 0 0 0 4-4 > X 1r- Z> 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 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 rl
X X 0
UJ Ul X 0
X X 0 0
0 0
UJ 0
rl rl rl M ■■t rl M rl rl in rl rl rl rl ’t rl rl rl in in rl rl M X
rl rl t! 0 0 rl 0 rl rl © rl rl rl rl 0 rl rl rl 0 0 rl rl 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 in M 0 rl r-- M M rl M M OJ rv 0 m in r- 0 CM M N in Ul CM rl 0 ^0 in
0 X X 0 in C*J N X OJ '£< '•£' 't I-O 0 X X X 0 rl X ID ■■t 10 Ul '■0 in rl ©
0 0 0 0 0 r'l rl © oj 0 0 rl 0 0 © © 0 0 0 0 0 o rl rl 0 0 0 rl
X
Q X
LU X b- X X b-
rl Z Ci X X 0
1-4 b- X Ci X X 0 b- X z
X 1 X t- y X Cl 0 X X X Z Ul Z X X X
rn n D X D Ci Ci •y y \ 0 X X Z3 X 0 f—
CD 1—4 o
Z X Z 0 y X 0 X X 0 c X 4-4 X X 0 4—4 0 0 X y X X 0 OJ 0
X l3 X X 1-4 X "M
4-4
h-
4-4
X 0 X X
4-4
0 Cl
Ci
y
4-4
_1 X b- _«
z
4-4
X
X
H
X
0 CM
0
X 0
CM z
X X Ul
I a I X X 1- h- X b- 0 X 0
U X o x h- X X z X X Z 4-4 X X X U1 X X X y 4-4 X X 4-4 K X Z
X X X 0 Z 0 Ul Ci 0 Ul
1-4 y X X 1— X n X b- Cl O Cl b- l/l Cl D
Ci OJ 0 X X 4—4 Z 0 0 X Ci X
X CD X
CD
z
Ul Cl J—
Ci 4—4
“1
0
K
Ul Ul
X
h- X X 0 1-4 X 1- n > h- H b*
•y
Cl 1.0 y X X b X Ci z 0 0
Ci X z X
4-4 0
0 X 4-4 X I.o
X
X rl X
Cl
0 Z 0 X 0 X y 0 U1 0 \ \ X 0 0 4—4 y b- X z Ci 0 X 4-4 4-1 X 0 Ci X 0
X 0 b* X 0 A
X X X y 4—1 h- X X 0 0 Ci X y 4-4
4-4 0 H-
Ul X b- XXX X 0 0' X
X Z b-
0 z XXI- 4—1
z 0 X
1— b-
0
4—4
Ul Ul
y
h-
Ul
3
X X
X
X
X 0 D
0 Z X
X o X X X l.o X X Ci K X z X Ci 0 X X X 0
X H rl X X X X X Cl X X X X z 0 X y Ci X “I X rl X Q X X 0 Z Cl
y
0 X X z X X Ul z h-
z
4-4 Z
X 1-4 XXX
0
z
h- 1-4
X X z
Z Ul Z 0 4-4 1- Cl X 4-4 Ci X n 4-4 0 X X X Ci X Z 0 0 0 0 X Ci h- 0 0 b- X X h- X X 1— 0 X
4-4
X X h- 4-4 CJ X X 0 X X 4-4 y Ci X 0 0 0 b- 0 X 4-4 X 0 X h- 1— z X Ul 10 X X y D l— X X 4-« 4-4 ZbX
H h- 0 X y h* X X f— X y 0 X 0 X Z “ X 0 X z # X I.o 0
X o 1—4 Ul o z X Ci H- 0 H X X LL LU l/l X X Ci X X X 4-4 X X X X b* X Ul X X z
4-4
4-« O X 0 b- X X 0 0 X X X
I— y y y
X
H-
Cl
X Cl
X
h- 1— ll z X X X X 4-4 X X l/l X Ul y 0 X 0 Ci X X > Cl X X y 0 X 1.0 y 0 X 0X0 X U1 0 0 0 0 Ul
X X X* X X 4-4 X X 0 X X X 0 z O X 4-4 2 Ci 0 X X Cl b* X z« 4—1 X X ~i b- Z X X X z 0 X z z 0 X 0 0 0 0 0 D O
Ul rl Ul CO *-> X Ci X N Ul 0 _J h- X b- 4-4 0 Ul X 4-4 X 0 0 LU X Ul Ul X 0 4-, X 1-4 0 Ul
X
0 N *-< 0 b- X 0 03 X LQ U 1 *-> z
X
0X1-
+ X
X X 0 0
X
“l
Cl
z H
y y
b- rl o ui -- 0 i/i X X
X X rl 0 X h- h- 0 H X rl rl b- b- X X b* X b- X X 0
y (—4 Z 0 CD y y z 0 y X i— X y y Z 1— X y y X z y y Ci b- Ul X Z 0 y 0 y 0 rl X D Ul 0 Z X
X X
X X z y X X X M X
zz? Ul i X X < X z X X X b- X M 0 0 b- X X . n z H y . '3 X 4—4 X
b- b- x 0 X 0 X b- 0 0
T
C
H
X rl 0 0 Ul X 0
3
H
s
rl rl ■H Ul CM rl CM ■■t rl rl rl rl rl rl X ’t' rl Ul Ul ’t rl Ul rf in in rl
rl rl rl 0 0 rl O 0 0 rl rl rl rl rl rl 0 0 rl 0 0 0 rl 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
V- n Ul 0 N © Ul 0 Ul 0 ’t Ul Ul in Ul rl r-- Ul fO N r- in IT' X rl Ul 0 in r -- rf CM 0 f-
'•0 F-- 0 0 CM Ul Q rl CM rl N -t Ul Ul '•£< '■£' IT« X '•£« '•0 rO X ro ro 't 0 rl 0 r-- rf 0 X
0 0 0 0 0 © 0 0 0 0 |-0 OJ Q 0 0 0 0 •0 rl ro 0 0 rl ro ro 0 0 0 0 ro rl rl 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 X X OJ CM ro ro CM x ro X X OJ ro 0 rl CM CM cm in N
-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 r- r-- ri ro Tf Q in rl rf N r •- rl tH 0 r-- P-- rl CM ui o in
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 ri ro ro ro o ro 0 0 0 ri ro ro © ro rl CM ro ro 0 CM rl
'•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 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
’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 Ul in ui X X X X X X X n r -- r- N 0 0©0 0 0 © © rl rl rl rl rl rl rl CM CM
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 ro 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
-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 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 0 0 0 0 0 0 0 0 0 0 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 0 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
June/July, 1976 Dr. Dobb's Journal of Computer Calisthenics & 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 7r ~ 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 iI. X 0 •J 4—4 X
I 4-4 ui X CD u 4-4 0i •~i
SET
-J X -J LL 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— *-* 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 1X 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 -1 b b u 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
21 !- 7
Z
1—4
CO 1 o •ID X 0*1 0*1 J X 01 i_i
*-* 1- z •—• X u •_•
+ + X X z nr X i X fr + ■+• z 01
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 c1 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 •! 0 h- b- h- 01 0 4-4 7 X X X X X .id 10 X X b X X X 01 z b
ill rH X 01 X X X X 01 X •X X
2[ 4-4
lx 01 0 LL ui Z 0 X X 0 K b- X z 0 0 X z X X Cl X X z X y 0 b b i i 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 0 01 X X Cl X
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 i0i101 Ci 4-4 in b z z
C'J •0 UJ Ul b* X X b- X o UJ 01 4—4 7 z 101 X X 4-4 X X LU •X 0 •X _i X y
0 X X
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 IJ1 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.
0
ill 10 X X X rn •r 01 1
CJ 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 01 4-4 z 01
•0 CD X El X 0*1 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 0 rn 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
I CD CE rH -J LU 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
•ID 0 z 01 0
Z 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 '■JT
•-« 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. r-j 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 4—4 *—4 z o b- 4—4 X 0 b> 0 4-4 EI 0 bi b>
JEE 0 X LU b- 0 0 01 0 b El 01 X 0 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 •ii * * 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
© X
H in 0 Cl
CE l/l LU > m X X > Cl
*r LU LU in _J LL ~i Z
00 in 2 2
t—1
n 1- X
ili Cti LU U'l CE Cl _J X 0 X X h-
oo 2
1— >—•2: *—•
>r Cl LU O X 0 Ci 0 X
LLi O m CE 0 <0 •0 0 X X X X 0 O X O 2
Q
IA lE 0 CD # U'l XO z 1—1 Cl X 0 X 0 X 0 0 h- •—<
LU ■r i! LU o LU Z LU O 0 Cl X Ul > 10 X X 0 h-
0 0 0_I Cl I- X 3 DOX X X X v 0 in X Cl in Cl X X \- 0
0 <L w w i— LU O 0 X LU z 0 X Cl X 0 X 0 Cl X 0 0 i_i
D J HU 0
—1 X
m lu 0 lE 0 LU O X N 1—1 X 0 0 0 Cl 0 X y 0 Cl X X X
X X x X m X 0 U*l X 0 X X 2 X 0 i i 0 U'l X 0 X 2 0 X 0 X X X 0 h- h- X X h- h-
X 1-4
X 0 x X 2; 0 X > ~F U'l X 0 X z X X 0 la 0 0 0 0 2 2 0 0 ~t- 0 O 0 H
z 0 X 0 X 1-4 0 X 0 0 co O X X 0 0 1-4 Cl lu 2 1—1 0 X t—l 0 X 0 0 X \- 0 z O 0
0 X X X 0 0 X X 0 X z H 0 0 > X n 0 in 2 z 0 Ci 1-4 0 X X X 0 0 O 0 L— 0 Cl 2 K X
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 0 X 0 X O •-» X 0 Cl X X X X X h-
X 0 X 1-4 X X X X X Ci 0 2~ 0 Z X Ci 0 z z 01 X 0 . Z X W X M o z . ^ . XZliJH!. k.
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 _1 X LL ►“< O *-« Z> LU Z 0 1
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 X 0 0 X 0 Q LU Cl XXX h- LU
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 0 la la z in CE > > 0 D h h 3 U h LA Z X I
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 LU LU 0 LU X X 1- LU X LU Z) LLI Z LU LU Q ■ !
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 Cl 0 00 lu la 0 la ffi m O H H 0 (— C 0 I
I— H til
0 + U
ua, • •
X > © X 0 X X © I X 0 X in X '• 0 CO 2 2 2 in '• X X 0 0 y- 0 z 0 I-
Cl 2 M -V I . 1 2 0 1 .. h- 1 X X . in > h- X 1- Q 0 0 > -s
lvl ri CO 0 X X H Cl X X X Cl X 3 X Cl Cl X 1 0 X Ci Cl X Ci ill Ci ^ Ci X ••• h- 2 X Cl X in X X h- X
0 h- z
O Cl
1 l—1 X HH > Q Cl Cl Cl > v-t O U'l > H JllX N X 0
0 0 Z 0 0 > X Z z z 0 X
0 :
1 ■
1 ►-< N X
. N X Z O X
0 M X 0 X X > »-« N X ^
X > 0 X CJ Z O X Z Z X
in x in X x Cl X N 0 •0 X X X X d x z o 0 :
Ci Cl Cl Cl > 0 0 0 X Z z Cl Cl 10 Ci la o o 0 z : z m 0 x z z o 0 x x 0: 1 0 O 0 X 0 U'l z m o x h e u x ^ 0
X X
0 X X 0 0
_J oo 0 0 in la
Ll X X
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 ©' rn
X H CJ © X n- r-- no CM 1/1 CM CM rn no rn N CM ©i ©1 P-
© © © ©
rn © rn © C1 rn © H © H © CM © H © CM H © ©
10 ID H CJ X © ■■t 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 rn X X © rn H
rj- H Tf H r-- H 0J in no no in U0 r-j N N rn M CJ in © © N CM CM CJ CM r- H © CJ © CJ H IT' r- r-- H r-- © ir> ’fr rt- N X H no ■'t N r-- © © •■t
© •:*.j Q 0 i-1 lvl H H © 0 © in M 0 in H © © 0 in H rn rn rn H © rn © © rn rn rn © H rn in rn rn rn © »© © © rn rn © H rn rn rn ©
-xi
O
T 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
i- 10 O 10 O 1/1 c :■ LU X Cl O 0 10 0 0 X
x 2 ■X til CE III 10 0 U'l O Cl O X LL G X Cl
0 1—4 T CE LU lE lE LL X X I 2 X 10 CE Cl 111 X z J- -X. X Cl
X LU
iX) n *T N n •T III ..1 LU CE 0 X .•■1
CiX
0 Cl z N 0 1—4 U'l X 0 U X
1- X b- ■0 n T U. T N Ll 0 LU 0 LU X U'l X O X z in X 0 X X X
f— ■T z •X •r O CD CD 2 z 0 i-i in LA 2 X 10 0 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 X 1—4 Cl > Ci X H4
*0 li! 2 Ll h
2
y-2 Z U'l
LU
r- 1-
2 Z y-hi
1- “•
z it.
0 l-H
0
0 LiJ
z LL «;o
0
2
X X
Cl G 1—1
0 0 z X
2 LU
0
1—1
Cl
Ci X
Cl
X
Ci z X
Ci
X
0
Cl
X -it
X z X
0
U'l LU fr
X 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 X LU X >
►—t 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
h- 2 m hi iii iu X . •1: (1IU X 111 IE LU 111 X 0 0 X X X 0 X 3 X 0 X 0 X
X 1r |~4 nr Cl © <r Z LU z LL X 0 X X X _) X X CL.
X 0 —J 10 X X _1 X U'l
M- —>
X LL LL
2; 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
1-1
£- X LA X 0 0 X
|— 1-4
X
111 LU Hi 2 2 hi n . .1 O O IU 2 O O 2 1—4 10 IU 2 111 n 0 z X Cl Z O X |_| X 0 X
0
Ci
n
0 0
H ull
U'l Ll 0 h- lE 1—1
III 10
0
U'l
1- H-l 0 0 z
0
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-X 0
X X
LL
Jl.
LU U'l ll'l X X X X 0 X U'l
h-
2 2
III X 111
U'l
CE
<X
LU
CE >T Z LU z 0 X X >i •I X X LA X X jZ. 0 _i i—1
-J 0 X
1 i ,_4 U'l LU
f i in
O 2
1-4 c 1
1—4 l~l 1 1 hi 2
2 0 U'l 1-1 Cl 0 0 Cl X
0 Cl 0 -J.
X z X i-i
-v LU X jZ.
LU X X X X X © N
X in ll'l 0 2 X z 0 Ci X Cl CD •0 CD Cl
LU X 0 Ci in X
0 Cl 0 x *•: 0 G 0 G X
N X 0 Ll >T N H 1 M
0 X
..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
LL LL N
2 1 i Z LU 2 *') 2 LU LU X ± Cl i.J 'I 2 £ j Q z ■~i 0 NX I.J z z X X 2 10 X X O |_| X jL. —1 -C- X -O.
Ci
X 1—1 m t—,
>X
•X n 0 U CE n i-i
'X
i-t 0 t-H X X 0
in cd
y
J-.
0 0 2 O 0 1- 1—4 0 1-4 Cl 0’ 1—4 X z
1-4
01 X 0 i_' X 0 0_1 X 0 >1 L-l
0 X i_i X 0 z LA
in 1— lil
U'l >x N
CE
iX 1—4
Ci
'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 11 © 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 Tl" ’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
June/July, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310 Menlo Park CA 94025 Page 23
171
LU
_ I
-J
X
f— x
z
LlJ Ll
LO z>
Z LU
LU
o 51 2:
h- iTi
Z _l UJ Cl 2 UJ h- o -J
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
tO
in O L_1
LU LlJ U _1
ZXZZXZZZZXZXZZZZXZZXZX -J LQZLOZLQZCOZiDSffiSaiZ^ XluXluXlOXlDX LU x I
DQuijaOaLjaLiuQuLjijLiuuaauLj CD iJiilliliillCiiljiljiliiljiljiliillClilj Ci ill
Z
in in
z z
* * * LU
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 lD 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 1n 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 lv1 lvl 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
z
UJ l— 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 z 0 0 Z z z ill 0 z UJ
z _J UJ 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- o z V—1 z y 4—4 2 2
z 0 D bl Ul 0 0 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 0 0 z ili t—4 h- Z 0 Z 0
z Z UJ 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
1 z
v
rl h- Cl
+ z Q Z Ci h 2 to 2 Z Z
rl LU y 2! z rl h- z> h* toZ z h- X CM 0 X h- X z to to o 0 J— y Z
4-4 LL
0 > n 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 -s 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 X X z 0 z 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
O
Ci X 0 0 0 0 0 0 Cih-
-J H- 1 X X 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
X 1-4 Ci z X z z X z
*■* z
10 Z 0 *-/ X z z z z z z z r~ 0 X X 0 0 *"> X 0 0 0 0 Z X z
z
X UO 0 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
S—1 h- X Z 0 0 h-
* * it 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
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
u:
uj x 0
V LU oa2
X O O Lil 4-4 in x l/l X LU
Z u. x £ 0 £Q i l/l 'I 1/1
UJ I
ri 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 i0i 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-
oi 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
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
UJ 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 0 01 p- X 0 01 0
X
l/l l/l X 0 0 X '•D X >
0
T 0 X 0 fi X 0 + 0 X ©
H 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-
co X 0 Ul X rH 10 X p- 0 X rH X 10 '•£■ 0 X rH p- I X 1© X z 0
X X Ul ’t rH X X 1- X 0 ’•£» \- 0 P-1 X Q © 01 X p-1 0 21
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
X
m 0 0 0 0 0 X X 0
PJ H-1 X X X N H-* X X n X j—( i—i 0 h-4 LL t—( 0
0 »—i p~ 1-4 w 4—4 X 4—4 4-1 r-j ►-4 X 0 1-4 X 4-4
10 0 4—4 0 4—4 X 0 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 yr 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
0 rr
0
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 01 0
21
y. 101
21 0
X z 0 0 *- X 0
in I O _J
X 01 rH I—
CD S~ Z
* X o u
rH '3 QrlSrl rH 3 3 rH rH © 3 rH © 3
3 © rH rH
rH rH rH h d f rl t rH tH rH rH rH rH rH •H -*
*3 '3 •3 3 3 Pi 3 id 3 3 3 3 © © © 3 Pd ©
0
0
rd Pd rd Pd I'd id Pi Pd I'd id id Pd id id P-1 P-1 Pi Pd Pd Pd Pd 3 3 © © © © © © 3 3 3 3 3 3
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 © © © © © © © 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 © 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 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 rH rH rH rH
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
z I
1 h-
X I/| X
U1 0 0 _j X >
0 X l_l
UJ 1- X H X Cl
U1 X H
X 0 ^ 7y Z X X 0 X
UJ l/l H X
o m X o ZD 0 N 'X
X */i X X 0 01 o x
<E '/I DDCt i 2 I ill H X
3 <E ■I U. > l/l LU O H ULl _
l/l
01
UJ
X
o 'I x
0 X 1- 0
x 0 «i
X CD Z h ll UJ Z O h- ui t-i 0 h- 0 1-
X X X X
LU UJ z > •X X X X X 0 m X
X ZD X 01 X D X 0 0 l— 0 01 4—4 X li: ii H
X X X H Cl
y I’d CD II ix x z 0 z X X X 0 0 X
0 0 0 r-j 0 0 X X X
1—4 X X X X X X X 01 zz. X X f'\ O H ti¬ O UJ UJ Ojuu H rl H u. UJ UJ
X
X 3 3 Z
0 li-1 3 h-
> X X 0 X 4—4 ll. -< LL I— Z Ll Z lx Z X h- _l J w o 0 0 H m
0 X 1- X 0 f— HH LU H IX IX m \— X X 3 h- 3 3
h- X 0 ~z. X 4-4 X ll >-< UJ
«3
QQ 0 1—
0 X X
40 X
0
X 0 0 l— 4—4 i— *—< I— >X LL LL •I h h >1 UJ UJ 0 X X I/I X X I—
UJ 3 h Q. X d
> X 01 O 0 h-
X l~ h- 1— 0 01 i/i m 0 h- 0 _J o in z uj > 'n IX Z > O Cl in o \—
l- 01 0 H X H-
o z O LU O J UJ h- 3 X D XZZOUJ3
O X X X X 0 2 0 X X X X X jL •X z 'I Z O w -x O *•••-
UJ >-« h* i— u o m h _j z in _j o z m o H O 01 *-* h- 3 X O
1- 01 X 01 0 4—4 1- 01 CJ 0 01 LU 1- 0 X
X
01 0
Z 3
LL LL T Lx D D ll ui
1- h- X 0 X TT X C'J X Pd -J
I X Z 0 X X H 0 X >
X X X V- 4-4 CJ 4-4 z 0 x z m fflflQOI x
L
X 0
H
0 Pd U. Z Lx Z 0 0 U_ LL . . LiJ lii LU ui X 0 -v L-
. ^ X X I 0 _1 0 X lx CE U. Pd 'X H m x h-
2 X 40 X i (E ul h f- h rH LU
I H H |J ll U H ll Li H iZIZhU X X UJ 3 - Pd CO
X 0 0 X X X X 2 0 X 01
LU
0 0 0 I -J
0 : hh ll i> *-* n x i/i _J LX X X X N h- > 0 0 > H
0 LL > X X 4-4 0 0 X 4—4 4-4 3 O Z 3 Z 0 3
0 0 X X 10 X N l— X X X 0 z> x : a. z cl n a. : O; : LX N Z u li Z lii J 'I ooohzxui x x z x : 01 X 01 X
Ci Ci Ci Ci X ZHdl Z 0
01 0 0 0 X z 0 z ' i L! 1 H Z U i—11 lx 0 Ll_I ui l/l *-> 0 X J J ui l
0 0 z 0 K
rH CJ 0 3 K rH
3 O 0 O
Lx Lx X 0 O
Lx
* 4-4 X ■ * * in m
3 rH
Tt 3
3 rH
rH Q 3 3 © 3 3 id rH rH © 3 3 C-J rf ’t
'•D CJ CJ rH CJ CJ X rH rH rH 't rH rH 3 3 CJ
© 3 3 rH 3 3 3 rH rH rH rH rH rH rH
I© © 3 © 3 © © ©' © ©• 3 3 3 rH rH
© © 3 © © 3 © 3
IT' Ul © CJ C'J ■d1 d- Ul CJ 't N rH rH Ul Ul d-
IT' 3 3 d- Ul CJ X C J d- rH 3 X d" X Ul rH 3 CJ 3
rH d- rH © 10 ’t d- P-- 3 rH M 3 3
CJ CJ CJ rf r- 3 Pd 3 P- r- d- C J CJ CJ rH P-- CJ CJ rH rH rH 3 CJ 3
© © tH © rH © rH ©« rH © rH rH rH CJ © © ©
id 3 3 © 3 rH CJ
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 Ul P-- id P-- C«J 3 Pd
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 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 ©' Pd 3 CJ r- 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 3 3 ivi M 3 rH i "l Pi CJ iA iA ivi 3 3 3 l‘ i M lvl 3 3 P-1 3 rH rH 3 CJ rH id 3 Pd rH Pd
rH rH Pd © Pd rH CJ Id © 3 Id Pd Pd © © © CJ id P-1 Id Pd M Pd id
Id d- d- d- d" Ul P - 3 id d-
CJ Pd rf P-- 3 id d- ui © Id X rH d- ui r-- CJ Id d- P- rH d- X rH Pd CJ CJ CJ CJ CJ CJ CJ id Pd Pd
rf rf d" d- Ul Ul Ul Ul X X X N P- p- r - © 3 3 ©i rH rH rH CJ 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 CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ
© © © © 3 3 3 3 © 3 3 Q 3 © © rH rH rH rH rH rH rH rH rH
I 00 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 Q 3© ©3 33 33 33 ®3 '3
3 33 '3
3
Q 3 © 3 3 © © 3 3 3 © © 3 3 3 © 3 © © © © Q 3 3 |^ddHHHHrir|drlrlrHddddddddddrldrlddddddddddddd rH rH rH rH rH rH rH rH rH rH
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
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 33 33 ©3 ©3 ©3
© © © 3 3 © Q © 3 ©1 3 3 3 3 © © 3 3 © © © 3 3 3
Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 25
June/July, 1976
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 i—i .-* 0 i—i l_l X i._i LU UJ 1 1 X n x i—i © id
X 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. 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 0 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 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/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-
'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
LU —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.L1 '•L' LU X i i X i ; i i'-,i
© i© ©1 rd rd © rd rd N © T X
[■- CM CM © LiJ III III III ill III UJ hi III IM ill CM UJ X
x
8
1
rd I d U' I'd
Et Tf P-- ©
l -l © rd id
lil ' D r- © i vi Pd rd rd Pd l'vi M Pd rd M IV1 Pd’t lil r-- © H ivi ir> P- • l lvl lil P-- rd CM cm C-.J CM f-.J CM CM CM :m cm cm
Id id l'd 't ’t rf rj- rK rr •M"
© © © © Q © '© ©I © © © © © © ©
rf rf rp i ' £i ' li '■£• r- r-- © © © © © © © © © ©
!OQQ © © CM C-.J CM CM CM CM CM :m cm cm
rd rd rd rd rd rd rd rd rd rd rd rd rd rd rd IrHrHrl-rlrlrHrlrlrlrlrl'rl ri rl d d d rl
rd rd rd rd rd rd rd rd rd rd rd rd rd rd rd IrlrlrlrlrlrlTlrlrlrlrld d d d d d rl
© © © © © © © © © © © © © © © ’> © © © © © © © © © © © © © © © © i© ©
Page 26 Dr. Dobb' S Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 June/July, 1976
174
48 LINES OF 64 CHARACTERS ON A TV on black or black on white. This leaves 16 control characters
Kit Price is $499.95 available for the requirements of the particular software
operating system.
by Video Terminal Technology staff The VT-4000 video terminal also offers other standard
6108 Elmbridge Dr., San Jose CA 95129 on/off features such as power-on clear, clear to end of line
with line feed, scroll up, and scroll down. The scroll up/
I ve seen this running on a small Sony teevee, and was very im¬ down feature allows up to 16K of RAM to be scrolled
pressed. The characters were clear and sharp. They bypass the through before any data is lost. After all of the available RAM
RF and amp, and go directly to the tube to avoid character has been scrolled through, the VT-4000 then starts to over¬
smear and obtain higher bandwidth. Screen update was fast. write the previous data. The VT-4000 basic configuration comes
The company is small, run by good people, and I believe they with 4K of RAM, expandable to 16K.
will be quite responsive to their customers. -Jim Warren The VT-4000 has been designed to easily interface to
any computer and any video monitor or slightly modified
Video Terminal Technology announces a new video com¬ television receiver. The computer I/O available is either RS232,
puter terminal with all the features of a professional terminal TTL serial, or TTL parallel at any of the standard BAUD
at a hobbyist price. The VT-4000 video terminal displays 48 rates from 110 to 9600. The video monitor input available is
lines of 64 characters in a 5x7 font. This provides the capa¬ either composit video/sync, separate video and composit sync,
bility to display 3076 (3K) characters simultaneously—8 times or separate video, separate horizontal sync, and separate verti¬
the standard tv typewriter's 16 lines of 32 characters. cal sync. A television receiver may be used as a video monitor
The VT-4000 gives the operator complete control over if the following modification is made. Break the signal path
his or her display. The keyboard interface card decodes all 32 between the IF section and the video section, and insert the
of the standard ASCII control functions. These control func¬ composit video/sync at this point. However, if a sharper
tions are user designated and can be strapped to match any display is desired, insert the composit sync at this point and
software operating system. The selected controls can move the apply the video directly to the cathode of the CRT. Any
cursor up, down, right, left, and home. Direct cursor address¬ questions about this modification will be answered by Video
ing uses two control characters to position the cursor anywhere Terminal Technology (VTT).
on the CRT screen. Other control functions can be used to The VT-4000 is available from VTT primarily in kit
selectively clear the displayed page, clear the entire memory, form in any configuration from single boards to 100% com¬
or clear the character positions from the present cursor posi¬ plete kits. Assembled and tested boards or complete models can
tion to the end of the line. Two more control characters al¬ be purchased for a standard assembly fee. All such options
low the operator to display individual characters either white carry a six-month parts and labor guarantee.
June/July, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 27
175
VARIABLE CHARACTER SPACING Figure 1. Typical Dual-Case TVT Alphabet
IN VIDEO DISPLAYS
by Jim Day
17042 Gunther St.
Granada Hills CA 91344
i a 0« 0•
©*•0*
i * 0
I .
0
0 0000
0
0
2 i
000
Figure 1 shows a typical dual-case TVT alphabet, each 1 0000
0 : t
00000 000
letter of which is generated via a 7 by 9 dot matrix. If two ***
000
"undots" (using the terminology of Don Lancaster's TV Type¬
i0 0 .*
writer Cookbook) are appended following the seventh dot posi¬
tion of each line of each letter, each letter will require 9 dots
:# **.
0 « 0 9
of width on the tv screen. The alphabet could be stored in a . 00 !
ROM, the dot pattern of each letter being represented by 9 «*«00
n
0
099
Figure 3. Even spacing of display.
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 00 0 00 0 0 9 909
9 9
000
Figure 5. Variable spacing of display.
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 with an 18 pF unit to provide for 64 characters/line.
Digital Designs We are now addressing through ten lines/page. The cur¬
Box 4241 sor-compare circuitry must be modified to provide comparison
Victoria TX 77901 of the A9 address bit. This modification will require providing
an additional cursor-position count-bit and a comparator. The
Dear Editor: May 10, 1976 designer used a 74193 BCD counter to allow preloading the
If you are using your TVT-II as a computer I/O you additional cursor bit through a computer cursor position inter¬
may iiave found the 32 character/line format somewhat limit¬ face. The additional 74193 is attached to the carry and borrow
ing. By making minor modifications to the TVT-II board you bits of the original cursor counter, IC35, after disconnecting
can lengthen the 32 character line to 64 characters/line, and them from the 5th-bit flip-flop, IC27A. Carry and borrow bits
thereby expand your system’s capabilities. are generated by the new counter through NAND gates IC4A
Here are installation instructions for my 32 to 64 char¬ and IC4B, and are sent to the original 5th-bit flip-flop IC27A.
acter/line TVT-II modification board and 2K memory board. The cursor bount bit is tied to pin 15, IC42, on the main
The modifications can be made easily by wire wrapping or a board and compared with the A4 address bit. The output of
set of boards can be purchased. My TVT-II has been modified the 5th-bit flip-flop IC27A which was originally compared
since early October, and I am using a very old tv with no with the A4 address is brought on to the new circuitry and
bandpass problems. compared with address A9 by the comparator. The cascaded
My board manufacturer is tooled up for manufacturing "=" pulse from 1C 42 on the main board is input to the
the boards and can guarantee shipment within 3 weeks after comparator. The output "=" pulse is sent to IC41. This pro¬
receiving orders. I also have layouts completed for an upper¬ vides an additional cursor count bit which is compared with
case/lowercase auxiliary board for the TVT-II, as well as the address A4. The new A9 address is compared to the old 5th-
computer-controlled cursor interface. These boards will also be bit flip-flop whose output has become the 6th-bit count. IC42
provided if there is enough interest. and IC41 on the main board and the new comparator pro¬
Board prices are $5 for the auxiliary board, $12 for the vide the pulse required to position the cursor on the 64 char¬
2K memory board, and $16 for the set. Shipping is included acter line.
in these prices. Texas residents add 5% tax. Please make An additional six 2102's will be required to store a
checks payable to Digital Designs. second page of data. By tying the CE pins of each group of
Sincerely yarns, memories to pins 8 and 9 of the page flip-flop, IC27B, the
David O. Valliere Box 4241 pages will roll over as originally designed.
Digital Designs Victoria TX 77901
[Editor's Note: We have omitted eight pages, containing in¬
The TVT-II memory is continuously being addressed structions for assembly, memroy modifications, 2K memory,
through nine address lines to generate the video data used by piggybacking, early TVT-II mods, start-up, and schematics.
the teelvision display. The tenth address line (A9) is used to Those interested should write to Digital Designs for complete
switch from page one to page two. By using the A9 address details.]
line for continuous addressing, the TVT-II con be modified to
display 64 characters/line. Since the additional 512 characters PARTS LIST
being displayed are what used to be page two, additional 64 Character Board
memory will have to be added to provide storage of a second
one 74193
page.
one 7485
one 7404
HOW IT WORKS
one 7400
The basic design of the TVT-II make the modifications
one 0.10 mfd disc
required to make it display 64 characters/line quite simple.
one 18 pf
IC21 and IC14 on the main TVT-II board normally count up
Wire, 26 Ga.
32 characters and upon reaching the 33rd count, pin 11,
IC14 and address AO go high. This disables the "dot clock" 2K Memory Board
until the next line is started. Being in the 33rd character posi¬ twelve 2102 memories
tion also enables the video blanking circuit through IC12C fourteen 0.10 mfd capacitors
and IC5B. The line is blanked until a new line is started. By two 2102 memories (optional)
allowing the video generation and the "dot clock" to continue two 15-pin Molex board connectors
operating until the 65th character position is reached, 64 The auxiliary board and 2K memory boards are avail¬
characters/line will be counted. This can be done by discon¬ able from Digital Design. Both boards are Milspec with tin/
necting pin 11, IC14 from the video blanking circuit and con¬ lead fused plating and silk-screen component placement. The
necting it to address line A9, after having disconnected A9 auxiliary board is single-sided whereas the 2K board is double¬
from the page 1-2 flip-flop. Pin 11, I Cl 4 is also tied to pin sided with plated-through holes.
14, the input of the unused counter is IC14 whose output Shipment within 3 weeks is guaranteed.
(pin 12) is then tied to the video blanking circuit. Thus we
have effectively added an additional 32 counts to the address CENTRAL OKLAHOMA COMPUTER GROUP
lines through pin 12, IC14 and transferred the video blanking The Central Oklahoma Amateur Computing Association (CENO-
ACA) organized in January. It now has about 30 members. It meets
function to the 65th character position. Since the RC oscil¬ the 2nd Saturday of each month at 10 a.m. in the Oklahoma City
lator network of the "dot clock," IC18B, was originally tuned Warr Acres Branch Library, NW 63d & MacArthur. It has programming
for 32 characters/line, capacitor C4 will have to be replaced 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
Page 30
Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 June/July, 1976
178
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.
June/July, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Paga 31
179
180
1 $98.50 GRAPHICS TERMINAL KIT
1 C ^ N{
By SWTPC 219 W. Rhapsody San Antonio, TX 78216
sXN5 v-
vN > V
§ k v lx
ss *
Sv *
‘l
V
U | ,. V
Southwest Technical's GT-61 Graphics Terminal is a low
cost graphics unit designed for hobbyists or budget minded com¬
Page 33
" “ I, mercial applications. The 9 !4" X 13" PC board contains all of
h
N> Vj x* the electronics necessary to display an array of cells 64 wide by
Vj ^5;
96 high on a standard video monitor or modified television set.
The graphics terminal contains its own 6144 bit static memory
v> V, >$ $ and thus may be driven by any computer system having a TTL
■> v; a
v> -A, compatible 8 bit parallel interface. The unit is available in kit
v> Qcs
\
X.
! form only and is sold less power supply, chassis, and monitor
' -.
Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025
for $98.50 ppd. in the US. Delivery is 30 days.
CM
VO
3S "fW/J > =>i^/S‘ 9SM
o J?/SV+b •f
-:t- PC PTH-,
>\s r*—I1’
VS
k Vi v; X* >r <*$
V: VI
V VC Kb
X Q
<v 'o V X X X X
v>
-4 b X Vj \ \ v:
\ \ Vb X
H‘ / 3« b; ^5
’i
s<ye/Ssors'? ss/sy/yyj
k£7 CM 2S »¥<Snd
o 7/ctS?vJlV 'O
{4/
K7 S?/ S7i?Li
-jV/j/Vj r
"a X * ^ J
NV V; tA, X X
'Ot^ X
Vj VJ X. X V
T l-x
$|st <A
4' 4 4
I
*L
<LiV x^ >
x.K s;
V Xx sj- > x^
“- N s A 4 >S ^ 1 k. J»
^11
^ ^ $si' ;jL
yx ^ A fx
x V» \
V, ‘ V X V ^ 'Kjfl
JT-
* $'
I.
V
X V
v *
•5? <f
Xg
H
^
r'sl
\*
A t*\
s
£'££tV £-fsy Jijlt
i, “
n—
?: r« 'S'5
X V ^ <x <bl X « - ^ . v
vs T\ § X. X
k> i * ^ k 4 is X .-v X k
> X
x tv. . > 4 -X >
X tjx Vi Vs V*
kk k k k
. V,
S/^23 r
> X- V s.
,-TV v
'k 4 k «3l‘SK 414 hi
A
V> Vi
Ki >> \
P/?/#
V>
k
V k CS
f" k
]«|
tS($ I ’ .r * V. y 'r /
Uk M
S? !'££(/ §.^0;
!-£$(/ 02 t-ny
& (z-ff) fSO (£-/j£ s:a S[
~K V
■y>fc s
xS
FTP:
H
■V W k %
xs, cj
cSlcSJ c^ ^^cS|
181
ERRORS IN subroutine could be shortened by calling on the other divide
& IMPROVEMENTS FOR WHIPPLE’S & ARNOLD’S subroutine.
TINY BASIC EXTENDED (TBX) 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
Dear Sirs: April 15, 1976
addresses 027121, 030350, 030372, and maybe others, from
I have noted some errors and possible improvements
360 to 355.
in Arnold's and Whipple's Tiny BASIC Extended (TBX)
The IL Instruction at 033211 is: '266 355 "(".' This
[please see Dr. Dobb’s Journal Vol. 1, Nos. 1 & 2].
means that if the next character isn't "(", address 026355
A minor reduction could be made at the entry point
will be considered the next Interpretive Language (IL)
of the main program by eliminating a jump. The end of the
instruction. This will bomb out the program, since 026355 is
error routine duplicates the initialization, so it could be
to be treated as a machine language (ML?) instruction, not
shortened. These two routines follow (in split octal):
ILX instruction. The instruction at 033211 could be:
Address Data Comments Address Data Comments '326352/ which will properly execute the machine language in¬
structions starting at 026352. Incidentally, the address
000000 061 LXI SP 026275 041 LXI H should be 026352, which outputs error message number 13,
1 377 dl 026276 002 dl Entry point of parentheses error, rather than 026355, which outputs error
2 000 d2 026277 032 d2 IL program message number 14, memory depletion. The same problem
3 303 JMP 026300 061 LXI SP exists at 032127, 033223, 033241, 033254, 033266, and
4 254 dl 026301 377 dl 033275.
5 021 d2 026302 000 d2 The Random function (RN) should be altered slightly.
021254 041 LXI H 026303 303 JMP The random number returned is 16 bits. However, the RN
021255 002 dl Entry point 026304 257 dl to IL only shifts in 8 new bits each time it is called. Therefore, the
021256 032 d2of IL progrm 026305 021 d2 interpreter
upper 8 bits are what the lower 8 bits were the last time RN
021257 IL interpreter
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
All of the items in the left column could be eliminated,
making it more random.
and the entry point could be at the start of the right column,
When an instruction is being compared to the possibili¬
at address 026275. Or, the right column could be replaced by
ties, the first word is 'GO,' but the second is not 'to' or 'sub,'
a JMP to address 000000. Or, the two segments could be
the second is compared to '1st,' 'run,' etc., instead of the
rearranged as follows:
program immediately indicating unrecognizable statement. This
could be fixed by changing the instruction starting at 032057
(error routine) from '232275 "SUB" ' to '232330 "SUB".' Then 'GO'
without 'To' or 'Sub' would go to 'unrecognizable statement'
Entry point of main program 061 LXI SP error message.
377 dl Thank you for your consideration.
000 d2 Yours truly,
This method would 041 LXI H Entry point of Charles Skeldon 2320 Co. Rd. 1-3
eliminate 12 bytes. 002 dl IL Program New Brighton MN 55112
032 d2
IL Interpreter
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
adds a video display (VDM by Processor Technology as an
Dear Jim: 23 June 1976 alternate output device. When the control-0 key is used to
turn off the TTY echo and output, the VDM becomes the
I have a few miscellaneous items related to the “Palo
echo and output device. When the control-0 is typed again,
Alto Tiny BASIC” published in Dr. Dobb's Journal, Vol 1,
echo and output goes back to the TTY, etc. Control-P
No. 5. First of all, there are a few misprints (my fault). On key is used to clear the VDM screen and text always scrolls
page 13, right column, second line from the bottom, the up from the bottom of the screen.
minus sign should have been a back arrow The same The interpreter also needs RAM to store variables, stack,
misprint appeared on page 14, left column, lines 15 and 16. and the Tiny BASIC program. In the published list, 6K of
Secondly, I forgot to mention that this interpreter RAM is assumed. You can change this in increments of 256
bytes by changing 9 bytes in the interpreter. These 9 bytes
actually takes 1.77K bytes. In the list published, I padded it
are marked by “@@@@” in the listing.
up to 2K bytes, and it can be either in ROM or in RAM. Last and also least, I have a STARTREK game program
There are 30K bytes unused at the end of the “command coded in Tiny BASIC. It will barely fit in this 6K of RAM.
table” (Hex 0183-01A0), another 30 unused bytes at the end It is probably a very bad example for Tiny BASIC (or any
language). In order to squeeze in as much salty stuff as possi¬
of the “function table” (Hex 01B3-01D0), and 177 bytes at
ble, I have abbreviated every command and put as many com¬
the end of the I/O routines (Hex 074F-07FF). These unused
mands as possible in each line. As a result, the code is al¬
bytes can be patched to add more commands, and/or more most unreadable. (But it is fun to play!)
functions, and/or to modify the I/O routines without re¬ Sincerely, NOTE: Wang's StarTrek is
being published in the July
assembly of the whole interpreter. An example follows which Lichen Wang issue of People’s Computer
CH
Company.
2
Y
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 SZ 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 ao 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 Io< 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 *- *“ » 02 CSS cr *- »u • uj a cr UJU * a x o
h- i-z *cns < 2 *2.1-0 I ip ir <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 ya _i C Q
Cl 2ok-2>->XCC >zu_tn< > hoc o > - >- V > z < UJ o *-* V ITU 2k cs a C/1 >
»
c c
q- u
<vu.a a a* k <c * a <o ®
< Cs Oo 2G2 (T r 2 k 5L 2 2UZ Z tT' to
■tf D • ® G• o
C- C 5 . CO 0 1-2 S>
SB O ro O * Cue* •C5*•I <» u•
^ r N> C X • >X> Ca -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 * K1 * • M • t ® * U J
x>yzKxzii<niz:i«xiuz< I<l(f^xu5i><yxj<iil<jz<yznc I<XZ<XX<V<X XX
r>
< II M - 9-« k-i *-« *— MM
(T C. cci-ck',ococC[lc k b- a a c. a v. tr ctcacucccccouc ccacaac oc’Ccr cc
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
k V k G k kN N k h k p. N k k N N k
C C sjr~ <TOc OCO C o o c CO C
c ■ < < L. —u
tv u. U- o a O o r; IL U. ll.rHrB.wj; IL
N — ,cr.
wCf. it v c v- r —*- x o ec tv a.
au o u < w cl r c c < o a’ tvi r,
r. < kj
v ; c <j o u
V
r r- M1 . ITr-Lt"lu tv — r. l p, r r tv
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
Ci v. u u. V Li tv r r tv ~ v <x tv < r c IL v vULLU.rJlLULOb«UMiiUCrx'tfjn<UMlUNC,r,NMLvrOA^CLUJUOC
C - — < IT CL<,vJCi--<Nr'ClL-<}B'iifr <ULL-^<fCrvL0 <Ua.U.wNrr,\CecUClLfO<JNC « c c - rr sr. P < <J C UJ IL -»
c E V IT tf IT- IT l', Lr 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 CC 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- MinErrata for MINOL
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
plusTiny TREK
an extended memory map allowing addressing of up to 512K
by Erik Mueller
words. The Univerter is a standard quad-width board that can
36 Homestead Lane, Roosevelt NJ 08555
be installed in a PDP-11/03 or an LSI-11 card cage. It is avail¬
able from stock.
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:
$450 DOT-MATRIX PRINTER FOR 6800’s & 8080’s
Locations:
40 Characters/Line, 80 Characters/Second
001 350 should be 242
by Electronic Product Associates, Inc. staff 002 050 should be 273
004 060 should he 107 (omitted from listing)
Electronic Product Associates, Inc., 1157 Vega Street, Pressing Cf destroys the system (if held down long enough).
San Diego CA 92110; 714 276-8911, has announced the
Fix this by changing the following locations:
availability of a new, low-cost, 40-column, dot-matrix impact
002 375 303
printer. The printer complete with drive electrincs, character
decoding and software driver proms, power supply and attrac¬ 002 376 111
tive hardware and plastic cabinet interfaces directly with the 002 377 hhh
6800 and 8080 microprocessors. The printer is capable of 003 000 000
printing a surprising 80 character per second bi-directiomlly. hhh 111 321
Single quantity pricing is $450, delivered from stock. hhh 111+1 321
The model 40C utilizes a serially-driven printing element hhh 111+2 321
consisting of 7 print solenoids and print wires. The print hhh 111+3 321
wires are arranged vertically; the printing element is driven hhh 111+4 317
from either direction at constant speed. A synchronous motor (etc.) 021
driving a spirally grooved drum accomplishes this motion.
112
Ribbon feed is a simple by-product of printing element
motion. Ribbons are inexpensive and easily replaced. 003
All electronics for driving, decoding and program storage 303
are powered by the self-contained D.C. power supply 001
003
hhh 111 is the first address of 11 free locations in user’s system.
Page 36 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 June/July, 1976
184
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
7 X=X+1:IF X<8;G0T04:X=1
8 J=1
Tiny TREK
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 1) This game is not perfect.
20 PR" 1234567' 2) It is super-simple.
21 X=t : K=0 3) There are three commands:
22 J=1 1. Move to different sector within quadrant.
23 C=(12,X-1*8+J+200) 2. Move to different quadrant.
24 IP C=0;PR" 3. Fire at a specified sector.
4) Energy is refuelled upon diagonal docking with a starbase.
25 IP C=1;PR".
5) E = Enterprise
26 IP '0=2; PR"K"; K = Klingon
27 ip c=3;PR"e"; B = Starbase
28 IP C=4;PR"B"; . = Star
29 IF C=2;K=K + 1 6) Yes, you can fire phasers and go through stars.
30 J=J+1:IF J<8;G0T023:PRn 5 7) Don't get upset if the quadrant you're in doesn't have a star-
31 IP X=2;PR"SECT0R ";E;F base (there aren't starbases in every quadrant).
32 IP X=3;PK"STARDATE ";D 8) Don't get upset if your energy is refuelled even if you aren't
185
Button
by Ron Santore
, Button in 8080 machine code
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
Here's the game of BUTTON, BUTTON written in but it will easily fit into IK by just shortening the text. You
8080 machine language for computer and terminal. (Altair & might want to change the text anyway to fit your own
TVT or TTY, etc.) (computers') personality.
4. If you have any questions, write or call me (person-
NOTES:
1. Just load the programming instructions in locations to-person): Ron Santore
1957 Huasna Dr.
000,000 through 000,377.
San Luis Obispo CA 93401
2. Then load the text in locations 001,000 through
004,377. Be sure that after each paragraph of text, you type (805) 544-1956
Page 38 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Men 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 376 CPI
255 010 "8" (Binary)
256 370 RM
ASCII DATA TO BE STORED IN MEMORY
257 303 JMP
260 210
ADDRESS TEXT
261 000
262 XXX any #
XXX (001,000) CR BUTTON, BUTTON CR LF LF
263 any #
264 XXX EIGHT PEOPLE ARE SITTING IN A CR LF
any #
XXX any # CIRCLE, WITH YOU IN THE CENTER. CR LF LF
265
266 000 NOP ONE OF THEM HAS THE BUTTON AND CR LF
YOU HAVE TO GUESS WHO. CR LF LF
267 000 NOP
THE PERSON WITH THE BUTTON CAN GR LF
270 000 NOP
PASS IT, SO BE CAREFUL. CR LF LF
271 000 NOP
YOU HAVE FIVE GUESSES. CR LF LF
272 000 NOP
WHEN YOU'RE READY, TYPE_TrGTT *
273 000 NOP
274 000 NOP
(002,020) CR LF 0 CR LF
275 000 NOP
BUTTON, BUTTON 1 CR LF
276 000 NOP
2 CR LF
271 000 HOP WHO’S GOT 3 CR LF
000300 171 MOV C to A THE BUTTON? CR LF *
301 376 CPI
302 063 "3" (ASCII) (002,240) CR
303 372 JM I DON’T HAVE IT, CR LF
304 317 MY NEIGHBOR DOES. CR LF
305 000 BUT WHOEVER HAS IT PASSES IT! CR LF ,
306 021 LXI D/E
307 320 "you found it" (002,360) CR
310 003 WHO, ME?? CR LF
311 315 CALL I DON’T HAVE IT! CR LF
312 347 print WHOEVER HAS IT, KEEPS IT. CR LF »
313 000
314 303 JMP (003,072) CR
315 103 input SILLY, CR LF
316 000 THERE’S NO ONE HERE CR LF
000317 021 LX I D/E WITH THAT NUMBER....TRY AGAIN: £R LF *
320 205 right you are
321 003 (003,205) CR
322 315 CALL RIGHT YOU ARE; LUCKY! CR LF
323 347 print PLAY AGAIN? (Y OR N) *
324 000
325 303 JMP (003,320) CR CR LF LF
326 103 input YOU FOUND THE BUTTON IN _ TRIES. CR LF
327 000 ANOTHER GAME? (Y OR N) *
000330 170 MOV B to A
331 366 ORI (004,040) CR
332 . 060 prefix for ASCII SORRY. THAT WAS YOUR LAST GUESS. CR LF
333 /062 STA " " HAD THE BUTTON! TRY AGAIN? CR LF *
334 104 store button in text
335 004 (004,220) CR
336 021 LXI D/E THANKS FOR PLAYING.CR LF
337 o4o "you lost"
ANYONE ELSE WANT TO PLAY?? CR LF
340 004 (Y OR N) CR LF *
341 315 CALL
June/July, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 39
187
DON’T UNDERESTIMATE BASIC COMPUTERS FOR STUDENTS’ HOME STUDIES
Dear Editor, June 9, 1976
Dear Mr. Warren; 8 May 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¬ We are organizing a research project whose aim is to
ganized, and yet a novice can get going very easily. Most important investigate how small "Home Computers" might be used in
for micros—the time for an amateur or part-time programmer to get a education—helping students to study at home. To keep up
working program is V2 that of other languages.
informed about new developments related to home computers,
C.D. Johnson 2801 SW Patton Lane please enter our subscription to Dr. Dobb’s Journal.
Forest Products Engineering Portland OR 97201
Do you know of other publications related to home
computers?
Sincerely,
Jerry Felson, Ph.D.
BASIC COMPLAINT & MACRO MESSAGE President 84-13 168 St
Dear Sir, 5 May 1976
Cybernetic Decision Systems, Inc. Jamaica NY 11432
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 COMPUTERS-IN-EDUCATION BIBLIOGRAPHY
computer hobbyist press that talks about modular and structured pro¬
gramming. This may be because, as your editorial says, that most
The National Council of Teachers of Mathematics (NCTM)
other magazines are hardware oriented. In any event, Allison's article
confirms what I have long suspected, namely, that BASIC is not the bibliography. Computers in Education, has replaced the old list.
language of choice for state of the art programming. However, the Computers in the Mathematics Classroom. This new listing is
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. separated into seven sections, including one on mathematics texts
Allison's article raises some questions that neither Dr. Dobb’s series.
Journal nor PCC seem to answer, namely, if BASIC is bad for you,
Single copies of this 41-page bibliography are available free
why encourage people to be BASIC junkies?
Let me note that I am not a rabid BASIC hater; just troubled on request from the NCTM Headquarters Office, 1906 Association
by the difference between what we are supposed to do, and what we Dr., Reston VA 22091.
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
SUMMER MEETING OF THE ASSN. FOR DEVELOP¬
have megabytes of core, but obviously aren't very good if you're a MENT OF COMPUTER-BASED INSTRUCTIONAL
hobbyist with 2K. Structured programming seems precluded by the
limitations of a minimal hobbyist system. Is the hobbyist with a
SYSTEMS
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 The 1976 Summer Meeting of the Association for the
happy compromise between Tiny BASIC and, say, PL/I? I would
certainly like to see DDJ address some of these issues. Development of Computer-Based Instructional Systems (ADCIS)
A final suggestion. The assembler I use at work doesn't have will be sponsored by Control Data Corporation at Minneapolis,
any macro facilities. The other day, I decided to see what I could do
Minnesota, August 10-12, 1976. For further information about
about this. The macro generator GPM described by Wegener in his
book, Programming Languages, Information Structures, and Machine the conference, contact the General Program Chairperson: Dr.
Organization, looked interesting. I looked up the original article on the Karen Duncan, Director, Office of Computer Resources, College
language (Strachev. "A General Purpose Macrogenerator," The Com¬
puter Journal, Oct., 1965, Vol. 8, No. 3, pp. 225-241) and discovered
of Dental Medicine, 80 Barre Street, Charleston, South Carolina
a listing for a GPM processor written in CPL. Strachey says the orig¬ 29401, (803) 792-3211.
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 HAND-HELD CALCULATORS IN CLASSROOMS
and dirty" FORTRAN job done on the sly. As you might expect,
Strachey's program has bugs in it. Some are real boo-boos. The Iowa Council of Teachers of Mathematics (ICTM)
Yours,
Fred J. Dickey 3420 Granville Rd has recently published the Monograph-1976, The Hand-Held
Westerville OH 43081 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
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¬
member), or $2 (nonmember) from Ann Robinson, 509 W 20
ately, there is a substantial group of people who do not understand St., Cedar Falls IA 50613. Make all checks payable to ICTM.
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¬ are performed according to the rules. I'd suggest that you look at
spective on what BASIC is and where it belongs in the spectrum of another MACRO system—the TRAC system. There is a good descrip¬
things. tion in Nelson's Computer Lib. The FORTH language and Logical
There is a lot right with BASIC, too. For small programs its Machine Corporation's ADAM are also macro-like systems, but they
interactive capabilities outweight the cumbersome control structures. defer expansion to run-time. We'd be pleased to publish macro sys¬
Its "text editor" orientation makes it easy to implement interactively tems implementations should anyone be willing to prepare them.
with an interpreter. Given the spectrum of available language models, Incidentally, macro systems can perform many of the same func¬
it is difficult to see how any other language could have been a better tions as compliers, but the underlying model is quite different. A com¬
model for a super-minimal implementation. Tiny BASIC is about right— piler decomposes the input text into a phrase structure and then as¬
and an one is going to write a giant tiny BASIC program (I hope!). signs meaning based upon that decomposition. A macro processor
Macro processors are magnificent tools with frightening powers matches a template and then transforms the text accordingly. Macro
and capability. The problem is how to make sure that a macro, partic¬ systems are inherently more powerful than compilers modeled on con¬
ularly one in Strachey's GPM, does what you think it does. I would text-free languages since they are (inherently) context-sensitive. A.S.
hazard a guess that some of the "bugs" you have found in the pub¬ Tenenbaum describes using such a system in IEEE Transacting on Soft¬
lished version are, in fact, simply unexpected macro expansions which 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
June/July, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 41
189
FCC PETITION ON with microprocessors and automatic communications systems.
ANSCII TRANSMISSIONS BY HAMS Failure to approve such a code will greatly stifle the advance¬
ment of non-commercial communications and would be in
by Bruce J. Brown, WB4YTU April 19, 1976 direct conflict with the purpose from the amateur radio ser¬
4801 Kenmore Ave., no. 1022 vice as expressed in Section 97.1(b) and (c).
Alexandria VA 22304 c. ANSCII, by virtue of its diversified character set, is
703 370-1431, home; 202 697-9654, work highly compatible with amateur telemetry systems; e.g.,
remotely monitoring the status of repeater control circuits.^
This is a petition foi“,r.ulemaking in the matter of revi¬
sions of Federal Communications Commission Rules, Sections Using asynchronous ANSCII transmission with one start,
97.69 and 97.117 to permit use of the American National two stop, one parity, and seven data bits per character, speeds
Standard Code for Information Interchange (ANSCII), former¬ of 10, 30, and 60 characters per second will equate to rates
ly ASCII. of 110, 330, and 660 bits per second (bps), respectively.
The American National Standard Code for Information Through simple Fourier analysis to the 5th harmonic, it
Interchange (ANSCII), formerly ASCII, was developed by the
can be shown that the signaling bandwidth for data at speeds
American National Standards Institute (ANSI, formerly Amer¬
of 110, 330, and 660 bps is 220, 660, and 1320 hertz, re¬
ican Standards Association 'ASI') as the standard code for
spectively. Furthermore, it can be shown that the AFSK band¬
information interchange in the United States.
The 7-bit-plus-parity ANSCII code provides 128 possible width for a 660 bps signal is less than that required for SSTV
transmission.
characters (Figure 1) versus the 58 characters of the Baudot
code. In addition to figures, numbers, and punctuation, the Based upon the technical and operational benefits that
code set has provisions for special symbols and control char¬ the use of ANSCII could provide, and considering that no
acters which is vital to automated data exchange and com¬ detrimental effect to the amateur community would result, it
puter control. is requested that applicable sections to Part 97 be revised to
Its purpose is to establish uniformity and compatibility permit the use of ANSCII.
in the interchange of information among domestic and foreign 1
Data Communications Systems, Control Data Corporation,
manufacturers of data processing and communications systems.
April, 1974, page 47.
In March 1968, President Johnson approved a recom¬ 2
mendation by the Secretary of Commerce that ASCII be Introduction to Computer Data Communications, Honeywell
adopted as a federal standard.^ Corporation, July, 1973, pages 2-19.
Sections 97.69 and 97.117 are ambiguous and contradic¬ ^QST, March 1976, page 73.
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¬ A CLUB SURVEY FOR A CLUB CLUB
ited." These sections are in clear conflict. Furthermore, Sec¬
tion 97.69(a) also states "In general, this code shall conform Dear Editor,
as nearly as possible to the teleprinter code or codes in com¬ I am doing a survey of hobbyist computer clubs. It
mon commercial usage in the United States."—which is should be interesting to find out how many hobbyist club
ANSCII! members there are, what kinds of things they're doing, etc.
Hopefully the tabulated results can be printed in DDJ after
There are several arguments to support the use of
I've compiled them. One of the reasons for the survey is to
ANSCII by amateur radio operators.
evaluate interest in an organization of hobbyist clubs (tenta¬
a. Large quantites of surplus ASCII terminal equipment tively called 'Your Club of Clubs' or 'The Metaclub'). Any
are available at very low cost on the surplus market. Inexpen¬ club not on the following list should get in touch with me
sive Baudot devices are becoming increasingly difficult to find. for more information.
b. Government and industry have only recently begun to Amateur Computer Club of N.J., Atlanta Area Micro¬
explore the use of recently developed microprocessor circuits computer Hobbyist Club, Bay Area Microprocessor Users
to solve complex teleprocessing problems. Hobbyists, many Group, Bit Users Association, Cache (Chicago area), Cleveland
who are amateur radio experimenters, have also shown con¬ Digital Group, The Computer Hobbyist Group (N. Texas),
siderable interest in these devices as evidenced by the high- Denver Amateur Computer Society, El Paso Computer Group,
Homebrew Computer Club, LLLRA Hobbyist Computer Group,
volume microprocessor sales to non-commerical buyers, and the
Long Island Computer Association, Miami Area Computer Club,
emergence of numerous amateur computer journals. Hams,
CPU (Monterey), Northwest Computer Club (Seattle), Nashau
using microprocessors in concert with presently allocated com¬
Area Computer Club, New York City Micro Hobbyist Group,
munications channels, have the opportunity to make serious Pittsburgh Area Computer Club, Santa Barabra Nameless Com¬
contributions to the infant teleprocessing field while greatly puter Club, Southern California Computer Society, Tallahas¬
enhancing current amateur modus operandi. It is not unlikely see Amateur Computer Society.
that hams will some day use microprocessors in communica¬ I also invite comments and questions from anyone in¬
tions networks (e.g., packet switching) to permit faster and terested.
more reliable traffic handling for emergency and routine mes¬ Sincerely,
sages. Fruition of many of these concepts, however, is directly Dave Caulkins 437 Mundel
dependent upon the approval by the FCC of a coding scheme Los Altos CA 94022
415 948-5753
with a large-character set, such as ANSCII, for compatibility
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 Single-instruction operation.
Complete Kit far $169.95, Memory examine (left incremental).
Memory deposit (left incremental).
Plug-Compatible to Altair Peripherals
Initialization.
Halt.
by Western Data Systems staff
Run.
Hex data and address entry.
The Data Handler is Western Data Systems new product.
It's a microcomputer using the MOS Technology 6502 micro¬ For an introductory offer the Data Handler Bare Bones
processor with the latest state of the art technology producing Kit is being offered for $79.95, which includes the Data
a high performance microcomputer at a low price. Handler P.C.B., 26 keyboard switches, P.C. B. stand, and
The high speed operating capabilities of the Data Handler complete documentation.
are enabled by the use of an easy-to-use full-function, hard- The complete kit costs $169.95. This includes the Data
ware-controlled, front panel. A large ground plane area (to Handler P.C.B., 26 keyboard switches, P.C.B. stand, complete
minimize noise at high operating speed) is on the P.C.B. and set of I.C.'s, IK static RAM, 500ns memory, resistors,
2102-type RAMS. capacitors, L.E.D.'s, 1 mhz 6502, and complete documentation.
Slower accessing memories (EPROMS and ROMS) may This microcomputer is ideal for the hobbyist and industrial
be used, although this will reduce the cycle speed to within user alike.
the limits of other microcomputer kits. The single 13.75” x For complete information on ordering, write to:
10.5" P.C.B. can directly address 65K of memory and con¬ Western Data Systems
tains 1 K bytes of static RAM on the board with complete 3650 Charles St, No. Z
address decoding. Santa Clara CA 95050
It also consists of all circuitry needed to be a stand¬ atn: Cindy & Mike Indihar
alone microcomputer for even such high-speed devices as disk Office: 408-984-7804
peripherals. Home: 408-378-3569
The Data Handler is designed with identical drive
The Introductory Offer expires August 31, 1976.
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 RCA COSMAC & ySCOPE
the 8800 Altair by using the mother board.
The Data Handier also has dual interrupt lines (one Dear Bob, 4/12/76
maskable), slow-down circuitry for slow memories, DMA RCA has formally announced the 1802 chip for COS-
(direct memory access) circuitry, and DMA acknowledge con¬ MAC, and it looks even better than the 1801. It seems
trol. One 8-bit parallel input port, one 8-bit parallel output strange that so few hobbyists are using COSMAC, since it was
port, separate 10 address control, and memory control lines. originally intended for the personal computer market (partly)
and has a remarkably adaptable instruction set. Now that the
Single voltage (+5 volts) and cycle times to 250ns. It has
new, improved version is available maybe some enterprising
full front panel control with the use of keyboard switches to
OEM will jump into the hobby market with a COSMAC-based
provide the following hardware: machine. The RCA COSMAC Microkit (not to be confused
Single-cycle operation. 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
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 60 alisthenics rthodontia
Running Light Without Overbyte
August, 1976 Box 310, Menlo Park CA 94025 Volume 1, Number 7
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 tions, Phily-Atlantic City transportation, admission to the
exposition, Sunday night banquet, and other nickel and dime
Up until July 23rd, I wasn’t really all that enthusiastic items. Furthermore, you don’t have to come right back—you
about Personal Computing ’76, the hobby convention and can hang around the East Coast for a while before you
exposition being held in Atlantic City on August 28th and return. For instance, you could run down to COMPCON Fall
29th. I was unexcited, partially because it was way back *76 in Washington, DC, Sept. 7th-10th. Phone Leda Alpert
there on the East Coast, and mostly because I had received (an SCCS member who also happens to be a travel agent) at
no information about explicit programs or events, other than (213) 655-0650.
an exhibition of vendors’ goodies. Well, after one lengthy Admission to the whole thing is $5, if paid in advance,
conversation with the Chairman of the convention, John Dilks, or $7.50 at the door. Incidentally, the profit (if any) doesn’t
all of that has changed. It sounds like it’s going to be great! go into someone’s private pocket. It will go to a nonprofit
amateur radio club that is sponsoring the whole thing, the
There are going to be a multitude of seminars. To Southern Counties Radio Association of New Jersey. The folks
mention a few: who are doing most of the organizing, John Dilks, (609 927-
Hal Chamberlin will be discussing computer music. 3873; Davey Jones, (609) 927-6950; and James Main, are
A Rockwell-type will be talking about computers in club members and computer phreaques who are entirely
outer space and the space shuttle. unpaid volunteers.
Dave Ahl will offer a seminar on computer games.
Lloyd Rice will be discussing computer speech, and
demonstrating his talking computer. HAMATEURS TO
DEC will be presenting a computer-controlled train HOLD A COMPUTERFEST
system.
There will be three Z-80 seminars. The AMRAD COMPUTERFEST will be an exposition of micro¬
Carl Helmers will be running a session on hobby computers for computer amateurs, radio amateurs, and the general
standards. public. It is being sponsored by the Amateur Radio Research and
I will be discussing the immediate and foreseeable Development Corporation (AMRAD), a non-profit scientific and edu¬
August, 1976 Dr. Dobb’s Journal of Computer Calisthenics 8t Orthodontia, Box 310, Menlo Park CA 94025 Page 3
193
1977 NCC Includes CONSULTANTS REFERRAL SERVICE
Page 4 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 August, 1976
194
The Time for Floppy’s is Just About Now!
by the Editor (teaching microprocessor courses for Phillips) from August 15th
to September 15th. Thereafter, however, he will be happy to
Things—most notably, prices—are coming down, fast, in answer any questions you may have.
the world of rotating mass storage appropriate for home com¬ Dr. Kildall's CP/M is available from Digital Research,
puters. Prior to this, floppy disc subsystems have either been Box 579, Pacific Grove CA 93950; (408) 373-3403, for $35-
unavailable for hobby machines, or they have been priced for $70 depending on the level of documentation desired. The
the industrial consumer (e.g., around $3,000 for a dual-drive 'software comes in the form of a "loaded" disc, including an
system). Things have changed: A hobbyist can now reasonably editor or two, an assembler or two, a PIP (DECese for a file-
expect to obtain a complete, assembled, single-drive subsystem transfer program), a debugger, and who knows what else (it
for a price in the neighborhood of $1K. Here is the latest grows from month to month).
information we have:
The best system we know of—and the least expensive—is A second, interesting tidbit is a letter we received, dated
available from Digital Systems, 1154 Dunsmuir PI., Livermore June 30th, offering brand new CalComp 110 drives for $395;
CA 94550; (415) 443-4078 (ask for Dr. John Torode). This that's just about half their list price. The letter states that the
is the same crowd that built Gary Kildall's original floppy inter¬ drives carry CalComp's 90-day unconditional warranty. The
face over two years ago [see "First Word on a Floppy-Disc drive does not use the IBM format (a poor format, but the
Operating System," in the April issue of the Journal]. Gary only "industry standard" available for the time being), and
has yet to have problems with the system. Digital Systems also could not be easily interfaced to CP/M. Also, CalComp drives
is marketing a low-cost, floppy-based development system to the appear to have a mixed reputation; some are good, and some
industrial market. They know what they are doing. What is are very poorly regarded.
much more important is that Dr. Kildall's fancy, DECSystem- The company making this offer is Martin J. O'Boyle &
10-like operating system—called CP/M—will run on DS's hard¬ Associates, Box 9094, Pittsburgh PA 15224; (412) 361-1602.
ware. CP/M has been in use for over two years in a produc¬ We know nothing about them, but the offer appears to be
tion and instructional environment. It is well debugged, well well worth checking out. Incidentally, their letter indicates
documented, and has some significant software subsystems they are also offering IMSAI computers at $100 below list;
available with it. mentions two designers of very low-cost floppy interfaces
Back to DS's floppy subsystem: The controller is already- (Dr. Ken Welles, and Hal Chamberlin); and notes that they
assembled, burned-in, and tested, and has been on the market have only 95 of their CalComp 110 drives available for the
for some time. The controller can handle up to four drives. price indicated.
The drive is a Shugart 800, a highly reliable drive of excellent
reputation. The single-system price is $1095, and drops to Financially, the next most interesting floppy system for
$995 in quantities of only 10. This price includes the con¬ hobbyists appears to be the one available from iCOM, 6741
troller, the drive, all cabling between controller and drive, a Variel Ave., Canoga Park CA 91303; (213) 348-1391. It's
manual, shipping within the continental U.S., and a 90-day single-unit price is $1195. The price doesn't drop to $995
warranty. The manual includes a reproduction of the Shugart (which appears in all their bold-face advertising) until one
tech manual on the drive, a complete manual on the controll¬ purchases them in 100-unit quantities. If you get in on an
er, and complete design details for a 20-chip interface from $CC$ group buy, however, you can get them for about $1100
the controller to a hobbyist-standard (Altair/IMSAI) bus. The which includes tax, handling, and the FD05-II operating system.
manual, alone, is available for $5, creditable towards purchase As we understand it, for these prices, one gets a Pertec drive,
of any system. a controller capable of handling more than one drive, and
Though the controller is not available in kit form (too cabling from the drive to the controller, and the controller to
much potential for subtle, hairy problems), the interface is. an interface board. The interface board is not included, but
If you wish to buy your own parts and build the interface, we have been told that a 3P+S will do the necessary job.
you can. If you want the parts from DS, they will ship them The FD03-II was done by Art Childs, the recent editor
to you for $50 (Vector PC board, sockets, chips, connectors, of Interface, and a great hobbyist supporter. It requires about
cabling . . . the works). If a dual-drive system is desired, IK for the resident I/O drivers, IK for the monitor, and 4K
the second drive is $600, unit quantity. for the Executive. To be really useful, it requires about an
As with most of the floppy systems being offered to 8 kilobyte system. This is noticeably less than is required by
hobbyists, the power supply (if you don't already have one) is Kildall's CP/M, which needs at least 12K and prefers to dine
extra. In this case, it costs about $150, and the manual gives on about 16K. However, FD03-II was completed only last
complete details if you wish to homebrew your own. Spring (1976), and thus may be assumed to have significantly
Final notes: DS is a relatively small company. We know more bugs than the more mature CP/M. (No criticism of Art's
Dr. Torode both personally and by reputation, and have been work; it's just an inherent characteristic of large systems
very impressed by everything we have seen and heard. He software.) Also, CP/M has a comparatively extensive library of
maintains quite high standards for his product, technically, and systems software that runs under it.
for his operations, businesswise. We have complete faith in his Unanswered questions: We don't know how reliable the
competence and in his integrity and recommend him without Pertec drives are. They generally have a much poorer reputation
restriction. He builds a good product, and he backs his work. than the $hugart drives. We have an estimate that the power
Incidentally, the controllers, drives, and parts are in-stock, off- supply for the system will cost in the neighborhood of $210,
the-shelf items. but that estimate is 3 months old. We don't know if the
If you have technical questions, Dr. Torode is the person indicated prices include shipping or manuals, and we don't
with whom to talk. Unfortunately, he will be in Europe 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). HEATHKIT TO INTRODUCE A COMPUTER KIT
We also don't know what warranties are offered, and have no
information on how well iCOM treats its customers. We have information from a source we consider to be reliable
Since it is noticeably overpriced in comparison to the (but not from Heathkit) that Heathkit will present its first com¬
preceeding excellent alternatives, we hesitate to even bother puter kit at the Personal Computing'76 Consumer Trade Fair in
mentioning the IMSAi floppy system . . . but, we will, since Atlantic City, August 28th-29th. The kit is rumored to be using
they are trying to market it to hobbyists. The controller has the Signetics 2650 microprocessor. No other information at the
its own processor and is being touted as being "intelligent." It
moment, but...watch out McDonald's!
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 DESIGN FOR BINARY INPUT TO HEX DISPLAYS
System is available for $40. 12K Extended BASIC, including
disc access, is supposed to be available by now. Ho hum. The July 8th issue of ELECTRONICS Magazine has two
We think IMS manufacturers some excellent microcom¬ quickie design articles detailing how to convert binary input
puters and m-c kits. However, we find their floppy offerings to to a HEX-coded, 7-segment display output. One method uses
be badly out-of-line—at least for the hobbyist—with some a PROM; the other uses some decoders and diodes.
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. 300 NANOSECOND 16x16 MULTIPLIER
Finally, some immediate-future thoughts concerning TRW Electronics Systems Division has a TTL-compatible,
floppies: monolithic-bipolar multiplier that can perform 16-bit by 16-bit
PerSci is now offering a dual-drive floppy box for $1 K. multiplication in half a microsecond. Designated the MPY-16,
To our knowledge, no one has yet built a controller and inter¬ sample quantities can be delivered in under 30 days.
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
A FLASHY EXTENDER BOARD
drives use a voice-coil head positioner that really wails; its
track access time is something like 10 times as fast as most of
WITH LOGIC PROBE
the other drives. Also, the feedback we have from industrial This new extender board/logic probe kit is designed to fit
users of PerSci products implies that they manufacture excellent, either the Altair or IMSAI. It features Logic Level Lights:
solid, reliable floppy disc drives. red > 2.4 volts, green < 0.8 volts, and yellow —0.2 second pulse
Don't discard the idea of moving to floppies because HI/LO transition. A phono-needle probe is provided to ensure good
you can't afford a dual drive system, and you think you can't and non-skid contact. Eyelets and jumpers in the power circuits
back up your discs if you have only a single drive system. allow convenient current measurement. The leads of the dual 50
It's slow (and also cheap), but you can back up (save for 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-
safety's sake) discs, and even copy disc contents from one to
inch, black FR4 board, which is solder-plated and has 50j>inch gold
another without a second drive . . . by using the cassette
on the connector edge. The holes are plated through with 0.0015-
tape storage that you probably already have. Not what one inch Cu.
would do in an industrial or business environment where $500 This product is available now for $35, from Mullen Computer
or $1,000 is trivia, but at home . . . Boards, BlastMasters Inc., Box 31, Loma Mar CA 94021. Or check
Watch for prices for controllers to drop even lower. We your local computer store.
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?
Page 6 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 August, 1976
1%
Design Contest Offers
Head-Per-Track
Hard Discs as Prizes
Gentlepersons: July, 1976
At the request of many computer hobbyists, unhappy with the HYING SURfACI
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, HTM 8-1 kit with interface controller $600
we give you the opportunity to participate in the design. So, open Each additional 9-track, comb-bar assy.,
your mind and let us know your ideas. or 1 million bits $50
The major cost item is the engineering time required to design HTM 8-1 kit without interlace controller $450
the controller which interfaces the memory and the microprocessor. In
order to keep the cost down and to make it interesting and rewarding, First Prize: a) The best controller (price-performance) gets the grand
v\s decided to have two contests. One, incorporating hardware, and prize of a memory with 300,000 8-bit words free, b) So does the best
one for software. software for the controller, hopefully a program which makes the
memory transparent (virtual) to the microprocessor.
To keep the contest proper we propose that the various com¬
Second Prize: One each, 200,000 8-bit word memory for the second
puter clubs submit proposals on the rules, and judges (i.e., editors of
best controller and software design.
stated computer hobbyist magazines.).
Third Prize: One each, 100,000 8-bit word memory for the third best
The start up time for the memory is about 120 days. The
hardware and software design.
interface controller requires approximately 60 days from the closing
Fourth Prize: $200 credit each, for the purchase of our memory for
of the contest.
the fourth best controller and software design.
It would be helpful for us to know how many of these fast-
Fifth Prize: $100 credit each, for the purchase of our memory for the
access memory kits will be sold. This is because we need to buy parts
fifth runner-up for hardware and software design.
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
THE LOW-COST COMB-HEAD*
us know—the bigger the response, the lower the production costs and
Consisting of three basic parts—C-CORE, COMB-CORE, and
selling price.
COIL—the assemblies may have from 1 t> 12 heads. Assembly of a
The following is what we think you need. Take an close look
typical 9-track COMB-HEAD requires very little time and is accom¬
and see if it is OK, if not, speak up. Let's make it right the first time.
plished by simply slipping the self-supporting coils over the legs of the
The proposed memory is designed for optimum performance
COMB-CORE and then pressing C-CORE and COMB-CORE together
and reliability at the lowest possible production cost.
and applying adhesive. A conductive gap shim is vacuum-deposited
It features high rotational disc speed and head-per-track opera¬
(sputtered) over the entire inside of the C-CORE to minimize cross¬
tion, thus it sports a ten-times-faster access time as compared to a
talk.
floppy disc system. The head-per-track design eliminates the time-
That's it! Let's get started, and good luck to you.
consuming, mechanical positioning of one head on every track as well
Sincerely yours,
as simplifying the interface controller.
A large, 14-inch-diameter disc is chosen to store as many bits E. Mike Engel 1719 S. Carmelina Ave.
with as few heads as possible. The disc is permanently mounted and E. & U. Engel Consulting Los Angeles CA 90025
rotates at 1725 rpm. (213) 820-4231
A nine-head (Track) per comb-bar assembly is utilized. Eight •Developed and licensed by E. & U. Engel Consulting
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- Editor's note: We hope that the contest judges will be chosen,
bar assembly (8 Tracks) can store 1 million gross bits or at least announced, and publicized, prior to this company soliciting/receiving
100,000 8-bit words. The memory can be expanded to 12 comb-bar contest entries.
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. COMPUTER COMPONENTS
A delay modulation recording system is featured. It requires an OPENS VAN NUYS STORE
8-bit preamble containing a 101 code to synchronize the phase-locked,
read decoder. (10101011 at the beginning of each sector.) Computer Components opened its first retail store to
Preliminary specifications: Disc memory models the general public on June 17th. The address is 5848
HTM 8-1 kit to HTM 96-12 kit Sepulveda Blvd., Van Nuys CA 91411. They are currently
Minimum Maximum authorized IMSAI dealers and expect to expand their micro¬
Data capacity, bits 1,000,000 12,000,000 processor line to other manufacturers as they demonstrate
Data per track 125,000 viability. They also carry a complete line of interface and
Data transfer rate 3.6 MHz memory kits, hobbyist supplies, etc.
Data access time average 17.4 milliseconds
Size 17"W x 17"D x 10"H
Power 115V 60Hz 200VA
SAN DIEGO COMPUTER STORE
Electronics: One read-write amplifier, one index amplifier, and one
sector amplifier for 64 sectors. The Computer Center (8205 Ronson Rd., San Diego
Interface: TTL twisted pair CA 92111, (714) 292-5302) opened its doors on May 22nd.
Preliminary pricing based on a 100-unit production run: 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 the power and longevity of the 100 wire bus. These products
BISI are of two basic types:
Box 1197, Station A 1. NEW CPU BOARDS using different 8 and 16 bit
Vancouver, British Columbia microprocessor chips that will plug into the bus. (You can
Canada already buy an M6800 CPU board for your Altair and work
(604) 683-5246 is in progress with CPU chips from Data General, and Texas
Instruments 8800 series.)
The most important and often overlooked part of an 2. MASS STORAGE-memory capacity inside the Altair
Altair/IMSAI computer is the 100 wire bus structure. This chassis in excess of the 65K directly addressable bytes, made
bus structure as defined by MITS has become a "de facto" possible by the new CCD (charge coupled device), and mag¬
standard that has encouraged numerous companies to build netic bubble technologies. Mass storage will typically be con¬
and market Altair/IMSAI compatible boards, knowing that figures as a set of storage boards (from 1 to 20) and con¬
there are thousands of machines in which to use them. The troller board. The controller board must furnish to the storage
bus standard has stimulated competition and allowed product boards several critical timing and control signals (all TTL
specialization; and the result has been to raise the Altair/ levels), and because of the number of boards involved, these
IMSAI from just a'hobbyist'tag to a full-fledged computer lines should be placed on the 100-line Altair bus for storage
that is rapidly finding its way into industrial, commercial, and board simplicity, lessened cost, and ease of trouble-shooting.
educational applications. For what other computer on the While opening up the future of the Altair to many new
market has such a broad base of hardware manufacturers? applications, these boards are putting a strain on the bus
To date, most of the second sources have been of RAMs, structure—they use more bus wires than so far have been
TV typewriters, etc., but there is a second generation of defined, so the time has come to define more of the unused
products just beginning to surface, which will vastly increase bus lines.
25. 01 Phase one clock TTL levels
Altair/IMSAI Bus
26. PHLDA Hold acknowledge, buffered 8080 output
0 * letter 0
0 = zero 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 and1 goes to 8080 RDY 30. A4 Buffered address line 4 (16)
5. VII Vectored interrupt request 1 32. A15 Buffered address line 15 (32768)
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. BDSEL Acknowledge signal 17. BD SEL Acknowledge 17. B0SEL Acknowledge signal 46. SINP Latched 8080 INP status
from addressed storage bd. signal from addr. storage bd.
47. SMEMR Latched 8080 MEMR status
18. STA DSB Status buffer disable
48. SHLTA Latched 8080 HLTA status
19. C/C DSB Command/control buffer disable
49. CLOCK 2 mhz clock, crystal controlled
20. UNPR0T Input to memory protect circuitry on memory bd.
50. GN0 Logic and power ground return
21. SS Indicates machine is in single step mode
(A) 51. +8V Unregulated input to +5V regulators
22. ADD DSB Address buffer disable
(B) 52. — 16V Unregulated input to negative regulators
25. DO DSB Data out (from CPU) buffer disable
Page 8 Or. Oobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Manlo Park CA 94025 August, 1976
198
(o) 54. EXT CLR Clear signal for I/O devices
■5T5TJ Strobe signal ( by 8224 clock chip 8800B d/c board) FIRST RUMORS OF A
(F) 56.
WEST COAST COMPUTER
(H) 57. DIG1 Enable signal for CPU 01 drivers 8800B
COMPUTER FAIRE
(J) 58. FRDY 8800B Front panel ready signal
(s) 87. Al 1 Buffered address line 11 (2048) + A conflict already exists on line 67. Processor Tech¬
nology Inc., has defined this line as PHANTOM to disable
(t) 88. D02 Buffered data out line 2
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
refresh cycles during the Dazzler DMA (direct memory access).
(v) 90. D07 Buffered data out 1 i ne 7
(w) 91. D14 Data input line 4 •Editor's Note: Up to this point, this bus has been referred to
as the "Altair/IMSAI bus." Given the number of manufacturers
(x) 92. DI5 Data input line 5
now making the bus, or making products for it, we think it's
(y) 93. 016 Data input line 6 time to start calling it what it has become—'The Hobbyist-
Standard" bus.
(2) 94. Dll Data input line 1
August, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 9
199
VRAM-VIDEO DISPLAY RAM
The PCM-12: Matrox Electronic Systems, P.O. Box 56, Ahontsic Stn.
Montreal, Quebec H3L 3N5, (514) 481-6838 has a number of
A PDP-8 Look-Alike 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)
Well Worth Looking At video signal (75 ohm, crystal controlled). This will drive video
monitors up to 3000 feet away. Quick tidbits:
by Jim Warren, Jr., Editor Model Function Price (single unit)
PCM, Box 215, San Ramon CA 94583; (415) 837-5400, is MTX-816 8 by 16 large-character;, no
marketing a microcomputer kit based on the Intersil 6100 lower-case character display $194
microprocessor. It is a system well worth giving serious con¬ MTX-1632 16 by 32 caps 8t lower-case
sideration. It’s only selling point is that there is a massive character display $285
amount of systems and applications software in existence for
it. And, if you want to use it, instead of simply tinker with MTX-1632 SL Externally synchronized 16 by 32
it, that’s a major point. The 6100 executes all of the Digital display ?
Equipment Corp. PDP-8/E instruction set, except the I/O
MTX-1664* 16 by 64 character display $364
instructions. Since the “8” has been around for about fifteen
years, and is still one of the most popular minicomputers MTX-3264* 32 by 64 display $440
(due almost totally to its software)—there are around 70,000 MTX-2480* 24 by 80 display $480
of them in use—anything that executes a PDP-8 instruction
MTX-256**2 a 256 by 256 point arbitrary
set should be given serious attention.
graphics display $630
If you are a hardware builder type, the system should
satisfy your desires. It comes in a kit form and can adequate¬ *1he 1664 and 3264 require a 5.2 Mhz bandwidth monitor. The
ly pacify those who love to fondly caress a soldering iron and
2480 requires 6.5 Mhz.
dikes.
If you are a software type, with some nominal scrounging, Whoops! There's a ringer: They say a minimum order is 100
you can come up with all sorts of glorious software, including units, and there is a setup charge. Just goes to show—you
several editors, assemblers with macro capabilities, BASIC’s, gotta read all the small print.
FOCAL, several FORTRAN’S, a number of debuggers,
business software, and on and on.
machines, and is generally better documented. Even when
If you are a computer architecture type . . . forget it. The
there is functionally equivalent software for other machines,
PDP-8 was designed in the early 1960’s. It is a single accu¬
it usually requires more memory than it does on the PDP-8.
mulator CPU with no index registers, fixed-block addressing,
For example, OS/8 requires only 8K 12-bit words on the
a 12-bit word length, and doesn’t even have a SUBTRACT
PDP-8. It’s PDP-11 counterpart, RT-11, requires a minimum of
instruction (you have to do a 2’s Complement, then Add).
16K 8-bit bytes. Operating systems for Data General’s Nova
Architecturally, there are far more exciting microprocessors/
machines exhibit a similar hunger for memory, and the devel¬
microcomputers on the market.
opment systems from the micro manufacturers absolutely
And, if you are financially frugal concerning your com¬
gobble memory-though the comparison is only partially
puter hardware (regardless of the potential expense for the
valid. If I didn’t already have my own PDP-8/I (elderly, but
software), then you should also forget the PCM-12. The
definitely “burned in” and reliable), I would probably get a
system with only IK words is priced at $799 (kit), or $1224
PCM-12—even though I consider them somewhat overpriced.
(assembled). To expand it to 4K words costs another $139
Incidentally, I consider DSD’s floppy system to be grossly
(kit form), and to add memory beyond that costs $135
overpriced by about $1300.
(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
Paga 10 Dr. Dobb's Journal of Computar Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 August, 1976
200
Z-80 . . . Coming on Strong
Three Kits Under $300--One Includes
2K Bytes, Another Runs at 4 MegaHertz
by Jim C. Warren, Jr., Editor company offering a Z-80 CPU board to the hobbyist com¬
munity. Their kit price is $269, and includes IC sockets, but
Three groups are (or will be) offering processor boards excludes the two ldlobytes of static RAM found in the
or microcomputers to hobbyists, based on Zilog’s hot, new Digital Group’s subsystem. As of the middle of July, their
]>p, the Z-80. They are the Digital Group, TDL, and Cro- prototype had been running for about a month, and their PC
MemCo. The Z-80 has an exciting instruction set that is al¬ version (production version) had been running, glitch-free for
most completely upwards compatible with the Intel 8080 about half a month. The system has been demonstrated to
(which is, of course, upwards compatible with the Intel 8008). members of the Amateur Computer Group of New Jersey,
Note: the Z-80 is not pin-for-pin compatible with the 8080; several of whom have commented very favorably about it, to
the almost-compatibility only concerns instruction sets. Also us.
note: The Z-80 is being second-sourced by Mostek. TDL is a new entry into the rapidly growing mob of
The one instruction incompatibility we have heard computer hobbyist companies. We have received several favor¬
about, so far, concerns the handling of the parity flag. As able comments about them, however, from people who are
explained to us, the Z-80 sets the parity flag only on logical independent of TDL, and whose judgement we trust. The com¬
operations, as one would expect, whereas the 8080 sets the ments we hear are that the TDL principals are technically
parity flag on both logical and arithmetic operations. Inciden¬ competent, and are dedicated to turning out an excellent
tally, since Bill Gate’s Altair BASIC uses this 8080 eccentri¬ product, and backing it with first-rate customer service. We
city in three or four places, Altair BASIC will not rim on a are most interested in receiving comments, positive or nega¬
Z-80 unless a few minor modifications are first made to the tive, from their customers.
code. We understand that listings of those mods are floating They are also offering one other rather flashy item:
about. If someone will send us a good, clear, documented Their Z8K RAM board is an 8 kilobyte static RAM for
copy, we will be happy to publish them (with or without an $295 with 215ns access time. Furthermore, it only draws
author’s credit line). Note: We consider publishing such mods about 150ms from a 5V power supply. We are particularly
to be roughly analogous to an auto magazine publshing de¬ interested in hearing customer comments regarding this RAM.
tails about modifying a patented Ford engine design for the The rumor we hear is that this system uses RAM made by
purpose of obtaining more useful or efficient operation; EMM, the same as is in MITS 16K boards . . . and EMM is
patent infringement is not involved. the only semiconductor house that has been able to make
them. We want to spread the word, if they are reliable. And,
The Digital Group, Box 6528, Denver CO 80206; (303) we have no reason to question their reliability, other than the
861-1686, is offering a Z-80 CPU board for $295 (kit), or fact that none of the larger chip houses are marketing a com¬
$395 (assembled). The last we heard, they were planning on petitor. Presumably, they will, soon.
initial deliveries around the middle of July. The CPU board
includes 2K bytes of half-microsecond static RAM, a 256- CroMemCo, 2432 Charleston, Mountain View CA
byte EPROM bootstrap, two DMA channels, a 400ns-rated 94043; (415) 964-7400, is the third company to jump onto
Z-80, and some other interesting goodies. The board is inter¬ the Z-80 bandwagon. [This is pre-announcement information,
changeable with previous Digital Group CPU boards, but is obtained from Dr. Harry Garland, one of the principals in
not plug-compatible to a “hobbyist-standard” (Altair/IMSAI) CroMemCo.] They are planning a Z-80/4 CPU card that will
bus. plug into a hobbyist-standard bus that sounds like a super
Also, the Digital Group is doing something that we subsystem. For a starter, the Z-80/4 is a 4 megahertz proces¬
broadly applaud: They are offering a Z-80 CPU upgrade kit sor:; that’s a 250ns cycle time. The board can be switched, at
for $185 to those who have previously purchased systems from any time, back and forth between 2MHz and 4MHz. It has a
them based on some less exciting microprocessor, and wish to power-on JUMP to any 4K memory blank, jumper selectable.
upgrade to the Z-80. We have consistently been very favor¬ There is a wait-state generator on-board that can place wait-
ably impressed by Digital Group’s “up front” stance, candid¬ states on M-l cycles if desired, or on any other cycle. A
ness, apparent integrity, and consistent, soft-sell approach to jumper can be used to select between 8080-mode I/O and
marketing their goods. A comment, however: We have been Z-80 mode. The subsystem price is expected to be $295 (kit),
getting an increasing number of letters, here at People’s Com¬ or $395 (built and burned-in). Dr Garland specified October
puter Company, complaining about poor service or responsive¬ 1st as being a firm availability date.
ness from the Digital Group. We have published such com¬ CroMemCo is another of those companies that we feel
plaints, as well as some compliments, and will continue to do is really “doing right” by its hobbyist customers. As well as
so. Our assumptions are: 1. Customer interest in Digital Group this writer can remember, PCC has yet to receive a single
products has exceeded their initial capacity to respond in the complaint about CroMemCo products or service. We know
manner they would like. 2. They 'are aware that they have a several of the principals in the company, and believe that they
problem and are doing everything they can to expand their act with first-rate integrity; a level of honesty that one
customer service department and procedures. 3. It is their would more expefct from a close friend than from an “un¬
wish to maintain an operation of unusually high integrity and known businessman.” Their technical competence is also top-
responsiveness to their customers. notch. Minor tidbit: Aside from being a principal in CroMem¬
Co, Dr. Garland is also Assistant Chairman of the Department
TDL (Technical Design Laboratories), 342 Columbus of Electrical Engineering at Stanford University.
Ave., Trenton NJ 08629; (609) 392-7070, is the second
Dr. Dobb’s Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 11
August, 1976
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¬ The process is intended to be tion, the control of the crypto¬ Basic Principles
dards (NBS) published a pro¬ implemented “in a special-pur¬ graphic device and the interface
Figures 1 and 2 illustrate the
posed standard in the Federal pose electronic device. . .de¬ of the device to its associated
various data manipulation func¬
Register of Aug. 1, 1975 specify¬ signed in such a way that it may equipment will depend on the
tions found in the algorithm.
ing “a mathematical algorithm be embedded in a computer application and environment. . .
The permutations in Figure 1
for encrypting (enciphering) and system or network and provide Certification of compliance with
involve rearrangements of bits
decrypting (deciphering) binary- cryptographic protection to bi¬ this standard is the responsibility
without changing their value,
coded information” for federal nary-coded data. of the designer and manufac¬
while the substitutions (also call¬
use. “The method of implementa¬ turer of the device.”
ed ciphers) do not generally pre-
Page 12 Dr. Dobh's Journal of Computer Calisthenics & Orthodontia, Sox 310, Menlo Park CA 9402S August, 1976
202
reason why such a function can’t be The process may be generated by a To look at the exclusive OR process in
executed by software on a general-pur¬ circuit which has two inputs — data and a another light, it may be noted that, if
pose computer, although dedicated cus¬ key with equal numbers of bits. Then the Figure 3a represented the truth table of
tom-tailored hardware will accomplish output is obtained by a bit-by-bit modu¬ an exclusive OR function, then Figures 3a
the task most efficiently. lo-2 addition (exclusive OR) of the key and 3b would have been identical.
The most intriguing class of substitu¬ bits and data bits. The expansion and contraction opera¬
tion, the exclusive OR process, is shown The bit-by-bit transfer functions is given tions, where the number of output bits is
in Figure 2b; a typical truth table is given by: not equal to the number of input bits, are
in Figure 3d. 0 ' 0=0 used in several stages in the algorithm,
The process is not only invertible but o i 1 = 1 along with balanced operations.
i < 0= 1
self-invertible. Suppose an input bit se¬ and
Two-Part Algorithm
quence of: 1 c 1 = 0,
where the * sign symbolizes the exclusive The algorithm is composed of two dis¬
an> an-1> • - ■ 'a1> a0
OR operation. tinct subfunctions: key generation and
produces a given output sequence of:
In the encryption algorithm, as we shall encryption/decryption.
bn. bn-1.bl. b0 see, the remarkable properties of the ex¬ Key generation (Figure 4) is the process
If, instead, clusive OR circuit permit a common logic of transforming a user-defined 64-bit key
bn, ■ • ■ bo to be used for encryption at one end of a into a set of 16 different 48-bit keys,
is applied as the input, the output will be transmission line and decryption at the each to be used in a different iteration of
other end. the encryption/decryption procedure.
The proposed standard defines the in¬
0 4 put/output relationships of all the con-
a2 al a0 1 2 3 5 6 L7
t>2 bj bo 6 5 1 4 7 0 a 2
a2 3i ao |
L°JU|2|3|4|I51l6lI7
ItTbTII111 olu
<N
U)
b2 bi bo 1
a2 ai ao |
I0!1!I2|I3|ITI16 1I7
t>2 bi bo 11 6 |5 1 111UlI7 Is |13 1 |5
a2 ai ao ||°|
Hl2l!3!4II5i!6IL7
t>2 bi bo 11 si 4 1?!| 6 1 1 1 lol13 2
(d) EXCLUSIVE OR, USING A KEY VALUE
OFk2 k, k0 =(101)2 = <5)s
(NOTE SYMMETRY OF INPUT-OUTPUT
PAIRS. THE INVERSE OF THIS TRUTH
TABLE IS EQUAL TO THE ORIGINAL.)
a2 a 1 ao 1
H
1 °lI1!I2Il3l I5!I6I 11
b2 bi bol1 cl 5! 2 141 IeI 6!1 aI1 0
a2 3i ao | 2 31 4 1 7
|°|PI ID111
bi bo 113 hi 1! 01 31 2I131 1
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.
August, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 13
203
Page 14 Dr. Dobb'e Journal of Computer Calitthenic* & Orthodontia, Box 310, Menlo Park CA 9402S August, 1976
204
traded permutations given in Figure 4, as language of the proposed standard, which the same bit manipulation stages as the
well as all of the other permutations and states, “Data may be protected against encryption algorithm. The only dif¬
substitutions of the algorithm. The substi¬ unauthorized disclosure by generating a ference is that the keys are used in the
tutions (other than exclusive OR) are random key and issuing it to the autho¬ reverse order, beginning with (KEY)16
defined in truth tables, as in Figure 3, and rized users of the data.” and ending with (KEY)i.
the permutations are delineated by show¬ This indicates it isn’t necessary to sup¬ Figure 6 shows the n‘h iteration in the
ing tables of input/output bit ‘-‘connec¬ ply a new 64-bit key for every 64-bit data encryption process, a complex function
tions,” illustrated symbolically in Figure block. That would require synchroniza- that encompasses permutation, substitu¬
1. ation of the encrypting and decrypting tion, expansion and contraction.
Each contracted permutation in Figure key generators so the same key could be If the same process is used for decryp¬
4 is actually composed of a balanced used to encipher and decipher each data tion, it can be shown that'
permutation followed by a cycle left op¬ block.
L(jD (decryption) = Rise (encryption)
eration and a contracted permutation. Instead, a federal agency with a time¬
The result is logically equivalent to a Rod = Li6E. lid = rise
sharing system or a remote batch opera¬
series of contracted permutations, as indi¬ tion can select, for example, a daily key and so on. Thus, following the final ex¬
cated in the figure. to be used at each transmitting site and change of left and right half-words and
Strictly speaking, a user could supply the central processing facility. Obviously, the final permutation, the output of the
(KEY)! through (KEY)i 6 directly, with¬ any private organization choosing to ad¬ decryption process is equal to the input
out building the hardware to perform the here to the standard can use the same to the encryption process, where it all
permutations, since all of the 48-bit keys technique for its own operations. began.
can be predicted for any given 64-bit The encryption/decryption process it¬ It is worth noting the nature of the
master key. contracted substitution in Figure 6,
self is shown in Figure 5. It consists of
For example, an off-line program could which is composed of a set of eight
several steps to be performed on each
easily print a series of keys that could be so-called “primitive functions,” each with
64-bit input data block: an initial bal¬
loaded simultaneously into the 48-bit a 6-bit input and a 4-bit output.
anced permutation; a series of 16 itera¬
registers, for each of a limited number of These functions are recommended for
tions of a complex cipher, each iteration
master keys. inclusion in the algorithm, so there’s an
using a separate 48-bit key; a cycle left 32
Such an approach may be reasonable implication the user can choose his own
bits (nothing more than an interchange of
because the intent of the algorithm ap¬ primitive functions or his own contracted
the left and right half-word); and a final
pears to be to use a given master key over substitution if he wishes.
balanced permutation which is chosen to
a long period of time - a matter of hours, This contrasts with the practice (in the
be the inverse of the initial balanced
days or weeks, for instance. proposed standard) of dictating all of the
permutation.
This conclusion is inferred from the other bit manipulation functions, without
The decryption process uses precisely
any hint of freedom of choice for the
user.
August, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 15
205
8080 TECO and
RANDOM DATA
FLOATING POINT PACK
by Robert Reiling
Dear Jim, June 23, 1976 (reprinted with permission from
Congratulations on the JournalJ This approach to software
Homebrew Computer Club Newsletter, Vol. 2, No. 5)
development and to Tiny BASIC in particular is most
stimulating. Kenneth Young wrote in with a report of the last
I would, however, be interested in seeing more support of
Southern California Computer Society (SCCS) meeting
the 8008-based systems. Presently, I'm running a modified
Mark 8 with 15K RAM, IK ROM operating system, 256 level and inlcuded his observations about the Altair 8800B.
hardware stack, TVT-I, Suding Calculator interface, ASCII The following exerpt is from Ken's letter: "Pat Ward
keyboard, National Multiplex Digital Data Recorder (2400 and David Bunnell of MITs were one of the vendors at
baud) driven by serial-parallel interface of my own design. the meeting and they were showing off the Altair
Recently, I've been working on and have nearly debugged a 8800B. I liked it. They cleaned up their computer a lot.
4K emulation of most of the commands of DEC'S TECO, a / feel that this machine is comparable to the I MSA I
powerful text editor. Unfortunately, I have neither an assem¬ 8080 with a 22-slot motherboard and fan. Unfortun¬
bler or hardcopy printer, and hand documentation for publi¬
ately, the Altair 8800B will cost about $840 in kit
cation is too time consuming. Any suggestions as to methods
form. The IMS AI 8080 with a 28-Amp power supply,
of placing TEXTED (as I call it) before the public eye would
be appreciated. [Suggestions, anyone?] 22-slot motherboard and fan costs $680 (IMSA I does
Tiny BASIC is intriguing, but a bit too tiny. Floating point not charge that insulting 5% handling fee anymore, so
capabilities are a must. Hence, for the last week. I’ve been / have been told). The two computers are a little differ¬
working on a software package for the Suding Calculator. Up ent, but / do feel they are comparable to one another.
and running (with only one or two known bugs) are routines However, / do not feel that the Altair 8800B should
to read/write from/to the Calculator, input to RAM storage cost more than the IMSAI. My conclusion is that the
a floating point number from keyboard, output from RAM I MSA I is still a better deal than the Altair."
storage a floating point number to TVT.
To assist anyone working with the Calculator and to invite
comments from readers, I offer these notes: Jef Raskin's discussion of FLOW, an instructional
1) Storage format for FP numbers. After long consideration, computer programming language, at the May 26th
I have decided upon a 5 (8-bit) word convention as follows: meeting of the Homebrew Computer Club interested
quite a few members. For a brief discussion of the
7 6 © language, have your librarian get a copy of Computers
n And The Humanities, Vol. 8, pp 231-237, Pergamon
S E YP Press, 1974.
D.
M2. 5 word FP accumulator in which the result is formed on
Dj T>h return, and Registers D and E a pointer to the 5 word FP
operand (where applicable). This use of two word address
M3 pointers would simplify linkage of the FP package to existing
Du
Tiny BASICS now using two word integer arithmetic and
!_
Page IS Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 August, 1976
206
Floating Point Routines for the 6502
by Roy Rankin, Department of Mechanical Engineering, O is - In the Exponent:
Stanford University, Stanford, CA 94305 00 Represents -128
(415) 497-1822
and 7F Represents -1
Steve Wozniak, Apple Computer Company 80 Represents 0
770 Welch Road, Suite 154 81 Represents +1
Palo Alto, CA 94304
(415) 326-4248
FF Represents +127
(1E3B) is the error exit for overflow occuring during calcula¬ * MANTISSA: TWO'S COMPLIMENT REPRESENTATION UITH SIGN IN
* MSB OF HIGH-ORDER BYTE. MANTISSA IS NORMALIZED UITH AN
tion of e to some power. OVFL (1FE4) is the error exit for * ASSUMED DECIMAL POINT BETUEEN BITS 5 AND 6 OF THE HIGH-ORDER
overflow in all of the floating point routines. There is no * BYTE. THUS THE MANTISSA IS IN THE RANGE 1. TO 2. EXCEPT
* UHEN THE NUMBER IS LESS THAN 2**(-128).
trap for underflow; in such cases, the result is set to 0.0. *
All routines are called and exited in a uniform manner: * EXPONENT: THE EXPONENT REPRESENTS POWERS OF TU0. THE
* REPRESENTATION IS 2'S COMPLIMENT EXCEPT THAT THE SIGN
The argument(s) are placed in the specified floating point * BIT (BIT 7) IS COMPLIMENTED. THIS ALLOWS DIRECT COMPARISON
storage locations (for specifics, see documentation pro¬ * OF EXPONENTS FOR SIZE SINCE THEY ARE STORED IN INCREASING
* NUMERICAL SEQUENCE RANGING FROM $00 (-128) TO $FF (+127)
ceeding each routine in the listing), then a JSR is used to * ($ MEANS NUMBER IS HEXADECIMAL).
enter the desired routine. Upon normal completion, the *
* REPRESENTATION OF DECIMAL NUMBERS: THE PRESENT FLOATING
called routine is exited via a subroutine return instruction (RTS). * POINT REPRESENTATION ALLOWS DECIMAL NUMBERS IN THE APPROXIMATE
* RANGE OF 10**(-33) THROUGH 10**(38) WITH 6 TO 7 SIGNIFICANT
* DIGITS.
August, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 17
207
8018 SEXP BSS 4 1DC1 BD CD ID L10 LDA LN10.X
8® 1C 08 INT BSS 1 1DC4 95 04 STA X2.X LOAD EXP/MAN T2 UITH 1/LNU0)
1DC6 CA DEX
itm 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 RTS
♦ at
ID00 A5 09 LOG LDA Ml 1DCD 7E 6F LN10 DCM 0.4342945
1D02 F0 82 BED ERROR 2D ED
1904 18 01 BPL CONT IF ARG>0 OK 1DD1 80 5A R22 DCM 1.4142136 SORT(2)
1D06 00 ERROR BRK ERROR ARG<-0 82 7A
* 1DD5 7F 58 LE2 DCM 0.69314718 LOG BASE E OF 2
1D07 20 1C IF CONT JSR SUAP MOVE ARG TO EXP/MAN T2 ^ rr, B9 0C
LDy a d
1D8A AS 04 ftz. LDA X2 HOLD EXPONENT 1DD9 88 52 A1 DCM 1.2920074
1D8C A0 80 LDY -S80 B0 40
1D0E 84 04 STY X2 SET EXPONENT 2 TO 0 (*80> 1DDD 81 AB f© DCM -2.6398577
ID 10 49 80 EOR -S80 COMPLIMENT SIGN BIT OF ORIGINAL EXPONENT 86 49
ID 12 85 0A STA Ml + 1 SET EXPONENT INTO MANTISSA 1 FOR FLOAT IDE 1 88 6A C DCM 1.6567626
ID 14 A9 00 1 P 01 LDA -0 epu**;s 06 66
ID 16 85 09 c STA Ml CLEAR MSB OF MANTISSA 1 X , or ,, 1DE5 7F 40 MHLF DCM 0.5
ID 18 20 2C IF JSR FLOAT CONVERT TO FLOATING POINT 00 00
ID 18 A2 03 LDX -3 4 BYTE TRANSFERS *
1D1D B5 04 SEXP 1 LDA X2.X 1E00 ORG S1E00 STARTING LOCATION FOR EXP
ID1F 95 10 STA Z.X COPY MANTISSA TO Z *
1D21 B5 08 LDA XI.X * EXP OF MANT/EXP1 RESULT IN MANT/EXP1
1D23 95 18 STA SEXP.X SAVE Etf’ONENT IN SEXP *
1D25 BD D1 ID LDA R22.X LOAD EXP/MANT1 UITH SQRTC2) 1E00 A2 03 EXP LDX -3 4 BYTE TRANSFER
1D28 95 08 STA XI.X 1E02 BD D8 IE LDA L2E.X
1D2A CA DEX 1E05 95 04 STA X2.X LOAD EXP/MANT2 UITH LOG BASE 2 OF E
1D2B 10 F0 BPL SEXP1 1E07 CA DEX
1D2D 20 4A IF JSR FSUB Z-SQRT(2) 1E08 10 F8 BPL EXP+2
1D30 A2 03 LDX -3 4 BYTE TRANSFER 1E0A 20 77 IF JSR FMUL L0G2(E)*X
1D32 B5 08 SAVET LDA XI.X SAVE EXP/MANT1 AS T 1E0D A2 03 LDX -3 4 BYTE TRANSFER
1D34 95 14 STA T.X 1E0F B5 08 FSA LDA XI.X
1D36 85 10 LDA 2.X LOAD EXP/MANT1 UITH Z IE 11 95 10 STA Z.X STORE EXP/MANT1 IN Z
1D38 95 08 STA XI.X IE 13 CA DEX
1D3A BD D1 ID LDA R22.X LOAD EXP/MANT2 UITH SQRT(2) IE 14 10 F9 BPL FSA SAVE Z-LN(2)#X
1D3D 95 04 STA X2.X IE 16 20 E8 IF JSR FIX CONVERT CONTENTS OF EXP/MANT1 TO AN INTEGER
1D3F CA DEX IE 19 A5 0A LDA Ml+1
1D40 10 F0 BPL SAVET IE IB 85 1C STA INT SAVE RESULT AS INT
1D42 20 50 IF JSR FADD Z+SQRTC2) IE ID 38 SEC SET CARRY FOR SUBTRACTION
1D45 A2 03 LDX -3 4 BYTE TRANSFER 1E1E E9 7C SBC -124 INT-124
1D47 B5 14 TM2 LDA T.X 1E20 A5 09 LDA Ml
1D49 95 04 STA X2.X LOAD T INTO EXP/MANT2 1E22 E9 00 SBC -0
1D48 CA DEX 1E24 10 15 BPL OVFLU OVERFLOU INT>-124
1D4C 10 F9 BPL TM2 1E26 18 CLC CLEAR CARRY FOR ADD
1D4E 20 9D IF JSR FDIV T-(Z-SQRTC2))/(Z+SQRT(2)T 1E27 A5 0A LDA Ml+1
1D51 A2 03 LDX -3 4 BYTE TRANSFER 1E29 69 78 ADC -120 ADD 120 TO INT
1D53 85 08 MIT LDA XI.X 1E2B A5 09 LDA Ml
1D55 95 14 STA T.X COPY EXP/MANT1 TO T AND 1E2D 69 00 ADC -0
1D57 95 04 STA X2.X LOAD EXP/MANT2 UITH T 1E2F 10 08 BPL CONTIN IF RESULT POSITIVE CONTINUE
1D59 CA DEX 1E31 A9 90 LDA -0 INT<-120 SET RESULT TO ZERO AND RETURN
1D5A 10 F7 BPL MIT 1E33 A2 83 LDX -3 4 BYTE MOVE
1D5C 20 77 IF JSR FMUL T*T 1E35 95 08 ZERO STA XI.X SET EXP/MANT1 TO ZERO
1D5F 20 1C IF JSR SWAP MOVE T*T TO EXP/MANT2 1E37 CA DEX
1D62 A2 03 LDX -3 4 BYTE TRANSFER 1E38 10 FB BPL ZERO
1D64 BD El ID MIC LDA C.X 1E3A 60 RTS RETURN
1D67 95 08 STA XI.X LOAD EXP/MANT1 UITH C *
1D69 CA DEX 1E3B 00 OVFLU BRK OVERFLOU
1D6A 10 F8 BPL MIC #
1DGC 20 4A IF JSR FSUB T*T-C 1E3C 20 2C IF CONTIN JSR FLOAT FLOAT INT
1D6F A2 03 LDX -3 4 BYTE TRANSFER 1E3F A2 03 LDX -3
1D71 BD DD ID M2MB LDA MB.X 1E41 B5 10 ENTD LDA Z.X
1D74 95 04 STA X2.X LOAD EXP/MANT2 UITH MB 1E43 95 04 STA X2.X LOAD EXP/MANT2 UITH Z
1D76 CA DEX 1E45 CA DEX
ID77 18 F8 BPL M2 MB 1E46 10 F9 BPL ENTD
1D79 20 9D IF JSR FDIV ra/(T*T-C) 1E48 20 4A IF JSR FSUB Z-Z-FLOATCINT)
1D7C A2 03 LDX -3 4 BYTE TRANSFER 1E4B A2 03 LDX -3 4 BYTE MOVE
1D7E BD D9 ID M2A1 LDA Al.X 1E4D 85 08 ZSAV LDA XI.X
1D81 95 04 STA X2.X LOAD EXP/MANT2 UITH A1 1E4F 95 10 STA Z.X SAVE EXP/MANT1 IN Z
1D83 CA DEX 1E51 95 04 STA X2.X COPY EXP/MANT1 TO EXP/MANT2
1D84 10 F8 BPL M2A1 1E53 CA DEX
1D86 20 50 IF JSR FADD MB/(T*T-C)+A1 1E54 10 F7 BPL ZSAV
1D89 A2 03 LDX -3 4 BYTE TRANSFER 1E56 20 77 IF JSR FMUL Z*Z
1D8B B5 14 M2T LDA T.X 1E59 A2 03 LDX -3 4 BYTE MOVE
1D8D 95 04 STA X2.X LOAD EXP/MANT2 UITH T 1E5B BD DC IE LA2 LDA A2.X
1D8F CA DEX 1E5E 95 04 STA X2.X LOAD EXP/MANT2 UITH A2
1D90 10 F9 BPL M2T 1E60 B5 08 LDA XI,X
1D92 20 77 IF JSR FMUL (MB/CT*T-C)+A1)*T 1E62 95 18 STA SEXP.X SAVE EXP/MANT1 AS SEXP
1D95 A2 03 LDX -3 4 BYTE TRANSFER 1E64 CA DEX
1D97 BD E5 ID M2MHL LDA MHLF.X 1E65 10 F4 BPL LA2
1D9A 95 04 STA X2.X LOAD EXP/MANT2 UITH fWLF (.5) 1E67 20 50 IF JSR FADD Z*Z+A2
1D9C CA DEX 1E6A A2 03 LDX -3 4 BYTE MOVE
1D9D 10 F8 BPL M2MHL 1E6C BD E0 IE LB2 LDA B2.X
1D9F 20 50 IF JSR FADD + .5 1E6F 95 04 STA X2.X LOAD EXP/MANT2 UITH B2
1DA2 A2 03 LDX -3 4 BYTE TRANSFER 1E71 CA DEX
1DA4 B5 18 LDEXP LDA SEXP.X 1E72 10 F8 BPL LB2
1DA6 95 04 STA X2.X LOAD EXP/MANT2 UITH ORIGINAL EXPONENT 1E74 20 9D IF JSR FDIV T«B2/(Z*Z+A2)
1DA8 CA DEX 1E77 A2 03 LDX -3 4 BYTE MOVE
1DA9 10 F9 BPL LDEXP 1E79 B5 08 DLOAD LDA XI.X
1DAB 20 50 IF JSR FADD +EXPN 1E7B 95 14 STA T.X SAVE EXP/MANT1 AS T
1DAE A2 03 LDX -3 4 BYTE TRANSFER 1E7D BD E4 IE LDA C2.X
1DB0 BD D5 ID M_E2 LDA LE2.X 1E80 95 08 STA XI,X LOAD EXP/MANT1 UITH C2
1DB3 95 04 STA X2.X LOAD EXP/MANT2 UITH LN(2) 1E82 B5 18 LDA SEXP.X
1D85 CA DEX 1E84 95 04 STA X2.X LOAD EXP/MANT2 UITH SEXP
1DB6 10 F8 BPL MLE2 1E86 CA DEX
1DB8 20 77 IF JSR FMUL *LN(2) 1E87 10 F0 BPL DLOAD
1DBB 60 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
* lCOMMON LOG OF MANT/EXP1 RESULT IN MANT/EXP1 1E8F A2 03 LDX -3 4 BYTE TRANSFER
* 1E91 85 14 LTMP LDA T.X
1D8C 20 00 ID LOG 10 JSR LOG COMPUTE NATURAL LOG 1E93 95 08 STA XI,X LOAD EXP/MANT1 UITH T
1DBF A2 03 LDX -3 1E95 CA DEX
Page 18 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 August, 1976
208
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 E8 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 F8 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 E6 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
r..~
1EB7 A2 03 LDX *=3 4 BYTE TRANSFER 1F68 A9 80 ROR1 LDA =$80
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
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 far I have assembled the CPU board and 4K board, am finishing
18 Harbor View Dr. a homebrew panel, and wrote the Monitor to check things
Hingham, MA 02043 on a borrowed ASR33. The next step calls for revising the
Monitor to take the Viatron keyboard and translate to ASCII
This listing is a Monitor for the 6502, a-la the Ohio with a look-up table.
Scientific Model 420. The interrupt vector has been set to The Viatron keyboard is optically encoded, has parallel
use John Zeiglers breakpoint routine. [DDJ, Vol.1, No.3]. output, and is a fantastic bargain at $20.00 from John Meshna
His program needs to have a few addresses changed to use [P.O. Box 62, E. Lynn MA 01904] These are new surplus
this Monitor, but they should be obvious from the subroutine with 73 (I think) keys. Anyway, I will pass along an updated
names. version.
Ohio Scientific [11679 Hayden St., P.O. Box 269, Hiram, Eventually hope to get TB for the 6502 (if you publish
OH 44234] seems to be the cheapest way to go if you roll a 6800 version someone will translate it overnight or vice-
your own equipment. They sell [albeit slowly] a variety of versa).
bare boards at very reasonable prices and good quality. So
Note: I would like to hear from other 6502's in the area.
$
ADDR/ XX XX XX LABEL OP (mode:• FF4A/ B0 BCS FF0A
0PER BE (REL)
— (-> *■ • • • *
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 B1 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 E7 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 (INDj 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 F4 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/ 0A ASL (ACC)
FF44/ AD 00 FC LDA (ABS) FC00 FF7B/ 0A ASL (ACC)
FF 4 7/ 4A LSR (ACC) FF7C/ 0A ASL (ACC)
FF 4 8/ 90 EC see (REL) FF3 6 FF 70/ 0A 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
iTINY TIM
FF80/ 20 98 FF JSR (ABS) READ
[SEEKS TINY BASIC
FF83/ 29 0 F AND < IMM) 0F
FF74/ 85 FE STA (ZER) 00FE [Dear Doctor, June 22, 1976
FF83/ 29 0 F AND ( IMM) 0F 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
FF85/ 65 FC ADC (ZER) 00FC [little fella', you know, a chip off the block of silicon. Well, he has
FF8 7/ 60 RTS ( IMP) 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
FF88/ B1 FE EMTY LDA (INDaY) FE [we would appreciate it.
FF8A/ 20 B5 FF JSR (ABS) UNPK Thanks, and thanks for TIM.
FF8D/ 81 FE LDA (INDeY) FE [John Bottoms 423 Knobloch Ave.
(United Electronics Inst. Keffersonville IN 47130
FF8F/ 20 89 FF JSR (ABS) UNPI
FF92/ C8 INY (IMP) (Note: 'TIM' is a Monitor for the 6502.
FF93/ D0 02 BNE (REL) FF9 7
FF95/ E6 FF INC (ZER)
[A GOOD
FF9 7/ 60 RTS ( IMP )
*
[ASSEMBLER PROPOSAL
T
FF98/ 20 C6 FF READ JSR (ABS) INPT iDear Mr. Warren: June 27, 1976
FF9B/ C9 52 CMP ( IMM) 52 All of the implementations of Tiny BASIC have been
03 FFA2 [excellent, and the authors of each version deserve to be con¬
FF9D/ 00 BNE (REL)
gratulated on a job well done. I agree that it may be time to
FF9F/ 4C 00 FF JMP (ABS) MAIN
lease up on Tiny for a bit, and devote more space to other
FFA2/ C9 30 CMP ( IMM) 30 [equally useful items.
FFA4/ 30 F2 BM1 (REL) FF4A It seems to me that a really good assembler would be of
FFA6/ C9 3A CMP (IMM) 3A (great value to hobbyists. I am thinking primarily of an 8080
08 BMI (REL) FFB 5 [assembler, but any machine would benefit from a good
FFA8/ 30
[assembler. By "good" I mean one with most or all of the
FFAA/ C9 41 CMP (IMM) 41
(following features:
FFAC/ 30 EA BMI (REL) FF4A 1. Free-form source coding.
FFAE/ C9 46 CMP ( IMM) 46 2. Symbols up to 15 characters long.
FF 80/ 10 E6 BPL (REL) FF4A 3. Symbol table assignable to tape cassette or floppy
07 SBC ( IMM) 07 (disc.
FF82/ E9
4. Provision for both local and global symbols.
FF BA/ 60 RTI (IMP)
5. Sophisticated macro expansion capability.
6. Operation in either absolute or relocatable mode,
FF85/ 4A UNPK LSR (ACC) (assuming use of a suitable link editor for relocation.
FF86/ 4A LSR (ACC) 7. Optional output of object listing and/or diagnostics.
8. Optional retention of symbol table for use in
FF8 7/ 4A LSR (ACC)
(debugging.
FFB8/ 4A LSR (ACC) 9. Automatic separation of procedural and data areas,
■4a
* |to facilitate memory protection.
FF89/ 29 0F UhP I AND (IMM) 0F 10. Optional concordance and/or memory map listing.
FFBB/ 69 30 ADC ( IMM) 30 11. Provision for symbolic patching.
12. Optional inclusion of kitchen sink (for bit bucket
FF 80/ C9 3A CMP ( IMM) 3A
(overflow).
FFBF/ 30 02 BMI (REL) FFC3 Sincerely,
FFC1 / 69 07 ADC ( IMM) 07 [Jim Day 17042 Gunther St.
FFC3/ 20 51 FF JSR (ABS) 0UTP Granada Hills CA 91344
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
Page 22 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 August, 1976
212
SSSSiSSSSSESSSiSSSSSSSSSSSSSSSSSSSgSRSSSSiSSSSgSSSgS >C4tn<uiao<u.uao* < £ <U«<U.
sasssasgs'ais&gs'gisgs'
aB838e3gS§833SES35SS3ES38638ff3888358E3E3ES3E3S3E
__
ScnaQUHWinhCiaiuONt'
NBOlUl Qtt.HKlWNOiaill| ON
aosaauyyyyuuflOQi IOQQ
r««o<
lAtAM>niAU)AiAiAiAAA^MUlMU)U1U)
(AlAiAiAiniAijniAiAtAiAiAUUniAl
OOOOOOOOOOOOOOOOOOO
lOOOOOOOOOS
IN H
3
S § a
s
e:
B Sc
•o
is
dc r
B i§26
< gees
o ill ! I
JC >• Ifl w
o£z
£ § 5
Ego t J !S3i§|<
:§i P I
3 o: hH Ju.a2gh
U. U
inSo&Si- W — r- o Z
’Si a 55°S S >- 6 uj «
2z z zS O
rz
o »-«
ri
U B< >
—. .
*-1
MtfNlflk cu
H h? t? r3 <
_ S **: ® & r ^ Xi < uSu) in S
ssilgls1
§“fc T 5 >< g wito*w§
hcCu)
;saz a u > a^ssi
|§Efcgit|l-5i
S«.S
U *1 o 53w3b£o.Dh«(
. fi a $
Ot to CQ O) Q< 00 u t ! o o © o o o sgg; . © © © ssss
u u o u O*”4 ui o c
o in m ( un in in
ootnooiooi/>tfi<<<<‘,>®|2in<50^,i!l29
NNCONUU.N«0<OOOOOU«IO«N»<«'0 U.tO<UJ60<UJ«0<tJ u. <ut : «o < «o
Q U gasgsas
38E38E38S388B3E3E3EE
Ul U1 _
W w 2 w w to u a a j m In
OKl>0««QU.N*'0M0a<yUONM'fi0>fflQ
u.ON<»>o«<yii>rtMinf'Oi a q u. h m in
nMMinnMKiMM^^'CNNNv^inininin sssasss
ooooooooooooooooooooooo
oooooooooooooooooOoooo ggggggg
DC
o in
5 8 a
cu § fc 5
U. P
z i S U9
August, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 23
213
y V MA
S £ T3'H
P OU
“"■J* C
r m u)
> os o
>H O
> co o bS
U X *H S
P< M
©
©
(AM
x O M-H o w S c
t-> C U
O S K -h o ©
WX-H 3 « C os
< o o
o
> 2 O e j«
.
;S5 X©• -H
O <M
OhB.
e£ U rtB O
:g pj
3 a
o o
uj r
> to O P. R u
•h « M3
*** O W
zm M M2 O
X
II *J u o o
© © a c
p re u. <
B.UHO.
U CQ CO 0 03
13o S.-Hm 3 : os o: !u.e x © © 3
St:6- issss h
;°s CXO
©our
I■ U!a,H
x U. •H *J *1 W £■
W (N *1 <
is X 2
o
O► c CO
« u ©
sbjs
satse g££ 5- a gat
3 3-<5
°2 p- H H
* H p 111
=°g • © x
M 44 x u
w IS >- >• >- >• •H © X O. CO x
«£ p: • 5 o1
2 h W JO
_ z uu O U • W
2 !S
t- p a
s x W
Q S UJ
Q
u G3 >•
X g CQ
>-
CQ
o.
CO
U] O • O
s s 5 S 3 2 e% i X x x Q
o X x 3 q **
O uuOH^
SS: 2 tu H 2 x IS to o
x x : XX XH^ a S1So jSSSfeu
3C » l
B1B1
Z 2 £
1 H < H o W U
UUhhZD < M
a2 2
O
x x O X
W Ul U
2 W X X X
« c£
W
•mOwh
; W < x
X < >- x \ X >« 5 H \
3 a os N.
2 x w os Hua h wo i ^U2H
<Ol 2 cc <
< Q O < O O OJ
<
hui<OOui
cc < Z U D 2 q u a >.
£ < < X < < 2
o.
2
< X <
u.oasqy.qi
111 Q (
o. < . § u. q o:
. U W ^ 2
< x
q t- . O O H o q H x lu x o a h x
u x < co x < co u co U X < CO u (fl>.HX6.Xh Jl x x o.
□
( x < r
iQ ID » cq o r
lOlOOOOOOIOWWlOOllOaOOlOlOooO q o m oooc90iooiooooeoo<«'00>o
< OODOH <<OCO<XOOQX<COQX MM< N<N»Q<N<N<N»DNK)<N
<<QWO<U<<U<QW<<QW
qhxhxqShqqhxhqhxh
Q U < u < o t
UJ X Q Q H m t S3 OS >*
W Ou rs§=p
os os < os>-o:>-uj<c£<os>-o:>-ujhcj<qs
wwq wowuazowQwqwuJ2Hj2qw
XWU2UX<WX<COUOSXWUBS W U X < W U c X X •-> u I M >-) c£ *->»3X •->x*-aQ3x»-aX*-iX>-iQ55cQcnx'-s
yiaoxNwiflNOifflDii.OHrtirt'O
QQU1U1IUIUU1U1U1U1U1U1U.U.U.U.B.
MSO Ol a Q u. o
a, u. u. u. u. u. o o o i ki ki w w to w «n
loioiniomioioininmioininwininto
ooooooooooooooooo
in in in m m m \o
o o o o o o o o8 sss g; >ooooo< ) vp vO >ZJ so ip vp 'O
>0000000
si 1
Page 24 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 August, 1976
214
o Q © O O fa. © '•* oa « * to •45 ffl ©o «n © O o O o p» o m < u O © * Q o o © w o © * m * o © id o © *
01 o CO 0) <9 < cA <? om m OV <r © © © S33 © 9 © mo* © * m © © * © * © < m * o o © o * ca © m
© u 9 a O m CN © in © © < o © fa. o «r o O © SO © u to m Q fa. © * — » u m. © <c m © Q P*. Q fa. © <» o © id
o ss 01 oo o 3 <r o© ■«r © in © © «r * « * o 9 to 9 0**0 * * * o m o 3 * o © n * m © * *
vt a.
< m Ch 0- < 00 © Q Id o Oi © 09 m © fa. © m to o « m m Cl © < o< fa. < » « © o © P- Q fa. m m o «* o w © m a © fa. CD
o * mo 08 CO c? « Cf 03 * « m o m or 9 © m 4? 9 9 9 o © o * o * m * * © * O * o m © © «« * o m © © * as
.ti 00^
Q * « fa. © O * m H n o in m P» u © Q t- © 9 m Id o aO © © Q -* © m Id -. * © Q * ©©©©*© m * co O o O oo
m* * © « * m * « © an m 33 o 8 * 9 m S3 9 * 9 to * < * © * * © * * * m m © * « m< * o* * © * O c£
<D CD UJ id S
q u fa. * CO o © © —« o o © o < O © © 9 © CD to <•> © < fa. a0 © * O Id * r*> P*> Q © © © o © m © - q © p- © ©
c/1 a * m m 3 01 S3 © © m © « < © © © <r 9 m 9 © © m * o * O « © * * © tet m* * © o © «*©*»© * © © > ■£ t oo <°
LU © 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© in u.
< CQ * * * n CO <T C8 © * O in 9 9 O « © 9 < © © * * © * © © * * * * < m © * o * P» o * * © n m
O w
„ Sj.E r o
© o 60
o «r
rt
n
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« « ©
CO * O * <r © tO < ar o * <r © 9 ut o © in «r o m © * © m * oi o * * m *-© * * * © * * o * * ©
Q- T—
I—
m © <e o fa. o Id © «o m an m © * m © * © Ml 00P}0 * I O £
3
o
m o 10 bl ©
o CM m «r <r
<*>
s < o CO o
© 01 01 © to * ©
aO o « fa. O «4 © o © o © fa. o
S 3 m •* o © 9 © ^ © <r cr o mom 0*0* o © © * * o 3 © * O © 1* © mm© .t;
cn ti
■ O oo
aL 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©©*© o o © < g g® 5
tf) CD
.Eco
00 m ©a <r o IA oi m © m o «n o © o 9 © © © m to * * © © * o m « m © © * to © * * * m © © © © o cc Q. O
— CO
© « 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 < © H * * o) aj c o
O o* m 10 01 O « ^ © © o< o * o © 9 <0* m © M © o © © 0*0* o * m m * o*©om«o**©m .£ > o O CO
z © 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 <2 p-i=
* m <r Cf 60 m 01 01 «¥ © © oo^ «r o © in m ^ © © © oo**mo* o**mm* o**om©»*m©m C P <0 ICN
U- &- ® p
© mu oo © u w (d © O Q © o © o © o o m o o « o o o o aO mo© © m p» © Q o o fa. * M. © -COQQWO on « h. “ »= ^ O'
o in 01 m •9 a 3 * 01 © O «T © <r © « ^ © © © © o © © © 0*0* © © n * m © © * * ® © * M. ©mo*
c 3 o >»
* Di o m m m fa. an m fa. (d © O © o o o o o o o o «r fa. © © * p r» * © m u © e> m © m m © © kb © * © ©o .E C -n Q
o 01 a 01 3oo in © to « m © 3 © © © © © © © o fa. © © ©mom * m © m m * o * m m o © < m * < « 00
r«- q in © m © ca © ■O’ © m « M m o o o © o © © Q © © - Q Q.** »a © fa.« o © © * « a o. — »» eft © © O o
_ UJ a to
O o
<T 01
©
01 mm 33 CO m to o <r © © M © © © © © so < < o © © © * < * * © © m o m* * ©mo mao* 1"S
ID W 9J
■g o>
c/i (J
tO <
CO o O 01 in 2
© m
cr
fa. o
# 01 08
fa. o
ca © © » < o
© -• H © 9 o o © o o o o © © © © * © *- O © © © fa. o m Q co <*« p» o © m fa. © m k.
<9 9 « © M © « © © 43f o * © © O * * o m m * m * © * * o © © o * «©*
l_ CQ -5
CD j-*
Be
CJ
ti
C ©
»_ !°
< m •o o © » o © o m P» m o o O O © © o © « m © ©-.um m o © * «-> © © o p- e* © o a 0004
li < © * o o CM 43- to © m 03 in m 03 « 33 © © m cr © © ©© « © © « 090< o*m o ©*m* * ©© *oo©©©©©m CD
O' o a) -c 2 i-g
X < CD D CD CD
Q Cd fa, O — <T tf) d> C* 10 © < n o © id fa. o — ©«o<?in«p»co©<£© UOCdbiO Ml ©m*m©p»©©*n C CD
UJ x H to <0 38 8 to <o <o r» t«- r» r- <*■ r* p- f !»■ t* toeoootoeooocoeococD © © « to © ©©©©©©©©©©© C CD
X <J joooooooooooooooooooooooooooooooooooooooooooooooooooo© o cn
> E 3 c
o
s#i ■g'
*b
c
• <o
CD k. *
0) ■
“ g C °
fe o
sf
Sifg
c 4-- agg
cn ti c/5 n
® CD
•g o C 3 E®
rt _
r-iNHtoHOi'Om r-~ <
a NNMulh.<03 vDCJ
E si vONOOttCOCOOlffl Ol O'
oooooooooo X
o 2 **• S
1 L-
2 tS —
O CD (O
0
a
i**s
5 3 cin
T>
*D “ O to »
£ > c N
3 o>*J 2 <
H
CO |g°
— OSfiS si ^ .5
onfioMv >■
*8
•8
13! > X >* H S.a | |
C § 8 tt a: E s 2 p
8 j. 2 w- a:
§S33nio:: 3
C x 5o<- O
ui 1-1
ti
o ° „ gEir
co E 3
c S-Jj
sfis.sia:
co
>Un°ifco' 2 2= is
> O)^
,E
CC w > o
4_j _
</) < c .2 ™ iS
.c
3 Z
o O
DC © ia S g 8^
£
£
Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 Page 25
August, 1976
215
“Applications Software”--
Games in Pittman’s 6800 Tiny BASIC
by Carl Kelb adapted from older versions to Tom Pittman's Tiny BASIC
for the 6800. Note: A bell (control-G) was imbedded in the
These games—Stars, Acey-Deucy, Trap, and Slot—were print statements for each *.
I
U
3
h- Ci
3
a-
sc Hi >-
3
O
>- CM © CJ O C © O © © < o o o © o
3 Zo
SC -I
oooo oo
34 ■> -h ©
- ON+OONO Cl -o 00 m c- T-I >- a? n >- ro t-i w in rN O' O IN — oo
—
SC —
N n« O N N T
CJ ci ~ n ci cj cj
«r T T *«r
CJ CJ CJ Cl
in
CJ
m
CJ
in
CJ
>o ■c
CJ CJ cn
NO
CJ Z
N Z
CJ
33 W
rs
IN © 00
CD 00 CD
cj cj CJ CJ CJ Cl
ro
O'
O' —
CJ z
>- <r
CJ
<E iT Cl cj »-i
o 3
3 - « CM
■3 3 ■ CJ tH - CJ
iH
UJ —
SC o
OH OOO
CD h-'-'Oh-h-h-
r- O O K O O O
o
h-
o
o
h-
o
o
h-
o
o
K
o
Z
u
z
33 •OZ 3• oh-0 oHo oh-o h-oo oh-O S£
CJ
33 CDZ• 3 h-c o M
z
33 3
h- U
O >-1
K
O
ri
o o o o o O
V O
h- h- h- h- h- K
Cl h-
O O o o o O
3
3 3 U
z
3 CD
Z
■ O
h-
O
s—
O D
>-
O
h-
O X O X O 3
<S -h O 1 O' X cc
Z O O Z O o o o
O cc o
o CD
3 Ooin 3■a ©oin i-*
O o o«
O
© f3 O o O CD CD
* o <r
O <1 0 3 0 •H o CJ
in 3 in cs in ’3C m « 3 X CDC Xa■ >oCJO
X
3 CD«r CDt-i IDt-i CJCD CDM CDTOO-OT-i 030 0 0 0
CD OOO
cn >- in
z O
CD
C o h U
-ST-iCST-ij^riiXCD rN
tH
O CD O
>-
oo
© CD
CJ Ci T-I CS <r ~ H CJ M <r <i
^ cq T-i in » ■ in ■ t-i H ci n «T * >0 ■ «o ■ «c cs ■ O' ■ O' ■ O' ■
CJ « Ci • ■
Cl II C-J II CJ
CS Ci
11 1 T-i ri t-i t-i
Cl T-I ! CJ Ti II ri
li U II II h-
CJ ci
h-
CJ
S-
Cl T4 r-i T-I rl Tt CJ CJ
h-
CJ
h-
CJ
f—
A
h- K V h-
Cl II II CJ T-i T-I r-i ri tH T-i
V h- h-
CJ CJ
1 -
CJ
CJ
h-
CJ
h-
CJ <X CM II
h- A
o
h- <E A Ci V A A V H- h- V 1! II II 11 h- h- (J V A V II II II II h- A t- h- V
o o O Z <L <r o o <r <r
<r « « <L z o z o z o z » a Ci cc « Z O Z O Z O z o z
O Z z 3 z Z O £ z z oU CJ CJ CJ u z o ZOZOZOZUOCJZ
O Z Z
c
c
H h H t-i 3 ►H H h H h H h H
hhhh HKh
{£0303033 h- h- k-l h- w K M
3333333 3 3 3 3 £K 3 oCD cc3 0O 33 0O 33 w
Q- O 3 0 3 O CL 3 *-« l-l 3 »-l ►-! l-i l-l *-* l-i M w 3
O SC
O
3 3*-l 3t-l 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 h-0 3 3 3
HhH K m K t-i 1— t-i h- h-
HHh tH h-
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 3CD3CD3CD3tH CD Hi 3 CD 3 hi 3
h- Hi Hi
cd cn
z ui
Hi 0)
co in
■ ■ cn ui
• — 3 3
3 3 3 3
DC _1 O
3 3 • a O Ui
x cn • - k Z 3
k
CO 3
ui >-
ft- 3
3
«
z
-
1-* <r
■ ox
3 0* >* UI I- • Ui • z
«>- • h 3 cn z cn* 3 i_
Cl. Ui -1
h o • • z <r
cn 3 ©• 3 _J >- UJ Ui UJ t-i
o ^HIUJIK
-
3
w CD
Z uiu 3
UJ u. cn m « UI 3 cc Z U
€ <Xh u
X O »01Z A UJ UJ
k © km j 03 z * x Z U. UJ iC
» C
ce cn u m fie o 3 z s-
o cn a
□ H*
u. « *■« UJ 3 > Z 30
3 UI cn z z ZuC
a € <E w x h-
3 <r
(-
x
8V iD-fis. u. a > O U K
33 Ui
i: u.o «0lui<- o z<z O Z
«o
zn k
>- ~ z — cn
3_i 0U. 3V- SC UJX •O♦ 3CLZ
O Z
o
K §3 03.« 3 hi
w 3 »u« -
~3« ~3
o
z
«-
-
• ° o
a
u
O h-
uj cn
xwxkwzwSx
**© pu.es, ui»s: *
*>-►•!-
** z X K3 3 cn
■ S««33»3»h « ZN h CUIlll h- h-
UJ £0 Ui cn 3
cc
<r
s© kxc»z x * a w
%ZUJ*WK«K ■» * 3 <E 3 Z O U. cc ta
►H O H4
t
* > ousbJ^Qvt £ *
* cn
cn
CD o
<r — h-
Ct iC O
3 3O
3
J u
U $» W
•»
3CQU1
x@33>-
wo
« • **
* 3
u
>- W
z
UJ Ul z >- 3K
_
2“®-
3 K eg
€
9 £ ca ® k h
« 1 asa:
w cn
cn
*
* *
cd <£ <r
—J cd <1 3 M K X h-
>- K O
o CO I ■ CO 3 U. K O
CL X 0. Z
Jh 3 3 « I- 3 * 3 «• 3 3 <Z
^ J- «wu.>ozuiwcno:3 « o O O
3 ©• ©WOXZOUICDO »$* >- o >-
uj >- z-J ^ in ooo a s- <r cn cj sc
3h- ZO
ocn«i-cn >-ug:&©xx~wu uj 3 in
Is*
© O' co o o o * - 3 i—i V Ui O
X
>- SC h- sc 3
. . _ X 2£ W Q 3> Ui 3 *•« W <f <T IN O in * * - I- 3
£ £ £_ « wiiS Ovu>-H (I) o rN * -h- z UJ 3 3 Ci O
CJ 3 3 X
zpppo OOOOO© OO ZDUH- CD 3 -4- 3 >- O M tI t-i ri « <X O OO
<X 3 3 3 3 OOOOO© h- hO& AC <t K th OOO * hi 3 h- h n
3 <X 3 h-
O 3 C 3 3 3
a OOthOO© >- 3 « • © © K COO — f-Kt-OOO * 'OH
I O X X 3 O
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 OOOOO©
UJ
0- £ K S- h- S- K
©>•
-J «
M _J &>-•»>
3>>J3U£®
1- z O ~
« UJ CD *<«-CM'C
CD CD CD «•>«-«•>
••■■■■» *
* > h-
—«
>-UJ
3 Kh-
OO 3>•CJ 3X O3 3Z <r >-
o o. ri r-j m in -o o o 0 o
?2^«^I0?SO0oP2PSo®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 o o■ COOOOOH-CNO-
«
©ooooooooooO*if«»«rtHHrtHHPiNNNNNNNNNMnnnMn.»»»^»»wwiniflioininiiTininin'0'0'0'0'0'0'0'0
cj re cjcjcjrjrjrjcjrjrjcj
Page 26 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 August, 1976
216
c
h-
O gui
£z
do
a UJ O in o o
:> :> <3- < h- ■ m n
<£ <1 in m o in
X X in in AA Z in m
X iL
* M
3 o o u u
o cj <x o o
O hhO« © <x_ O « CD I— h-
> 0 aH >OOONTOmOHT« O O ©
in -*- inoo-4- m+ in + CD o
uj ©
■ in ® ■ in n>inttainn>«iH o
in II in cm >o ii in ii in ii ^ *-t
h ® I- II II ffl h- © h- CO h I- H A II
x o ZOQQ ZO ZO ZZ3«-«n
w h- I- >—1
H h r- r- *-» r- p— pi i— >— « m a.
hW|-|-M|-l-HH(L *-» t—
CL O UJ aoaaaaoaaoaaazaaaxa o z
A CD 3 LLOHwjiiojQ.oja.iLMHHa.ia. o ui
<r
ifiooiiiooHfi'ONOHNifi'OooHwinoH in o h-
0‘O^HMMnf<mnt^<rtTin-fl>0'0'0NN n cd O
^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
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
vD
<r
X A >-
h* A <L
O I- 3
z 3 A
<X A
CD - Z O
05 ° CL CL A O h- - »
■ ■ A w UJ 3 z O p •
>- CL UJ A O <c X O >
z o © - Z >- 3 <r CD Z 4E
z CL 3 t-t 3
A 05 3 U Z Ll. • 3 CD 3 A A
h flCZ A O 05 • O z o
- 05 UJ Z CL A CD > M 3 A X
05 A CL ffl £L 3 <X UJ A A 05 O U
CL UJ o r <r Z CL Z © A A 3 >- ' «
* UJ A 3 A I- O Z A ►H © A
> A Z CL Z h- >- 3 Z A A '
> Z 3 UJ ZCC05 3 A Z 3 r*i Z w A
< 3 Z no cl o 3 <r O Z 05 Z *H «0
A O Z 3 A A A X 3 A
A o
3 CL h-
Z h-
UI >- UI
Cl Z
jC z
tt
Z*
C
CL
1-
A
«£
A z
CJ
«
Z
O ©
>- Z 3
« A
CL « <C 3 CL
Hh-HV03 <X Z 05 O <1 3 h- t-l ’iL a
A UI >- CL Z A « h- CD 05
cl a f— UI UJ 3 A CD O « A V
UJ 3 3 X A O 3 • « 3 >- Z
h- h- UJ CL Z UJ H- O 3 >- O 05 CD 3
z £L 3 «t 3 UJ O >- A >- 3 A Z
UJ CL CL O X <r A CD > z CD z <c <C n O O
Z Ci 3 C >- I- X * o « z 05 ►f 3 3 A
M z ♦ o oc > X <x A « A A 05
<X C CL >- *- Z AC m h- X 3 CD O m ' A
UJ « UJ h- CD « O ^4 A
A >- UJ z CD V A © A ♦- Z ' ' H
X A D h QC A Z A A A ■ >- 0 3 A
>- <r 3 « <C KUI3 <E t-
CL CD Z fiC X K J <L A Z 3 Z
I- <X UJ UJ X z 05 A <X
3 -I 05 I- 3 >- ■ 05
OJH z z • ■ UI
.3 >- « 3 ■ 3 h- 3 3 3
: cn z Z CL O >- 05 05 CD O O
: cn U. (OUl 5-ZQ.QC o 2 A h- >- V A
I UJ >- M A <£ UJ -4- M <L O O UJ
o o © o : 3 r 05 Z JHIfli ^ iL CL M o O O O O u 0.000 UJ 3
< h o ■ CD 3 0 3 3 « AC Z o 2 I o I o <r o o in x u o o o Z A
O O o <L O Z UJ X UJ 3 O o it in m cm o ~ ~ ~ CM CM
M 1*1 fJ h I O € CL hhfl.Z O I N f T3 ^ O -- m in
I I— QC UI O h- o o : fflNN
0 0 3 0 o t-_JAXoZICL a Z h-h-OOOC2 )Ih- ~ ~ ~ O O
H ►- t- *- 3> JI « « A Z u UJ OOh-KH-h- * CJ 05 l AAAh-h-
■u3i
O O O O CL OC O UJ 3 U. Ii. U K £ Z ' UJ IMCDCDOOO 0> : <r 3 . Z Z Z O O
CD CD 'CD CD «Hhh|-ZHWZO|- flC o t- + CD CD CD CD 3 A A A CD CD
lY o a a b a ■ ■ 1 a • A X > CM o ■ O
I— I! O O o CM A O CM o CM O CM
HI—(-hi—hi— hHH h- >• \ 11 II II II II 1 O h- *- II A II 11 I- h- h- t- A A UI A II Ii
••zzzzzzzzzz Z Z 3 Z 3 h- h* I— h- h- C Z Z Z 3 o i—i ih *-i •• Z Z Z Z A A
IHHHHHHHHHH h H h o A o A h- o h- O K o I- h- o o l-i A A z »H O »H M ►— h- I— h-
UiCLCLAflCCLACLCLAflCC : UJ CL UJ CL CL Z CL ZUIAAU1AAUJAAU.AA A CL O aaazaaaaz Ui A A C
CLGlCLCLCLCLCLCLCLCLCLC .30_I A A o Q_ O3oii-43ot-*3i-i»-i»-ii-ii A a AAAowwmmUJ A A A C
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 9. RANDOM NUMBER GENERATOR: Here is a routine
are currently in high demand among computer hobbyists and which is an absolute must for writing your own game
programs. Requires 60 Bytes. $1.50
other micro computer users. Up to this time there has been
little or no software available for Motorola 6800 based systems 10. MASTERMIND: Test your logical abilities; An in¬
other than Monitor programs in ROM. We have developed many tricate guessing game requiring both skill and logic.
programs both useful and fun which allow the system builder Requires 512 Bytes. $3.00
to utilize his creation to its fullest extent. The software list¬ 11. CARD SHUFFLE AND DEAL: Two very useful
ings which we offer implement a variety of user and system routines. Includes a driver routine to print out
type functions. The programs have been written in 6800 4 hands of 13 cards each. Requires 512 Bytes. $2.75
assembly language and assembled to run on Motorola and AMI 12. NUMBER GUESS I: Try to guess the number the
6800 based systems and utilize I/O routines contained in the computer is thinking of! Requires 256 Bytes. $1.50
MIKBUG* monitor ROM. All references to these external 13. NUMBER GUESS II: A more advanced number
routines are clearly marked, however, facilitating conversion to guessing game. Requires 512 Bytes. $2.00
other I/O routines. The software listings include a fully com¬
14. HURKLE: Try to find the hiding Hurkle relying
mented source listing, a hexadecimal machine code dump, sample
upon clues given by the computer. Requires 640 bytes $2.00
output, and complete instructions for use. Because software
"bugs" are bound to occur regardless of the degree of testing 15. ROVER: Find and catch the Rover with the aid
we offer a limited warranty. This 90-day warranty is limited of hints supplied by the computer. Requires IK Bytes. $2.50
to replacement of the original software listing or providing a 16. SWITCH: Correctly arrange a random stfing of digits
patch at the discretion of TSC. in the fewest possible moves. Requires 512 Bytes. $2.00
For those requiring the service, all of our routines can be 17. CHOMP: A 2 player game which resembles a two dimen¬
assembled at a custom address or with user supplied I/O rou¬ sional "NIM" game. Requires 512 Bytes. $2.00
tines for an extra charge.
18. SUBROUTINE PACKAGE: A special package of very
New products are constantly being developed by TSC.
useful subroutines selected by the staff of TSC. This
These include a Micro BASIC interpreter, a scientific floating package could save you many hours when writing
point package, a business and accounting system, graphics your own programs. $3.00
games, and an 8080 emulator, among others. We also plan
to offer some of our programs on "Kansas City" standard
‘•SPECIAL PACKAGE DEALS....Supplied in a 3-ring binder
cassettes. Hardware items being developed and tested for
the 6800 based system include a cassette interface system, I. Contains programs 1,2,3,6,9,10 $13.50
A/D and D/A boards, a high speed arithmetic processor and
II. Contains programs 1,2,3,9,10,11,12,13,14,15,
other general purpose items. All of these products will be
16,17 $18.95
available when announced in our advertising.
We can only offer what the hobbyists want, so let us III. Contains programs in I and II plus 4 and 8 $29.50
know what your needs are in both hardware and software.
•••••••••••SPECIAL ANNOUNCEMENT******•**•****••*
*MIKBUG is a registered trademark of Motorola, Inc. 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¬
1. HANGMAN: The old word guessing game. Easily modified letin describing the main selection as well as many alternates.
with your own word list. Requires 640 Bytes. $3.25 Members will receive a 15% discount on the featured program.
2. ACEY-DUCEY: A card game played against the computer. THERE IS NO OBLIGATION TO BUY ANYTHING! If you
Bet and try to break the bank! Requires 1K Bytes. $3.25 join now, you will receive free our Random Number Generator.
Page 28 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 August, 1976
218
Shooting Stars for
Uiterwyk’s 6800 Micro-BASIC
Dear Jim, (received July 29, 1976) Suppose we have A = 3
My copy of DDJ is arriving right on schedule—and full of good
B = 12
stuff tool. Keep up the good work. To help you and/or PCC with then (B/A)*A = 12/3 * 3 or 12
that work I am enclosing a copy of my latest game program. This is a But if B = 5 then (B/A)* A = 10
version of Shooting Stars (Alias Teaser). The program is written in because 12/5 = 2.4 and this is truncated to 2.
Micro-BASIC as supplied in the June SWTPC 6800 newsletter. (This
interpreter was written by Robert Uiterwyk and Bill Turner, and has This is the type of test which is performed in line 780 of the
provided me with many hours of enjoyment.) Since the Micro-BASIC program. If the S value divides evenly into the F value the appropriate
allows only arithmetic comparisons, I have had to use a rather unusual point in the galaxy is inverted. A FOR—NEXT loop checks and
method for determining which positions are stars and which are black inverts the appropriate points in the complete universe. The same
holes. The interpreter and game will fit in 4K of memory if you technique of checking for even division is used to print the carriage
remove all the REM statements (doesn't REM mean REMOVE anyway?). returns after each third point to produce a square matrix display (line
The game features a randomization of the universe at the start of the 890).
game to keep you from getting too complacent or bored if you have The "S" values must be prime numbers to ensure that no extra
a good memory. factors creep into the "F" values which are the product of the
By the way, Corvallis is in the Willimette Valley about 80 appropriate "S" values for each galaxy.
miles south of Portland. It is the home of Oregon State University— This program should run in any other type of Tiny BASIC
which has a good computer center (with Super Star Trek!). Unfor¬ which will handle-one-dimensioned arrays. You will have to change
tunately, our town lacks a computer store at present—know anybody the RND statement (380, 390) to fit your random number generator.
who wants to invest in a small business in a community with an active The RND statement in Micro-BASIC produces a random integer be¬
and growing-technicaliy-oriented population? I'd work for a ridiculous tween 1 and 32,762. Line 390 causes the starting universe to be
wage. biased toward black holes; roughly two black holes for each star. The
I am currently work on a text editor for my 6800 system program can easily be converted to a scale basic interpreter by using
which is very similar to the "classy" 8080 editor in your June/July the INT function when checking for factors. For example, line 780
issue. I still have a few commands let to program, but it is now run¬ would become: 780 IF(INT(F(X)/S(K))*S(K) = F(X) LET S(K) = -S(K).
ning with the INSERT, DELETE, APPEND, FIND, LIST, CLEAR, If you're not using a TVT with cursor control, change line 840
TOP, and NEXT commands active. I still have to get the CHANGE to a simple "print" or whatever form of page control you need.
command on line. This is not too much of a problem at present Good Luck!
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- 00100 REM SHOOTING STARS IN 6800 MICRO-BASIC.
assembler on the computer center's CYBER system to write this 00110 REM MARK BORGERSON 7-23-76
00120 REM DESIGNED FOR SWTPC 6800 WITH TVT-11(CT-1024).
program I may try to recoup some of my costs by selling the editor in 00130 DIM FC9),SC9)
an article where I can get some money for it. Rest assured that unless 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)
I change professions (I'm now a grad student in Oceanography), the 00160 S (1)=-23
source code for this and any other programs I find worth spreading 00170 S(2)=-3
00180 S(3)=-19
around will be distributed at cost (mailing cost—not my development
00190 S(4)=-ll
cost—this is a hobby, right?). 00200 S C 5)=2
Sincerely, 00210 S(6)=-5
00220 S<7)=-13
Mark J. Borgerson 325 NW 9th, No. 3 00230 SC8>=-7
00240 S(9)=-I7
Corvallis OR 97330 00250 F(l>»1518
00260 FC2)=1311
00270 F(3)=570
If you find that the other hobby mags are unwilling to publish the
00260 F(4)=3289
complete, annotated source code for your Editor, pass it along to us. 00290 F(5)=23I0
We do publish useful-though-long program listings —Jim W. 00300 FC6)=1615
00310 FC 7 > = 2002
00320 FC 8) = 1547
00330 F C 9 ) * 1190
00340 REM INITIALISE SHOT COUNTER
PROGRAMMING NOTES 00350 C=0
FOR "SHOOTING STARS" 00360 REM RANDOMISE STAR AND BLACK HOLE PATTERN
00370 FOP 1=1 TO 9
The game of Shooting Stars was originally published in the 00380 X*RND
September, 1974, issue of People’s Computer Company (under the 00390 IF X>20000 SCI)=-SCI>
00400 MEXT I
name of Teaser). It is well described in the May, 1976, Byte, so I'm
00410 PEM PRINT INITIAL nATTERN
not going to say much about the game itself here. The primary 00420 GOSMB 840
problem in writing the game in Micro-BASIC is finding a way to 00430 PEM GET FIRST SHOT
30440 PRINT "YOUR SHOT")
group the stars and black holes in the universe into the appropriate gal¬ 00450 INPUT X
axies. I have solved this problem using an array of nine numbers 00460 REM INCREMENT SHOT COUNTER
00470 C-C+l
which are each the product of several prime factors. These are the 00480 PEM CHECK FOP VALID SHOT
values of the "F" array in the program. Each point in the universe is 00490 IF SCX)>0 GO TO 530
assigned a prime number value (the "S" values in the program). A pos¬ 00500 PRIMT"Y0M CAM ONLY SHOOT STARS"
00510 GO TO 440
itive value indicates a "Star" and a negative value is a "black hole." 00520 REM INITIALIZE SCORING COUNTER
The program can then check for stars and black holes with a simple 00530 P=0
00540 REM INVERTCCHANGE SIGN) OF APPROPRIATE GALAXY.
arithmetic comparison (i.e., IF X> 0). Reversing stars and black holes 00550 G0SUB 770
is as simple as changing their signs. The program determines which 00560 REM CHECK SCORE BY ADDING STAP VALUES
00570 FOP L=1 TO 9
stars are in a given galaxy by finding all the prime number factors of
00580 B-B+SCL)
the "F" value for that position. The appropriate galaxy is then re¬ 00590 NEXT L
versed. The integer arithmetic of the Micro-BASIC interpreter allows 00600 REM PRINT OUT MODIFIED UNIVERSE
00610 GOSIIB 840
checking for the factors of a number in the following manner: 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
00640 REM IF B IS NEITHER
GO TO 690
-100 NOP. 96 GAME CONTINUES
6800 TBX FOR FREE . . .
00650 IF n<>96 GO TO 440
0066 0 PRINT'trOU HIM"
BUT IT’S SOFTCOPY
00670 PRINT"YOU FIRED "tZi" SHOTS."
00680 GO TO 700 Dear Folks, 12 June 1976
00690 PPINT"YOU LOST"
00700 PRINT "TO PLAY AGAIN Tv_lii ' RUN *» CP." The receipt yesterday of DDJ iVol. 1, No. 3], and the continued
00710 GO TO 950 inability or unwillingness of Sphere to deliver a BASIC interpreter has
00720 REM THE FOLLOWING SUBROUTINE CHECKS TO SEE IF THE F VALUE
00730 REM FOR THE SHOT CAN BE EVENLY DIVIDED BY THE SVALUE
motivated me to write you with some good news and some bad news.
00740 REM FOR EACH POSITION. IF S DIVIDES INTO F WITHOUT First, the good news:
0B75e REM A REMAINDER, THE STAR OP BLACK HOLE IS INVERTED I am willing to place in the public domain a running version of
00760 REM (ITS SIGN IS CHANGED)
00770 FOR K-l TO 9 TBX which I developed for my 6800 (Sphere) system. It contains all
00780 IF(F(X>/S<K>)*5(K)«F<X) S(K)«-S<K) of the features of TBX as published in DDJ [Vol. 1, No. 2], including
00 7 90 NEXT K
00800 RETURN
the DATA statement; plus REMarks, LOAD & SAVE (tape cassette
00810 REM THIS SUBROUTINE PRINTS OUT THE GALAXY commands), EDIT & CLEAR (CRT commands), and PRINT format¬
00820 REM STATEMENT 9500 DOES A HOME UP AND ERASE OF SCREEN ON TVT
ting with a *:* for concatenation with no space.
00830 REM EQUIPPED «ITH COMPUTER CURSOR CONTROL.
00840 PRINT"<CNTRL-P><CNTPL-V>" Now the bad news:
00830 TOP. J-l TO 9 My listing is in the same sort of shape as the TBX one you
00860 IF SCJX0 PRINT" .";
•0870 IF S<J)>0 PRINT" *"I
published—probably for the same reasons—i.e., hand-written on about
00880 REM IF J ISN'T DIVISIBLE BY 3, SKIP CARRIAGE RETURNS. 55 IBM assembler coding sheets, hand-assembled into hex.
00890 IF J/3*3<>J GO TO 920
900 PraWT
Additionally, the code jumps about to patch locations, is CRT-
910 PMMT oriented, and uses routines in the Sphere-supplied PROM monitor
920 N 2XT J
whenever possible.
930 RETURN
940 R m END OF SUBROUTINE AND GAME If you would be interested in publishing this, (and can scrape up
930 END the necessary volunteer iabor to type it into your format) I will send
READY.
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,
A PL/6800 CROSS COMPILER Chuck Crayne 734 S. Ardmore Ave
Los Angeles CA 90005
Intermetrics, 701 Concord Ave., Cambridge MA 02138, is
reported to have a PL/M-type cross compiler for the 6800. 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.
Pag* 30 Dr. Dobb’s Journal of Computer Calisthanics & Orthodontia, Box 310, Manlo Park CA 9402S August, 1976
220
MINOL: TINY TREK- without the energy dropping below 60.
MORE DETAILS & A CORRECTION
COMMANDS
Dear Jim, July 12, 1976 1. Go to new sector (move within quadrant). The
If you are planning to publish the TINY TREK game, here are amount of energy used depends on the distance traveled.
some additional details and corrections. 2. Go to a new quadrant. The galaxy is made up of an
Sincerely, infinite amount of quadrants (such as the one above) which
Erik Mueller Britton House are generated when you move to them. You wll never see the
Roosevelt NJ 08555 same quadrant twice, and you have no control over where you
go. The amount of Klingons in a quadrant is always less than
Too late! We have already published it in DDJ Vol. 1, No. 6. — JCW
or equal to the amount left in the galaxy.
3. Fire phasers. You fire phasers to destroy Klingons.
TINY TREK
The amount of energy used depends on the distance away
(written for MINOL)
from the Enterprise.
ile TVT screen update looks like this:
Traveling or firing through obstructions is OK, although
1234567
you may not move to an occupied sector.
1 • K • Refuelling is accomplished by "orbiting" a starbase:
2 K SECTOR 6 5 - Location of the Enter¬ Maneuver yourself to within one unit of it, and then move
prise in quadrant to adjacent sectors until your energy goes back up to 255.
3 K K STARDATE 76 - Increases by one each
display Corrections to listing previously sent:
4 • • ENERGY 231 - Amount of energy
(maximum = 255) 3 X=1 : A=0 : S=250 : T=250
5 B KLINGONS 12 - Number of Klingons 10 J=J+1 : IF A=W; G0T012 : IF J<8; G0T09
left in galaxy 16 (delete)
6 E CONDITION *RED* - There are Klingons in 13 ( 12,E- 1 *8+f+200 )=3:IF 150<I; G0T017
the galaxy 39 X=X+1 : IF X 8; G0T022 : PR : IF L<50 ; GOTO170
7 OOOOOOOOOQQOOOOOOOOOOOOOOQOOOOQOQ
ERRATA FOR COATS’
7 UNIT HIT FROM KLINGON
TVT-2 KEYBOARD LOADER
COMMAND?
Bob, 6/18/76
I just received a copy of Dr. Dobb’s Journal Volume 1, No. 3.
On the space printout, the "K" represents a Klingon ship; the I was looking over my program on page 16 ["Keyboard Loader for
a star; the "B", a starbase; and the "E", the Enterprise. Octal Code via the TVT-2"], and I noticed an error. The label GO
The purpose of the game is to wipe out all the Klingons 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 Mr. Warren, July 19, 1976
Dear Jim: July 5, 1976
Erik Mueller’s MINOL version of Tiny BASIC in the
I have just received a letter from Joseph F. Gaffney
listing, a zillion errors or typos in the MINOL listing. Below is April issue is fantastic, and I’m really enjoying it! I relocated
a list of the corrections that should be made. Apparently, the it to fit with my monitor (a modified ‘JAMON’ [MITS User’s
listing has, been published. But I still haven’t received the Group]), and it’s running with a Model 33 Teletype. Some of
issue or any issues after the third. Please check with the sub¬ the MINOL subroutines are useful in other programs as well,
scription department for me. **ERRORS** (Most of them and are easily called (particularly useful is PRINTXT). MINOL
is fun, certainly, but it is also very amazing (how can it be so
were pointed out by Joseph F. Gaffney, 321 Lyndhurst Ave., smart and yet so small?).
Lyndhurst NJ 07071.) There were a few typographical errors which were easy
to correct. Corrections (at the original addresses) are shown
Changes are underlined. below.
GSM 001106 Address Was Change to
002345 303 013 001
001/350 342 242
ACT 003123 002/050 274 273
003211 CPI “£’ 002/346 OMITTED 013,001
003/207 271 371
003206 312 371 003 003/317 320 302
003317 320 315 003 003/320 OMITTED 315,003
003/327 OMITTED 016,000
003327 016 000 MVI C 0
003/334 OMITTED 345,003
003333 312 345 003 004/005 OMITTED 176
003375 303 134 003 JMP, NXGT 004/060 OMITTED 107
004/137 OMITTED 004
004043 303 134 003 JMP. NXGT
005/256 OMITTED 312
NXGT 003134 005/257 DISPLACED 276,005
004005 176 MOV A,M 006/353 OMITTED 311
INPTXT 004052 As the program stands, the processor will enter an
004135 302 144 004 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
004155 303 057 004 JMP, INO to add the following routine to test for division by zero. It
CHEKN 005062 adds Error 7.
005256 312 276 005 JZ, INU
Change: 003/326 315,000,004 CALL DIV0
006027 376 243 CPI
006353 311 RET
DIV0 * MOVAB 004/000 170 MOVE B TO A
006053 322 013 001 JC, LPBUB ORAA 004/001 267 SET STATUS
006056 303 041 001 JMP. EXEC MOVAC 004/002 171 MOVE C TO A;
STATUS UN¬
006101 302 066 006 JNZ.SHME AFFECTED
MVIC 004/003 016,000 CLEAR C
Sincerely yours. RNZ 004/005 300 RETURN NOT
Erik T. Mueller ZERO
36 Homestead Lane
MVIB 004/006 006,067 ERR ‘7’
Roosevelt NJ 08555
JMP 004/010 303,226,004 JMP ERR
Thanks for the errata. Your subscription was entered *This is my ‘relocated’ code. Any convenient locations
on May 19th. Issues no. 4 and no. 5 were mailed a week and will do.
a half apart, about a month prior to your letter. I encourage
you to complain to your local congressional reps (complaining Yours truly,
to the Post Office appears to be useless). I also mailed an Phillip L. Hansford 6841 Haywood St.
extra copy of the issue in which MINOL appeared, separately. Tujunga CA 91042
-JCW
EUGENE STORE:
THE REAL OREGON COMPUTER CO. NEW CLUB CONTACTS: VENTURA COUNTY
COMPUTER SOCIETY
Dear Bob, 4/26/76
Indeed we are running a store and would love it if VCCS is a Chapter of the Southern California Computer
you mentioned us. The store opened May 8. Society. Its mailing address is P.O. Box 525, Port Hueneme,
Thanks,
CA 93041. For more direct responses, contact their Secretary,
John Montgomery 205 W 10th Fred Moeckel, 4240 Harbor Blvd. No.208, Oxnard, CA 93030.
The Real Oregon Computer Co. Eugene OR 97401
Page 32 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 August, 1976
222
Computer Music Bibliography
by John Snell, Research Engineer, People's Computer Co. W. Cochran, J. Cooley, D. Favin, H. Helms, R. Kaenel, W. Lang,
Box 310, Menlo Park CA 94025; 415 323-3111 G. Mating Jr., D. Nelson, C. Rader, P. Welch, "What is the Fast
Fourier Transform," IEEE, Vol. 55, No. 10, p. 1664; Oct., 1967
Digital circuits may be used for controlling analog syn¬ R. Crochiere, & P. Penfield, Jr., "On the Efficient Design of
Bandpass Digital Filter Structures," IEEE, Vol. ASSP-23; 1975.
thesizers, direct digital synthesis, composing music, analyzing M. G. Crosby, "Carrier and Side-Frequency Relations with
(or tracking several parameters of) traditional musical instru¬ Multi-Tone Frequency or Phase Modulation," RCA Review, Vol. 3;
ments and the voice, spacial movement of sounds, and pro¬ 1938.
cessing of musical sounds (filtering, reverberation, choral D.R. Curtis, "A Monolithic Voltage-Controlled Amplifier
Employing Log-Antilog Techniques," JAES, Vol. 24, No. 2;
effects, etc.). I hope the following list of articles and books March, 1976.
will help some of you to develop systems which are capable D. De Kold, "Binary Division Produces Harmonic Fre¬
of making music enjoyable even by master musicians. This quencies," Electronics, Dec., 1972.
list is relatively short, and includes only a "taste" of relevant J.L. Divilbliss, 'The Real-Time Generation of Music with a
topics not specifically about digital music. For a more compre¬ Digital Computer," JMT, No. 8, p. 99; 1964.
hensive, well-organized listing see the bibliography from J. Dubnowski, R. Schafer, & L.R. Rabiner, "Real-Time Digital
Hardware Pitch Detector, IEEE, Vol. ASSP-24, No. 1; Feb., 1976.
Electronotes (a fine electronic music periodical edited by J.L. Flanagan & L.R. Rabiner, editors. Speech Synthesis,
Bernie Hutchins). Dowden, Hutchinson, & Ross; 1973.
A. Forte, Tonal Harmony in Concept and Practice, Holt,
J. Allen, "Computer Architecture for Signal Processing," Rinehart, & Winston; 1962.
IEEE, Vol. 63, No. 4; April, 1975.
N. V. Franssen St L. Van der Peat, "Digital Tone Generation
W. Apel, Havard Dictionary of Music, Halliday Lithograph, 1969. for a Transposing Keyboard Instrument," Philips Tech. Rev.,
J. Backus, The Acoustical Foundations of Music, W.W. Norton, No. 31, p. 354; 1970.
1969. M.D. Freedman, ‘Technique for Analysis of Musical Instrument
J.K. Baker, "The DRAGON System—An Overview," IEEE, Vol. Tones," Ph.D. dissertation. University of Illinois, Urbana; 1965.
ASS P-23, No. 1; Feb., 1975. M.D. Freedman, "Analysis of Musical Instrument Tones,"
S.C. Bass, and BJ. Leon, "Designers' Guide to Digital Filters," JASA, No. 41, p. 793; 1967.
EDN, Jan. - June, 1974 (6 issues).
M.D. Freedman, "A Method for Analyzing Musical Tones,"
J.VV. Beauchamp & H. Von Foerster, editors. Music by JAES, Vol. 16, No. 4, p. 419; Oct., 1968.
Computer, Wiley, 1969.
S. Freeny, "Special-Purpose Hardware for Digital filtering,"
J.W. Beauchamp, "Analysis and Synthesis of Cornet Tones
IEEE, Vol. 63, No. 4; April, 1975.
Using Nonlinear Interharmonic Relationships," JAES, Vol. 23, No. 10;
1975. R. G&el, "A Parallel Arithmetic Hardware Structure for Re¬
cursive Digital Filtering," IEEE, Vol. ASSP-22; Aug., 1974.
J.W. Beauchamp, "A Computer System for Time-Vafiant Har¬
monic Analysis and Synthesis of Musical Tones," Music by Computers, J. Gabura & G. Ciamaga, "Computer Control of Sound
1969. Apparatus for Electronic Music," AES preprint No. 520; 1967.
J.W. Beauchamp, "Additive Synthesis of Harmonic Musical Tones" S. Gill, "A Technique for the Composition of Music in a
JAES, Vol. 14, No. 4, p. 332; 1966. Computer," Computer Journal, Vol. 6, No. 2, p. 129; July, 1963.
L. Beranek, "Digital Synthesis of Speech and Music," IEEE J. M. Grey, An Exploration of Musical Timbre, Stanford Univer¬
Transactions on Audio, Vol. AU-18, No. 4; Dec., 1970. sity Dept of Music Report No. STAN-M-2; Feb., 1975.
S. Bertram, "Frequency Analysis Using the Discrete Fourier P. Grogono, "MUSYS: Software for an Electronic Music Studio,"
Transform," IEEE Transactions on Audio and Electroacoustics, Vol. Software—Practice and Experience, No. 3, p. 369; 1973.
AU-18, No. 4; Dec., 1970. H.L.F. Helmholtz, On the Sensations of Tone as a Physiological
B.A. Blesser, K. Baeder, & R. Zaorski, "A Real-Time Digital Basis for the Theory of Music, translation—originally written in
Computer for Simulating Audio Systems," JAES, Vol. 23, No. 9, German in 1863—and additions by A.J. Ellis, Dover, N.Y.; 1954.
p. 698; 1975. W. Henke, Multiple Interactive Tone Synthesis System,
B.A. Blesser, "An Investigation of Quantization Noise," JAES, Research Laboratory of Electronics, M.I.T.; Oct., 1971.
Vol. 22, No. 1, p. 20; 1974. L. Hiller & L. Isaacson, "Musical Composition with a High-
Speed Digital Computer," JAES, Vol. 6, p. 154; July, 1958.
B.A. Blesser, & F. Lee, "An Audio Delay System Using
Digital Technology," JAES, Vol. 19, No. 5, p. 393; May, 1971. L. Hiller, "Computer Music," Scientific American, p. 109;
Dec., 1959.
E. Blom, editor. Grove’s Dictionary of Music and Musicians,
St. Martin's Press. L. Hiller, "A Review of Decca Recording DL-9103, 'Music
from Mathematics'," IEEE, Vol. 51, No. 3, p. 538; March, 1963.
D. Bohn, editor. Audio Handbook, National Semiconductor
L. Hiller, "Musical Applications of Electronic Digital Com¬
Corp., Santa Clara, Cal.; 1976.
puters," Gravesano Review, pp. 26-28; Nov., 1965.
R.W. Burhams, "Digital Tone Synthesis," JAES, Vol. 19,
C. Hovey & D. Seamans, "A Polyphonic Keyboard for a
No. 8; Sept., 1971.
Voltage-Controlled Music Synthesizer," JAES, Vol. 23, No. 6, p. 459;
R.W. Burhams, "Single-Bus Keyboard Control for Digital
1975.
Musical Instruments," JAES, Vol. 19, No. 10, p. 865; Nov., 1971.
K. Huehne, "Programmable ROM's Offer a Digital Approach to
R.W. Burhams, "Simplified Educational Music Synthesizer,"
Waveform Synthesis," EDN, Aug., 1972.
JAES, Vol. 19, No. 2, p. 127; Feb., 1971.
B. Hutchins, "B-004 Sourcelist of Electronic Music and Musical
R.P. Ceely, "A Composer's View of MITSYN," AES Preprint
Engineering," EN, 1975.
No. 811 (M-l), Oct., 1971.
B. Hutchins, Musical Engineer’s Handbook, (EN address) 1975.
H. Chamberlin, "Fourier Series Waveform Generator, Part 1,"
B. Hutchins, 'The Frequency Modulation Spectrum of an
EN, Vol. 5, No. 39, p. 2; May, 1974.
Exponential Voltage-Controlled Oscillator," JAES, Vol. 23, No. 3,
J.M. Chowning, J.M. Grey, L. Rush, & J.A. Moorer, Computer
p. 200; 1975.
Simulation of Music Instrument Tones in Reverberant Environments,
B. Hutchins, "Application of a Real-Time Hadamard Transform
Stanford University Dept, of Music Report No. STAN-M-1; June, 1974.
Network to Sound Synthesis," JAES, Vol. 23, No. 7, p. 558; 1975.
J.M. Chowning, 'The Simulation of Moving Sound Sources,"
B. Hutchins, "Digital Harmonics 1, Waveshaping 2," EN, Vol. 2,
JAES, Vol. 19, No. 1, p. 2; Jan., 1971.
No. 12, p. 5; Sept., 1972.
J.M. Chowning, 'The Synthesis of Complex Audio Spectra by
B. Hutchins, T. Mintner, & C. Anderton, "Digital Harmonics 2,"
Means of Frequency Modulation," JAES, Vol. 21, No. 7, p. 526;
Sept., 1973. EN, Vol. 2, No. 13, p. 12; Oct. 1972.
J.M. Chowning, "Stanford Computer Music Project," NW, B. Hutchins, "Analog Delay for Musical Engineering," EN, Vol. 7,
No. 1; 1972. 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 L. Rabiner 8c B. Gold, Theory and Applications of Digital
processing; April, 1975. Signal Processing, Prentice-Hall, N.J.; 1975.
F. Itakura, & S. Saito, "Digital Filtering Techniques for Speech L. Rabiner 8c C. Rader, editors. Digital Signal Processing,
Analysis and Synthesis," in Conf. Rec., 7th Int. Congr. Acoustics, IEEE Press; 1972.
Paper 25C No. 1; 1971. J.C. Risset 8c M. Mathews, "Analysis of Musical Instrument
Ey. Jansson, St J. Sundberg, "Long-Time-Average-Spectra Tones," Physics Today, Vol. 22, No. 2, p. 23; 1969.
Applied to Analysis of Music," Acustica, Vol. 34, No. 1; Nov., 1975. J.C. Risset, "Computer Study of Trumpet Tones," Bell Tele¬
L. B.W. Jolley, Summation of Series, Dover, N.Y.; 1961. phone Lab, Murray Hill, N.J.; 1966.
P. Knowlton, "Capture and Display of Keyboard Music," P. Samson, "Digital Signal Synthesizer," Systems Concepts,
Datamation, P. 56; May, 1972. San Francisco, Cal.
S. Kriz,' "A 1,6-Bit A-D-A Conversion System for High Fidelity P. Samson, "Digital Synthesizer—Brief Functional Description,"
Audio Research," ifeEE Symposium on Speech Recognition, p. 278; Systems Concepts, San Francisco, Cal.
April, 1974. P. Samson, "Digital Synthesizer—Programming Specifications,"
P. Lehman, "Harmonic Structure of the Tone of the Bassoon," Systems Concepts, San Francisco, Cal.
JASA, Vol. 36, No. 9, p. 1649; Sept., 1964. S. Saunders, "FM The Easy Way," Carnegie Mellon University
V. Lesser, D. Fennell, L. Erman, & R. Reddy, "Organization of Computer Science Dept 8c Xerox PARC; 1974.
Hearsay II Speech Understanding System," IEEE, Vol. ASSP-23, No. 1; R.A. Schaefer, "Digital Generation of Equal Temperament,"
Feb., 1975. IEEE, Vol. AASP-23, No. 4; Aug., 1975.
T. Letowski, "Difference Limen for Nonlinear Distortion in M. Schroeder, "Natural Sounding Artificial Reverberation,
Sine Signals and Musical Sounds," Acustica, Vol. 34, No. 2; Dec., 1975. JAES, Vol. 10, p. 219; 1962.
H. Lincoln, editor. The Computer and Music, Cornell M. Schroeder, "Models of Hearing," IEEE, Vol. 63, No. 9;
University Press; 1970. Sept., 1975.
J. Link, Theory and Tuning: Aron’s Meantone Temperament R. Schumacher, "Self-Sustained Musical Oscillators," paper
and Marpsurg’s Temperatment “I”, Tuners Supply Co., Boston; 1969. delivered at the 91st meeting of the Acoustical Society of
B. Lin, & A. Peled, "A New Hardware Realization of High America; April, 1976.
Speed Fast Fourier Transformers," IEEE, Vol. ASSP-23, No. 6; J. Sennott, "Efficient Digital Conversion of Audio Signals,"
Dec., 1975. AES preprint No. 970 (M-4); Sept., 1974.
H.C. Longuet-Higgins, & M.J. Steedman, On Interpreting Bach W. Slawson, Syntal II; A Speech Oriented Computer Synthesizer
m Machine Intelligence VI; B. Meltzer, & D. Michie, editors, Revisited, Dept, of Music, University of Pittsburgh, Pa.
Edinburgh University Press, Edinburgh; p. 221; 1971. W. Slawson, "Vowel Quality and Musical Timbre as Functions
D. Luce, "Description of a Real-Time Multipartial Waveform of Spectrum Envelope and Fundamental Frequency," JASA,
Analyzer-Synthesizer," AES preprint No. 611; 1968. No. 43, p. 87; 1968.
D. Luce, "Dynamic Spectrum Changes of Orchestral Instru¬ G.W. Small, "Synthesis of the Musical Scale Using Non-integer
ments," JAES, Vol. 23, No. 7; 1975. Frequency Division," JAES, Vol. 21, No. 4, p. 261; May, 1973.
D. Luce, & M. Clark, "Physical Correlates of Brass Instrument G.W. Small, "Rate-Feedback Binary Counters in Musical Scale
Tones," JASA, Vol. 42, p. 1232; 1967. Generation," JAES, Vol. 21, No. 9, p. 702; Nov., 1973.
M. Mathews, The Technology of Computer Music, M.l.T. Press, L. Smith, "Score—A Musician's Approach to Computer Music,"
Boston; 1969. JAES, Vol. 20, No. 1; Jan./Feb., 1972.
M. Mathews, et. al„ "Computers and Future Music," Science, L. Smith, "Editing and Printing Music by Computer," JMT,
Vol. 183, No. 4122; Jan. 25, 1974. p. 292; Fall, 1973.
N. Mathews, 'The Digital Computer as a Musical Instrument," S. Smith, "Computer Music in 1972," Computers and Automa¬
Science, Vol. 142, p. 553; 1963. tion, Oct., 1972.
M. Mathews, 8t J. Kohut, "Electronic Simulation of Violin G. Steinke, "Experimental Music with the Subharchord Subhar¬
Resonances," JASA, No. 53, p. 1620; 1973. monic Sound Generator," JAES, Vol. 14, No. 2, p. 140; April, 1966.
C. A. McGonegal, L.R. Rabiner, 8c A.E. Rosenberg, "A Semi¬ S. S. Stevens 8< H. Davis, Hearing—Its Psychology and Physiology,
automatic Pitch Detector," IEEE, Vol. ASSP-23, No. 6; Dec., 1975. Wiley, N.Y.; 1938.
N. J. Miller, "Filtering of Singing Voice Signal from Noise by T. G. Stockham, Jr., "A-D and D-A Converters: Their Effect on
Synthesis," Ph.D. thesis; University of Utah, Dept, of Computer Digital Audio Fidelity," AES Preprint No. 834 (D-1), Oct., 1971.
Sdence; May, 1973. W. Strong 8i M. Clark, "Synthesis of Wind-Instrument Tones,"
NJ. Miller, "Pitch Detection by Data Reduction," IEEE, Vol. JASA, Vol. 41, p. 39; 1967.
ASSP-23, No. 1, pp. 72-78; Feb., 1975. W. Strong, & M. Clark, "Perturbations of Synthetic Orchestral
F. R. Moore, & M. Mathews, "Grove—A Computer Program for Wind-Instrument Tones," JASA, No. 41, p. 277; 1967.
Real-Time Music and Sound Synthesis," Communications of the ACM, R. Talambiras, "Digital-to-Analog Converters: Some Problems in
Vol. 13, No. 12; Dec., 1970. Producing High Fidelity Systems," Computer Design, Vol. 15, No. 1,
J.A. Moorer, 'The Optimum Comb Method of Pitch Period p. 63; Jan., 1976.
Analysis of Continuous Digitized Speech," IEEE, Vol. ASSP-22, No. 5, J.C. Tenny, "Sound Generation by Means of a Digital Com¬
p. 330; Oct., 1974. puter," JMT, No. 7, p. 24; 1963.
J.A. Moorer, "Music and Computer Composition," Communica¬ H. M. Tremaine, Audio Cyclopedia, Sams, N.Y.; 1969.
tions of the ACM, Vol. 15, No. 2; Feb., 1972. D.E. Walker, 'The SRI Speech Understanding System," IEEE,
J.A. Moorer, On the Segmentation and Analysis of Continuous Vol. ASSP-23, No. 5, Oct., 1975.
Musical Sound by Digital Computer, Stanford University Dept, of L. Wedin 8i G. Goude, "Dimensional Analysis of the Perception
Music Report No. STAN-M-3; May, 1975. of Instrumental Timbre," Scand. Jour. Psych., No. 13, P. 228; 1972.
J.A. Moorer, The Synthesis of Complex Audio Spectra by S. White, "On Mechanization of Vector Multiplication," IEEE,
Means of Discrete Summation Formulae, Stanford University Dept, of Vol. 63, No. 4; April, 1975.
Music Report No. STAN-M-5; Dec., 1975. T. Winograd, "Linguistics and the Computer Analysis of Tonal
J.A. Moorer, On the Loudness of Complex Time-Variant Tones, Harmony," JMT, Vol. 12, No. 1, p. 2; 1968.
Stanford University Dept, of Music Report No. STAN-M-4; Feb., 1975. J. Zingheim, "Introduction to Computer Music Techniques,"
NUMUS West, No. 4; 1973. (computer music issue) EN, Vol. 6, No. 42, p. 1; Aug., 1974.
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, ABBREVIATIONS USED, AND ADDRESSES
Prentice Hall; 1975.
ACM Association for Computing Machinery
W. Piston, Counterpoint, W.W. Norton Publishers.
W. Piston, Orchestration, W.W. Norton Publishers. Acustica, S. Hirzel, Stuttgart 1, Birkenwaldstr, 44,
G. Plitnik, & W. Strong, "Digital Filter Technique for Syn¬ Postfach 347, Germany.
thesis of Bassoon Tones," JASA, No. 47, p. 131; 1970.
AES Audio Engineering Society
R. Plomp, 'Timbre as a Multidimensional Attribute of Complex
Tones," Frequency Analysis and Periodicity Detection in Hearing, ASSP IEEE Transactions on Acoustics Speech and
edited by R. Plomp 8c G.F. Smoorenburg; A.W. Sijthoff, Leiden; 1970. Signal Processing
Page 34 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 August, 1976
224
Communications of the ACM
1133 Avenue of the Americas, NYC 10036
IT WAS NOT
Computer Design A “POLISH JOKE”
Box A, Winchester MA 01890
Computer Journal There was a "digital calculator" cartoon on page 18 of the
British Computer Society April, 1976, issue of DDJ that included text: "Made in Hong Kong . . .
29 Portland Place Polish versions also available." Our production manager, who is an
London, England WIN 4AP outstanding publications production person but not a computer
phreaque, questioned our including a cartoon with an apparent racial
Computers and Automation [now called Computers
and People] slur. We explained the rather in-group pun that was involved, and put
Berkeley Enterprises, Inc. his mind at rest. It occurred to us that., although no one else has com¬
815 Washington St, Newtonville MA 02160 mented on the cartoon, it might be appropriate to explain the pun:
Datamation Handheld calculators use either infix or postfix processing for
Technical Publishing Co. accepting a sequence of data and arithmetic operators. If infix pro¬
1301 South Grove Ave., Barrington IL 60010 cessing is used, there must be some explicit means for indicating the
sequence in which operations are to be performed. Commonly, paren¬
ED Electronic Design
theses are used (e.g., 3 x (4 + 5) indicates that the + at the right is
50 Essex St., Rochell Park NJ 07662
to be performed before the x at the left).
EDN EDN Magazine Postfix processing, however, is a very classy parentheses-free
270 St. Paul St., Denver CO 80206 system in which the order of data and operator entry determines the
EN Electronotes order of operations (e.g., 4 5 + 3 x produces the same result as the
203 Snyder Hill Rd„ Ithaca NY 14850 preceeding infix-coded example). The latter example says. Store 4 then
Store 5 then Add last two elements stored and store the result then
IEEE Institute of Electrical and Electronics Engineers
345 E 47 St., NYC 10017 Store 3 then Multiply the last two elements stored. Postfix processing
is one of the major concepts utilized in information processing by
JAES Journal of the Audio Engineering Society digital computers. It possibly rivals the concept of an electrically
60 E 42 St
Lincoln Big, Room 929 stored program, or the application of Boolean algebra to digital
NYC 10017 circuitry in its importance to computers.
Why all this monologue on postfix processing? Because, more
JASA Journal of the Acoustical Society of America
often than not, computer professionals refer to this as "Polish postfix"
American Institute of Physics
335 E 45 St., NYC 10017 or simply "Polish" processing. It is so-named because its inventor was
a Polish logician named Lukasiewicz. So, you see, if anything, the
JMT Journal of Music Theory cartoon's pun was really a racial compliment.
Yale School of Music
Yale University
New Haven CT 06520
CLASSROOM USE OF HAND-HELD CALCULATORS
NW NUMUS West
Box 135, Mercer Island WA 98040
Perspectives of New Music The November 1976 issue of the ARITHMETIC TEACHER,
Box 231, Princeton NJ 08540 published by the National Council of Teachers of Mathematics, will
Science focus on instructional uses of hand-held calculators. Copies of this
American Association for the Advancement of Science issue will be available for distribution at a special price of 50 cents
1515 Massachusetts Ave. N.W. each under the following conditions:
Washington DC 20005 1) . The minimum order is 100 copies.
Scientific American 2) . Ail 100 copies must be sent to a single address.
415 Madison Ave., NYC 10017 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.
AMBIGUITY ABOUT ADVERTISING To place an order, or for further information, contact Charles
R. Hucka, Director of Publications Services, NCTM, 1906 Association
The "Do You..." editorial in the preceeding issue men¬ Drive, Reston, Virginia 22091, or call (703) 620-9840.
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 REPORT ON ELECTRONIC HAND CALCULATORS IN EDUCATION
that we carry articles about commercial products. To clarify
this point: The body of the Final Report on the National Science Foundation
supported project, "Electronic Hand Calculators: The Implications for
The "Advertising" policy inside the front cover has been
Pre-College Education," is now available from the ERIC Information
corrected to reflect our current position. The preceeding Analysis Center for Science, Mathematics, and Environmental Education,
policy was a tentative one, chosen when we first began. 1200 Chambers Road, The Ohio State University, Columbus, OH 43212.
We had been automatically reprinting that information in each The 350-page complete Final Report will be available later in 1976 from
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 DON’T PRINT ITEMS IN DDJ
this, however. It is provided as information for our readers.
THAT APPEAR ELSEWHERE
These articles often concern items that are unusually good
deals for hobbyists (and thus worth special mention), or Dear Dr. Dobb,
items being offered by very small companies that are too Please concentrate on infromation not available elsewhere—if
small to afford the hefty advertising rates charged by the PCC moves toward "blue sky," DDJ should move toward practicality:
other publications. Draw a sharp line and find out what your readers really want. MOST
Incidentally, you might note that we try to include ad¬ OF ALL: don:t waste space on something that has already been
dress, telephone, and single unit pricing in these articles printed nationally—we have that.
(when we know them); information often missing from James R. Zimmerman 7835 Querida Lane
paid-for advertisements. 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
needs with reasonable economy. 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);
On July 1, 1976 Pacific Telephone will implement a new phone
you can ‘oversubscribe’ your system and users schedule themselves or compete
tariff in major cities in California, on all business telephone service, for open phone lines.
called Single Message Rate Timing. SMRT, as it is known, will
Alternative No. 1 Probably the cheapest way to change your phone set-up
assess a supercharge of approximately 1 cent per minute on all to minimize the affects of SMRT is to convert all outside phone lines to run
calls over five minutes. That means that the dial-up, time-sharing through your school or district PBX switchboard, (assuming you have one.)
setup that you presently enjoy for a cost of $7.50 a month, or If you do not have a PBX, now may be the time for the school system to get
thereabouts, to make local computer calls could increase to as much one. Such a move should greatly reduce your normal monthly phone charges
as $80 a month, based on a 6-hour day usage. HELP! 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.
SMRT has come to California. How long will it be before it ZAP’s The only problem we have discovered is that there may not by space on your
you? How does SMRT work? For any call that exceeds 5 minutes PBX to accomodate additional lines. Each computer line requires TWO PBX
a one message unit supercharge will be added to the bill for each extensions (one at computer, one at the terminal). But do check this
5 minutes after the first five minutes. Since one message unit alternative out. We can’t estimate how much, but can guarantee you sub¬
currently costs Californians 5.75 cents, that means that a previously stantial dollar savings.
"free” 30 minute call will cost 28.75 cents under SMRT; a sixty
Alternative No. 2. The phone company will likely suggest a Lease Line running
minute call, 63.25 cents. Projecting hours into days, a school that from each terminal directly to the computer (picture a pair of wires running
uses dial-up service for 3 hours a day, 20 days a month can expect directly between the two sites). Lease lines are charged a fixed monthly fee
additional phone charges of $36.00 each month; a six hour day, for 24 hour usage that is based on distance from point to point. For the
$72.00 for EACH TERMINAL IN OPERATION. Can your budget short distances we needed (no more than 12 miles), lease line costs ranged
afford that? 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 Lease lines avoid SMRT costs, and, depending on distances, should save
hardware acquisition, location and use decisions. you substantial money. However, you lose the flexibility of dial-up from any
SMRT makes local microprocessors in each school look phone and it is unclear how you can “oversubscribe” a lease line communication
like a real wise decision. Think about it! system.
Alternative No. 3. Instead of using two Telco modems for $50/month, you can use
In our area, the phone company has computer printouts projecting lease lines as suggested in Alternative 2 but buy or lease modems from a company
the implications of SMRT on your bill. Ask to see this information, other than the phone company. Such modems may cost as little as $200 each and
it is scary. In all honesty, I must admit that this is one new phone may lease for as little as $25 /month (for both). If you already own modems and
charge that does make sense. Those of us that use dial-up service for 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
computer data, all day long, are not using the equipment "as intended."
your equipment supplier to see if your hardware is convertible for use on lease
Therefore, we ‘tie-up’ valuable equipment for long periods without lines. We found our equipment was usable after a minor field modification
paying our fair share of the costs. SMRT will even all this out.... made to our connecting cables.
and then some!
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
THINGS TO DO 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
There are many things you can do to avoid or minimize the affects of SMRT. Division Multiplexer (FDM). The FDM allows multiple terminals to share one
Your greatest problem will be getting all the right answers to your questions phone line by varying the frequency at which the data is transmitted. Teletypes
(We have not provided all the answers, just some suggestions.) 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
CAVEAT EMPTOR. Do not expect to get all the “right” “unscramble” the data. The FDM units cost about $450 each, more than the
answers from the local phone company staff. They provide standard lease line modems. But you only need one phone line. Therefore, your
a limited array of services in the area of data communications. initial cash outlay may be greater, but in the long run you will save money be¬
The right solution for you may not be in their array. You cause phone costs are reduced dramatically.
must ask Telco competitors about services they offer that fill
Terminals can even be located in different classrooms using FDM’s. There is even
the void of services provided by Telco.
the possibility of using ONE lease line connecting a number of schools and a
Page 36 Dr. Dobb’s Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 August, 1976
226
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
(FDJ
MULTIPLEXERS Dear Dr. Dobb,
I am trying to combine low cost computers, and alter¬
FIGURE 3
native sources of energy. As a start, I'm collecting programs
number of terminals. Technicians clam this Multi-Point lease line is not any about energy use. Any programs or ideas, in any language,
more of a problem from a maintenance standpoint than a single point-to-point that readers could donate would be appreciated. If I get
set-up. Thus, more phone money can be saved. enough of a response, these will form the basis for a book.
FDM capability is NOT available from the phone company at this time. Don’t
Possible topics: Solar Parabolic Reflectors, Windmill
expect them to respond too warmly to your questions about this effective way Design, Thermal Loss, and Storage; Units Conversion (BTU,
to share lease lines and save money. KW-HR), Battery Charge and Discharge, Flywheel Momentum,
etc.
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
Keep up the good words,
topic we have investigated. Each call we made raised new confusion and new Rich Roth 1052 Clark Ave
questions. Each “situation” at each new terminal site created a new set of Mountain View
problems, with a whole new set of answers.
QOOOOOOOOOOOOCA 94040
What is the answer? It all depends on A COMMENT ON THE DIGITAL GROUP
Where you are in the greater US
Your computer
What equipment you already own Dear Dr. Dobb (alias Jim Warren?) July 15, 1976
how much money you have I have (had?) a Digital Group 8080 system, which after
Should you spend big money NOW to save big money later being built didn't work quite right, and I had to send it back
Should you spend less money now and have a for de-bugging. It didn't care to read in the cassette tape, an
bigger phone bill forever...
initialization process needed to give it life. The still-born has
and
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
SOLID STATE SALES version of TBX-TVCOS and would dearly love to see it run,
SLIPS ORDER FOR 9 MONTHS but alas, (sob) I wait....
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 Dear Dr. Dobb , May 1, 1976
is PCC policy, equal space (in fact, much more space) is being pro¬ As I see it, the hobbyist could use three different
vided for the response. publications.
In response to Jim Warren's note to the members of the Southern 1. a monthly news magazine similar in content to the
California Computer Society: present PCC. This would be written for the average hobbyist
In reply to your letter May Dr. Dobb’s this is following my con¬
who just wants to know what's going on in general terms
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 without being inundated by a mass of technical detail. It
July) could include:
1. Your letter is unfair, inaccurate, and at best intemperate. If you Reprints of articles of general interest from the club
really wanted to be constructive you could have called me first — or newsletters.
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 News items related to home computers.
Ward Spaniol and Art Childs re: distribution of your products. He was Articles on social implications of computers (although
told it was SCCS policy to handle no such material including its own Creative Computing seems to be doing this pretty well).
magazine. Interface. They referred him to me since I had made arrange¬ Letters of general interest.
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
Suggestions, gripes, comments, and blue-sky stuff.
if he could send some (on consignment). I was not familiar with all General information on new hardware, software, etc.
the material but suggested he send what he thought was appropriate. Listings of useful or novel applications programs or
Just before the meeting, 12 cases of papers arrived. I could not fit computer games.
it all in my apartment or car.
3. On the day of the April meeting, I brought what I could fit into
Indices of selected non-technical or semi-technical articles,
my car 6long with the many supplies for the meeting). etc. from other publications.
Jim arrived at the meeting unannounced and proceeded to make a Classified ads.
45 minute presentation on Dr. Dobb’s. The members were fascinated
with his excellent talk, however it would have been better and more 2. A monthly or quarterly technical journal similar to
considerate if the Program Committee had been consulted about it so DDJ. This would be written for the hard-core hobbyist who is
that the talk could have been scheduled, announced, and not have so grimly determined to cram all the features of OS-360 into his
disrupted two other excellent speakers.
Seeing the interest, I apologized to Jim because I thought I hadn't homebrew machine. It could include:
brought 'Dr. Dobb’s (in fact I had and they were later uncovered and Schematics from the club newsletters.
available). It was the seeming lack of the pre-shipped Dobb’s which I Indices to selected technical articles, etc. from other
believe may have really upset Jim.
publications.
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 Letters of technical content.
inadvertently sojd. A few (perhaps 12-20) were stamped as mentioned Listings, hopefully legible, of useful non-applications
(in type approximately the size of a headline on the May letter). If I software.
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 3. An annual catalog or directory of reference-type
was intended and Jim made no mention of it at the time. information. This could include:
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 Computer clubs.
as the remaining material. I trust you will refund the difference. Hobbyist-oriented publications (e.g., BYTE).
6. This unfortunate indident is perhaps the most dramatic example I've Computer stores and distributors.
teen of the need for an ombudsman (consumer advocate) service. Manufacturers of computers, kits, and other hardware.
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 Brief descriptions and prices of all current stuff of use
material is distributed for which no timely or effective rebuttal is to hobbyists and commercially available.
available.
7. I think your technical work is worthwhile, clever, imaginative, and Jim Day 17042 Gunther St.
creative. It is my heartfelt with that all of these good virtues will Granada Hills CA 91344
soon be matched with responsibility, accuracy, and a respect for the
feelings, reputation, and good name of others. We're tryin'. Let us know, in a year, if you think we've
I, too, am working very hard to bring the knowledge and exper¬
succeeded. -JCW.
ience of computing to our friends. I would like to hear directly
what the readers think of this matter.
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 being the largest and in boldface print. 5. As of July 29th, we have
original phone conversation. It was very explicitly stated, however, received $259.75 and publication returns with a wholesale value of
m a later conversation (referred to in point 5). 3. I had been in¬ $70.60. We assume that the remaining $29.40 will be forthcoming.
vited to fly down and attend the meeting by Ward Spaniol and Art We also assume that the publications were sold for their retail value
Chilis. By agreement with Art, who was running the Announcements and the resulting profit was handled in a manner acceptable to
Period between the two major speakers, I spoke briefly about the the SCCS. If any excess payment is received, it will be immediately
Journal. Due to my own longwindedness and a flood of questions, refunded. 6. We agree that there should be consumer advocates. We
I took almost 15 minutes. Others with other announcements both can think of many more dramatic examples of their need than this.
proceeded and followed me, thus it is unlikely that I disrupted the 7. Rather than avoid controversy, we prefer to present statements
morning or afternoon speakers. 4. Stamping the give-aways as being from both sides (or all sides), and let our readers make up their own
complimentary copies was a good idea. The copy I have, however, minds.
was stamped with two different stamps, one stating ‘Compliments of This particular controversy, however, has taken up enough space.
Louis G. Fields’ and the other being a 7-line stamp with Lou’s name THE END.
Page 38 Or. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park CA 94025 August, 1976
228
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
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 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
Do you use tape recorded music in your home music reverse mode. The system is/is not in record mode. The tape
system? Do you have a number of bands or "cuts” record¬ is/is not at BOT or EOT. The counter can easily be made
ed on a single tape? Wouldn’t it be dandy to be able to binary by having tape spindle rotation cause a strobe every
play only desired cuts without having to manually hunt for turn or half turn or quarter turn, etc. Your computer can
each one, and then have the tape automatically rewound then accept these strobes and maintain its own position
when a side is finished? You can do it with your personal counter. Note that the position counter and BOT/EOT sens¬
computer; a project uniquely appropriate for home computing. 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.
How you can use the system: Mount the desired stereo
Given the number of audio cassette units being used for
tape on the tape transport. Tell your computer which bands
mass storage of digital data on home computers, it should
are to be played. You may instruct that they be played in
be obvious that we can record digital information, as well
a different sequence than they appear on the tape, and you
as analog -- music (or voice) - information on tapes. In
may have any cut(s) played more than once. Tell your
computer whether or not to rewind the tape when finished. fact, both digital and analog information can be intermixed
on the same tape. All that needs to be done is to encode
Then, do nothing but enjoy the concert of selected pieces
the digital information in such a manner that it can easily
until the computer is finished with the tape. The computer
will use the fast-forward / fast—reverse facilities of the tape be discriminated from the analog information. (Quick! One
transport to move between selected cuts that are nonse¬ of you analog types. Send the implementation details in a
quential. fool-proof encoding scheme for this context - digital signals
The following notes outline how such a system can be on the same tape as music signals.)
implemented at nominal cost with currently available com¬ Thus, digitally-encoded identifiers can be recorded in
ponents. the blanks preceeding the music bands. (Figure 2). By
recognizing and then reading that identifier, the computer can
Pertinent points about how a good tape system can determine which band is about to pass over the playback head
work: The tape transport can move the tape forward, and can switch it to your hi fi system or skip it, depending
fast forward, reverse and/or fast reverse, and can stop the on your instructions to the computer.
tape. Playback and recording can only be done during the Since the read head is retracted during fast tape motion,
“forward” mode. The read/write head is retracted from the it is not possible to read band identifiers while skipping
tape during “fast” modes. A position counter is provided, bands in fast-forward or fast-reverse mode. Therefore, the
but is based on rotation of a tape spindle rather than linear position counter must be used to approximately position the
tape motion (that is, a counter increment represents much tape to a desired cut. In order to do this, the computer
less tape length at one end of a tape than it does at the must know the position counter value for each cut. When
other end). There are beginning-of-tape/end-of-tape (BOT/ a tape is initially recorded, such information is accumulated
EOT) sensors that operate either by sensing a metalized and then placed in a “Tape Directory” at the beginning of
strip attached to each end of the tape, or by photo-elec- the tape (Figure 3). Your computer can then read in the
trically sensing a reflective or transparent leader/trailer strip Directory whenever it begins to play a tape.
on each end of the tape. Recording is performed by first
erasing with an erase head, and then recording with a read/ Hardware details: Your computer must have control
write head. The erase head and the read/write head are over the system. It must be able to select tape motion:
adjacent, spaced well under an inch apart. forward, fast-forward, fast-reverse, and stop. It should also
The usual format for a tape (Figure 1) is for there to be able to control whether the signal from the read head
be a BOT leader, followed by several seconds of unrecorded is allowed to go to the hi fi system, and should control
or “blank” tape, followed by some number of bands or cuts whether a music signal can reach the record head during
of music — each separated by several seconds of blank tape, initial tape recording. And of course, it must also be able
and finally terminated by some length of blank tape followed to control the recording of digitally encoded information
by the EOT trailer. on the tape.
Your computer must also be able to monitor all
*A realizable fantasy is a project that has not yet been done, but outputs from the tape system. It must be able to see BOT/
it's time to do it. That is: (1) It's interesting, entertaining, and/or EOT conditions. It must be able to monitor tape spindle
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¬
motion via a rotation-periodic pulse or strobe. It must be
quire great expertise (except, perhaps, that which can be furnished able to monitor the analog signal coming from the read head
in the design article). (3) It is well within the limits of current so that it can maintain its constant vigil for digitally en¬
technology and current techniques. Send us your realizable fan¬ coded information. It should also be able to monitor re¬
tasies, so that we may share them with others.
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 the preceeding cut), and make note of the value of the po¬
able to sense whether the “write lock” tab has been punched sition counter for later use in the Directory.
out of the rear of a mounted tape cassette. There should be several end-of-cut signals available
for the user. One signal will indicate that the current cut
Software details: Two basic software modules are in¬ is completed and that the next cut is immediately forth¬
volved: A tape initialization module, and a tape playback coming, as is the case when continuously recordings multi¬
module. ple-band phonograph record. In this case, the computer will
The tape initialization module functions as follows, record the cut number and quickly switch back to hi fi
interacting closely with the human user. The user will input for the record head, leaving the tape in forward mode
mount a blank tape on the transport, at least partially re¬ and record mode.
wound, and tell the computer the maximum number of A second signal will mark the end of the current cut,
bands he expects to record on the current side of that but will indicate that there will be some delay before the
tape. The computer will look for BOT. If BOT is not next cut is ready for recording. The computer will respond
seen, it will do a fast-reverse until BOT is sensed; then stop. by halting the transport after recording its next: cut number.
It will then switch to “record” mode with no signal going The start signal used for the first cut on the tape can
to the record head, and go forward until BOT is no longer then be used when the user is finally ready to continue re¬
sensed, indicating the end of the leader and the beginning cording.
of the recording area of the tape. At this point, it will set A third signal specifies that recording for that tape is
its tape position counter to 0. It will continue to go forward, completed. In this case, after recording the “next cut” num¬
erasing the tape as it proceeds, for the amount of tape ber (which serves only as the “end” flag for the preceding
space it will later need to record a Directory for the maxi¬ cut), the computer will disable recording, fast-rewind the
mum number of bands (already specified). It will then tape until BOT, enable digital recording, move forward until
record a digitally encoded “1” to indicate that Band 1 is BOT disappears, and record the Directory. The Directory
about to appear on the tape, stop the tape leaving it in will contain a sequence of entries indicating the values of the
“record” mode, and inform the user that it is ready for position counter the beginnings of each of the cuts.
the first cut of music. Nitty gritties: While recording the digital cut numbers,
The user may then begin recording. He must signal the computer should monitor the hi fi output to, if possible,
the computer when to start recording and when a cut has detect any music that begins prior to the computer complet¬
been completed. When he signals that recording is to begin, ing the recording of the cut number. In this case, it should
the computer will place the tape transport in “forward” inform the user of a possible loss of the first part of the
mode, and switch the hi fi output into the record head. music.
Whenever the user signals the end of a cut, the computer Whenever the tape is moving forward, the computer
will disable hi fi input to the record head (to avoid any should monitor the EOT flag and should output the appro¬
possible “noise”), digitally record the number of the next priate error message if EOT is reached.
cut on the tape (which also serves an an “end” flag for Software control over recording should take into
Fi g-ure 1
F10-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 strobe, BOT and EOT sensing, “Side A” sensing, write-
the erase head, whenever it is appropriate to do so. lock tab sensing, “cassette in place” sensing, and, of course,
The tape playback software module functions in a a PC board that facilitates digital control over all of the
fairly obvious manner. First, it must accept a command tape transport facilities.
sequence from the user, specifying which bands are to be Pricing is great for the experimenter: Triple I has a
played. When the computer notes the termination of this special introductory (one per customer) package for
command sequence, it will then disable tape output to the $189.00. It includes two fixed-speed Phi-Decks (normally
hi fi system, hunt for the beginning of the tape, move $94.50 each), either one of the stock heads, an erase head
forward and input the directory, setting the tape position (normally $2.50), all of the sensors (normally $1.25 to
counter to 0 at the beginning of the recording area of the $7.50 each), the tape position strobe (normally $7.95),
tape. and the control board (normally $99.50). That’s not all,
To play the desired cuts, it looks at the next cut (or though. Since this introductory package is for prototyping
first cut, initially) to be played, looks in the directory that and experimentation, it also includes a box that provides
it now has in memory for the position counter value, and manual remote control over the system (normally $89.00),
compares the desired value to the current value of the po¬ and an AC power adaptor (normally $7.50). Similar
sition counter. If the counters are significantly different, introductory packages are available using the variable-
it uses the fast mode to position the tape. It positions speed unit ($199.00 for the package), and the super deck
the tape to a few counts preceding the desired count, then ($299). Shipping charges are prepaid if the package price
switches to forward motion and monitors the playback head is sent along with the order.
output -- which, thus far, remains disconnected from the hi Notes: Although these packages provide all of the
fi system. When the computer sees the digitally encoded electronics for control and sensing of the system, they
cut number, it compares it to the desired cut number, and contain no read/write electronics. That is, the wires come
(presuming a match) switches the playback head output to out from the record/playback head, are terminated at some
the hi fi system as soon as the cut number has passed. wire-wrap posts on the edge of the PC board, and it’s up
The computer then begins continuously monitoring to the user to take them from there. Incidentally, these
the signal from the playback head, looking for the next are fully-assembled systems; they are not kits.
digitally encoded cut number (that will indicate the end of Although these packages contain two transports and
the cut being played). As soon as it sees the first part of one control board, the board is not designed to control
a digital encoding, it disables the output to the hi fi to two transports. The packages were designed to allow
avoid having the listener hear glibble. It continues to pro¬ engineering prototyping in which one team builds a
cess the user’s command sequence in the obvious manner. transport into a larger system which another team simul¬
taneously develops the controls, software, additional
Available hardware: Though we assume that there electronics, etc.
are several tape systems that provide the necessary capa¬
bilities for the described interface, we will detail the only Bells and whistles: There are some options available in
one about which we have explicit information. this computer controlled system that have not yet been
mentioned. We will mention them only briefly to whet
Triple I, a division of the Economy Company located your appitite.
at Box 25308 (1901 N. Walnut), Oklahoma City, OK The design that has been outlined implicitly
73125, (405) 528-8444, manufactures three models of the assumes that cuts are identified only by number, and
Phi-Deck cassette tape transport. The least expensive vers¬ that the user will specify cuts to be played by entering
ion has a single, fixed speed for recording and playback their numbers in the desired sequence. There is no
and is quite adequate for this project. The mamma trans¬ reason to be so primitive, however. With appropriate
port is a variable-speed t unit (which really isn’t useful in additions to the tape initialization software module, and
this context), and the daddy transport is also a variable- the playback software module, one could easily, input a
speed unit with a King Kong motor on it. Other than for name for each cut or piece of music. This information
the variable-speed facility and the motor size, all three could be stored in the directory along with the tape posi¬
transport subsystems offer the same capabilities. tion number. Appropriate software could then list an
The standard speed for the fixed-speed transport is index to the recordings on a given tape, and such record¬
1-7/8” per second. Other speeds are available via a drive- ings could be chosen to be played by entering their
pully change. All transports have fast-forward/fast reverse names or cut numbers.
modes that can run the length of a 60-minute audio tape Primitive tape editing is another feature that could be
in less than 30 seconds. Engaging and disengaging the added simply by expanding the software. More compre¬
record/player head and the pinch roller is accomplished hensive editing facilities would be possible if two trans¬
with a DC motor, rather than a solenoid. The transports ports were under computer control.
have three other motors: take-up, rewind, and capstan Thus far, this discussion has concerned the control
drive. of a music system. The cuts, however, could as easily con¬
Our understanding from the local Triple I represen¬ tain spoken information instead of music “information.”
tative is that there are two stock options for recording/ For instance, it could contain instructions, questions, and
playback heads that come with the system: a 4-channel answers. Coupled with devices for human-response input
analog head, or a 2-channel digital head. The purchaser (keyboard, joy stick, push buttons, etc.), it would be
may choose either of these; their cost is included in the ideal for many types of CAI (Computer-Aided Instruction)
price of the unit. Alternatively, the buyer may choose to applications.
have the factory mount and align any other standard head The design that has been specified assumes that the
that he may wish to furnish. There is no charge for fac¬ record/playback head is retracted from the tape whenever
tory installation of any standard head. Thus, the buyer the tape is being transported in “fast” mode. If this is
can have as high a quality head as he can afford. not the case — if the head remains in “read” contact
Available system features include: tape position 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 APPLICATION NOTES GIVE EXCELLENT
directory of 'ut position numbers, for the computer INTRODUCTION AND COMPREHENSIVE
should be able to locate a desired cut simply by watching
for the cut number to appear as the tape is racing across DISCUSSION OF FLOPPY DISC DRIVES
the read head. Such an alternative would provide some
We understand that PERTEC, 9600 Irondale Ave¬
interesting timing or encoding problems, since the cut
nue, Chats worth, CA 91311, has two Ap Notes that pro¬
number would be recorded at one speed, but read at a
vide a complete and detailed discussion of floppys in a
quite different (and probably varying) speed.
form that is understandable to the floppy novice (novice
floppyite?). Their titles are “Soft Sector (Hard Sector)
Gosing notes: This has been a design article; not an
Formatting for FD400 Flexible Disk Drives,” however
implementation article. We encourage you to send in
our information is that they provide a really complete
follow-up articles, detailing your specific implementations,
discussion of floppy drives that is essentially applicable
once you have them operational. The slogan is, “Let us
to any model from any manufacturer.
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 PC CARD HOLDS 60 MEGABYTE REMOV¬
several reasons: Most importantly, we wish to get this ABLE MAGNETIC STORAGE AT LESS THAN
idea out into the public domain — before someone else
HALF THE PRICE OF DIGITAL CASSETTES
stumbles on it, and rushes off to the patent office. We
are also publishing it in this somewhat incomplete form
Micro Communications Corp., 80 Bacon St., Waltham,
because these realizable fantasies are as much your pro¬
MA 02154, (617) 899-8111, is manufacturing a tiny tape car¬
jects as they are ours. We assume that you gain as much
tridge drive, small enough to be mounted on a PC board.
enjoyment from invention as you do from construction.
It takes a wee, endless-loop tape cartridge that has a maxi¬
We have left room for your own invention — for you to
mum capacity of about half a megabit. The drive will run
contribute your own good ideas and additions to this pro¬
at 3”/second. The tape is capable of 2400 flux-changes/
ject. We hope that you will share them with us, so that
inch. Thus, using ratio encoding involving three flux
we may share them with everyone else.
changes per bit, one can obtain 800 BPI, and 2400 baud
And, a final thought: Has your spouse been com¬
transfer rates. That would load a 16K byte program in
plaining about the money and time you have spent on
less than a minute.
your weird little computing machine? Have your friends
Little Hidden Gotchas: MCC only manufacturers
been asking, “Yeah, but what can you do with it?” If
the drive and cartridges. The buyer must supply power
so, perhaps this project will quell their unkind remarks.
(12v), motor speed control and analog R/W electronics, as
Be the first one on your block with a computer-controlled
well as the digital interface. But, the price is right: In
stereo system!
5000-piece quantities (all right, which of you end-users is
about to turn into a manufacturer?), the drives run from
DENTAL PERSON REQUESTS around $22@ with a 100-hour toy motor to $36@ with a
1000-hour Swiss motor. And, certified tape cartridges in
DATA ON OUR OVERBYTE CONTROL that quantity run $1.80 to $2.20@ depending on length.
Incidentally, the cartridges weigh less than a half-ounce
Dear Jim, 7-25-76 apiece. Two can be mailed, First Class, for 13 cents (this
Saw John Craig’s report of your new publication in month).
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. MOTOROLA COMPETITOR FOR THE Z-80
Thanks.
Dr. Jim Smith, Orthodontist 111 N. Regency Dr.
Motorola is reliably rumored to be working on their
Drs. Lauder, Smith & Gordon Bloomington IL 61701
6809, which supposedly will give Zilog’s Z-80 some stiff
Orthodontics, Ltd. (309) 662-5331
competition. More details when we have ’em.
We understand that the Senate Finance Committee We hear “from a reliable source” that the Army has
has reported out a tax “reform” amendment which will, awarded $25,000 to a computer games company for devel¬
effectively, prohibit your deducting expenses incurred in opment of war games equipment.
maintaining an office at home . . . even if you are a Also, a year or so ago, the Journal's Editor (who is a
completely independent consultant with no office else¬ long-time computer consultant) was contacted concerning
where. If you have an opinion on this matter, you a systems position in developing a project at the Hunter-
should write your Senator and Representative immedi¬ Liggett Military Reservation south of Monterey, California.
ately. (In fact, you could use your computer and Selec- They were installing multiple PDP-lO’s plus about ten
tric to type “individual” copies for all the key Congress¬ PDP-ll’s (as remote data concentrators for sensors in the
men.) 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 a $395 Kit
by Jim C. Warren, Editor question about the speed that would be required in an
8080 for real-time—on the fly—speech synthesis. At that
Intelligible, useful, voice synthesis by home computers time, it appeared that, for real-time synthesis, an 8-bit hard¬
is now available to hobbyists at reasonable cost. This means ware multiplier might be required for calculation of the
that, not only can your computer talk to you and your byte sequences that cause words to be synthesized. Check
spouse (who, admittedly, may not want to hear it), but it with Lloyd Rice for more definitive information. Under
can also talk to your pre-reader and beginning-reader chil¬ any circumstances, the system can still be used, however.
dren. Thus, besides being fun and useful in a general con¬ One simply generates the desired byte sequences; places
text, your home computer can also become a significant them in memory; then transfers them to the output
educational tool for young children. locations as rapidly as desired. This way, no complex cal¬
There are several manufacturers of computer speech culations would be required during the actual speech output.
synthesis subsystems, two of which are marketing specifically For such non-real-time operation, however, about a kilo¬
to hobbyists, and one of which is worthy of specific attention. byte of buffer space is required for each second of speech.
Of course, another alternative is to use a faster processor
The best system we know of for hobbyists—i.e., such as the 4 megacycle Z-8C about to be available from
financially feasible—is nearly available from CompuTalker CroMemCo (please see DDJ, Vol. 1, No. 7). A processor
Consultants, Post Office Box 1951, Santa Monica, CA that is faster than your old, plain-Jane 8080 might allow
90406; (213) 392-5230. This brand new product has an real-time synthesis calcuations without the need for
introductory price of $395 assembled. (Note: There is a hardware multiplication.
significant possibility that this price will be available only There is much more that could be said about this
for a short time and will then increase, as seems to be unit, including details of how it works, but that is the
characteristic of vendors to the hobbyist community. Once topic of future—and past—articles. We refer you to two
the demand for a good—or bad—product grows to where articles by Lloyd Rice: The first one appeared in the
personnel must be hired to handle the increased workload, April, 1976 issue of Dr. Dobb’s Journal, “Hardware &
prices often must be raised to pay for the added wages, Software for Speech Synthesis.” The second one, though
plant facilities, etc.) written earlier, appeared in the August, 1976, Byte,
The first Computalker model is an assembled unit “Friends, Humans, Countryrobots: Lend Me Your Ears.”
that mounts on a hobby-standard-bus board (that is, it Incidentals: Lloyd Rice has been working in the area
plugs into an Altair/IMSAI/Polymorphic/etc. bus). The of speech synthesis for some time. He holds a B.A. in
unit includes the PC board, two pre-assembled and tested linguistics, and is currently working with the research com¬
CT-1 Synthesizer modules, and less than a dozen IC’s for puters in the Phonetics Lab at UCLA.
buffering, decoding, DAC, etc. The bus interface requires CompuTalker is another one of those very small
nine 8-bit, output ports. The block of nine ports is relo¬ companies that has developed an exciting product for the
catable via switches on the board. The following seven hobbyist community. The product has been developed, as
ports should be reserved for future facilities. The unit much for the love of the project and the gadget, as for
requires +8V at a maximum of 250 mA (regulated on the purpose of making money. We are very impressed with
the board to +5V), and ± 16V at 85 mA (on-board regu¬ Lloyd’s expertise in the area of speech synthesis. We are
lated to ± 12V). The audio output is via an RCA-type also very impressed with his ethical standards and are quite
phone jack or directly wired to the board. It supplies a sure that he will back his product and “do right by his
IV output, peak-to-peak, into a 10K ohm load resistance. customers.” We tend to be much more impressed by peo¬
Units that will plug into other, non-hobby-standard buses ple who are doing something because it is fun and exciting,
are being designed, including interfaces to the GA-16 and than we are by those who are doing something to make
DEC PDP-12. money. We believe Lloyd fits the first category and rec¬
ommend him and his product to you.
Page 7 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 September, 1976
234
ory requirements for production of reasonable sentences. VIDEO TERMINAL TECHNOLOGY DOES
Incidentally, we would be pleased to publish more HAVE A PHONE!
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. After publishing the article on the 64-character
by 48-line TVT for $499.95 [DDJ, Vol. 1, No. 6],
The third system that is of potential interest to we received a dozen or so requests for the vender’s
hobbyists is from Votrax, 4340 Campus Dr., No. 212, phone number, which we had neglected to include in
Newport Beach CA 92660; (714) 557-9181. (This is the the article. Here it is: (408) 255-3001 or (408) 734-
address for their Regional Manager, John McDaniel; not 2244, ext. 5179 (ask for Ralph Butler).
for their home offices. However, John has expressed an
active interest in the possible hobby market.) The last RELIABLE 110 CHAR PER SEC PRINTER
word we had was that Votrax was considering making (34 CHARS/LINE) FOR $298, UNIT QUAN¬
their unit available in kit form for under $1000 (see DDJ, TITY
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 Victor Comptometer Corp., Components Dept., 3900
applications. In their commercial form, they run around N. Rockwell St., Chicago, IL 60618, (312) 539-8200 has
$3000-up, unit quantity. They are considering stripping out a Model 130 matrix printer that prints about eleven times
all the turn-key garbage—such as audio amplifier, volume as fast as a TTY. The printer has been around for about
control, power supply, fancy cabinet, etc.—and peddling two years; over 150,000 of them are now in use. It car¬
the guts for a much more consumer-tolerable price. If they ries a one year parts and labor warranty to the original
do, the kit-form would consist of four heavily potted, purchaser. In single-unit quantity (1-9), the price is $298;
highly proprietary boards along with the necessary instruc¬ 100-unit quantity is priced at $183.25@. It takes roll
tions for interfacing, adding power, providing input, and paper from 2-9/32” to 3-3A” wide by up to 220’ long.
using the output. The four boards contain hardware pho¬ The user must supply power for motors and sole¬
neme generators. We have heard the units “speak they noids. The user must also supply solenoid print signals
are quite intelligible and provide reasonably good-quality and paper feed control, but, then again. . .micros do that
speech. They also require only very limited and simple-to- so well. Characters can be either 5x7 or 9x7. The 130
use software support. We will say more if/when Votrax will only print 34 characters per line, but, at that price
tells us that they are going to market a reasonably priced and speed, maybe it’s worth it to tape two pieces of
kit. If they ever do, we expect to strongly recommend paper together to get 68 characters on a line.
their well-proven and easy-to-use unit.
There are two other speech synthesis systems worthy A DOT-MATRIX PRINTER WITH 80-COLUMNS
of, at most, very brief mention here—primarily for the sake FOR AROUND $305???
of completeness.
The first is a custom LSI component that has a
We are currently tracking down the details on a
limited and fixed vocabulary. This contrasts with the pre¬
printer rumored to become available from Practical Auto¬
ceding systems which allow English speech synthesis limited
mation, Inc. (address info when we get it) in about the
only by the capacity of the computer’s memory to store
middle of September, designated the DMTP-6, which will
the byte-strings that specify the words and sentences. This handle 8!4” paper, print 80 characters per line, and be
LSI component was developed by Dr. Forrest Mozer, a priced slightly above $300. Our guess is that the price
physics professor at the University of California, Berkeley. is for OEM quantities, however, who knows. . .
The custom chip was implemented by Silicon Systems,
Inc., in Santa Ana, CA. It will generate 24-64 complete PHILADELPHIA HOME COMPUTER SOCIETY
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 At last Philadelphia has its own computer society. Started
CA 94304; (415) 492-2626. It uses a TMS1000 micro¬ as the result of a letter in Byte, the initial meeting drew
processor from TI, and the entire unit sells for $395. over 80 interested individuals. So far we have had demon¬
The second system is a voice response system for the strations of Sphere and the Digital Group computers. Plans
PDP-8, PDP-11, and NOVA computers that uses a “solid- are for field trips to the Moore School of Electrical Engineer¬
state speech synthesizer.” It is available from Interface ing (birthplace of the ENIAC) and to nearby MOS Technol¬
Systems, Inc., 462 Jackson Plaze, Ann Arbor MI 48103, ogy. Our newsletter, TJie Data Bus, provides meeting informa¬
and sells for $6,750 to $47,500. Need we say more? tion as well as articles on hardware and software, book reviews,
One final “maybe” system: We have heard that some letters, cartoons, etc. Interest is mushrooming and all of us
crowd calling themselves “Master Specialties” is peddling here have visions of computer grandeur.
voice synthesis equipment, but we have been unable to find Dick Moberg 404 S. Quince St.
out their location, the details of their product, or their Philadelphia, PA 19147
pricing. Anyone know where they are—or know anything
else about them, for that matter?
MARIN COUNTY COMPUTER GROUP
Page 8 Dr. Dobb's Journal of Computer Calisthenics 8t Orthodontia, Box 310, Menlo Park, CA 94025 September, 1976
235
AN EXCELLENT
ENGLISH-TO-PHONETICS TRANSLATOR FOR
BUY & SELL NEWSLETTER
PHONEME SPEECH SYNTHESIZERS
There is a very useful little typewritten news¬
Joe Mockus 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
Automatic Translation of English Text to Phonetics by Means of
Letter-to-Sound Rules.
D.H. Bettle, 24695 Santa Cruz highway, Los Gatos
Honey Sue Elovitz, Rodney W. Johnson, Astrid McHugh, and John CA 95030. It is published every third Wednesday, is
E. Shore. sent by First Class mail, contains 6 to 12 pages in
Naval Research Lab Washington DC 21 Jan 76. 101p. NRL-7948 each issue, and has a very fast turn-around—all ads
AD-A021 929/5WC Hardcopy $5.50/Microfiche $2.25 received as late as the preceeding Saturday are in¬
[available from National Technical Information Service, 5285 Port Royal Rd. cluded in the issue for that month. The publisher
Springfield, VA 22161] states that they put out 17.3925 issues per year, but
we assume that is merely an approximate figure.
Speech synthesizers for computer voice output are most useful when Subscriptions are SI/four issues, or S3.75/18 issues
not restricted to a prestored vocabulary. The simplest approach to un¬ (= one year), or $7/36 issues.
restricted text-to-speech translation uses a small set of letter-to-sound rules,
For those wishing to advertise, there are both line
each specifying a pronunciation for one or more letters in some context.
rates and word rates, and there are reduced rates for
Unless this approach yields sufficient intelligibility, routine addition of
ads running in multiple issues. There are also much
text-to-speech translation to computer systems in unlikely, since more
elaborate approaches embodying large pronunciations dictionaries or
lower rates for non-commercial ads than for commer¬
linguistic analysis require too much of the available computing re¬ cial ads. As far as we can tell, there are no display
sources. The work described here demonstrates the practicality of ads; it’s all text, which means much more meat in
routine text-to-speech translation. A set of 329 letter-to-sound rules much less space.
has been developed. These translate English text into the International We highly recommend this publication to those
Phonetic Alphabet (IPA), producing correct pronunciations for approx¬ interested in buying or selling goods for the com¬
imately 90% of the words in an average text sample. Most of the puter hobbyist.
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
USED EQUIPMENT
technical approach used and the support hardware and software de¬ INFORMATION BROKER
veloped. It gives overall performance figures, detailed statistics showing
the importance of each rule, and listings of a translation program and
The Computer Equipment Information Bureau,
a program used in rule development.
Box 163, Boston MA 02117; (617) 247-2290, has
listings of used computer equipment. The listings are
A NERVOUS SYSTEM free to buyers, and are available to sellers for a fee.
FOR THE HUMAN RACE R. Ferrera is the President of the Bureau.
Page 9 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 September, 1976
236
CASSETTE REPOSITORY, TRAC, OTHER LANGUAGES, NEW HOME COMPUTING RAGS
CP/M, AND PROCESSOR TECHNOLOGY PRAISE
In the event that you have blindly bypassed the full-page
Dear Jim, July 20, 1976 ads in a number of ad-carrying magazines, two new hobby
1) Many hobbyists may now be starting to do some heavy periodicals are in the offing:
stuff in assembly language. With things like the Tarbell cassette,
the capacity is now there to be able to store the 100K or so Personal Computing, bi-monthly, $8/yr ($6/yr before
needed for a fair-sized program. However, a lot of hobbyists are Sept.1976), first issue October-November, Benwill Publ. Corp,,
stuck for a means of hard copy. Even if they have a teletype, 167 Corey Rd., Brookline, MA 02146
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 Microtrek, monthly, $10/yr, first issue: September, 1976
useful thing to have. What am I getting at? We need a place Schneider Publ., Inc., Dows Bldg., Cedar Rapids, Iowa 52401
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.
[Iowa???]
In any case, getting such a tape would entail the same problems Both will be your usual, run-of-the-mill, exciting hobby rags,
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
filled with display ads, articles, letters, etc. PersonaI Computing
back a lineprinter listing. I don't know if anyone could feasibly is touting an interesting twist: each issue will carry a full-
provide this sort of service, but if it is possible, it'd be nice. Of color, poster-sized computer graphic...a center-fold for computer
course, you'd have to standardize the format of your cassette- phreaques. Betcha neither one of 'em will ever devote 15 or
but then, standards are necessary.
Speaking on the subject of standards, I think DDJ would
20 pages to complete documentation & annotated source code
make a good forum for discussion of such things. If we’re ever listings of systems software, though [toot of own horn].
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 WE WILL TRY TO GIVE THE INFORMATION THAT YOU
Lib). One thing I did notice in Computer Lib is that "Moores
WANT
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 . . ." Ever get excited over a widget that's advertised as costing
I'm not sure whether this means you can try your hand at "only $1195", only to find out that price is for 100 units to
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¬
OEMers and excludes some essential component? We have.
grams for it. Did you notice anything about this in your deluge We find it quite irritating to read an advertisement or
of paper from him? article in a trade magazine or commercial [ad-carrying] mag
3) I'm very interested in your idea for small Pascal, even that avoids giving crucial information and forces us to call
though I've never heard of it. But then, almost anything would
or write for the desired details...and often an additional
be better than BASIC. One thing I'd like to see is some sort of
list-processing language. BASIC is primarily oriented towards sales pitch. The other day, we suddenly realized that we
numbers, when a good deal of computer applications deal with could systematically correct that problem as far as Journal
text. That's where TRAC would be nice. articles were concerned. Since we aren't paid for publishing
4) I recently visited a person who had CP/M (the much
product information, we are not constrained by advertisers'
heralded floppy disk operating system) up and running. I was
quite impressed. One thing that wasn't mentioned was that the desires.
system also includes an assembler. I also hear there is a com¬ Therefore, to the extent possible, we will make it a
piler BASIC up to running with the system. I didn't get too much policy to publish desirable product data such as: single-unit
of a look at it, but I've been given the opportunity to learn to use
price, address, phone, availability, warranty, limitations, etc.
it, and with this guy's permission. I'll send in my comments.
5) A word of praise here for Processor Technology's VDM. We won't always succeed...particularly in the case of "hot
I've had a chance to compare Polymorphic's video board with the stuff" that comes to us just before going to press...but we
VDM (from a user point of view). When I first saw the Polymor¬ will try.
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 keep the programs separate.
basic, for instance, has the VDM driver built right in. BASIC also has the TSAU and TLOD (or TLOAD - I'm
That driver is in itself interesting. It allows you to clear not sure) commands which allow user-written cassette (or
the screen and turn the cursor on and off, as it should, but it disc) loading programs to be accessed.
also allows you to change the rate of output. While the VDM
It also allows assembly language subroutines to be
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 accessed via the CALL and ARG functions. ARG(x) passes
2 characters per second, and 9 is a maximum of 2000 lines per the argument x (as a 16-bit integer) to the subroutine. Y =
minute. In addition, the output can be stopped at any time by CALL (7000) assigns Y the value returned by the subroutine
depressing the spacebar. Any other character pressed then at 7000 decimal.
resumes output. This BASIC has all the features of "standard" BASIC,
This driver also works very nicely with MITS BASIC. with the exception of strings. It includes READ-DATA,FOR-
All in all, the VDM is a fine product. It makes program NEXT loops, SIN-COS-TAN functions, as well as the LOG and EXP
development. functions.
6) Comments on Processor Tech's 5K BASIC: To start I do have one objection to it: when you press CR
with, it's not really 5K BASIC: it needs 6480 bytes (decimal). (without putting anything on the line), it gives you a bad syn¬
It does have the feature of allowing more than one program in tax error.
memory at a time; it does by the MEM command. When this Well, I've rambled on fo' quite a while now, and so
command is issued, BASIC asks for a starting and ending ad¬ I'll quit here.
dress. Your program is put in this zone. It also asks you if Computer power for the people!
the program is loaded. Note that BASIC does not concern
Paul Holbrook 6104 Craterlake Ct.
itself with addresses. It blindly trusts you to give it address
(alias Cap'n Quirk) Pleasanton, CA 94566
which are within your available memory. You also have to
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 PLESSEY DOES RIGHT BY HOBBYISTS
A major manufacturer offers significant
A catalog of computer supplies, accessories, connectors,
cables, etc. is available "for the professional minicomputer discounts to hobbyists on memory
user" from Minicomputer Accessories, Catalog Sales Dept., & a 1000 cps tape reader
[1015 Corporation Way] P.O. Box 10056, Palo Alto, CA
94303, (415) 969-5678. Plessey Memories and Plessey Microsystems is the
first large manufacturer, traditionally marketing its
products to major industrial purchasers, that is
FEW FAULTY LSI-ll’s FOUND
making its very significant GSA (U.S. General Ser¬
DEC (Digital Equipment Corp.) shipped more than 3000 vices Administration), and Educational discount
LSI-11's in about six months. In that period, only 63, (2%) of schedules available to hobbyists.
them were returned as defective. DEC tested those that were They offer a 1000 char-per-second paper tape read¬
returned and, in only 20 (0.6%) cases, agreed that the micro¬ er, including electronics and buffering, to hobbyists
computer was in fact, defective. (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-
AN INTERVIEW WITH THE INVENTOR OF THE PDP-11 roller to move the tape, rather than a much more
wearing sprocket feed. For another, their phototran¬
sistors are infrared-sensitive to provide maximum
The May, 1976, issue of a trade magazine called Research/ coupling efficiency, and the light sources are LED’s
Development carried an interesting 5-page interview with Gordon that never need adjustment.
Bell: "Computers-Past, Present and Future". It presented some They also offer a core memory module that is
quite interesting historical information about computer develop¬ directly usable with National’s IMP-8, IMP-16, PACE,
ments, particularly about the work done at Digital Equipment and SC/MP micros, and can obviously be interfaced
Corporation. It also illustrated some of the viewpoints and to most other microprocessors realtively easily. The
background of Dr. Bell, DEC'S V.P. of Engineering, and a very fact that it is core means that it is nonvolatile', your
well known computer engineer and researcher. 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
NEWSMANSTOWN, PA SYSTEMS GROUP: is $1500 in single-unit quantites, and $1365 in 10-14
SORTIARIi quantity. They are really “doing right” by hobbyists.
The core memory modules require a controller.
Gentlepeople, 28Apr76 Plessey markets their controller card (already assem¬
We are an embryonic, two-man company located in a bled, of course) to hobbyists, etc. for $360 ($500 to
relatively backward section of Pennsylvania. Our principal industry, unit quantity). This controller is rather
interest is in hardware maintenance and software support for flashy: it provides for memory expansion, data save,
personal and very small business applications. We're also write protection, and address partitioning. Units are
interested in industrial controller systems. Our house machine available 30 days ARO (After Receipt of Order).
will be a Sphere system with 36K core, and a line printer. Incidentally, Plessey policy is to not publish prices,
Sincerely, but rather, to give quotes for specific orders to
David J. Beard Rd. 1, Box 192C specific customers. The Plessey rep was less than over¬
Sortiarii Newmanstown PA 17073 joyed about our plan to publish these prices . . . but
Minicomputer Systems & Applications (717) 949-6848 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,
NYC STORE: some of their greedier industrial customers might
HOBOKEN COMPUTER WORKS apply some unpleasant pressure.
We applaud Plessey for their fair-minded decision
to market their products to the hobbyists on the same
Dear Dragon People, 12 May 1976
price schedule they use for educational customers. We
The Hoboken Computer Works is another small,
believe it is a logical policy, and is certainly a policy
friendly computer store in the metropolitan New York area.
that benefits the home computer user, who derives
A stroke of luck (and a memorable name) put us right on
no financial gain from his or her system. If you also
the front page of the New York Times last week.
approve, why not drop them a note of thanks.
... I can't end this note without expressing my person¬
Plessey, 1674 McGaw Ave., Irvine CA 92714, has
al appreciation for what PCC has been doing for the last few
22 national and international sales offices.
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 HOT IDEA
opening up these musty rooms to a little fresh air.
Yours, Why doesn’t someone interface an LSI-11 bus to a
Bob Radcliffe 56 - 2nd St. hobby-standard (Altair/IMSAI) bus? Then people
Hoboken Computer Works Hoboken NJ 07030 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
Z-80 DETAILED IN ELECTRONICS
PROPOSAL: A BOARD TO EXPAND 8080
INSTRUCTIONS 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-
Dear Jim, August 13, 1976
gin, and R. Ungermann, three of the principals in Zilog. Inciden¬
We plan to make a Hobbyist-Standard (Altair/IMSAI com¬
tally, Faggin used to work at Intel, where he designed all Intel
patible) card which will add new commands and addressing modes,
micros from the 4004 through the 8080.
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 GERMAN COMPANY ENTERS KIT MARKET
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
Siemens AG, a West German electronics manufac¬
there is the basic question is it worth it, since existing soft¬ turer, has introduced a computer kit for around $200.
ware would have to be modified to take advantage of it. It uses a SAB 8080A micro, and includes a 256 word
Please respond to: EPROM, some static RAM, a clock generator, and other
Walt Ferris 2311 Middlefield Rd. minor tidbits.
Palo Alto, CA 94301
(415) 321-1231
1. Block Move. 2 byte op-code, parameters such as starting International Microsystems, Inc. (address presumed
addresses and ending address are in memory. Speed: unwanted by hobbyists) is trying to peddle an assembled
2 or 3 clock cycles per byte vs 21 for Z-80. microcomputer for $1,195.00. That’s a reasonable price
2. Block Search for one character. 2 byte op-code, 1 byte until you find out that all it has is a 4040, IK bytes of
operand to search for, other parameters in memory. RAM, sockets for IK of PROM, a simple front panel, a
Speed: 1 clock cycle per byte vs 21 for Z-80. simpler system monitor, and a “Test PROM” program
3. Block Search for a character suing, of programmable . . . and that’s all.
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 COMPUTER CHESS TOURNAMENT
memory.
4. Block search for any of up to 16 different bytes. You Entries are being solicited to the Seventh U.S. Computer
program a table in memory; when one is found it Chess Championship to be held October 19-21, 1976 in con¬
jumps to a programmed address. 2 byte op-code. junction with the ACM Annual Conference in the Hyatt
Speed: 1 clock cycle per byte of area searched. Regency Hotel, Houston, Texas. A f our round Swiss style
tournament is planned with the first round on Tuesday,
5. Program-relative Addressing for all 8080 jumps, calls and
October 19 beginning at 8 p.m., and the final round on
memory-accumulator instructions. 2 byte op-code.
Thursday, October 21 at 8 p.m. The field will be limited
Jumps and calls have 2 byte displacement, + 32K to 12 teams. David Levy, International Master from England,
bytes range, and speed of 16 clock cycles vs 12 for will serve as tournament director.
Z-80. The mem-acc group could be either 1 byte or For further information and for an application form,
2 byte displacement. 1 byte gives +127 byte range. write to Dr. Monroe Newborn, School of Computer Science,
Speed would be 17 clock cycles for 2 byte, 13 for McGill University, Montreal, Quebec, H3C 3G1, Canada.
1 byte.
6. Indexed Addressing for all 8080 jumps, calls and memory-
accumulator instructions. Index registers are in memo y addresses or 16 & 16. Speed: 12 cycles vs 13 for
1 propose 3 and the maximum is 4 with a 2 byte op¬ ST A or 7 for ADD.
code. With a 3 byte code it is unlimited. The index 8. Programmable interval timer with associated programmable
registers are 2 byte and the displacement (operand) is vector address when that interrupt comes. 2 byte
2 byte. Speed: 16 or 17 clock cycles. op-code. The parameters could be in memory or be
operands. There could be 3 or 6 channels. Man¬
If we reduced displacement to +16K we could use
agement would be a problem.
one bit to specify yes or no to auto-increment. If
we reduced displacement to +8K, we could use the We could have a memory address go high if each
two bits to specify: timer was in use; or we could have an automatic
Indexed, 2 byte operand dispatcher if the parameters were in the operands,
Indexed, auto-increment, 2 byte operand and have the memory address go high if all the
Indexed, auto-decrement, 2 byte operand timers were in use.
Indirect,, use index register, 1 byte operand. 9. Hardware Random 9-bit number; could have also a ran¬
7. Two-byte memory-accumulator commands (base page or dom decimal number, or a random packed decimal
zero page type). 1 byte special op-code. 1 byte number.
operand which has to specify both operation and 10. Hardware multiply, etc., etc.
address; thus we can have 8 operations and 32 11. What else?
Page 12 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 September, 1976
256K BYTE CORE MEMORY FOR $6500
Page 13 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 September, 1976
240
UNIVERSITY OF CALIFORNIA REQUESTS Physical and Packaging
SUGGESTIONS ABOUT STAND-ALONE Two physical versions. The first might be built into a desk or
tabletop and would be consdiered non-portable. The second would
COMPUTERS FOR ITS 120,000 STUDENTS be able to be carried by one person for short distances at least.
Thus, this version would be "portable." The first version could
The University of California is soliciting advice from vendors be located in groups of five or more in a monitored room, while
of computer equipment and programs. This is an opportunity to the second could be used in individual offices and classrooms.
consult with us in advance rather than tell us what we should have Since the majority of the machines would not have attached
done after the fact. We are earnestly seeking your best thinking printers, an additional system type with the capability of produc¬
prior to considering the publication of a Request for Proposal ing hardcopy from the screen image would be needed. It would
which will establish our direction for the near future. This docu¬ have the ability of printing a page at a time, on request of the
ment is not a Request for Proposal (RFP) but rather an invita¬ user, from his removable storage medium. Both graphic and
tion to share with us your ideas and recommendations whether character printing would be required. This machine could be
another version of the One-on-One with special software/firmware
they be basic or "blue sky." Your response to the Request for
or an entirely different peice of equipment.
Information (RFI) is voluntary and does not commit either you or
All equipment would operate from standard 110v 3-wire
the University.
circuits. No special electrical circuits are to be needed.
The University wishes to dramatically improve the system of Main ta inability
delivering computing capability to the 120,000 students on the The system would be modular in design, allowing for board
nine campuses and associated sites. Instructional capability has replacement to correct any failure. Adequate stocks of spare
been provided through both batch and timesharing services utiliz¬ boards for each campus should be available. Board repair would
ing existing large computers housed in a computing center located be done by the vendor.
on each campus. In the last two years, several of these centers Alternatives
have installed timesharing minicomputers which allow for the Although this is primarily a request for information for a
connection of several (typically, 16 to 32) remote terminals, single user system, the University does not wish to prejudge the
through which the student may write programs in BASIC or thoughts and development that many vendors may have already
access prewritten programs provided by an instructor ("Course¬ devoted to the delivery system problem. Since our desire is to
ware"). These minicomputer-based timesharing systems have have the most cost-effective solution possible within the state of
proven to be very effective and they have the capability of expand¬ the art, a discussion of the pro and con of the above suggested
ing the services to meet academic needs. Such systems are flexible approach compared with other possibilities would be most help¬
enough to meet a very large percentage of the needs of a very ful. For example, a little more software or firmware might pro¬
large percentage of the students. duce a cost-effective solution that might use a small number of
We feel that, now, with the changes being brought about by keyboard devices clustered around a single processor. But the
improvements in chip technology and the corresponding explosion questions of file handling, of portability, and communications
in microcomputer capability, even lower cost solutions may be costs would need to be addressed as a minimum.
possible without giving up anything in capability. With any time¬ Another possible alternative might sllow sharing of disk
sharing system, unless all terminals can be hard-wired, there will storage and common, read-only firmware while providing a micro¬
be additional costs (beyond the computer and the terminals) for processor with each local unit.
modems and communications lines. Technology has been producing
orders of magnitude improvements in price/performance of com¬ If you possess original ideas which might not satisfy the
puters, but communications costs are rising. Therefore, it seems requirements anticipated in our possible RFP, the response to the
prudent to search for solutions regarding delivery of computing RFI would be your opportunity to influence our determination of
which do not depend vitally on communications. Such a model constraints to be incorporated into the RFP, so that your particu¬
might be found in a single-user machine with the following design lar configuration would be eligible for consideration. This is
goals: important, since it is expected that only those responses to the
Desirable Features RFP which satisfy State qualifications therein will be accepted,
Interactive programming capability in some language such as i.e., no alternative proposals. Any concept which might run the
BASIC or APL. The implementation should include the advanced risk of having to be in the alternate proposal category should be
features of the language. presented as a'response to the RFI, not the RFP.
User space approximately equivalent to that provided in While there is no monetary renumeration for responding to
multi-user timesharing systems. this document, efforts expended should provide plans and text-
User-removable read/write storage capability with "reason¬ material needed for your response to the anticipated RFP. Hope¬
able" retrieval times, (diskette, cassette, videodisk, etc.) fully, the uniqueness and enormity of our problem will be suf¬
Both character and graphics capability on some screen ficiently tantalizing to serve as an inducement to stimulate your
medium. Appropriate software (firmware) extnesions to deal with thinking.
graphics. Responses to this RFI should be returned by October 1,
Full typewriter or teletypewriter keyboard facility. Addi¬ 1976.
tional controls for cursor positioning for alphanumeric as well as Questions
graphics use. Technical questions should be addressed to:
Some form of course-writing software/firmware such as Charles W. Stevenson
PILOT or DIALOG. Manager, Computer Planning
Editor program for preparation of programs to be executed Systemwide Administration
on another computer. University of California
Provisions for attachment of communications interface. This Room 192, University Hall
should provide two functions: Berkeley, CA 94720
1. Easy interface to a host computer. (415) 642-0393
2. Ability to service input data streams from other devices such Procurement matters will be handled by:
as laboratory experiments. Robert Brilliant
Extension Capability Purchasing Agent
Additional or alternative language capability. University of California
Software/firmware for word processing applications. 2405 Bowditch Street
Color screens for graphics. Berkeley, CA 94720
Provisions for attachment of high-quality impact printer of (415) 642-0881
reproduction quality as output from word-processing applications.
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 Kits
by Jef Raskin nology’s [PT] Software Kit No. 1 omits, for example, the
Box 511, Brisbane CA 94005; (415) 467-4674 POP PSW instruction. It will just not assemble it. This
explains the otherwise mysterious SP EQU 6 in the source
Let it be known: the computer for everyman is not here. listings of the Bytemover and in Tarbell’s listings. They
Yet. Caveat Emptor! The tempting price tags you see in must have used the same assembler. You needn’t under¬
the ads are a mere drop in the wallet. These are not stand assembler to understand the problem. An assembler
Heath kits - you need a good bit of understanding of is primarily a program that takes memorable abbreviations
electronics and some about software to use them. Either and translates them into the more easily forgotten num¬
that or a lot of patience and good learning habits, or a
bers the machine feeds on. There is supposed to be a
friend who knows what you don’t. Of course, you could
mnemonic for each instruction that the machine can use.
wait until Heath does come out with one [which should
A mere check of the instruction list published by (say)
happen by the time you read this.—Editor]. Intel would have discovered the fact that some were
Having bought and built the two biggest names in missing from the assembler. That such a check was not
the personal microcomputer field, the Altair 8800 and the made is indicative of the malaise that the personal com¬
IMSAI 8080, I know that there is much to praise. Both puting industry is suffering: Lousy quality control.
machines now run perfectly, reliably, and perform within
their specifications as well as any computer I have worked Quality control must be worked at. I always work
with. They are dependable. I have purchased memories oh computers with my friend, partner and critic, Doug
from Processor Technology, Dutronics, Solid State Music Wyatt, another professional computer nut. Whatever I do,
and Cromeco, a total of 52 Kilobytes, and all have oper¬ from circuit design to documentation to soldering 100
ated, once debugged, without error, week after week. pin connectors into mother boards (yech!), he checks.
The same is true for my IMS parallel I/O board, the Whatever he does, I check. We use a magnifying glass,
MITS SI0 and 2-SIO serial boards, the PT Video board
a dictionary, anything that will help uncover errors. And,
and so on. They all work. But, very few of them would
surprise, our stuff works the first time and keeps on
have worked if I had not had prior electronics and com¬
working! RULE: You can’t catch all your own errors.
puter experience.
Before I go on to details, I should mention that I
The Dutronics 8KLST memory shows good quality
write from the point of view of someone who wants to
control. It can be assembled according to the instructions
use the computers in various applications; not learn about
and work, right off. Though 9 of the memory chips had
computers per se. I chose the kits because they are
problems (well, pretty good quality control) the 180 or so
cheaper than anything else currently available (which
others were fine. While perhaps a step down from Cro-
means until approximately next week) in the way of true
memco’s sheer professionalism in board layout, documen¬
general purpose computers. If you want to be forced to
tation and QC (quality control), Dutronic’s instructions
learn about hardware the hard way, the inadequate docu¬
were clear and current for the board, and the schematic
mentation (and just plain bad writing) that comes with
was useful and easy to follow. I wonder this: If one or
almost all the personal computing products and the poor
two companies can do it right and stay competitive, why
workmanship and parts of a few, will make you prema¬
can’t the others? Is it because the consumers are letting
turely wise, and give you a bad disposition.
them get away with it?
I will begin with an exception: the Cromemco Byte-
A Kind Word for the Palo Alto (California) Byte
saver. The quality of the printed circuit is up to the best
Shop is in order here. The nine bad chips were
commercial practice. The assembly manual did not lie
instantly replaced with new ones-of course, we had
once, and their software documentation was quite adequate,
bought the memory boards there. And with service like
including a complete how-to-use-it for the novice and a that we’ll be back. Not all the computer stores have
source listing of the “bytemover” program. It is a study been so helpful, unfortunately.
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 Oliver Audio Engineering OP-80 A paper tape
The board was straight and true, and well laid out. It reader is a very handsome unit. The instructions were
worked the first time, and caused us no frustration what¬ not up to the same high aesthetic standards. For exam¬
ever. ple, you are told to bend the wire guides that align the
paper tape with the read head. But they come pre-bent.
On the other hand we have some amazing areas of Nothing wrong with that (it does make the kit a lot
incompetence and oversights. Never in my years of com¬ easier), but it seems to me that if Oliver (or whoever)
puting have I seen an assembler which omitted any items goes through the considerable to bend the wires for each
from the computer’s instruction set. Yet Processor Tech- 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? out over technical accuracy. Most other brands of serial
Then, too, we find comments such as “ . . . and align I/O boards do include a parallel handshaking port without
the sensor as shown below.” And we are never shown calling themselves, say, a 2SIO+P.
below or anywhere else. We are told “Install Jl.”
Let’s see. Jl is not on the parts list. On the sche¬ Now, a kudo for Processor Technology is in order.
matic? Nope. There the little bugger is, on the parts Their Video Display board (VDM-1) was easily built (even
layout! if it’s got lotsa parts) because the instructions are clear. The
construction manual even had a good step-by-step checkout
I had problems of this sort with almost every kit. procedure. It seems to be a product of a different, and
A typical kit’s parts list would tell you that there are better, company. And out PT memories all worked per¬
4 74L04’s, the schematic would call them U34, U21, U8 fectly in my Altair. Not so in my IMSAI. The memory-
and U5; the layout diagram would have them labeled protect would come on and off capriciously. There is no
IC5, IC19, IC32 and IC26; the printed circuit board hardware protect switch on the early IMSAIs. Since I am
itself would be unlabeled altogether. And, to add insult not a hardware hacker (ha!) and am entirely above enter¬
to insult, three of them will be placed with pin one ing long programs from the switches, I found the memory-
facing left and the last one with pin one facing right. protect feature less than useless, and unwired the feature
Better be awake when you assemble this one. A fla¬ from my Altair. The Processor Tech memories were ren¬
grant example is the Processor Technology “3P+S” board, dered perfectly reliable in both machines by replacing the
to which I shall return later. On this board the chips 7400 used as the meory protect latch with two jumpers.
actually occur in all four possible rectangular alignments. This also gave me five spare 7400’s.
This is pretty poor for a board that is mostly jumpers
anyway. But back to our typical kit. I should mention The Processor Tech Altair motherboard is another
that there was a little slip of paper which fell out when example of lack of care. The fundamental intent was good,
I opened the plastic bag. It said that the 74L04’s were and the board works, but there is much wasted board
actually numbered WT87-9-6221. And just for you space, and a pile of bothersome jumpers. This was due to
hackers who solder in your chips, there is an erratum too slavishly copying the original MITS board. The bus
(as usual placed at the end of the manual) saying that terminator regulator installation is a kludge. Included with
U21 is shown backwards on the parts layout. While the motherboard kit were two delrin rods with saw slots
fuming, remember that you will not only have to un¬ in them, meant to hold the various daughter boards up¬
solder the thing but that you will have to figure out by right. There was an interesting oversight in their design. A
tracing the schematic and the lands on the board whether good way to bend a stiff rod is to cut a series of slots
U21 corresponds to IC5, IC19, IC32 or IC26 on the part-way through the rod perpendicular to its long axis.
parts layout and, since the schematic is for REV 02 These slots, intended to hold the boards up, in fact cause
and the board is labeled REV 03 and the parts layout the rods to arc neatly away from the boards they are
has no REV number at all, you can’t tell if the change supposed to hold. This gives a new computer meaning to
is still necessary. For newcomers, REV usually means the word “floppy.”
“Revision.”
While I have not run into all these problems simul¬ The Tarbell cassette interface is a prime example of
taneously on any one board or kit, they all have occurred good ideas followed by sloppy implementation and negli¬
in real life (if playing with computers is real life). Inciden¬ gent documentation. A fault invisible to the naked eye—
tally, I always use sockets. plated-through holes that weren’t—plagued both my hoards.
And Caveat Emptor to you if you want three While some updated documentation I have seen gives a few
parallel ports and a serial port, and you but the PT more hints than I got with mine, nowhere are we told, for
“3P+S” board [3 parallel + 1 serial I/O board]. It works example, that to use the interface, data must be preceded
fine, to be sure (remember that I began by saying that by a start byte (3C) and then a sync byte (E6) and then
everything does, finally, work) but if you truly need an comes the data. You can dope this out from the example
8-bit port, then you will need an extra bit or so for “hand¬ program given and from following through the schematic
shaking.” For example, say a keyboard puts out eight data and reading your IC manuals but that should not be
bits. When these are all ready for the computer, the key¬ necessary. You can’t be sure from the sample program
board sends out a signal (usually called the strobe) which alone, by the way, that these details are necessary to run
tells the computer that a new character is on the data the board. They might be needed, as far as you can tell
lines. Do I hear you ask: “Why can’t the computer tell from the given program, by the particular algorithm being
that a new character is there by just noting when the used, or perhaps by some other software that Tarbell uses
character changes?” Well, just consider the South American somewhere else. Here, too, the assembly drawing did not
llama. A computer can’t tell the first “1” from the second have part values marked, necessitating much flipping back
“1”, and would think you had typed “lama” thus changing and forth from page to page during assembly. I get the
a beast into a priest. Surprising what computers can do impression from most kits that the instructions were never
these days. Anyway, you need the strobe so you take a bit tested on persons unfamiliar with the device.
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 A pet peeve: Cassettes have little tabs to break out if
function. And since the serial port also requires control you don’t want the stuff on them written over. Not one
bits and etc., you steal a few more bits . . . Anyway, the tape pre-recorded by a manufacturer, including the BASIC
“3P+S” is a good solid and flexible 2P+S with a control from MITS that I paid for, had the write-protect tabs
port. And, indeed, the instructions (quite extensive, but knocked out. Another pet peeve: Some manufacturers’
poorly organized), and the schematic all make it clear that printed circuit boards have a specially shaped land where
the third parallel port was intended from the beginning as pin 1 of each IC fits. The peeve is this: those who don’t.
a control port for the others. Once again, marketing, wins 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 IMSAI OWNERS - BEWARE OF THE MEMORY
things that make computers seem much more frustrating CLOBBERING PHANTOM!
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 You’re perking along and suddenly the machine
me show you how a bit of thoughtlessness on the part of blows up. Careful autopsy of the wreckage reveals that
the writers cost me a few hours. On page 12 (if you write a string of memory locations has been zapped to 00 or
in the page numbers yourself) you are told how to wire the 02 or 06. And this is happening several times a week.
address jumper sockets. Good. There are two, the one on The phantom strikes! I have spent nearly a month
top is called C8, and the one on the bottom, B9. I must chasing this bug and have found that the culprit is the
be dumb, because I wired the top socket on the board as deposit one-shot (U-17) on the front panel. It gets
shown for C8, and the bottom socket as shown for B9. triggered while the machine is running by noise on the
power line which passes right by the one-shot timing
Wrong. The diagram is schematic in nature, and the
capacitors - a major design boo-boo. There are several
sockets are not that way at all. If I had bothered to check
approaches to fixing this bug: You can disconnect the
my assembly drawing or memorized the labels for each IC
power switch somewhere else. This may still leave you
position I would not have been so harried. B9, shown on
vulnerable to really large noise spikes. You can install
the bottom in the illustration is, of course, above C8 on
a pi filter on the power line (two 8 uH 5 amp inductors
the board.
in series with each side with two .03 uF capacitors
across) or you can disconnect the A input of the one-
I think these problems stem from this: the people
shot and connect it instead to the Q output of the Run/
who know best what their equipment is intended to do
Stop flip-flop. That is, clip pin 9 of U-17 from ground
seem to know it so well that they can’t tell new users what
and jumper it to pin 5 of U-22, This effectively inhibits
is going on. Certainly Mr. Tarbell designed his board with
the one-shot by holding the A input high while the
the idea that a code of 3C was required to get it started.
machine is running. This last seems to work for me.
But the sentence that would have made this knowledge
public: “The board must be sent a byte containing 3C Let me know how yours is doing.
(in hex) to start it and then a byte E6 (in hex) to syn¬ Pete Cornell Box 1290
chronize it before sending data.”, does not occur. Similarly, Los Altos, CA 94022
if the PT “3P+S” board advertisements and manual stated, (415) 948-8269
“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 TARBELL COMPLAINTS
manufacturers would test their assembly and user manuals
on a few people not familiar with the design of the module, We are starting to hear a disturbing number of
they would quickly find out how to improve their style. complaints about the Tarbell cassette interface. These
And, if we users would stop buying badly kitted equip¬ are disturbing (1) because a number of hobbyists
ment, and demand well-written manuals, we’d get improved appear to be having problems with the units, (2) be¬
kits and better written manuals. cause we think the design principles of the Tarbell
The current software situation is even worse. But unit are sound and the speed is highly desirable, and
that is a topic for another time. (3) because we believe that Don Tarbell is sincerely
trying to offer a good product at reasonable cost. Our
A WORD ABOUT THE AUTHOR distinct impression is that Don is one of the “good
Jef Raskin has been playing with computers since late in guys”; he is not greedy, and is not trying to rip off
grammar school. Not that he was often late. He has been Director
the hobbyists by intentionally selling imperfect
of a small computer center at U.C., San Diego, and taught such
equipment.
courses as computer programming, computer animation, computer
music at San Diego, as well as a number of other colleges, univer¬
If you are having problems, we suggest that you
sities, and in his basement where he has had both an Altair and an write or phone him, directly. Tell him what the
IMSAI running. He is well known for his heretical belief that problem is. If you feel you know a solution, please
people are more important than computers, and that computer pass it along to him (and to us; we’ll publish it if we
systems should be designed to alleviate human frailties, rather than feel it appropriate to do so). Our impression is that
have the human succumb to the needs of the machine. Don will make every effort to “do right” by his
customers.
Editor’s Note: Further lurid comments by Jef may be To contact him: Don Tarbell, 144 Miraleste Dr.
found on page 8 of August, 1976, Datamation. No. 106, Miraleste CA 90732; (213) 832-0182.
[Don, We would be delighted to publish any
reasonable reply you may wish to forward.]
A TIP ON SOLDERING FROM JIM DAY
BIBLICAL MATHEMATICS
A new type of solder, designed to prevent the dissolving
of printed circuit traces during soldering, has been devel¬
We hear that Noah told the animals in his ark
oped by Multicore Solders, Westbury, NY 11590. Called
to multiply, and two snakes refused to do so because
Ersin SAVBIT, this copper-loaded alloy also reduced the they were adders. Noah overcame this objection, how¬
pitting of copper soldering iron tips. As every computer ever. He quickly placed the snakes on a rough-hewn
hobbyist knows, it can be a real nuisance to have to file wooden table and told them to follow his command,
a soldering iron tip every few minutes. (Iron-plated tips for, as we all know, adders can multiply by using a
don’t pit as easily, but cost more.) 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
SOURCES FOR 8080 FLOATING POINT ROUTINES
16K BASIC DOCUMENTATION & A STRUCTURED ASSEMBLER: ML 80
Gentlepersons: August 16, 1976 Dear Fleet-foot dentists: June 26, 1976
Anyone planning to use the 16K BASIC for the May I suggest the following source for floating point routines
8008 should be warned that the publication men¬ for 8080 systems.
tioned in Dr. Dobb’s Journal, Vol. 1, No. 3, p. 4, Cope, S.N., Floating-point Arithmetic Routines and Macros for
does not include a listing. For more details, see the an Intel 8080 Microprocessor, Oxford Univ, 1976. This is avail¬
Micro-8 Newsletter, Vol. 1, No. 10, p. 15. able in the public domain through NTIS, 5285 Port Royal Rd.,
Sincerely yours, Springfield, VA 22151. Order number N76-11756 as micro¬
Robert F. Miles 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
PALO ALTO TINY BASIC CONVERTED 1.77 ms. These are typical times, maximums are slightly higher.
The NTIS announcements are beginning to carry assorted micro¬
TO INTEL-STANDARD MNEMONICS
processor oriented reports now that funding and research/pub¬
lication lead times have been passed by processor availability.
We published complete details of Li-Chen Wang’s
While it seems to have a bit of overbyte, their AD-A020055
Palo Alto version of Tiny BASIC in our May, 1976
($2.25 in fiche, around $8 in paper) reports on ML-80, a PL
issue. This included a well-documented source listing
360-like language for the 8080. It needs 16K to run however.
for the program. The assembler mnemonics (abbrevia¬ Sincerely,
tions for machine instructions) that Wang used, how¬ Darrel J. Van Buer and 1516 Electric Ave.,Apt.R
ever, were not those used by Intel and by many of Hymie, the computer Venice, CA 90291
the 8080 assemblers that are available. Those desiring
(213) 823-6016
a listing of Palo Alto Tiny BASIC, coded in Intel
mnemonics, may contact Roger Rauskolb, 3766 Cass P.S. Hymie is not an acronym. He is named in honor of the
Way, Palo Alto CA 94306; (415) 493-1501x3608. If CONTROL robot.
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 INTERRUPT-DRIVEN PASCAL
translation in the Journal—however, we are not eager AND AN OFFER TO HELP
to do so, since there is so much other good stuff
awaiting publication. 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¬
CONTRA COSTA COUNTY ming system is even more important than the actual lan¬
CLUB STARTING UP guage structure. PASCAL'S I/O system lends itself to the kind
of things I think are needed. In particular it should be
The following person is organizing a computer possible to have interrupt-driven input initialized without wait¬
club in the area of Contra Costa County, California. ing for completion. This makes possible real-time programs
Contact him if you are interested in this club—the such as Star Trek where entries can be made while the action
fourth computer hobby group in the San Francisco continues. This is essential for the whole class of real-time
Bay area. games.
Eric Bergman, 3188 Kingsley PI, Lafayette CA My interest is in the 6800 primarily. Let me know if I
94549; (415) 283-6256. can provide any help in your PASCAL project.
Dr. Brian W. Johnson 1525 Westlake
Plano TX 75074
A BYTE LOSES SOME BITS
Can you help? Sure! Much is needed: tutorials describ¬
IN SAN FRANCISCO
ing how to program in a block-structured language, a brief
historical article, notes on the advantages of PASCAL over
A1 Cherin of the Computer Store of San Fran¬
other block-structured languages such as ALGOL and PL/I,
cisco (1093 Mission St., 94103; (415) 431-0640),
well-documented sample programs and games written in
phoned us on August 20th to tell us that his Store
PASCAL, a detailed comparison of PASCAL with BASIC
is now independent of Byte, Inc. He sez he is now
including examples, and much, much more . . . LOTS to do!
dealing directly with his sources such as IMS Associ¬
Incidentally, PASCAL as Wirth originally designed it,
ates, Processor Technology, etc. (rather than routing
did not have anything especially unusual or exciting for I/O.
his product purchases through the Byte, Inc.
In particular he did not concern himself with interrupt-driven
franchise).
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,
HOMEBREW IBM OFFICE SELECTRIC
and (2) is implemented on PDP-11's. — JCW
INTERFACE DESIGN
Want to use a standard, IBM Selectric I office type¬
writer to obtain superb quality computer hard-copy? I wish to express a certain disgruntlement with some
Page 218-220 of Don Lancaster’s TV Typewriter of the gargoyles that have been constructed on the
Cookbook tells how to do so with a few solonoids
and some simple, non-impairing mods to the cathedral of LISP.'
—John McCarthy, speaking at a Menlo Park SIGPLAN meeting.
typewriter.
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
FFFF
(Reprinted with permission from the Homebrew Computer
Club Newsletter) FFOO
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 FCOO
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. FOOO
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 FOR EDITOR
program space for additional buffer. The Editor is 2000
designed to use all available contiguous memory, but the
Assembler will limit its symbol table to memory below
ASM SYMBOL TABLE OR WORK RAM
2000, or below the contents of 301-302.
1D06
The key to the I/O routines is a “transfer vector”
starting in location 0100. The are 19 or so JMP
EDITOR
instructions in this vector which permit access to all of
1640
the routines, so that the entry to the routines do not
depend on their sizes. By careful analysis of these rou¬
ASSEMBLER
tines I have made the following determinations.
The I/O routines are designed to work with a Tele¬ 0300
type ASR33 or Silent 700 with cassettes, where the same
data is used for both printed and tape copy. The paper BUFFER STORAGE
tape reader on the terminal may be controlled either by 02B6
X-ON/X-OFF or by a relay connected to an I/O line on
the computer. The punch is controlled by TAPE/TAPE- I/O ROUTINES
or the program is instructed to make separate punch 013F
passes. There are two versions of the I/O routines, one
for MIKBUG which uses a PI A for the TTY interface, JUMP TABLE
and one for EXBUG, which uses an ACIA. MIKBUG is 0100
a crummy operating system (it was designed as an evalua¬
tion program), and Motorola is pretty tight about giving TEMP STORAGE ROOM
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.
Figure 1. (EXBUG) Resident Assembler And Editor
The tape I have seen was done for EXBUG, and
Memory Map
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
and 4 should be ones. It may be convenient to NOP out
editor; I checked). Of these, there are four references to
these two fetches, and replace the opcodes of the respec¬
FF02 (locations 018B, 01 CD, 023F, and 025F); this is
tive following instructions with LDA A immediately
apparently a flag to indicate whether the terminal is a
(instead of AND A). Note that bit 5 enables interrupts,
Silent 700 or not, with 00=not. All four are TST instruc¬
which may not be desired, so No. 15 should be used
tions, which may be altered to test any zero memory
location. There are two references to FF62 and one to instead of No. 35.
FF53 (0154, 023C, and 0271), which seem to be related The ACIA is assumed to be at locations FCF4-FCF5.
to the EXBUG I/O flags; they may be NOPed out (three Two references to its control register are used to turn the
NOPs will replace each reference). paper tape reader on and off (locations 01E3 and 020A).
It is assumed that location FCFD contains some Two references to the input data register (locations 0212
kind of constant for the paper tape reader control; this is and 0215) occur to clear out any remaining input after
fetched in locations 01DE and 0205. Bit 5 of this byte turning off the reader. Location 0287 checks the status
should be 0, and bit 6 should be 1 if RTS of the ACIA register for imput during a timeout loop, and 028D reads
is used for reader control, and zero otherwise; bits 0, 2, 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 the necessary nulls in the output call. If you have
instructions. separate devices for file input and output which do not
There are seven subroutines in EXBUG which are go through the terminal I/O, the beginning of INPUT
called from these I/O routines. Of these, four directly and OUTPUT will be complicated sufficiently to dis¬
must have correspondence in your system. They input tinguish file I/O from terminal I/O as described a little
a single character from the ACIA, output a single charac¬ later.
ter, and exit to the monitor or operating system; they Figure 2 is a sample program to provide the
are summarized in Table 2. functions supplied by EXBUG. The various entries
Table 2 also shows the calls for composite opera¬ are labeled in the listing by the address in EXBUG
tions. These, however, may be encoded easily to rely which provides the same function (see Table 2). Nor¬
only on the single character imput and output func¬ mally you would include these routines in your oper¬
tions. The discussion to follow describes how these ating system monitor, and patch jumps to them from the
functions may be encoded in an arbitrary system. I/O linkages in lower memory. If you do this, you
Assume that your operating system provides a probably also wish to modify the references to upper
single call each for one character input “INPUT”, and memory described earlier to point to your own ACIA.
one character output “OUTPUT”. We also assume that For a completely generalized I/O system, you need
if your terminal requires nulls between the CR and LF
that your operating system will detect the CR and insert
LOCN FUNCTION
0100 Beginning of Assembler
* Type CR & LF 0103 Beginning of Editor
F021 LDA A #OD Carriage return 0106 Initialize I/O flags in F2, F5, F6
JSR OUTPUT 0109 Output character in A to Punch, adding
LDA A #OA Line feed LF to CR
JMP OUTPUT 0100 Punch character string pointed to by
* Type String X, ended by 04
F024 JSR F021 First type CRLF 01 OF Input (buffered) character from reader
F027 LDA A o,x Get character to A
INX Increment to next 0112 Read a line into input buffer; first char to A
CMP A #04 Is it end? 0115 Type character in A, adding LF to CR, conv
BEQ EXIT Yes. Tab to space
JSR OUTPUT No, type it. 0118 Input character (from keyboard) to A
BRA F027 Go get another. 01 IB Input character to A (with no echo?)
EXIT RTS Quit when done. 01 IE Type text string on new line
* Input & Output Links 0121 Type text string pointed to by X, ended by 04
F015 JMP INPUT 0124 Type CR & LF
F018 JMP OUTPUT 0127 Punch 32 Nulls for leader
F9CF JMP OUTPUT 012A Turn on Punch (if not already on)
012D Turn off Punch
Figure 2. I/O Linkages to substitute for EXBUG 0130 Jump to monitor (exit from program)
0133 Jump to 01 IE
0136 Jump to 0121
* File/Terminal I/O separator Table 1. I/O Routines Jump Table
INPUT TST RDRON Check if File Input
BEQ TERMIN No, Terminal.
BRA FILEIN Yes, file.
OUTPUT CMP A #11 Reader-On Control? CALL CALL FUNCTION
BEQ XON Yes.
FROM TO
CMP A #12 Tape-On?
0157 F015 Accept input character from terminal
BEQ TAPE Yes.
0177 F018 Type character to terminal (or punch)
CMP A #13 Reader Off?
01A5
BEQ XOFF Yes.
01E8
CMP A #14 Tape Off?
020F
BEQ NT APE Yes.
0130 F564 Monitor exit
TST PCHON Is “Punch” on?
01D4* F9CF Output character to ACIA
BEQ TERMOUT No, Terminal.
01D9*
BRA FILEOUT Yes, file. 0246*
XON INC RDRON Turn on “reader” = 1
024B* *these calls are skipped if location
input. 0250 FF02 (or its substitute) is = 00
RTS 0255
XOFF CLR RDRON Turn off file input. 025C
RTS 0266*
TAPE INC PCHON Turn on file output. 026B*
RTS 01 IE F024 Type string on new line
NT APE CLR PCHON Turn off file output. 0121 F027 Type string
RTS 0124 F021 Type CR & LF
Figure 3. Suggestion for Terminal/File separation 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
flag set to one to indicate an end-of-file, otherwise the This may, on the other hand, work out OK since you will
carry is cleared. In the case of an end-of-file, the A now have room in P.C.C. to explain stuff like assembler, machine
should still contain some appropriate character (I real¬ code, and hardware in P.C.C. and not just list it or mention it.
[Yes!]
ize this is not the proper way of designing a system--so
complain at Motorola) such as hex 1A (Control Z, which Who is this Dr. Dobb character anyway? [A visitor from
is not the ASCII EOF, but is used by these programs as the planet Pern.]
an EOF character).
One last item: I've seem BASIC take a lot of knocks
It should be noted that most of this information was
lately, what with people saying,"BASIC is a very inefficient lan¬
inferred by analysis of the dis-assembled software, and guage and it doesn't suit the needs of the home computer user
lacks some of the insight afforded by true annotated and besides it is hard to learn and who said we need it anyway
assembly listings. Therefore, no warranty is made for the 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
accuracy of the interpretations presented here. I have
a better language. Besides, you don't see people clamoring for
attempted to verify my findings, and it does seem to work. FORTFIAN or COBOL for their home systems! Or how about
Please let me know if you find any differences or excep¬ JCL! Think, if you were designing the ideal language what
tions to this analysis. 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
LOCN INSTRUCTION FUNCTION factories can't come up with anything better, knowing that their
0154 INC FF53 ?? users will pay millions of dollars for it, why should some people
023C INC FF62 Exbug Punch-on flag 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
turned on
is.
0271 CLR FF62 Exbug Punch-on flag Steve North 7 Deerhaven Lane
turned off Newfoundland, NJ 07435
018B TST FF02 Silent 700 flag (0=off)
55 55
01CD
55 55
023F LOCN FUNCTION
55 55
025F
01DE LDA A FCFD Fetch reader control OOFO-1 Temporary storage for Index register
type flag
55 55
0205 00F2 Input Buffer non-void flag
01E3 STA A FCF4 Turn on RTS in ACIA
020A LDA A FCF4 Turn off RTS in 00F3-4 Input Buffer pointer
ACIA
0212 LDA A FCF5 Discard pending input 00F5 Input flag (no timeout if set)
55 55
0215
0287 LDA A FCF4 Test for input during 00F6 Punch Flag 0=print only
timeout loop
028D LDA A FCF5 Input character in 00F7 Input flag ??
ACIA
Table 3. Data References to Upper Memory 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
by Steve Wozniak & Allen Baum then two hex digits for the contents of X. A
Apple Computer Co., 770 Welch Rd., No. 154 is altered. Uses CHAROUT.
Palo Alto CA 94304; (415) 326-4248 PRNTYX Same as PRNTAX except that Y and X are
output. Alters A. Uses CHAROUT.
DESCRIPTION PRBLNK Outputs 3 blanks. Alters A, clears X. Uses
This subroutine package is used to display single or CHAROUT.
sequential 6502 instructions in mnemonic form. The sub¬ PRBL2 Outputs the number of blanks specified by the
routines are tailored to disassemblers and debugging aids, contents of X (0 for 256 blanks). Alters A,
but tables with more general usage (assemblers) are in¬ clears X. Uses CHAROUT.
cluded. The subroutines occupy one page (256 bytes) and PRBL3 Outputs a character from the A register fol¬
tables most of another. Seven page zero locations are used. lowed by X-l blanks. In other words, X speci¬
fies the total number of characters output. (0
FEATURES for 256 blanks). Alters A, clears X. Uses
Four output fields are generated for each disassem¬ CHAROUT.
bled instruction: 1) Address of instruction, in hexadecimal PCADJ (PCL,PCH) + 1 + (contents of page zero variable
(hex); 2) Hex code listing of instruction, 1 to 3 bytes; LENGTH) -»-Y & A (low order byte in Y). For
3) 3-character mnemonic, or “???” for invalid ops (which example, if PCL = $D2, PCH = $38, and
assume a length of 1 byte); and 4) Address field, in one LENGTH = 1 (corresponding to a 2 byte instruc¬
of the following formats. tion), PCADJ will leave Y = $D4 and A = $38.
X is always loaded with PCH.
Format Address Mode PCADJ2 Same as PCADJ except that A is used in place
(empty) Invalid, Implied, Accumulator of LENGTH.
$12 Page zero PCADJ3 Same as PCADJ2 except that the increment
$1234 Absolute, Branch (target printed) (+1) is specified by the carry (set = +1,
#$12 Immediate clear = +0).
$12,X Zero page, indexed by X
$12,Y Zero page, indexed by Y RUNNING AS A PROGRAM
$1234,X Absolute, indexed by X The following program will run a disassembly.
$1234,Y Absolute, indexed by Y
Supplied on APPLE-1 r 9F0 200 8 JSR DSMBL
($1234) Indirect
cassette tapes. ~ 9F3 4C1FFF JMP MONITOR
($12,X) Indexed Indirect
($12),Y Indirect Indexed First, put the starting address of code you want dis¬
Note that unlike MOS TECHNOLOGY assemblers, assembled in PCL (low order byte) and PCH (high order
byte). Then type 9F0 R CR (on APPLE-1 system). 20
which use “A” for accumulator addressing, the APPLE
disassembler outputs an empty field to avoid confusion and instructions will be disassembled. Hitting R CR again will
give the next 20, etc.
facilitate byte counting.
Cassette tapes supplied for the ACI-1 (APPLE Cas¬
sette Interface) are intended to be loaded from $800 to
USAGE
$9FF.
The following subroutine entries are useful.
DSMBL Disassembles and displays 20 sequential instruc¬ NON-APPLE SYSTEMS
tions beginning at the address specified by the Source and object code supplied occupies pages 8 and
page zero variables PCL and PCH. For example, 9. All code is on page 8, tables are on page 9. These
if called with $D2 in PCL and $38 in PCH, 20 tables may be relocated at will: MODE, MODE2, CHARI,
instructions beginning at address $38D2 will be ChAR2, MNEML, and MNEMR. The code may also be
disassembled. PCL and PCH are updated to con¬ relocated. Be careful if you use pages 0 or 1. Page 1 is
tain the address of the last disassembled in¬ the subroutine return stack and page 0 must contain 7
struction. Must be called with 6502 in hexa¬ variables (to use DSMBL). These may be relocated on page
decimal mode (‘D’ status bit clear). All proces¬ 0 but PCL must always immediately precede PCH for
sor registers are altered (except S—stack pointer). (Z-page), Y addressing.
Uses INSTDSP and PCADJ. $40 FORMAT Used
INSTDSP Disassembles and displays a single instruction locations $41 LENGTH xby
whose address is specified by PCL and PCH. used $42 LMNEM INSTDSP,
Must be called in hexadecimal mode. All pro¬ by { $43 RMNEM DSMBL
cessor registers (except S) are altered. Uses supplied $44 PCL -I Used by PCADJ,
PCADJ3, PRPC, PRBLNK, PRBL2, PRNTAX, code $45 PCH * INSTDSP, DSMBL
PRBYTE, and CHAROUT. $46 COUNT }Used by DSMBL only
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 MODIFICATIONS
CHAROUT. a) To change “#’ to “=’ for immediate mode change
PRNTX Outputs the contents of X as two hex digits. location $955 (on code enclosed) from a $A3 to a $BD.
Alters A. Uses CHAROUT. b) To skip the ‘$’ (meaning hex) preceding disas¬
PRNTAX Outputs two hex digits for the contents of A, 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 (was 81)
947: 02 (was 82)
94C: 11 (was 91) 3X3
ill E D"
1—
94D: 12 (was 92)
>1 Lti
94E: 06 (was 86) _J CO 1—■ O
'll CO X til: O
li_
950: 05 (was 85) I-- 3 3
22 X CO _J O
CtUlEQX LU LU f—
951: ID (was 9D) *-* f-i Li. O CD CO LU !_! >—I
LU li_ • LU
95B: 00 (was A4)
CO
22 X
O LD 2-
22 X CO X
3 LU CO
LiJ f—«
95C: 00 (was A4) h!lh Lti I— 03 IZ< l—
DC X LU X —1 *—* •—* CO Cti Q.P J -•
c) To have address field of accumulator-addressed -:< olu _i
X-- 3
1—4 —' CO Lij
© i— P O i j o CO O P LU
3 'I I— I—
instructions print as ‘A’. . _l o o o 3 22
—' UJ 4-1 Z LL U] Ui M I— -
3 *-• O
1) Must skip $ preceding disassembled values 3
3 CO LU U_ X Lti XX . . CD Lu 0-J! O-Ji O
O i-< L
by making modification b) above. ’Hill CO LU LU CD Qi
2) Change the following locations: X 3 23 LU X 02 X
949: 80 (was 00)
957: Cl (was A4)
d) To add ROR and addressing modes, change the
following locations:
991: 9C (was 00)
3 ---f 0-J CO 3 U .• CD Lu4 Lu
LU C3 CO Xhi I:■ x
3xCD 3
cd 3
!< X •Lti C'-J 02 r-4 CO L 3*
9D1: 26 (was 00) ^'trf’+Tj.rt-rfLLLuC > co x lu Cti Lti ¥t Vt - CO <3
919: 02 (was 00) LU X -Cti X X X X ft iJ ;
91A: 45 (was 40)
91B: B3 (was B0) X CD Cti CO X —! l—i 9r 'X CO
X CO
X lu XXfi
i—i LU j- -p
XX DC ui
X -—
XP X X ui X
DC
1 co P 3 ~D 3 b- CO
_f CD
CD CO
_! CD X XXX CO X I—i X* CO
—I CO X i_X
CtL 3 3 3 '3 3 3= 3 3 '3 2
91D: 08 (was 00) X LU LU LU LU LU LU LU LU LU C LU CD Dil X !_! _i S— _J 3 —1 —I —i X X_1_I i—_i CO X CO UXh
91F: 09 (was 00)
LuX X
XXLU X
LU _J X Zj
XXX LU
UO LU1 _!
X Lti
X Li.
CD LU
CD O
CD lu X
lu X'
CO 3
3 CO CO
3
j uD Ofi X 3 Li" !.£i 0-j CO 3 r - oj co r--- 3 J- X’T iu rf 3 3 0-j ©< CO «-i
33 00 3 3 3 © 3
LI :.<• Pz © —- •: 4i CD
X* -1-
X3 X3
X3 X 0X.i f=i
X' XX. X
IT- X
X X0 DO'j-. IT-' L- ~
OJ X X '
©Z- Xoj 3X f--- x
X X 3- 3x 3 oj in r- CO
■ 'J. CD lu ' r--- CO i
•:: co co co co co co •: o j CO■ cc
i' CO O J CO CO CO CO co CO O', .'.'i Tj- rf«
Z •—1 ©• X' X1 X' X1 3* 3' 3' C
oj 3 X- X'
X* X' co X*
co -z- co
-z- coZ- :Z-j coZ1 od“ t•
XX PH- j—i D—
3
X 5— X
LU !— X CLi
X 1— —* 3 LU LU I— X' x CO C2
X CD CD
CO XXI—
X LU D— X
X O
X I— CD X x
LU LU
X 0-J X 1— CJX CQ! CD
Pi i—_I C'-J X
>-1 I—
XX
22 i JT X I
*—• X CD CC
~
u-4
X^ XX CO X X i—i i X iPt C'-J L
J -T-t 31 3 3
45 3‘ ’—i 31
j— j— -r-l 3'
3' 3 i CO
X 1— O -4 LU DC
LU Q
P LU 4 X+
DC DC DC XXXI— X X
DC DC DC DC
DC DCDC _I 1-4 ----- 3 O x -..gt;
3> *3 X '
9^
O X X X' CO
LU X u-
1 X 3D- X
x3 X X X X D— Pi 333 O D- 3 CD Pi
X DC 33X DC X D- O'
'■<
J X r— CO 3 iCO—■ i—3 Pi
i—t I— 3 X CO
XX OP 3
LU X
X 3 CO X CO
Pi LLi —I 3 Pi 3X
'3 X .PJu_1CP 2C X
P CO
O3
_1 3
X D-
CO 3
3 CO
P
3 CC X X X <3 X DC 3 CO X DC DC 3 D- C
X CO
'X CO . •i P 3 CO-3 X I— CO X X X x:
4 LLI Li_13 3 3 3 i
:< p x x j i— *■
XXX
XXX
XXX
0-. x ■:
© x C
© :• >3 0-J ©3
33©©- 33 © 3 3 IT' © 3
CO
0-1 ©
X cL ■ ©
' P '3 co'.0 ©
P 3 -i © p © p © © cz © o
j © CTi
-3 3 x3 •__- • -■£- 0. x -3 » 3 Z C J -D •£■ f - OD X *3 L r -- x © P 3 3r-x
■:>' CO 3 3 3 3 3 3 CD o j co ' D r - co x 3 *3 3
j in r-- ‘j. 2
o: -Z 3z 3z 3. ' ir. LO li‘- u‘- L
Page 23 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 September, 1976
250
CO CO
UL O'
I— I—
CO CO
OC - X
- ~ x X*
i_n ij X)
i_3 cl a: u x > u X
x _i o_Q_a:~~coa: X
Ct 20 Q_ CO Cl. O I 10- CO CO CD li_I - ~ ... X
uiE I LU 21 o F-J F-J I • CD lu X I LU -- .. rtt 4* j- X
Lu *-< r- j >x «x r j ix «x r- j ct -■ - ». ...
CM M- CO Xi X'
CM M" CO i—1 CO M" 7'
X' CM M- CO X«
CM M" CO v—I CO
CM CO CO cr . ^ -4 CM O' « — O J 'X X ID
ij-s '.£i t—i r- >x xs cm co co X' x« uo> M" 7. cr- CO M- CO
O ' o CO 00 M"
X X X X X
CO M" ■M"
CP X X X*
X' X
CO
0 p m lg -«
CM UO' CO -H ijz
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 0J
f*t •*«+•*+»■ «+ -**++*+ Vt +•+ -«t +n *n -Mt +>t **t
Gj Qj ill Gj Uj X GjCOiULLlfCiilClCClCClCCiOjCOCQCuCUCOCuCClCOCuCOCClCOCOCOCOCOCOCuujCClCOCCiCCiCOCuCOCuCuCOCCltiBCOCuCuCuCuQZl i~i~i iVi 1T1 1T1 !~Q i~fi ffi ;~i~i CO Cij lTj iTi Ci'i iTi CCi ffi iTi 1T1
LiiLLlilLliLLLlLlLLiJ.U.LLIilJ-lLllLl.Ll.LlLli.U.ii.Ll.LLli.li.LLU.Li. U.U.LlLlLlIiLlLlIlU.Lj.LlLlLl1j.L.LLi. XXXU_U_XXLLU-.Li-Li-LL_Li_Li_Li_Li_LL.ij_
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—! 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 X X* CM CO -M- UO CD f-- CO O' X X O i lllJLLSh CM CO M- UO CO F -- CO O' CGjOPUJX X' *-• CM CO 'rT UO CD F •_ CO O' X X O i-i X X X' CM CO M" UO
:• co co co co co co co co co co CO CO M- M" M" M" "M* M" M" Tf M" tT "M- M" 'T ' • 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‘-_
' <J: ij. a% iT. it-, it-. iT. 7, O' O' O' O' O ' O' O' O' O' O' O' O' O' O' 7 i , 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 —•
M-
■X
0— i—i Cti I— i—i Ct£ Xi Cti
lu co 'ii —izi'i co 'X X 'X 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'
ii.’ X O llti +•+ X -Mt -M+ X o 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'
LL # U LL LL LL 4t O # # ' Cl.
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 LlIlLlLlIlLlU-LlIi.
“0 _l —1 _I I —1 I “ I I JHLUX_i 05 i I— LUWlLD'-'XPPPPPPPPPl-lPPPPPPPMWMpWMI-n-IMWMMI-IMWMI-IMMI-l iP Pi i—i i—i i—i i—i i—i I—• i—i
i£ 0-J CO ’M-
X CM CO
_I _I _1 1—I l-l 1—l Pi —1 LU
LULLIIil X X X X CO IP
XXX
XXX
ooo
XXX
O
X
h- o
X 21
:■ co UO' CO X O X -M- '•£' CO X ' X X - ^ CM M- UO' r-_ CO X U P LU Ll X' —' CM CO M- UO' '-£' r- CO >T- XCGOflllJliOH CM 05 Tj- UO' '.£' r-_ CO 7' X X O wlULS-H CM CO "rt UO' '■£' F-- CO 7' X lu O iP L
IiQOiTiOiPiiPiLULUXLULlILlILUUJI - 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 -h I-.J OJ OJ OJ OJ CM CM CM CM CM CM CM CM CM C
:■ CO CO CO CO CO CO CO CO CO CO CO CO CO CO ' !' 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 7s' T' T' 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
;i r-1 iHi is X' X' X' X< X' X1 X' X' X' X' X' ' :■ 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'
Page 24 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 September, 1976
251
I
X
CO 7 •3 UO
CM 7 r- - co
© >3 >3 >3
<3 <3 >3 S3
00
X
3 3 © ©
© © 3
© ©
X
0— oc
oc
5 X X
OC X
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 -
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 L0 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. X 3 CO £=> X X '©' —>.
r-
7
r-_
7
r-_ r--_ r-_ r-_
7 7 7 7 7
r--_
7
co
7
oo
7
oo
7
co
7
co
7
oo
7.
oo
7.
co
O-'
oo
7
co
7
co
7
co
7
©
7
©
7
©
7.
oo
7
7« 7 777777
7.7 7 '7 7- 7 *7 7
a-
7
7- 777 77 7
*
7- 7 7 7 7 7 '7
- x
7
x
'7
x
7
x
7
x
7
x
'7
x
7
x
7-
x
7
x
>7
x
'7
x
'7
x
7-
x
7
x
'7
x 3 3 3 3 3 3 3 3 00 3 3 3 3
it. rf-. rr-, «t-. 7 .T, 7- 7 7- Z- Z 7- 7- 7
3
7-
3
7'
3
Z- 7 7
O
© © © © © ©I '©' '©' '©! © © !©' CO '©' © © © CO '©' © © © © © •©» ©' ©I © © '©' © ©' ©! ©I ©I ©I '©' ©I © «©! ©! '©' ©I ©I ©I ©' I©' '©' © ©I '©' ©i ©I ©i ©I ©! ©i »©! ©' ©' C '©' ©< © ©' ©' © ©' ©' © ©‘ © ©' ©'
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 RUNNING ON APPLE-1 SYSTEMS
Apple Computers, 770 Welch Rd., Suite 154 The source and object listings provided will run on
Palo Alto CA 94304; (415) 326-4248 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)
DESCRIPTION $F3 RNDL \Binary
MASTERMIND is a number guessing game. In this $F4 RNDH Jrandom number
version the computer generates a 5-digit, random number $F5 RND2L (Temp.)
where the digits are limited to 0 through 7. The user at¬ $F6-$FA N (5 digits of unpacked random
tempts to guess the number in the fewest possible tries. $FB-$FF GUESS (User guess)
After each guess the computer informs the user as to how
many digits were correct (contained in the random num¬ RUNNING ON OTHER SYSTEMS
ber) and in the correct position by printing '+’ signs, and 1. The LDA STROBE instruction at loc. $313 (on
how many digits are correct and in the wrong position with supplied listing) senses for a key down condition after the
’ signs. The user is not informed as to exactly which digit READY? message. This is used to generate a random num¬
positions the “+’ and the ’ signs correspond. A skilled ber corresponding to the delay before a key is depressed.
player can usually win in 6 or 7 tries. The code is written for a negative value to indicate ‘key
down’ (by = 1) and a positive value (by = 0) to indicate
no key down. This instruction is followed by a JSR
CHARIN instruction whose only purpose is to clear the
THE PLAY strobe. The character returned is not used. Thus the user
1. Computer prints ‘READY?’ must provide an address for the LDA STROBE instruction
2. User hits any key when ready (not echoed). A corresponding to his hardware and must insure that the
random number is generated by counting from the CHARIN subroutine clears the strobe.
‘READY?’ message to key depression. 2. A CHARIN subroutine must be provided to read
3. Computer prints ‘01’ . for move number one ASCII character with by set. Do not use the CHARIN
Cursor left here. subroutine provided as it uses APPLE-1 I/O assignments.
4. User enters his 5-digit guess following the move The character read must be returned in the A-Reg. The
number. Remember that valid digits are 0 through 7 only. Y-Reg may be altered by CHARIN but not the X-Reg. If
Entering any invalid character cancels the line and the by is returned clear (=0) then the EOR #$B0 instruction
computer repeats step 3 for the current move. This may at loc. S34E (on supplied code) must be changed to an
be used to cancel errors. EOR #$30.
5. Immediately after entering the 5th digit of his 3. A COUT subroutine must be provided which out¬
guess, the computer will print a number of ‘+’ signs (for puts one ASCII character (passed in A-Reg). If the user
correct digits in correct positions) followed by a number of output device requires line feeds with carriage returns then
‘- ’ signs (for correct digits in incorrect positions). This the COUT routine must intercept the carriage return char¬
‘score’ is indicated to the right of the guess and does not acter ($8D) and output the necessary CR-LF combination.
indicate the specific digit positions involved. Play resumes at All computer generated text has by=l. No registers (A,X,Y)
3 for the next move number except for a win. Examples
may be altered.
follow:
4. PRBYTE subroutine must be provided which out¬
Scoring Examples for Random Number 12154
puts one byte (passed in A-Reg) in hexadecimal (printing
Move Guess Score 2 digits). No registers need be preserved. The following
01 33366 (none correct) routine will do:
02 00018 (line cancelled due to invalid digit, 8) PRBYTE PHA Save for LSD
02 00011 (2 digits right, in wrong positions) LSR
03 11234 ++- - (4 digits right, 2 in correct positions, LSR
2 in wrong positions) LSR MSD to LSD position
04 11325 +- (4 digits right, 1 in correct position) LSR
05 13216 +- - (3 digits right, 1 in correct position) ISR PRHEX* Output MSD first
06 44444 + (1 digit right in correct position) PLA Restore A
07 55555 + (l digit right, in correct position) PRHEX AND #$F Mask LSD
08 12154 +++++ YOU WIN (win message) PRHEX* ORA#$B0 Add “0”
CMP #$BA (May be skipped if used for
READY? (for next game)
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
s
CO
CO
■r {■-
LlI UJ C
LU _J c
§ LU CJ
O
Qi 1=1
I— z
CO z OJ
io:So:^ '•£' co
IfiD Lii O D 0 h Qi 7- C
:• o z p
-hlM
O O •3 g
•X Qi P S-'S-'t
.z co I— 1=1
1 _ »- LU - • a: -• -• -• z - *-< Z
i_t
:■ o x z« j Qi x Qi z •-< z x x ©> o- x + ■X LU P CD r* r- O'
:> z co co -• O O - -- - X -■ - LU '■ Z ui LU ■0< UO '-£> C'J
Z —> CD c 'D
c c C 'D
z
LU 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 P C'J
Qi CO tX LU 'X CO Lu — r- r- CO I7- 10' 101 Lu CJ —1 UO •-£< r- P P 1-1 Lu Lu Lu 101 -1 Lu
‘X LU '0! CO CO r-- CO 1=1 Lu CJ 'X iJ-> P X —< X C LU CO CO Lu CO CO i0i ©i CO CO CO CO CO CO 101 CO CO CO CO CO Lu CO CO X 10' i0‘ CO 10' i0i
LU Lu 10' Lu Lu ©' Lu *X LU Lu LU CO CO LU —« Lu -i Ll ©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‘ i0i P 10'
LU
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 ©> Lti
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 Z Z 1-1 C J CO P Z LU LU
LU 1-1 Z CO CO CO CO lu z *— i-i oj co f— o— _i a. co co
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* IJJ Qi i— Lu LU CO —• —I —> JZ _i Qi CO CO CO > LU C'J C'J I J J O LU
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 1— 'XX' I L? LU P Z Z Z |0| P i— —> Z' ffi'ii P R P P P Qi >—
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 i-i Z O 'lti i—i X Cu i—1 1—i *—1 CO CO X X i_i iQiPZZZZZi— Qi
10' '0' ‘01 '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 LLI 101 101 101 PULiZZZ Z Z Z Z Z Cu Cu Cu Cu Qi Qi Qi Qi Qi Qi CO I—
• LU LU
LU Z L'J
LU
LU LU
Z
*-•
01 Z 'X 'X
i P Z - CO O Z 101
-1 CO CO P Qi -•
uo COPXLU'I1U22
X Z Z X Z P LU
0_CE _ !0J Z P Z
Qi Z - X X
LU LU ■ P -• Lu CO O' lu Z
LU P LU z co r -
t—
CO j— Qi LU Qi P IX
LU Qj LU Txzi5 P CD i0‘ Z LU Z X
! 0C CO Qi —i Z i— 'X CO X LU
C'J Qi Z O ’X Qi P CO X Qi i—i CO P Z v-u
LU O OP P P O ■ i-i Z
P I=- Z Z LU Cl'' Lu ZLtiZX
ix z p Zu¬ % -PLlP 101
lu '0. Lu M 'X '01 LU -P LU Z Lu
Qi ' 01 Z CO Z CO I CO •+: *-•
X
LU Z LU z z z +
Lu O' Si —< i-« lu CO Qj Q_ i—' 00 CO CO P X X X X X Z 1—1 *-< CO
LU P —i —i ©I IP _■ ! iJ_I OJ I »:• _I Qi LU LU Lu LU 0- *0i P _J 'OJ Z C'J - IX lli Qi p ©■ x CO LU X LU
C'J CO P UO '-£' LU Lu Lu ©i ©' ©' CO L3 X P P P Qi P «: * * I—* J >— ill 'I _i i—i i—i !—i UZ' i—i C'O P i-< P X 'Z X CD CO P X s x uo x uo >:
Lu L_ Lu Lu Lu Lu Lu Lu P P CO *n CO O z z z p z : Qi Qi Qi Qi Qi P O Z Z Z P ! P z | —1 1-1 Z 101 P P X X p X + X + -I
-P P -M+ P -rr P -P -P P -M+ # Z O' z Qi Qi Qi CO Qi P P Pil# O LL Qi it: # Z # X it: Z CO P O IJ # # Z X 0 Z LU Z =
X X
CO P X
X
X Z' X P X
01 C' X X P
X X X CO z
CO X co
■01 X 101
co —i x
101 17 -. X
r - C'j >*o C'j
X X X 101 X —1 X 10
rt 1-. uo co X P X '0i X |0‘ X l-1 X X 10'
X X X Z X *0' X '01 X Z 10'
X i-i 1—1
X 1-1 CO
. I—l ©1 Z '0' ' £• '-£i ©1 '£• t—i ©• -01 C'O •: 0 uo 0- 7 : c j-' uo uo cu -r ©• z •& '£■ co ©i © ©■ ©■ 01.7, 7 0 Z 10- 101 10‘ -7' 0- JO UO 101 P >7' U0i co. 101 C'J '01
z x oj i_* p x p x z — '■ u. c o Z • i Z Z C i Z O!' 0 Z '7' Z -7 '-■) '•••' CO P CO’-'IT X 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 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
101 101 ©1 ©I ©1 ©1 ©1 101 1—1 1—1 1—1 1—1 —-1 '•J 1*'J ''-J ■' : CO CO CO |V| .-.-I ppppppppu* U” UO U“ UO O’* U'- U' L“ •£• '-£• *£• *£• ‘O *£> '-£' '£> x r -
CO CO CO CO CO CO CO CO CO CO CO CO CO 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
01 10' 101 ©I ©I ©1 ©■ 101 '01 10- ©1 ©I ©1 •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¬ The program was assembled using P.T.’s software No. 1
play that reads directly from memory,, and at least 256 bytes on a system of only 8K, so the comments were added later.
of other memory, here is a random walk program you might
like. I hope you enjoy my turtle.
0003 3E 00 MV I AjO ~\
0005 D3 8C OUT 8CH #
0007 21 00 88 AG LX I Hj 8800 H W" Initialize VDM
000A 36 20 ST MV I M,20H \
oooc 23
00 0D 7C
000E F£ 8C
0010 C2 0A 00
Start in Center of Screen
0013 21 20 8A
Looks like a turtle to me
0016 36 07
001 8 78
001 9 E6 03
00 IB CA 24 00
00 1E 01 FF IF
A wait routine to slow the action to human speeds
0021 C3 27 00
0024 01 FF OF
0027 0B
002 8 78
002 9 FE 07
002B C2 27 00
Experiment with different fonts
002E 36 2A
0030 CD 72 00 Could be IN0FFH If you want to control the action
0033 47
0034 E6 01
0036 C4 5E 00
003 9 78
003A E6 02
003C C4 69 00
003F 78 MOVE
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 7C
0050 FE 8C Move right
0052 CO
0053 26 88
0055 C9
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 *
Move left
00 5A CO 8230 RNZ
005B 26 8B 8240 MV I H>8BH^
005D C9 82 90 RET
005E 1 1 CO FF 8300 UP LXI D> OFF!
0061 19 8310 DAD D
0062 7C 8320 MOV AjH
0063 E6 F3 8330 AN I OFBH^
Up
0065 F6 08 8340 ORI 08H
0067 67 8350 MOV H.*A
006 8 C9 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 Down
006E E6 FB 8430 ANI 0FBH #
0070 67 8440 MOV H.» A
007 1 C9 8490 RET
0072 E5 8600 RND PUSH H
0073 21 9A 00 8610 LXI HjS H+3 A random number generator from P.C.C.
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 *My VDM is addressed as: 8C = Port address
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 10 DIM @(4)
I have implemented the Whipple/Arnold TINY BASIC 20 PR “WANT RULES”;
[DDJ, Vol. 1, Nos. 1&2], and am really excited about 30 IN @
the super job they did.
40 IF @(1)=78 GOTO -
[ I have several modifications to it (any system worth
50 PR “HERE ARE THE RULES:
having is worth modifying to your own desires). Most
In this case, if the response begins with N (coded as
of the modifications are of interest only to me. How¬
78 decimal), the program assumes NO and skips printing
ever, a few modifications may be of general interest, so of the rules.
I am offering them to you to share as desired.
Of course, if more than one character string must be
Since I am a programmer by profession, I owe my
maintained by the program, they must be moved to
soul to the company store. So If you publish this,
other arrays while the @ array is ued for input or print¬
please sign me as -
ing. For example:
The Penny Tiger
10 DIM @(20), N(20), A(20), C(20)
20 PR “WHAT IS YOUR NAME”;
STRING HANDLING FOR TINY BASIC 30 IN @
40 FOR 1=1 TO 20 $ LET N(I)=@(I) $ NXT I
I have incorporated a rather austere character string
50 PR “HOW OLD ARE YOU,”; @;
capacity into the Whipple/Arnold version of TINY BASIC.
60 IN @
Although it is somewhat clumsy to work with, it does
70 FOR 1=1 TO 20 $ LET A(I)=@(I) $ LET @(I)=N(I)
make character string input, output, storage and manipu¬
$ NXT I
lation possible, so it can’t be all bad.
80 PR “THANK YOU,”;@; “ - WHAT IS YOUR
It involves two modifications to the TINY BASIC
FAVORITE COLOR”;
interpreter; one to the processor for the IN statement, and
90 IN @
oen to the processor for the PR statement. These changes
100 FOR 1=1 TO 20 $ LET C(I)=@(I) $ LET
utilize a special variable named “@”. (This has always been
@(I)=N(I) $ NXT I
an available but unadvertised variable name in TINY BASIC.)
110 PR “WELL,”;@;“ - I NEVER HEARD OF A”;
The changes assume that the variable “@” is an array
120 FOR 1=1 TO 20 $ LET @(I)=A(I) $ NXT I
and has been singly dimensioned to the maximum permis¬
sible character string length. 130 PR @; “YEAR OLD BEFORE”
When the statement 140 FOR 1=1 TO 20 $ LET @(I)=C(I) $ NXT I
IN @ 150 PR “WHO LIKES”; @
is executed, the user may type in any character string. The 160 END
characters typed in are placed in array elements @(1), @(2), RUN
etc., until a carriage return is entered. The carriage return WHAT IS YOUR NAME? ALICE
is also stored in the array. These may then be thought of, HOW OLD ARE YOU, ALICE? 12
in storage, as being numeric representations for the charac¬ THANK YOU, ALICE - WHAT IS YOUR FAVORITE
ters. For example, the letter A is stored as the decimal COLOR? BLUE
number 65, the character 4 is stored as 52, and a carriage WELL, ALICE - I NEVER HEARD OF A 12 YEAR
return is stored as 13. OLD BEFORE WHO LIKES BLUE
If the number of characters typed in equals the dimen¬ The above should illustrate how the capability is used.
sion of @, no further characters are accepted and control The implementation is shown above. Note that the input
is returned to the program. In this case, no carriage return and output routines cannot be located within the TINY
is placed in any element of @. BASIC code because sufficient space could not be found.
When the statement In my system, space was available starting at 200. This
PR @ can be placed anywhere in available space below 4K, or
is executed, the character representations for the numbers above the program area (top pf program area is defined
stored in successive elements of @ are printed, until either at 033354, 033355). Just remember to relocate the appro¬
a carriage return is encountered, or all elements of @ are priate addresses.
printed. The carriage return is not transmitted. Thus, the Changes to implement @ in the PR statement:
data input from an IN @ statement may be directly 032154 231 271 TST P3 ‘ ’
printed by the PR @ statement. For example: 031271 231 322 P3 TST S8C ‘@’
10 DIM @(20) 031273 300
20 PR “WHAT IS YOUR NAME” 031274 300 200 @OUT routine
30 IN @ 031276 032 161 JMP S6
40 PR “HELLO”;@; “-HOPE YOU HAD A NICE DAY” 000200 052 000 024 @OUT LHLD H, slot for
50 END variable @
RUN 000203 116 MOV QM
WHAT IS YOUR NAME Get dimension
? ALICE of @ in B, C
HELLO ALICE - HOPE YOU HAD A NICE DAY 000204 043 INX H
The data entered may be inspected or modified by the 000205 106 MOV B, M
program as desired, if you remember that what the pro¬ 000206 043 @OUTl INX H
gram sees is numbers. For example:
Page 30 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 BRINCH HANSEN TERMINATES DISTRIBUTION
000210 261 ORA C OF CONCURRENT PASCAL & SOLO MATERI¬
000211 310 RZ ALS
000212 013 DCX B
000213 176 MOV A, M
Per Brinch Hansen has left Cal Tech and moved to
000214 376 015 CPI CR
USC. With this move, he has ended the availability
Is it C.R.
(through him) of reports and PDP-11 system tapes for the
000216 310 RZ
Concurrent PASCAL/SOLO project. Papers describing the
000217 345 PUSH H
system may be found in IEEE Transactions on Software
000220 315 026 022 CALL ASCOUT
Engineering (June, 1975) and in Software-Practice &
Output the char
Experience (April-June, 1976).
000223 341 POP H
000224 043 INX H
000225 303 206 000 JMP @OUTl
PROPOSED STANDARD FOR MINIMAL BASIC
Changes to implement @ in the IN statement:
032232 027 273 JMP P4 PROGRAMMING LANGUAGE
027273 232 222 P4 TST P2A
027275 300 A draft of a standard for a minimal BASIC was pub¬
027276 300 230 @IN routine lished July 1st and is being circulated for a four-month
027300 032 240 JMP back period of public comment and review. It was prepared by
032222 133 310 P2A CALL AVTEST the X3J2 Technical Committee (T.C. for BASIC) of the
032224 032 234 JMP back American National Standards Institute (ANSI). Copies may
000230 325 @IN PUSH D be requested from, and comments should be directed to
000231 076 077 MVI A, “?’ CBEMA/Secretary X3, 1828 L Street, N.W., Washington,
Output prompt DC 20036.
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 bar graphs. Or I would like to use the character
000246 021 111 020 LXI D, BUFSTRT string capability to compose text.
000251 052 000 024 LHLD H slot for In order to make these possible, I implemented a
variable @ new delimiter (colon) in the PR statement of the
000254 116 MOV C, M Whipple/Arnold version of TINY BASIC. It works
Set up count fro like the semi-colon delimiter, except that no space is
000255 043 INX H DIM of @ output.
000256 106 MOV B, M It is implemented as follows:
000257 043 @IN1 INX H 032173 226 377 TST P5 U
Put chars keyed 026377 232 202 P5 TST S7 V
into @ 027001 272
000260 170 MOV A, B 027002 032 166 JMP back
000261 261 ORA C
000262 312 304 000 JZ @INR NULL LINES AND THE REM STATEMENT
End of @
000265 013 DCX B
000266 032 LDAX D If you just hit RETURN when the Whipple/Arnold
000267 167 MOV M, A version of TINY BASIC expects a command, it puts a
000270 043 INX H line of garbage at the beginning of your program. This
000271 066 000 MVI M, O change prevents this from happening:
000273 376 015 CPI CR 020366 303 066 022 JMP PI
000275 312 304 000 JZ @INR 022066 041 111 020 PI LXI H, BUFSTRT
C.R. terminates 022071 170 MOV A, B
000300 023 INX D 022072 261 ORA C
000301 303 257 000 JMP @IN1 022073 312 166 021 JZ END
000304 321 @INR POP D 022076 303 371 020 JMP back
000305 311 RET I implemented the REM (remark) statement as
follows:
032074 226 370 TST P2 ‘IF’
A NEW DELIMITER FOR THE PRINT 026370 232 112 P2 TST S3A ‘REM’
026372 122 105 315
STATEMENT
026375 325 246 LOOP
I have often wished that TINY BASIC could output Those who have video terminals may wish to change
messages catenated together without the intervening the size of the print zone from 15 characters to 8 or 16.
spaces provided by the semi-colon delimiters. For This can be done by changing the following locations to
example, I would like to output a number as dollars the desired number:
and cents (e.g., $4.36). Or I would like to generate 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, memory locations (005, 006 & 007 in this lower-page
assembly) with DEPOSIT.
A FIVE-INSTRUCTION MEMORY-ERASE ROUTINE,
The following program was written by my colleague,
& ANOTHER MEMORY-TEST PROGRAM 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
Dear Editors of DDJ: Aug. 15, 1976 playing the note on the sense switches out -*an AM radio,
“~5
just as the Dompier program does.
I was indeed interested in seeing some modifications
ADDR DATA MNEMONICS COMMENTS
to Steve Dompier’s MUSIC PROGRAM [DDJ, Vol.l, No.3].
000-000 333 377 IN 337 ;INPUT NOTE
However, there is still an inconvenience in the original pro¬
gram. This is the necessity to change the tempo data in FROM SENSE
SW
memory for each new piece that is loaded. I submit to
000-002 075 DCR A ;LOOP TO
you my re-written code that allows the user to input the
PLAY NOTE
tempo to the program from the sense switches of his
000-003 302 002 000 JNZ 000-002 CONTINUE
machine, allowing him to change and “fine tune” the
DECREASING
speed at which the music is played. The new code is as
'TIL ZERO
follows:
000-006 303 000 000 JMP 000-000 ;GET NEW
ADDR DATA MNEMONICS COMMENTS NOTE TO
000-000 041 XXX XXX LXI H, XXX ;ENTER START PLAY
OF PIECE This program makes it obvious that the simple DCR or
000-003 176 MOV A,M ;R EAD NOTE INR loop is essential to playing the “note.” We tried
000-004 376 377 CPI 377 .TEST FOR
putting more complex looping structures in this program,
END-OF-PIECE
000-006 312 000 000
but simplicity seems to work the best.
JZ 000-000 ;JUMP TO BEG¬
GING IF END MEMORY TEST PROGRAM
000-011 333 377 IN 377 ;l NPUT TEMPO LX! H.START 000-000 041 XXX XXX
FROM SENSE LXI B.END 000-003 001 XXX XXX
SW LXI SP,$+4 000-006 061 050 000
000-01 3 127 MOV D,A ;MOVE TEMPO AGAIN: XRA A 000-011 257
TO D REG NEXT: MOV M,A 000-012 167
000-014 005 DCR B ;MAIN PLAY MOV D, M 000-013 126
PROGRAM CMP D 000-014 272
FRAME JNZ ERROR 000-015 302 040 000
000-015 302 021 000 JNZ 000-021 DCR A 000-020 075
000-020 106 MOV B,M JNZ NEXT 000-021 302 021 000
000-021 015 DCR C INX H 000-024 043
000-022 302 014 000 JNZ 000-014 MOV A,H 000-025 174
000-025 025 DCR D CMP B 000-026 270
000-026 302 014 000 JNZ 000-014 JNZ AGAIN 000-027 302 011 000
000-031 043 INX H MOV A,L 000-032 175
000-032 303 003 000 CMP C 000-033 271
JMP 000-003
Note that tempo zero on the sense switches will be the JNZ AGAIN 000-034 302 011 000
HLT 000-037 166
fastest, and tempo 337 will be the next fastest, tempo
ERROR: MOV E,A 000-040 137
001 being the slowest. (This is due to the nature of PUSH H 000-041 345
Dompier’s program.) PUSH D 000-042 325
The following are two very short programs for HLT 000-043 166
utility and recreation. The first is a memory clear pro¬ 000-044 000 000 000 000
gram that leaves zeros in memory, effectively erasing The starting address for the memory to be tested should
itself, with the exception of two instructions. be loaded in the two locations reserved by the label
ADDR DATA MNEMONICS COMMENTS START at the first instruction. If you wish the first
000-000 041 010 000 LXI FI,8 ;SET POINTER available location outside the operating program, this will
TO END-OF be location 000-050 (split octal). The ending address to
PRGM.-1 be checked, however, must be increased. E.g., if you
000-003 257 XRA A ;SET ACC. TO
were testing a 4K memory, END would be set to 020-
ZERO
000-004 043 INX H
000, instead of the last memory location in RAM, 017-
INCREMENT
MEM. 377. When the program is done, it will halt, regardless of
POINTER error. To verify if there was an error in testing memory,
000-005 167 MOV M,A ;MOVE ACC. examine the four locations beginning at location 000-044,
TO MEMORY if no error occurred in reading memory, these will remain
LOCATION unchanged. If there has been a change in these locations,
000-006 303 004 000 JMP 000-004 ;LOOP TO INX the data they contain is interpreted, thus:
H INSTR. Location 044 is the WRITE data to memory
This program will effectively try to write zeros into all
Location 045 is the READ data from the same memory
available memory locations, and erases itself, up to the location
INX H instruction, which then will become a NOP and
Location 046 is the memory location detected (bad)
the program will infinitely loop, writing zero into the same lo-order
memory location. The lights on your computer will indi¬ Location 047 is the memory location detected (bad)
cate when the program has stopped; it usually will be hi-order
through in a second or two, depending on the access time Some hints on interpreting this information:
of your devices. You then may zero the remaining memory 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
ERRATA TO ZEIGLER’S 6502 “BUG PROGRAM”
that address.
If the WRITE data is zero and the read data NOT
377, the problem probably is that the memory slice was The March issue of Dr. Dobb’s Journal [Vol. 1, No. 3]
protected. contained a “Breakpoint Routine for 6502’s” submitted by
Elsewise, you may “trap” a bad memory slice by John Zeigler. The final paragraph of the documentary text
zeroing the last four locations (after making a note of contains an error. It should read:
them!) and doing the following changes: “. . . it is necessary to load the interrupt vector, FFFE
-Change the START data to be your LAST and FFFF, with 54 amd 02, respectively ...”
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) PROPOSAL FOR HANDY SOFTWARE, WITH
-Change location 000-024 to a DCX H (053).
EXAMPLE
. . . 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 A STRING OUTPUT SUBROUTINE FOR THE 6502
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 Dear Jim: August 10, 1976
001 — it will usually be detected on WRITE 000.) and the I have been noticing that in the Journal, the main sub¬
memory pointers’ difference will most likely be 1024. The ject has been large programs (BASIC’s, monitors, text editors).
memory slice and bit that is bad will indicate, with the I agree there is a need for large programs such as these, but
help of a schematic, a bad memory chip. I believe you should also concentrate on HANDY (Helpful
Richard A. Kaapke 4485 Vision Dr., Apt. 9 Algorithms for Novice Do-It-Yourselfers) programs to save
KLUGES, Inc. San Diego, CA 92121 bytes in space-limited systems. I enclose my example: a
(All rights released to DDJ from Kaapke’s Little Used but string immediate-output subroutine for 6502-based systems.
Greatly Esoteric Software, Incorporated) 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¬
REPRINTED ALPHANUMERIC MUSIC WITH acter (null), it returns to the instruction following the end
AMPLITUDE CONTROL INCLUDES CORREC¬ of the string. No string addresses or lengths are needed.
TIONS FROM AUTHOR 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
Malcom Wright has sent in three letters containing
the registers, nor the stack. It has been implimented on
corrections and additions to his booklet on Altair com¬
puter music generation [see DDJ, Vol. 1, No. 5, for notes an Apple Computer and copies of the program are being
on this publication]. These letters (dated April 13, May delivered to the Homebrew library and the CCC repository.
17, and June 7) have been included in the most recent
reprint of the booklet, available from the PCC Bookstore. Chris Espinosa
educational opportunities, special training programs, placement 0406 68 PLA GET RETURN ADDRESS
0407 85 FF. STA L0
problems and solutions, federal legislation, on-the-job prob¬ 0409 68 °LA
lems and solutions, and success factors. 040A 85 FF STA HI
040C A0 0 1 LDV # 1 SET UP INDEX
Industry and government employers will find that these GET NEXT CHAR
040 E 31 FE , N EXT LDA (L0)»Y
proceedings provide sound input to their plans for compli¬ 0410 F0 07 3EQ EXIT END IF 00
0412 C3 I NY
ance with the requirements of the Rehabilitation Act of
0413 20 FF EF JSR OUT OUTPUT I*1*
1973 (Public Law 93-112). 04 1 6 4C 0E 04 JMP NFv”r
The proceedings contain 125 pages and cost $6.75 for 04 1 9 3C 3F 04 EXIT STY KKEEP
04 1 C A5 FE LDA L0
ACM Members and $9.00 for non-members. They are avail¬ 04 1 E 38 SEC
able, prepaid, from: 04 1 F 6D 3F 04 ADC KKEEP ADD STR. LEN.
0422 85 FE ST A L0 TO RETURN ADDRESS
ACM Order Department
0424 A5 FF LDA HI
P. O. Box 12105 042.6 69 00 ADC #00 CARRY
Church Street Station 0428 85 FF STA HI
042A AD 3D 04 LDA AKEE° RESTORE REGS
New York, NY 10249 042D AC 3E 04 LDV YKEE°
0430 6C 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
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)
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
broken. Such a prodigious search nals, systems, etc. to use the new
and feeds information into the
has only become economically standard, and the cost of [reen¬
machine, it is stored or sent to the
feasible within the last few years coding 1 old files which are still
recipient in coded form.
due to revolutionary advances in deemed private would be high.
The same key must he used to electronics. These costs seem unjustified since
get the information out again, or They believe it significant that the cost of enlarging the key of the
for the recipient to get the sender’s this would probably be too costly proposed standard would be mini¬
message Any other key wilt pro¬ for a prjv:pt' firm to invest in nTying ma! ”
duce only garbled versions. into a rival firm’s secrets, but not Enlarging the 56-bil key to 64
If approved the algorithm lock too much for a government bits would escalate the cost of key¬
will become a standard item of inte¬ agency—say the NSA or CIA. The breaking machinery to about $5
grated circuitry, mounted on a tiny implication is that by setting a billion, or $2.5 million per key
silicon chip and manufactured in 56-bit standard the government broken, they estimate. This cost
quantity for installation in any wants to be able to pry in the name might give pause to governments
computer whose users want it. of national security or other pre¬ today, but in 10 years the expected
The key to the lock, on the text, but prevent others from doing advances in technology would re¬
other hand, is a series of 56 digits, so. duce these figures to $50 million
zeros and ones, arranged in any “While it is well established that and $25,000 respectively.
order. The large number of possible a larger number of keys does not The Stanford experts have urged
arrangements of these digits--ap- guarantee security,” says the Stan¬ a much higher standard with at
proximately 100 million billion ford pair, “too small a number of least 1 28 key bits, which the com¬
gives the appearance of a high level keys guarantees insecurity. puter users could employ wholly or
of security. “It is widely held that computa¬ in part. It would then be impossible
But Heilman and Diffie hold tion costs will continue to decline to break the key by trial and error.
that the so-called “56-bit” key is by an order of magnitude every five “We strongly encourage NBS to
not all that secure, that such a key years. In 10 years our $20 million consider modifying its proposed
could be broken in a day by anyone machine will then cost approxima¬ standard,” they conclude. “At the
with enough money to build the tely $200,000 and be within the least it should define the level of
trail-and-error machinery to search reach of any large organization. If security it believes the proposed
the 100 million billion keys. adopted, the proposed standard standard offers and make public
The machine would cost about would have to be changed before and reasoning behind its belief.
$20 million by their estimate, that time. Adoption of a standard with built-
averaging out to $10,000 per key “The cost of modifying termi¬ in obsolescence is not justified.”
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
Calisthenics 60rthodontia
Running Light Without Overbyte
October, 1976 Box 310, Menlo Park CA 94025 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. 3
Computer Hobbyist Conventions Calendar 4
Some Personal Observations on the Personal Computing ’76 Convention in Atlantic City 6
The First West Coast Computer Faire — First Announcement & Call for Participation 8
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 5
An Excellent, Point-By-Point Response to Complaints About The Digital Group — Richard C. Bemis 10
Assembling an IMSAI Computer — Pierre duPont V 11
PCC Research Engineer Evaluates the 16-Bit PACER Kit — John Snell 12
Survey of Vendor’s Products & Services — A Questionnaire for Consumers 20
The Computer at Puberty — Reprinted from Technology Review 14
SOFTWARE:
Timer Routines for 6800’s — Gregory A. Worth 21
Micro BASIC Plus for $15.95 — Technical Systems Consultants 21
Tiny BASIC for the 6800 & 6502 from Tom Pittman’s “Company” 22
SAVE and LOAD Mods to Pittman’s 6800 Tiny BASIC — Henry L. Lee 23
A BASIC Terminal Exchange Program — Robert Wilcox 24
Octal Debugging Program (ODT-80) for the MCS-80 Computer — E. R. Fisher 26
Complete Documentation & Annotated Source Code
OOPS! A Iine-Drawing Game for your Video Terminal - Marvin R. Winzenread 30
SCRUNCH: A Compactor for 8080 BASIC Programs — Marvin R. Winzenread 31
ALGORITHM & SOFTWARE DESIGN
Jack Armstrong’s Super Decoder Ring — Jon O. Stedman 16
How to Code Code
TINY HI — Design Specs for a Powerful Procedural Language — Martin Buchanan 32
PUBLICATIONS: Computer Power & Human Reason — Book Review by Dave Caulkins 36
Tutorials from the IEEE Computer Society — Selected Bibliography With Abstracts 36
Wayne Green to Start Publishing Kilobyte - John Craig 38
PCC Bookstore Offerings 39
264
Policy Statement:
Handling of consumers9 complaints
regarding vendors’ products & services
by the Editor specify, and the response appears to us to adequately deal
with the complaint, then we will do nothing more about the
As our regular readers are aware, we have pursued a complaint.
course of active consumer advocacy ever since we began publi¬ If we fail to receive a response within a reasonable period
cation. In fact, one of the reasons we refuse to carry paid of time, or the response is vague, ambiguous, or otherwise
advertising is to maintain the viability of our statements and fails to deal with the specifics of the complaint, then we will
comments regarding products and services being offered to probably publish the complaint (and probably the response,
the computer consumer. After some months of publishing as well) in the next available issue of Dr. Dobb’s Journal.
compliments and complaints about vendors’ offerings, we If we receive complaints about poor design of some
have slowly evolved a policy regarding the handling of con¬ item of hardware or software, and it is our engineering and
sumer complaints which we believe will be fair to both the systems judgment that they are valid, then we may publish
consumer and the vendor, to wit: the complaint without first contacting the vendor. If there
We solicit both compliments and complaints concerning is any question about the validity of the complaint, we will
vendors, from the hobbyist community. In either case, these contact the vendor or manufacturer as outlined above.
comments should be explicit, and contain as much detail as We will take this path of action only in the case of
may be appropriate. In the case of complaints, particularly written complaints that explicitly specify the problems.
those involving service, we will contact the vendor, discuss the In the case of compliments and praise, we will pub¬
complaint with him, and request that an explicit response lish it whenever it seems appropriate to do so. It is almost
from him be forthcoming within a reasonably short period of certainly appropriate when we receive multiple complimen¬
time. If the response is written, we will request that a copy tary remarks about the same product or service, coming
of it be forwarded to the originator of the complaint. from different parts of the country.
If we receive a response within the time period we
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 IMS ANNOUNCES 44-COLUMN PRINTER FOR
being disappointed by the “cheap shows” (whether you are $399
a hobbyist or a vendor).
1. See whether the hobbyist groups located in the area of an IMS Associates is offering a 44-column dot-matrix
advertised convention are sponsoring or actively participating printer for $399 (kit) or $549 (assembled). It prints 75
in the meeting. If they are, you can expect them to be Unes/minute, has automatic wrap-around for overlength
listed in the advertisements. If they are not listed, you should lines, can print double-size characters under software con¬
assume that they are not involved, and that the “convention” trol, can print on multicopy paper, and interfaces to a
is really little more than a trade show. parallel output port using hand-shaking. IMS Assoc.,
2. See whether a significant conference activity is part of the 14860 Wicks Blvd., San Leandro, CA 94577.
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 June, 1977 Midwest Regional Midwest Affilia¬
assume that it is primarily a trade show—and expect nothing Computer Con¬ tion of Compu¬
ference ter Clubs
more than that, if you attend.
Cleveland, OH P.O. Box 83
Brecksville, OH
44141
COMPUTER HOBBYIST
(216) 371-9304
CONVENTIONS ALREADY HELD:
Jun 13-16, 1977 Personal Computing American Fede¬
May 2, 1976 Trenton Festival 1500 people Section ration of Infor¬
Trenton, NJ 45 exhibitors '77 National Com¬ mation Process¬
Amateur Computer Group puter Conference ing Societies
of New Jersey Dallas, TX 210 Summit Ave
[Expecting 30,000 Montvale, NJ
Jun 11-13, 1976 Midwest Regional Computer 1 500-2500 people, 100 ses¬ 07645
Conference people sions, and over (201) 391-9810
250 exhibitors]
Cleveland, OH
Midwest Affiliation of Com¬
Jun 18-19, 1977 Atlanta Computerfest Kilobyte & ’73
puter Clubs
Atlanta, GA Magazine
[in conjunction with 73 Pine St.
Aug 28-29, 1976 Personal Computing '76 4500-5000
Hamfest] Peterborough,
Atlantic City, NJ people;
NH 03458
Southern Counties 103 exhibitors
(603) 924-3873
Amateur Radio Assn,
of New Jersey
Jul 29-30, 1977 Seattle Computerfest [same as above]
Seattle, WA
[in conjunction with
COMPUTER HOBBYIST CONVENTIONS Hamfest]
BELIEVED TO BE IN THE WORKS:
Nov 5-7, 1976 Technihobby—USA Marketing Ven¬ Aug 27-28, 1977 Personal Computing '77 PC '77
Commonwealth Pier tures, Inc. Consumer Trade Show 503 W. N.J. Av.
Boston, MA 5012 Herzel PI. Atlantic City, NJ Somers Pt, NJ
[Computer & Radio Beltsville, MD 08244
Hobbyists] 20705 (609) 927-6950
(301) 937-7177
Interface Age
Nov 10-14, 1976 Technihobby—USA [same as above] Oct 25-28, 1977 (Name unknown at Box 1234
Los Angeles Convention press time)
Cerritos, CA
Center Anaheim Convention 90701
Los Angeles, CA Anaheim, CA (213) 469-7789
[Joint Meeting with the
Personal Electronics Spring, 1977 Personal Computing Benwill Publish¬
Show] (four shows being ing Corp.
planned for: 167 Corey Rd.
Nov 19-21, 1976 Technihobby—USA [same as above] Boston, Chicago Brookline, MA
Atlanta Civic Center Philadelphia, and (617) 232-5470
Atlanta, GA Southern Califor¬
nia)
Dec 3-5, 1976 Technihobby—USA [same as above]
Sheraton Park Hotel Fall, 1977 (Name unknown at Southern Cali¬
Washington, DC press time) fornia Compu¬
Los Angeles Area ter Society
Dec 16, 1976 Western Microcomputer [Proposal to hold P.O. Box 3123
Show such a convention Los Angeles, CA
Sheraton has been placed 90051
Anaheim, CA before SCCS Board
of Directors]
Apr 15-17, 1977 The First West Coast [co-sponsored
Computer Faire by a number of Note: This list excludes a number of conventions directed
Civic Auditorium Bay Area hobby¬ towards computer professionals that are expected to have
San Francisco, CA ist, professional, at least nominal activity in the area of personal and hobby
[Expecting 7,000- and educational
10,000 people, organizations.
computing. Although the '77 NCC is primarily for com¬
50 sessions, 200 See article, else¬ puter professionals, its Personal Computing Section will be
exhibitors] where in this a major activity with a number of significant sessions and
issue] 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 PERTEC (FLOPPY MAKER): BUYS iCOM
FLOPPY DISC SUBSYSTEM
(CONTROLLER MAKER), MAKES WATS
LINE AVAILABLE TO CUSTOMERS
Dear Editor, September 1, 1976
I read with interest, “The Time for Floppy’s is Just Pertec, a manufacturer of floppy disc drives for some
About Now,” in DDJ, 8/76. I too think a floppy peripheral years, has just completed purchase of iCom, the Southern
California systems house. iCom has been marketing a
provides a highly desirable mass storage device, not only for
floppy disc controller and operating system for Pertec
homebrews but for industrial micros and minis as well.
drives since last spring, and has been actively cooperating
In particular, I would like to provide some answers with computer hobbyists.
from my own experiences, to the questions you had regard¬ Unrelated to this purchase, Pertec has announced
ing the iCOM floppy system. I bought a single drive system installation of WATS-line (toll-free) telephone service for
in August 1975. At that time they had not yet introduced use by its customers and field service personnel. This
their Frugal Floppy but they allowed me to purchase just 800-area code number allows you to call the factory
the controller-formatter, model CF360, Mux card (-20) and trouble shooters, without cost.
Note: We just phoned WATS Information and found
cable set (-22). They then told me exactly how to buy the
that the Pertec WATS number is (800) 423-5156 . . .
mating Pertec drive and mating Adtech power supply, giving
but is accessable only outside of California.
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
USED TELETYPES & TERMINALS
2 PIA’s (Peripheral Interface Adapter) for $15.00 each, con¬
nected them to my Motorola M6800 Evaluation Module
National Teletypewriter Corp. (207 Newtown Rd., Plain-
board, and provided a connector to mate with the format¬ view, NY 11803, (516) 293-0444 is an ongoing dealer in
ter-controller. Within about an hour, primarily required to used computer terminals and a variety of models of tele¬
add a fuse and power cord to the power supply and figure type.
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 The other implemented a partially disk-resident operating sys¬
part of the formatter-controller purchase. The manuals had tem that makes the IK of microcomputer RAM memory
provided suitable information about this cable so I had it appear to be about 4K, by using overlay techniques and
ready and waiting too. (It is now included with the Frugal program chaining.
Floppy.) Throughout it all, the floppy system has always func¬
Their documentation was thorough and accurate. Of tioned properly. The compatability of the IBM format
the fourteen floppy commands that can be issued to the used was tested as follows. The minicomputer collected
formatter-controller, I managed to correctly implement 12 digital data, it was passed to the M6800 in ASCII, transla¬
of them in my driver without problems. It took me another ted to EBCDIC and recorded on the diskette. The diskette
week to debug my READ routine and the remaining two was then loaded into an IBM 3540 peripheral on our IBM
commands so that I was reading data and not status. I 370. The IBM 370 was then able to read and print the data
still had one problem left, but when I called iCOM, Terry as if the diskette had been recorded in the 3540. Similarly,
Zimmerman and Bob Brusseau informed me how to interpret IBM 3540-recorded diskettes were loaded into iCOM floppy
IBM format, and my problems were over. In addition, Bob system, read by the M6800, translated to ASCII, and used
went over the entire Logic Diagram and added all the signal as data by the driver routines.
names that had been omitted from various portions of the Since then, we have ordered a Frugal Floppy and a
circuit and included two gates that had been added to the mating power supply ($250 for the power supply) and are
PC boards but not the Logic Diagram. During the year contemplating purchase of a third system. These negotia¬
since, the Microcomputer/Floppy has been interfaced to a tions were handled by Alan Garfein who provided informa¬
minicomputer as an intelligent peripheral, and it was found tion and advice not only about iCOM equipment but was
desirable to add another disk drive. I ordered another Pertec most helpful in providing leads to other related equipment.
drive this time from iCOM, with an additional Mux board, In summary, the equipment has been highly reliable and
and when it arrived and was unpacked, I simply attached it performed according to specifications, the documentation
to the connectors that had come with the original system, was well-written and complete, and the personnel were
and was able to use either drive just as easily as using the knowledgeable and helpful. We expect to be getting FDOS
single drive. Unfortunately, the fuse on the power supply I, editor, and assembler with the Frugal Floppy and then
blew out several times. A call to iCOM revealed that we had we will be able to gain experience with iCOM software as
been too conservative in sizing the fuse initially so we in¬ well.
creased its capacity and added the recommended fan to pro¬ Sincerely,
vide cooling and now have an effective, dependable system. Chuck Felber Rockwell International
Two additional programmers have “cut their teeth” on Technical Staff Tulsa Division
this system. One added routines to the core-resident driver Box 51308 (918) 835-3111
including an automatic initial-program-load (IPL) feature. Tulsa, OK 74151
October, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 Page 5
267
Some Personal Observations
on Personal Computing 976
Jim C. Warren, Jr., Editor artist. In fact, he was a member of the National Academy
of Design which, at that time, was a very prestigious
Through the prodigious efforts of John Dilks, Davy national society.
Jones, and Jim Main (and with considerable help, guidance I should mention Leda Alpert, the woman who put
and support from Carl Helmers and BYTE Magazine), the together the super low-cost travel package that helped a
August 27th-28th Personal Computing ’76 Consumer Trade number of west coasters (including myself) afford to at¬
Fair was a great turn-on! So much was going on that I tend the convention. She almost worked her Southern
had only three to four hours of sleep per night, and even California tan to the bone putting that mess together.
then, I missed some gatherings I would like to have at¬ At least in my case, her agency (Travel Co-Ordinators, Inc.,
tended. Details of particular note: Los Angeles) probably lost more than it made. We must
Statistics, first: About 4,500 computer enthusiasts and have spent half a dozen long-distance phone calls, haggling
curiosity seekers attended the two-day convention. There over my eccentric travel desires. But ultimately, she put
were slightly over 100 exhibitors, and about 50 talks, panel it together. Furthermore, she was at the show to trouble¬
sessions, and seminars. The banquet on Saturday night shoot travel problems for her clients . . . which was help¬
turned out over 360 people (in spite of its hefty $15 price ful to a coupla people.
tag). I had the good fortune to meet Neil Colvin, the
We blew it. Contrary to the “reliable rumor” we software type with Technical Design Labs of Trenton, NJ.
published in our August issue, Heathkit was not one of the ex¬ Keep an eye on that crowd; they are doing some great
hibitors. We understand, however, that Heath purchased a things with their Z-80 system. Among other things, Neil
block of 16 tickets to the convention. Lou Frenzel, said they already have a macro assembler modeled after
their Director of Computer Products was there. And, he DEC’s MACRO-10 and using MACRO-11 syntax that pro¬
reportedly was overheard saying that Heath would have a duces relocatable code. They have a loader that accepts
kit out “before Spring.” So much for rumors mongered. relocatable load modules. They have a BASIC that runs
Idle gossip had it that MOS Technology was being in 6.5K bytes and accepts Altair BASIC source code.
bought by Commodore Calculators. (So what? They will They have a FORTRAN compiler very near completion
undoubtedly continue to turn out hot products.) (aww shucks; I thought that dinosaur was dead). And,
I am delighted to publish another correction to in¬ at the time I spoke with him, he had just finished trans¬
formation in our August issue: We noted (incorrectly) that porting a portable PASCAL compiler over to the Z-80. At
the fine print of the literature concerning Matrox VRAM’s that time, it took 32K bytes of grossly inefficient code (as
(Video RAM) indicated that a minimum order was 100 portable software is prone to do), and Neil was starting
units. Their rep, Lome Trottier, dropped by to say “hi,” to go through it and optimize it. The PASCAL compiler
and told us that the stock items we had listed in that generates PCODE as output, which requites an interpreter
August article are available in unit quantity for the (portable PASCAL had much the flavor of “portable”
prices we quoted. The 100-unit minimum pricing referred Tiny BASIC). Neil had managed to crowd the PCODE
only to custom-built units. Therefore, take another close interpreter in one kilobyte on the Z-80. Also, he said
look at ‘em. They have a 256 x 256 black-and-white they are. working on a “word processor.”
graphics display for $630, as well as some interesting 64 At the head table at the banquet, I was delighted
and 80-character alphanumeric VRAM’s (ASCII in, video to find myself sitting next to John Whitney, the compu¬
out). That’s Matrox Electronic Systems, Box 56, Ahuntsic ter graphics artist of international reputation, who was
Stn., Montreal, Quebec H31 3N5, (514) 481-6838. the last speaker at the banquet. As usual, he closed it with an
I am also delighted to report a correction to coitl- absolutely fascinating exhibition of some of his computer-gen¬
ments contained in a letter that we published in our June/ erated films. He is a most fascinating man, for his ideas, his
July issue. In that letter, one of our readers stated that art, and his exuberant and vibrant outlook. If you ever
MITS Computer Notes would only be available by sub¬ get a chance to hear him speak, or see his films, don’t
scription after the first of the year. Dave Bunnell the miss it! Incidentally, he travels so much that he has two
publisher of Computer Notes, announced at the banquet watches on his watchband; one gives the local time, and
that this was incorrect (explicitly referencing the letter) the other gives “home” time for the west coast.
and indicated that Computer Notes subscriptions would I saw the first issue of the much-advertised Microtrek
be available without cost, permanently. We applaud magazine. It had 64 interior pages, of which less than
this fair-minded and sensible policy and apologize for nine were advertising. Almost five pages were devoted to
publishing inaccurate information [note the Policy State¬ “Just Getting into Microprocessors? Odds Are, You’ll End
ment on Complaints, published elsewhere in this issue.] Up With a Kit,” reprinted from Electronic Design. The
National Semiconductor was present and told me rest included: a ten-page article on the “KIM-1 Microcom¬
that they now have Tiny BASIC for their SC/MP puter Module,” five pages devoted to a “Super-Simple Cas¬
microprocessor. It is available in paper tape form or in sette Interface,” Part I of an “Introduction to Assembly
3K of PROM. Incidentally, their SC/MP kit with 256 Language Translation” (eight, pages including a glossary),
bytes of RAM, and 512 bytes of ROM including their almost nine pages concerning “Better Programming
KITBUG monitor is available for $99. In less than four Though Flowcharting and Documentation,” four pages of
months, Hash Pa til said they had sold over 8,000 of details for an M6800 “Software Leader,” and a nine-page
these kits. “Buyer’s Report: The IMSAI 8080 Computer Kit.” I got
Someone mentioned this interesting tidbit: Alexander the impression that it was planning on being a “general
Graham Bell was not a technical type. Rather, he was an 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, Roald Evensen, two of the principals in Marketing Ven¬
when I identified myself to the Editor and asked him tures, Inc., which is putting together the TechniHobby
what the focus of Microtrek would be, he said it was shows [see “Hurray & Beware . . .”, another article in
going to concentrate of software. Furthermore, some this issue]. I was favorably impressed by them. They
editorial notes in the first issue state that he is especially were low key, “up front,” and seemed to have some good
seeking articles on medical applications, display applica¬ ideas. Basically, they were planning on their Technihobby
tions, floppy disc systems, computer control of electro¬ shows being trade fairs covering not only computer hobby¬
mechanical devices, pattern recognition systems, bit-sliced ists, but also ham radio and radio-controlled models. In
computers, and APL. So, I don’t know where Micro trek this way, they expect to encourage considerable “cross-
is headed, but I am interested in seeing the future issues. pollenation,” particularly from the ham crowd into com-
Some interesting tidbits gleaned from Chad Harris, putery. They indicated that they were planning on co¬
Club and Training Manager for the American Radio Relay operating with local hobby groups. They also had some
League (ARRL): There are 281,000 ham operators, right innovative ideas for assisting small vendors who couldn’t
now, and they expect 30,000 more by the end of the afford to travel all over the nation exhibiting their wares.
year. Their average investment in ham gear exceeds $1K. They also publish an excellent trade newspaper, Mid-
Only about 1% built all of their own gear; the rest built Atlantic Electronics. I got around to reading it on the
kits or bought turnkey systems. And . . . Chad estimated way back to the West Coast and found that I tore out
that approximately JAth of the hams are seriously inter¬ almost half the pages to keep in my technical reference
ested in amateur computing; that’s more than 70,000 files. They are at 5012 Herzel PI., Beltsville, MD 20705.
potential computer phreaques! I heard that the National Security Agency has an
Quoth one of the banquet speakers, alluding to com¬ in-house club of computer amateurs that has over 100
puter foul-ups: “Failure to receive this bill is not an excuse members.
for nonpayment.” The Chesapeake Microcomputer Club appears to be
A surprise award for Computer Hobbyist of the Year an East Coast counterpart of the Southern California Com¬
was given to Saul Libes, the leader of the Amateur Compu¬ puter Society. It already has Chapters in Baltimore,
ter Group of New Jersey and one of the major organizers Columbia, Wheaton, Washington, McLean, Reston, and
of personal computing activities on the East Coast. Richmond.
Someone had a little booth in the Trade Fair portion Wayne Green and John Craig were there with 73
of the convention and was selling digital clock kits. By Magazine and their new computer hobby mag, Kilobyte.
Sunday afternoon, he had sold out, packed, and gone [See John Craig’s article elsewhere in this issue.]
home. Votrax was another exhibitor well worth noting.
IBM was/wasn’t an exhibitor. (The following story They have been making speech synthesis systems for
came from John Dilks and is retold with Inis permission). several years. Last Spring, we contacted them and en¬
In the early planning stages of PC ’76, John contacted couraged them to enter the hobbyist market with a
IBM and asked, them if they were interested in being an low-cost speech-synthesis kit. I am delighted to report
exhibitor. Initially, he received no response. Then, IBM that they were handing out a press release detailing
decided they were interested, sent in their exhibitor such a kit for $750, with first deliveries planned for
registration and fee, and indicated they would be there. early 1977. [See February, March, May and September
So, as part of the promotion of the convention in some issues of DDJ for more details.]
of the publicity releases, John (reasonably) mentioned IBM I heard some preliminary but very exciting com¬
along with a number of others as being expected exhibi¬ ments about a general-purpose string-processing lan¬
tors. Shortly before the convention, IBM called up and guage that is about to become available, based on
said they wanted to cancel out. John said, “No way.” Strachey’s GPM and Mcllroy’s M6.
IBM said he could keep the registration fee and rent the Ted Nelson was there with his Itty Bitty Machine
booth space to someone else. John refused. Then IBM Company of Chicago, and 7’-high stacks of IMSAI’s
wanted to get another vendor, on their own, and let him as a backdrop. We happened to share the same tables
take the space. At that point, John told ‘em that, no for several meals ... a most interesting guy. He told me
matter what IBM did, they were going to have the booth something of his progress on Xanadu, a very exotic
they had committed for, and it was going to have an electronic library and information facility (described in
IBM sign on it, whether they were there or not. Well, one part of his book, Computer Lib)', a fascinating pro¬
IBM showed up, refused to take the booth, but set up ject that appears to be nearing reality. If you haven’t
some of their gear in one of the hotel suites and placed head about it, better look it up. You are likely to be
a directional sign in the booth (strange people, those hearing about it before long. He is making heavy use of
maxi makers). In one of the final verbal exchanges Calvin Mooers’ TRAC (licensed, proprietary name) lan¬
between John and an IBM rep, Dilks said, “You know, guage, and expects to market the sortware for $100 (with,
you people have your heads in the clouds watching of course, an agreed upon royalty being paid to Mooers).
for the money to blow by. You ought to look down Carl Helmers gave me this hot news item for DDJ
on the ground and find the bucks laying at your feet.” (and I took it, hook, line, and sinker): The Amalgamated
[Quote verified by John.] Clothing Workers Union is considering unionizing program¬
Bob Jones, who has been the publisher of SCCS mers. They have decided they ought to do so since they
Interface, has chosen to go his own way. He was dis¬ heard that programmers make software. [Byte is too
tributing the August issue of his new publication, called proud to publish it, but we’re jus’ plain folks, out here.]
Interface Age. [Incidentally, the last we heard, SCCS is And with that ... I better quit.
planning on continuing to put out their own publication
which will be called SCCS Interface.
I spent a pleasant evening with Ron Davies and
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
Sections are also being planned for Computer Music, and that’s just scratching the surface.
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 (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, INSIDE DOPE FROM MOTOROLA
as:
• A Speaker We announced the “reliable rumor” of a Z-80 com¬
• A Panel Session Leader or Participant petitor being planned by Motorola, the 6809, at the July
• A Section Chairperson 21st Homebrew Computer Club meeting. Afterwards, a
• An Exhibitor of a Homebrewed System (hard or soft) Motorola engineer rushed over and, after an unsuccessful
• An Exhibitor of Commerical Products query concerning our source of information, volunteered
• An Assistant in the Administration and Coordination to “tell all.” Here is his information as of August 6th.
of the Faire All of it is tentative.
• Or Whatever
Or, if you wish to suggest something or someone for inclusion A BASIC compiler for the 6800 will be introduced in
in the Faire: the 3rd Quarter of this year. It will be resident in the 6800
• Topics for Panel Sessions or Talks Exer Ciser, will be a legitimate compiler (not an interpreter),
• Possible Speakers or Panel Leaders will take 4K to 6K for the compiler plus 2K—minimum—for
• Interesting Exhibits (Homebrewed or Commercial) the user. It will handle scalers, one and two-dimensional
• Special Activities (Tours, Meetings, etc.) arrays (but no matrix operations), and will include such
Or, if you have questions or desire additional information, command facilities as IF-THEN-GOTO, GOSUB/RETURN,
then please contact: DATA, READ, RESTORE, INPUT, and PRINT. It will have
Jim Warren, Faire Chairperson [or] Bob Reiling, Operations the usual arithmetic functions and will allow linkage to
[Editor, Dr. Dobb’s Journal & Coordinator user-generated object code. Features that will be added at a
Vice Chairman, Peninsula [Editor, Homebrew Com¬ later date include matrix operations, string manipulation,
ACM Chapter 1 puter Club Newsletter]
193 Thompson Square
and graphics. It is being developed at Ohio State.
c/o People's Computer Company
P.O. Box 310 Mountain View, CA 94043
Menlo Park, CA 94025 (415) 967-6754 Motorola’s forthcoming high performance micropro¬
(415) 323-3111; 851-7664 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
FLOATING POINT PROCESSOR FOR 8080’s finalized. The instruction set will be a superset of that of
the 6800. It will have additional registers, including one or
A PC card is available from North Star Computers, 2 more index registers. It will have additional addressing
Inc., 2465—4th St., Berkeley, CA 94710, (415) 549-0858, modes including indirect and “true indexing” with the base
that provides floating point functions to the 8080. It pro¬ in the operand and the offset in a register. It will probably
vides for addition, subtraction, multiplication, and division be an N-Channel device. It is expected to be available in
of BCD-formatted floating point operands with 14-digit pre¬ the 2nd Quarter of 1977.
cision. The subsystem is available for $499.
Lots of other tidbits are forthcoming from Motorola,
NEW CHIPS OFF THE OLD SUBSTRATE however:
by Jim Day Note that the 6800 uses 197 of the 256 available op
codes. The 6801 will have an on-chip clock. Sampling of
The September 2, 1976 issue of Electronics de¬ the 6801 is expected in September or October.
scribes two new peripheral support chips that may prove
useful to hobbyists. The 6800A is expected to be available in a coupla
On page 133 is a description of the MN3020 8-bit months. It will run at 1.5 MHz or better and will be a
depletion-load device.
D/A converter chip from Micro Networks Corp., 324
Clark Street, Worcester, MA 01606. The 18-pin DIP in¬
The 6802 will be available in the 1st or 2nd Quarter
cludes an internal reference and an amplifier for the ana¬
of 1977. It will be more of a “controller” than the 6800.
log output. Priced at $30, the unit is TTL compatable Its instructions will be more oriented towards bit manipu¬
and should be useful for music and speech synthesis lation.
applications.
Page 151 describes a new character generator In October of this year, Motorola will introduce a
chip from National Semiconductor Corp., 2900 Semi¬ new 6800 kit for about $200. It will be a two piece kit,
conductor Drive, Santa Clara, CA 95051. Designated will include a 7-segment hex display, hex keyboard, a IK
the DM8678, the 16-pin DIP includes all circuits needed JBUG Monitor (the “J” stands for “Jim”) that is located
at the top of memory, and a Kansas City “standard” audio
for parallel-to-series shifting, address latching, and char¬
cassette interface.
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. RAW RUMOR: AN 8085 FROM INTEL?
October, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 Page 9
271
ELECTRICALLY ERASABLE ROM’S
AN EXCELLENT, POINT-BY-POINT RESPONSE TO
COMPLAINTS ABOUT THE DIGITAL GROUP General Instruments is rumored to be planning
announcement of ROM that can be erased simply by
Dear Mr. Warren, August 24, 1976 applying a short blast of voltage to appropriate pins.
I would like to take this opportunity to thank you for Reading is performed at usual voltage levels. Writing
the kind words and your support in Dr. Dobb’s Journal. As or erasing is done at 28 volts; 10-20 ms for writing
you know, Dr. Suding and the Digital Group have tried to be and 100 ms for erase. There are to be two models
equally supportive of your efforts and of course will continue of the ROM (EROM?, EPROM?, non-volatile RAM?):
to be so. the ER2800 will have 8K bits and 2 mics. read cycle,
In your August issue, you raised some very valid points while the ER3400 will have 4K bits and an access
about what we are trying to do and how well/not-well we are time of 650 ns. _ _ _ _
succeeding. Your assumptions were partially valid on the
current situation and I would like to address them one-by-
fel: was appropriate. [A reasonable request. Herewith
one. [The following three quotes were editorial comments
adopted as Journal policy.—JCW]
published in the August article.]
On the two items [Page 37, August issue]:
1. “Customer interest in Digital Group products has
Christopher Hovey. Our turnaround time on servicing
exceeded their initial capacity to respond in a
is now down to less than a week and rarely, if ever, has
manner they would like.”—obviously true.
exceeded 2 weeks. Of course, Mr. Hovey is at an APO
address and normal one-way shipment takes 3 weeks or
2. “They are aware that they have a problem and are
longer. Amazingly enough, he’s been waiting a full month
doing everything they can to expand their customer
for his equipment to go by boat to wherever overseas he
service department and procedures.”—boy, are we
is stationed. The latest information we have is that he is
aware of the problem!
3. “It is their wish to maintain an operation of un¬ indeed up and running. [My error. I should have spotted
usually high integrity and responsiveness to their the APO address and noted that a one-month turn-around
customers.”—Exactly. was reasonable.-JCW]
Agreeing with you is OK as far as it goes, but what are Robert Gerald. This one’s a pip. Yes, he is quite right
we DOING? Here are the actions we have taken to rectify that we got some mis-labeled parts from Motorola that did
the situation. indeed generate upside-down characters. About 10 actually
1. We have expanded our facility from 100 square feet got out our door, and to my knowledge, all have been replaced
to over 7000. in most cases before the kit builder even had his kit built.
2. Our number of full time people has expanded from However, his complaint is misleading concerning the replace¬
6 to 16 plus part time as needed. ment of his chip. We shipped him a replacement the day
3. We have quintupled our investment in inventory after he placed his call, irrespective of Gus’s comment (which
(which was not trivial to begin with). was not true and very ill-advised—one of his bad days ob¬
4. Of the new personnel, 2 went directly to customer viously). You will note that the date on Mr. Gerald’s let¬
service on a full time basis, effectively tripling our ter is the very next day. Now, the post office is doing
capability there. pretty well, but not that well. Ah, but there’s more. You
5. We are in the process of automating our operation will notice that after our repeated requests to send in his
(a long overdue step) so that we can respond to board, Mr. Gerald finally sent it in with a cover letter on
order status more appropriately and do such things July 31 [Copies of correspondence were enclosed.—JCW].
as acknowledge receipt of an order, keep better I’ve also included a copy of our service record for the unit
track of any shortages, and keep people informed and what we discovered—misplaced part, destroyed char¬
if their order hits any unexpected snags. acter generator, and a solder bridge. We returned his kit
All of these items have been implemented currently and on August 12, up and running, with no charge. If that’s
you should begin to see their results soon. We are doing “abandoning any kind of customer service to previous pur¬
everything we possibly can to “dig out from under” and ex¬ chasers,” I guess there’s nothing more I can say. [We
pect to be in very good shape soon. agree.—JCW]
Next item: You did print a couple of complaints Well, I hope I’ve made my point. As usual, there
about the servicing we were providing a couple of months are 2 sides to every situation, and all I can hope for is that
ago. I find no objection whatsoever against complaints you might be able to do a little checking on what’s really
when they are on target, but I wish that just once a manu¬ behind the letter before printing.
facturer would be given a chance to respond before you go Sincerely,
to press—not censor, as that would impune your integrity— Richard C. Bemis, President
but at least a chance. [We have. See editorial in this issue.] Hie Digital Group, Box 6528, Denver, CO 80206
The manufacturer is always automatically cast as the heavy (303) 861-1886
against the little guy and does not dare respond. Please
pick up the telephone and call me directly (collect, of Editor’s Note: Mr. Bemis also included some notes about a
course) so at least I can look into the problem and fix the delay in shipment of DG’s Z-80 kits. The problem has been
situation. You would then be doing everyone a service by cleared up (as of September 6) and they expect to fill all
getting action and would still be able to print whatever you 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
CONSUMER NOTES ON
A Consumer Reports
DIGITAL GROUP & TINY BASIC
ASSEMBLING AN IMSAI MICROCOMPUTER
Dear Jim, Sept. 7, 1976
by Pierre duPont V
Since I wrote you last I have received an 8K board,
Tiny BASIC and a C-104 superscope cassette player from
When I left for my first year at boarding school last Sep¬ Digital Group.
tember, my big interest was Spanish, and I had visions of a
4/30/76 Order placed
language major. However on my first day at school, I was
5/10/76 Tiny BASIC and game tapes received
introduced to a PDP8/e computer. Immediately I took in¬
6/1/76 8K and Cassette deck received
terest and got to know the appropriate teachers and stu¬
UPS messed DG up by going on strike, so I reminded
dents. After a year of intensive training with a computer
DG about my order a week after UPS went back to work.
hobbyist who was never around when I wanted to learn, I
The 8K board went together in 314 hours including
received a key to the computer room, and a key to the com¬ checkout and installation. Worked perfectly.
puter itself. I now have visions of an electrical engineering
The “Tiny BASIC” (TB) tape was defective and they
major, and can’t wait to complete my requirements in Span¬ sent me another. Their soft ware is a little sloppy but it
ish this year. is very inexpensive and does work, $5.00 for TB.
Just as school let out I became convinced that I should
The C-104 works great but I’m sure it’s possible to
purchase a microcomputer. In about a week I had placed
buy it cheaper someplace else. I wanted it in a hurry. A
several orders, cancelled several, and ended up with an
good feature is its variable speed control. It allows a per¬
ALT AIR 680. It arrived on time (strange!), and I assembled
son to use tapes recorded on different players even if
it without difficulty. Just as I finished, I left for Denmark
their speed was a little off. The tapes from DG have been
for some sleep. When I returned and had about one day’s
running a little slow on my system.
use of my 680,1 went to the Personal Computing Conven¬
My plans are to work on SCELBI’s “SCELBAL” and
tion in Atlantic City. When I arrived at the convention, my
8080 Assembler programs. Tiny BASIC felt restrictive as
teaching friend began to think about trading his 680 in for
soonaas I tried to apply it in physics problems. Integer
an IMSAI. As it turned out, we both traded our VW 680’s
arithmetic requires scaling.
for Cadillac IMSAI’s.
Oh, by the way, the biggest disadvantage of DG’s
I didn’t start assembling mine for about a week, but whe
TB is they send no listing or include no software tools
I did, I had a couple of scares. The instructions were not
for modifying it. Fortunately they tell you how to use
as easy to understand as ALTAIR’s. I had to remove the
it. No listings are sent with their games. TB was set up
same IC socket twice, and nearly ruined the circuit board.
for TTY and not for 32 column TV, a disadvantage.
It was a socket for a jumper to the main processor board,
Keep up the good work.
and there wasn’t even supposed to be a socket there. It is Yours,
assumed in the assembly manual that no sockets other than Ed C. Epp Educational Computer Laboratories
those given (3) were to be used. There was also a space that 748 S. Main St.
looked like a place for an IC, but nothing was to be in¬ Freeman, SD 57029
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. SOLAR ENERGY COSTS DROP 50% IN 18
I nearly ruined the entire power supply when I installed
four diodes in the wrong position. I put them in as re¬ MONTHS
quired, but somehow I knew it wasn’t right. I called the Remember how the "nuclear people" were predicting, in
factory and found out that the updated page had been left last spring's California ballot initiative battle, that solar energy
out of my manual, and that they were sorry. Well, the would remain uneconomical for the rest of the 20th Century?
power supply works fine now, although it supplies a little Well, the September 2nd issue of Electronics magazine carries
a report of an announcement by ERDA (Energy Research and
too much. '
Development Administration) officials, stating that costs of
I finished building it in two days of slow work, and then
photo cells designed for solar energy use had dropped from
proceeded to wait. I’m still waiting. It’s been llA weeks, $30/watt to $15/watt within the last year and a half.
and it’s killing me. I’m very disappointed because IMSAI [And: Photocells aren't even the best way to obtain
supplies no memory with their basic kit. I have ordered reliable electrical power from the sun. There are some excel¬
8K of RAM from a small discount store (8K for $ 180- lent solar-thermal alternatives, requiring no significant techno¬
worth the wait), and a video interface board from Polymor¬ logical breakthroughs that can provide 24-hour electrical power
phic. Of course neither has arrived and I can’t test my without requiring electrical sotrage for night-time service.]
dream computer.
While waiting I’ve placed several more orders. I pur¬ makes a great kit, and offer praise to them for their rela¬
chased a cassette interface, and expander board, several 100 tively inexpensive tank-like kit.
pin connectors, and a cooling fan. I also hope to persuade In the next year or so I hope to expand to about 20K
the relatives to give me an advancement on my Christmas of RAM. I also plan to get 8K and 4K BASIC along with
presents, and give me another 8K board. IMSAI’s self-contained system on PROM. After that comes
So far I have no complaints with IMSAI, except that it a hardcopy printer and several more cassettes for a Tarbell
comes with no memory. I realize that this is because interface board.
their computer is meant for small businesses who may pur¬ The IMSAI kit is great and I recommend it to anyone
chase 32K at one time, and have no use for IK of on who wants a microcomputer, but doesn’t want to wait for
board memory that would clutter things up. The entire an ALTAI R. Being relatively new like they are, IMSAI
kit seems to be this way—the assembly instructions are not has quite a kit.
really meant for a small time hobbyist like me, and the Pierre duPont V Salisbury School
computer itself is built like a tank. I do think that IMSAI 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
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
DOC QUESTION ON 64-CHAR MOD FOR TVT-II
(Copy of a letter to Digital Designs)
B4CER continued To: Digital Designs August 18, 1976
P. 0. Box 4241
the IC’s and a heftier power supply had been used, however, these additions Victoria, Texas 77901
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 David O. Valliere, [see DDJ, Vol. 1, No. 6, page 29]
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
I received the circuit hoard to convert my SWTPC TVT-II
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
to 16 x 64 characters from you last week. I have not in¬
and debugging. The 16 bit instructions and data provide for efficient assembly stalled it yet. In the meantime I have modified my TVT-II
language programming as well as increased accuracy. One may use words as a diagram to include the changes. At the same time I decided
whole or in 8 bit bytes. Common memory and peripheral addressing result in to check your modification to see if I could convince my¬
simple quick I/O instructions. self it would work.
With the Pacer’s 16 bit accuracy and easy I/O and a couple of floppy disks, I failed. But I think I know what’s wrong. Three things
one could program something like Music and Score^ for composition and bothered me.
playing of high fidelity music. Of course you would also need a 16 bit DAC^. If 1. There seems to be no source for the logic net compris¬
a very fast hardware multiply card were added as well as a fast Pace IC (rumored ing pin 9, IC28, pin 13, IC33 on the TVT board.
to be coming out from National Semi) to replace the pMOS IC, a real time FM
2. There seems to be no source for pin 15, IC42 compara¬
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
tor.
Fourier synthesis 3. Connection I on your circuit board had no instruction
referring to it.
(1) Project Support Engineering/750 N. Mary/Sunnyvale, Ca. 94086 I would like to know if the following correction is correct.
(2) Bit Bucket I Commute-,-! 15/National Semiconductor/2900 Semiconductor Dr. Remove the following instruction from page 4 of the in¬
Santa Clara, Ca. 95051. structions: Connect pin 15, IC35 to H. Add in its place
(3) Described in The Technology of Computer Music by M. Mathews, MIT Press, the following two instructions: Connect pin 13, IC33 to H;
Cambridge, MA 1969. Connect pin 15, IC42 to I.
(4) “Score — A musician’s Approach to Computer Music” by L. Smith in the Walter Cole 5868 Pentz Way
Journal of the Audio Engineering Society (JAES) Vol. 20, No. 1, Jan/Feb, c72.
San Jose, CA 95123
(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.
P.S. I am very interested in your upper/lower case and com¬
(6) J. Chowning, “The Synthesis of Complex Audio Spectra by Means of puter controlled cursor modifications for the SWTPC
Frequency Modulation” JAES, Vol. 21, No. 7, p. 526, Sept. 1973.
TVT-II.
PACER PRODUCT LINE RETAIL PRICE LIST (JUNE, 1976) Dear Dr. Dobb’s,
Pacer Units Since we have been experiencing tape-stretch prob¬
Quantity 1 H 2H 3H PAC 1 PAC II PAC III PAC IV Fan Kit lems and other Natal problems when we have to run
1 -3 $895 $1075 $1025 $180 $225 $50 $7 $25 BASIC back and forth on the cassette machine to load
4-9 $855 $1035 $985 $175 $245 $47 $6 $23 our APPLE every morning, I was going to ask you for
10 — up $820 $995 $950 $170 $235 $45 $5 $22 your best medical advice, but have solved the problem
with a home remedy. Being new to this cassette business,
Club group buys would help reduce costs. I figured they should only run in one direction, but no,
wham-bang, you have to rewind the buggers—this stretches
Pacer 1H — totally unassembled (not recommended by P.S.E. for beginners. and pulls and raises general hell with the tape! So why
Pacer 2H - completely assembled, tested and burned in. not just run in one direction? No reason why not if
Pacer 3H — unassembled except for logic cards which are tested and burned in. you use an endless loop tape! TDK puts out a high
PAC I — TTY interface/resident assembler card.
quality loop tape in 20 sec., 30 sec., 1 min., 3 min., 6
min., and 12 min. versions (something for everyone)—
PAC II - 2K x 16 MOS RAM card.
so you can save your favorite games or BASIC on a tape
PAC III - prototyping card with voltage regulators. that will run round-and-round and just wait for the
PAC IV — dual 43 pin mother board connector (this comes with PAC I, PAC II beginning to press load.
or PAC III).
Sorry I didn’t get the prices (they are expensive),
Fan kit - designed for general purpose use 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
PHILA STORE OPENING (408) 998-5900
If you have a loading indicator, file no. select, or
The Computer Room is opening in Philadelphia, can listen to the tape, endless-loop makes a fast single
located at Juniper and Sansom Streets. Though we loading device.
are unclear of the exact relationship, it is evidently What can you do about my wisdom teeth?
closely associated with Carol Groves of Castle Systems Bob Grater Byte Shop No. 2
Co., 1028 Spruce St., Philadelphia, PA 19107, 928-1268. 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
include microwave ovens, television sets, automobiles, and,
The Computer of course, the popular electronic games, which can be
played through one’s TV.
at Puberty Eventually, however, computer communications net¬
works for the home will evolve, and subscribers will have
(reprinted with permission from Technology Review, May 1976;
enormous volumes of information at their fingertips - via
Copyright 1976 by the Alumni Association, M.l.T.)
home computer consoles that will cost about as much as
today’s color TV sets. Computerized encyclopedias, elec¬
The computer already seems to be everywhere, tronic mail, and enormous electronic “newspapers” which
doing everything, but according to a group of prominent would allow the reader to delve into whatever subject he
computer scientists, the industry has only just begun an wished. Also possible would be a new form of electronic
explosive growth. Over the next two decades it will “junk” mail - when a subscriber wished to buy something,
enter home, business and factory as never before. he could use his computer to summon all the current
This was the principal conclusion of preliminary advertising for the product, and comparison shop from his
reports on an extensive study of “The Future Impact of easy chair. This divorce of news from advertising could
Computers” being performed by computer and social also affect the content of news, noted Professor Moses.
scientists at IBM, Stanford, M.l.T., Harvard, Yale, Prince¬ No longer would a reporter on auto safety worry about
ton, and other prominent institutions. irate car dealers cancelling ads, should he criticize their
The study, coordinated by Michael Dertouzos, product.
Director of M.I.T.’s Laboratory for Computer Science, There will also be other changes in the kinds of
and Joel Moses, Associate Director, is sponsored by information we receive, with the advent of the “informa¬
AT&T, IBM, the Office of Naval Research, and M.l.T. tion utility,” according to John McCarthy of Stanford.
To be completed in 1977, it consists of an integrated Computerized publishing would increase competition,
series of carefully thought-out and hashed-over papers because the expensive printing process would be eliminated.
on key topics in the computer field. The participants in As soon as a manuscript was ready, it could be instanta¬
the study, key people in their fields, occupy excellent neously available. The nature of public controversy in the
vantage points to ponder the computer’s future, said computer age would also change, said Dr. McCarthy.
Professor Dertouzos. But, perhaps just as important, When one candidate attacked another over the computer
th"ir influence could make their predictions self-fulfilling news network of the future, the average citizen could
prophecies. immediately dial up the opposing statements. Thus,
At the symposium marking the 100th anniversary of public stands would be much more carefully considered
the telephone, many of the participants in the study before being made public. Also, government information
gathered to offer a fascinating glimpse into a future would be truly public for the first time. Instead of being
stuffed with computers. stored away in dusty archives, available only to those with
The hardware of the computer should be about the the wherewithal to dig it out, the data would be instantly
least restraining influence on the computer’s future, available on the average person’s home console.
according to scientist-entrepreneur Robert N. Noyce, Giving Computers the Business
Chairman of Intel Corp. His analysis shows that the size Although business and industry are already heavy
of computer components could be reduced a hundred to a users of computer power, they will become even more so
thousand times, from even the tiny circuits of today, in the future, according to the study participants. One
before they begin bumping “down” against the fundamen¬ major trend will be toward the “paperless office,” said
tal thermal noise limits on size. And technological Victor A. Vyssotsky of Bell Telephone Laboratories.
advance has allowed the complexity of integrated cir¬ Records and communications will be stored and trans¬
cuits to double every year since 1960, he pointed out, a mitted by computers rather than as pieces of paper. How¬
trend that should continue, allowing ever lower costs for ever, said Dr. Vyssotsky, the clerical worker will by no
ever more powerful computers. The future almost cer¬ means be out of a job; rather the nature of his job will
tainly holds reductions in size and cost, and increased in change drastically, from paper shuffler to electron pusher.
complexity as remarkable as those that brought pocket Computer methods for assisting managers would also make
calculators from the engineer’s workbench to citizen’s gradual process as business tools.
pockets. “Overall, I anticipate a modest steady improvement
The Computer at Home as a result of further computerization of business func¬
The key to these technical advances is continuing tions,” said Dr. Vyssotsky. “At a very rough guess, this
profitability, said Dr. Noyce. His company is a leader in improvement, over the next twenty years, may be some¬
the high-technology semiconductor industry. For the com¬ thing like two per cent per year for a force which may
puter to remain a profitable product, said Dr. Noyce, it run somewhere aorund forty per cent of the U.S. work
must become a mass-market item. And according to Pro¬ force.”
fessor Moses, the computer will mount a massive invasion Manufacturing will also see much greater use of com¬
of the home over the next two decades. puters than even today, according to Professor Dertouzos,
The first wave, said Professor Moses, will consist of who wrote the portion of the study on that subject. The
computers which perform tasks not requiring connection key technical developments in this area will be program¬
to a communication network - such networks will probably mable robots with senses of touch and sight; microcompu¬
bring up the rear in computer developments. ter-operated control systems integrated into aircraft, autos,
Professor Moses foresees computer games and other home and factories; and networks of robots or control
recreations, “smart” household appliances, home educa¬ systems capable of working together.
tion programs, and efficient household heating and cooling Out of these technologies, Professor Dertouzos sees
control as the first uses for home computers. Indeed, emerging automated factories that could produce products
many such products have already appeared in the market¬ tailored specifically to each customer. For instance, a
place: computer-controlled machines now being marketed 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 ROBOT FEATURED AT ACGNJ MEETING
being strangled by cheap foreign labor. Also, said Dr.
Dertouzos, robots would continue to take over dangerous BUSTER-II, a robot, will be the featured demonstrator
jobs, preserving human life; and they would relieve humans at the October meeting [of the Amateur Computer Group
of mindless tasks, enabling them to do truly humane of New Jersey]. BUSTER-II is a home-built robot con¬
tasks. trolled by an MOS Technology KIM-1 microprocessor.
“While the popular view of an automated future BUSTER-II was designed and built by Rod Loofburrow.
involves a heartless and mechanistic society geared to pro¬ Rod, who is 14 years old, is another of John Loofbur-
ductivity and efficiency, I advocate the opposite view that row’s young sons . . . you may remember Wayne Loof¬
computers will improve and humanize our way of life,” burrow (age 13) who demonstrated a 6800 Assembler at
he said. the March meeting.
The major plea throughout all the scientists’ dis¬ Rod will be explaining the technical side (or is it
course was — as Terry Winograd of Stanford University inside) of BUSTER-II, demonstrating the robot’s abilities,
put it — that computers be “peoplized.” The computer and answering all questions (sorry, as yet, BUSTER-II
must be taught to adopt the sytle of communication does not have a voice).
natural to people, and not the foreign language it is now The October meeting will be held at, and sponsored by,
allowed to use. Computers that understand human dia¬ Middlesex County College, Edison NJ, on Friday, October
logue, that can take human speech as an input, and that 15th. The meeting will be held in Building No. 4, The
can explain their actions and reasoning to humans will College Center, Cafeterias B and C (same as last meeting
represent major steps in this direction. at MCC).
Perhaps them the computer will become as benign There will be a Flea Market, starting at 6:30 p.m.
and helpful an invention as is the telephone, whose Tables are available ($2 contribution is asked). Remember
100th anniversary the conferees were observing. — D.M. 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¬
A THEATER COMPUTER USERS GROUP ment for the ACGNJ, but rather, because of the unusual and
fascinating nature of the presentation being given at their meeting.
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 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¬
Nostalgia time, gang! Remember when Jack Armstrong ber 5 is directly to the right of the first cell. This ordering
was sending his secret messages over the radio into your continues until the 5th cell is reached (the one in the lower
home? For only two box tops of some breakfast cereal, right-hand corner), then the cycles begins again. Thus the
you could order your own SUPER decoder ring. In no elements in row number 5 are ordered in a cyclic way as fol¬
time, you can be passing secret messages like any interna¬ lows:
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. In a similar way, the elements of each column can be
Simple letter substitution cyphers are easily broken considered to be ordered in a cyclic pattern as follows:
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 Since the array has room for only 25 letters, the let¬
bit of encyphered philosophy. ters I and J will be considered to be interchangeable. I and
KPGHU WKPGA EWAQG EHBBZ PBVRN J will occupy the same array element. In a similar way, X
EYUFZ ATSHY BMZQE VYVSN EVGUE and space will occupy the same array element, but only X
WZREU BMZQE VYUGG YEBZL will be used as a code letter.
Use Kennedy’s code word HEAVY EQUIPMENT. 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¬
PLAYFAIRE—DIGRAPHIC CRYPTOGRAPHIC betic order is followed in filling the array. The array is
CYPHER filled row by row, i.e., row number 1 through row number 5.
3 -r L M A1 0 P
4-* Cl R S T U-
V W jk r
Page 16 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 3*0, Menlo Park, CA 94025 October, 1976
278
with the remainder of the alphabet (in alphabetic- order, of Plain-text [D,0 -> 0,A] Code-text
course).
D,A [0,B]
Example: code word is JUNEMOON A,D -> [B,0]
0,B -> A, C]
Mi |e L
A,C -> B, D]
C,0 D,A]
Case II: Both letters of a diagraph are in the same column,
o\
H
Method: each letter is replaced by the next letter in order
in the given column. Example: Column number 2 from
JUNEMOON array.
1
A*
\
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.
\W
% UL hi E
Plain-text [A,Q] -> [G,W] Code-text
o A 8 C Id [A,U] -> [G,A]
r [W,Q] -> [U,W]
IF <? H K L [G,A]
[G,W]
-
->
[Q,G]
[Q,U]
[Q,w] - [W,U]
p Q R S r Case III: Letters of a digraph are in different rows and col¬
umns. Method: The vector formed by the line from the
—* A —►b —
The mirror image of the [F,U] diagonal is the [G,J]
October, 1976 Dr. Dobb’s Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 Page 17
279
(conclusion of Decoder Ring Article)
Music by computer diagonal. Note that the first letter of both digraphs are in
the same row.
Plain-text [F,U] -> [G,J] Code-text
Reprinted with permission of Digital Equipment Corporation. [U,F] -> [J,G]
In general, using matrix notation—(row number, column num¬
Yamaha has interfaced an electronic organ with a com¬ ber):
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, [(F),(U)] = [(3,1),(1,2)] [(3,2),(1,1)] = [G,J]
reproduce previously recorded musical scores and display them
on a cathode ray tube. Therefore- [(a,3) (6,^)] [(a , O (<5 ,3)]
Using a core-resident real time operating system, the Case IV: Both letters of a digraph are the same. Method:
minicomputer can sense what is being played, interpret this the letter X is to be inserted into the plain-text to separate
data and compare it with storage. double letters. Example: BALLOONS would be broken into
Yamaha anticipates that the organ may one day be digraphs as [BA], [LX], [LO], [NS].
taught completely by this method. Students will be able to In order to break up the appearance of words, the
compare the written music stored in the computer memory plain-text is run together by leaving out the spaces between
with what they actually play as displayed on the cathode the words. Sometimes to improve on readability and avoid
ray tube. Practice sessions can be recorded for critique by ambiguous situations, X’s are inserted for the spaces between
instructors at a later time. words.
Digital’s GT40 graphics terminal was chosen for its in- The code-text output is in a standard fixes format of 5
terrupr handling capabilities, refresh-type display and cost ef¬ letters per word.
fectiveness. EUNFE RAHXJ UPZWO etc. . . .
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) PROCESSOR TECHNOLOGY ANNOUNCES
to analog form and displays it on the CRT independent of WINNERS OF Personal Computing ’76
the central processing unit, the processor can be dedicated
DRAWING
to the organ, making possible the real time applications of
the recording and playing back. 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?
Page 18 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 3T0, Menlo Park, CA 94025 October, 1976
TIMER ROUTINES FOR 6800’s MICRO BASIC PLUS FOR $15.95
INCLUDES COMPLETELY ANNOTATED
Gentlemen: Sept. 3, 1976
I have found in writing programs, that often a time- SOURCE CODE
delay can be used to spice up a program. The following (NEWS RELEASE FROM TECHNICAL SYSTEMS
subroutine will generate time delays between 1 and 255 CONSULTANTS, BOX 2574, W LAFAYETTE, IN
seconds. To use the routine, load register-B with the num¬ 47906)
ber of seconds you wish to delay and then jump to the
subroutine. The subroutine returns after the specified You have seen the “TINY BASIC” and “MICRO
number of seconds. BASIC” for the 6800 which fit in a small system (2-3K)
To show how it works, I have enclosed a short and offer 10-15 statements and commands for the user
program that uses the time delay routine to ring the bell to write BASIC programs. These systems range from
on a teletype once every 30 seconds (make it 3 minutes quite slow (due to 2-level interpretation techniques) to
and you’ve got an egg timer). surprisingly fast for a small system. The limiting factor
How it works: in these versions of BASIC is the incomplete selection
LOOP1 is the basic time-delay loop. Traversing of statements, commands, and functions. The lack of
from line #11 to line #14 takes 20 clock cycles. This certain statements means having to do without, resulting
loop is executed 50,000 times (C350 Hex). Thus to com¬ in less efficient programs.
plete this loop requires 20 x 50,000 or 1 million clock TSC has solved this problem by creating MICRO
cycles. Since the clock frequency on the 6800 is 1 Mega¬ BASIC PLUS. It is not a 2-level interpreter so it runs
hertz, it takes one second to complete. considerably faster than ones implemented using the 2-
LOOP2 is the outer loop which by decrementing level technique. Statements available to the user include
and testing register-B allows varying delays by repeating PRINT, INPUT, READ, DATA, RESTOR, IF . . . THEN,
LOOP1 the specified number of times. GOTO, GOSUB, RETURN, ON . . . GOTO, ON . . .
Line #9 and #17 save and restore the X-register to GOSUB, FOR, with positive and negative STEP, NEXT,
the value it had when the routine was entered. LET, DIM, for both single and double dimensioned arrays
Note: If you put a radio next to the CPU and (up to 98 by 98), EXT, REM, and END. The commands
tune to the interference, there will be an audible click available to the user are LIST, SCRATCH, RUN, and
each second (a darkroom timer??). These routines were MONITOR. There are also several functions available
assembled by a cross-assembler I have written in IBM’s which include TAB and SPC (for output formatting), RND,
BASIC. ABS, SGN, and T (Used for exponentiation). This list of
Sincerely, features does not stop here. MICRO BASIC PLUS also
Gregory A. Worth 115 Campbell, Apt. 6 contains a complete line editor, multiple statements per
Rochester, MI 48063 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¬
LINE PC OBJ CODE MNEMONIC OPERANDS 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
*TIME DELAY SUBROUTINE FOR THE MOTORLA 6800 statement which allows the user to write 6800 machine
♦NOTE:
* 1. VALUE IN THE B-PEGISTER WHEN ROUTINE IS ENTERED language subroutines to be called during BASIC program
* DETERMINES THE NUMBER OF SECONDS THE PROGRAM DELAYS
* 2. REGISTERS A £ X ARE LEFT UNCHANGED BY THE ROUTINE execution.
0000 FF 00 16 iDELAY STX & SAVE JSAVE THE X-REGISTER
You are probably thinking this all sounds great, but
0003 CE C3 4.L00P2 LDX #$C350 ;load x-p.eg with 50000 if the less extensive versions of “TINY” or “MICRO”
1 1 0006 76 00 03 ROR £ LO 0 P2 ;ROTATE->WASTE TIME BASIC require 2-3K of memory, this one must require
12 0009 79 00 03 ROL £L00P2 ;ROTATE->WASTE TIME
13 000C 09 DEX ;DECREMENT X-REG 5 or 6K since the capability is doubled. Well, here is the
14 000D 26 F7 ENE IIF X<>0 GOTO L00P1
15 000F 5A DECB ;DECREMENT B-REG “icing on the cake!” MICRO BASIC PLUS resides in
16 0010 26 FI -ENE
17 0012 FE 00 16 LDX
4L00P2
& SAVE
IIF B<>0 GOTO L00P2
;RESTORE X-REG
just a fraction over 3K which means in a 4K system you
18 0015 39 RTS I RETURN TO MAIN PROGRA still have room for a 30 to 60 statement BASIC program!
19 0016 RMB JSTORAGE FOR X-REG Not only is the interpreter approximately the same size
20 0018 END
as others, TSC has made special provisions for keeping
WRITTEN AUGUST 25, 1976 BY GREGORY A- WORTH the users program source to a minimum (e.g. all commands
and statements can be entered using the first 3 letters of
LINE PC OBJ CODE
its name).
MNEMONIC OPERANDS
Now you are probably saying it must be expensive.
You are right if you think $15.95 is expensive, but we
WRITTEN BY CFE60RY WORTH
think this will also please you. Unlike others, we include
PROGPAM TO RING THE BELL ON A TELETYPE EVERY 30 SECONDS
USES TIME DELAV SUBROUTINE FOR DELAYS i THE CHARACTER OUT
the complete commented source listing, hex dump for
ROUTINE IN MIKBUG- fast entry using MIKBUG, sample programs, sample out¬
NOTE E075 IS THE CHAPACTER OUT ROUTINE IN MIKEUG put, plus TSC’s famous instructions and documentation
PNC 0000 IS WHERE THE DELAY ROUTINE IS
for use. As all TSC 6800 software, this program uses
0030 86 07 LDAA #$07 J LOAD BELL CHAP.
0C32 ED E0 75 JSR SE075 JRING THE BELL MIKBUG I/O routines but instructions are provided for
0035 C6 IE
0037 PD 00. 00
LDAE
JSR $00.00
J LOAD E-RE6 = 30
IJUMP TO DELAY PROG
adapting to other routines. Write for details concerning
003A 20
003 C
F6 EPA £EELL I BRANCH TO iEELL availability of MICRO BASIC on “Kansas City Standard”
END
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 6502 systems with RAM in first 4K of memory.
avid computer hobbyist who is one of the more major figures in TB650J (1000-18FF) For Jolt.
the San Francisco Bay area’s Homebrew Computer Club. He is also TB650W (0300-0BFF) For Apple. Includes I/O
an experienced software consultant who specializes in small-com¬ routines.
puter software and systems. We strongly recommend him to you
because (1) we have received a number of communications praising NOTE: The third digit of the version number refers to the
Tom's Tiny BASIC for the 6800, (2) we have yet to receive a revision level. We will ship the most recent version regard¬
written or verbal complaint about the quality of Tom's products, less of order specifications (e.g., we are now shipping
(3) we have ample evidence that Tom consistently exhibits an TB682R for orders specifying TB680R).
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¬
MEMORY ALLOCATION STANDARDS
ucts to home computer users at very nominal rates, and wish to do FOR HOBBYISTS
everything we can to encourage him and others to pursue this
approach to development and distribution of good, low-cost soft¬
ware.
by Jim Day
The following information is a duplication of the typewritten
data sheet that Tom distributes to those wishing information about One of the benefits of owning your own computer is
his products. the fun of exchanging programs with other hobbyists. So
far, this has been fairly easy to do. It is easy to load a
Itty Bitty Computers is dedicated to the principle of
BASIC program from an ASCII tape or to bootstrap a
high quality, low-cost software for personal computers.
machine language tape into a “cold” machine. But this
Tiny BASIC is our first offering in this field; if it sells well,
there will be more. We are not in the hardware business- situation may not last very long. As more hobbyists begin
software is all we sell. The emphasis of all our software is to use ROM-resident operating systems and a wider vari¬
small size and flexibility rather than high speed. Tiny ety of peripherals, compatibility problems may become
BASIC will run in as little as 3K of memory. much more difficult to resolve unless standards are estab¬
Tiny BASIC is a subset of Dartmouth BASIC, with lished for memory allocation.
only 16-bit integer arithmetic. There are only 26 variables I suggest that the first 16K of memory be reserved
(A-Z), no arrays, and no strings. The 12 commands (LET, for the operating system, including resident processors and
PRINT, INPUT, IF. . .THEN, GOTO, GOSUB, RETURN,
I/O handlers. Standard port numbers and handler entry
REM, RUN, LIST, CLEAR, END) are adequate for most
points should be established for all kinds of peripherals,
programming needs. A machine language subroutine calling
facility enables the user to extend Tiny BASIC to any including the exotic ones. Allocation standards need not
degree necessary. work a hardship on those with smaller amounts of mem¬
Single copies of Tiny BASIC cost $5. This buys an ory, since memory modules don’t have to be contiguous.
individual license to use it, a 26-page user manual, and a That is, a 2K machine could have IK of memory start¬
hexadecimal paper tape in the manufacturer’s loader format ing at address 0 and the rest starting at 16K.
(Motorola “S” or MOS Technology A hexadecimal Needless to say, the standard handler “entry
listing will be substituted for the tape on request for users points” would simply be instructions branching to the
without paper tape facilities. Programs are mailed out first real entry points somewhere within the first 16K of
class within a few days of receiving the order, but at these memory. Likewise for the entry points of language
prices we can accept prepaid orders only. For airmail service
processors, text editors, etc. Attempts to use unimple¬
to foreign countries please add $2 per program. A 20%
mented programs should cause a branch to an error
discount may be applied to quantity purchases of ten or
more programs of the same version to the same address at routine.
the same time.
Tiny BASIC itself does not contain any I/O instruc¬ 6800 CAN SHARE HOBBY-STANDARD BUS
tions; three JMPs link Tiny to the user’s I/O routines. WITH 8080 WITHOUT CONFLICT
These are well documented in the manual. The primary dif¬
ference between the following versions is the memory re¬ M.R.S. has developed a 6800-based board that
quirements (shown in parentheses), though all use plugs into a hobbyist-standard (Altair, IMSAI/SOL/
memory page 00.
Cromemco/Polymorphic/etc.) bus. Even while installed
TB680R (0100-08FF) For MIKBUG, EXBUG, and in the bus, it will allow any also-resident 8080 to run
most homebrew 6800 systems with RAM in first 3K of without interference. It gains control of the system
memory. via a single instruction, and returns control to the
TB680S (0200-09FF) For Sphere; includes I/O 8080, either via the halt switch or via software in¬
routines.
structions. The 8080 unit handles all front-panel
TB680P (E000-E7FF) For AMI Prototyping Board;
interface.
includes I/O routines (ACIA), and runs with on-board
IK RAM. A fully assembled and tested unit is available
TB650K (0200-0AFF) For KIM and most homebrew 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 BD FB 00 WRITE OUT BOOTSTRAP
6800 TINY BASIC BD FB 2D
BD FE 4A
SYSTEMS BREAK
CODING FOR V3N SYSTEM
GOTO USR(2552)
ENTER THE FOLLOWING:
2552 DECIMAL ADDRESS OF BREAK
ORIGIN 33 THIS INSTRUCTION MAY ALSO BE PART OF CODING IN PROGRAM
24 54 "$T" ID FOR TINY BASIC
ORIGIN 38
F0 50 CASSETTE 1
FF 00 TO INTERRUPT SYSTEM AT THE TINY BASIC LEVEL
00 CO START OF BOOTSTRAP LOADER
HIT "REPEAT KEY"
00 FF END OF BOOTSTRAP LOADER
TO IGNORE LINE JUST TYPPED
HIT "ESC" KEY
ORIGIN A00
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 is addressed to Port 20-21, and another one to Port 22-23,
920 N. Washington control will be passed back and forth between them when¬
Owossa, MI 48867 Sept. 13, 1976 ever the USR program is called.
The USR program may be called by a direct com¬
The purpose of this program is to add the ability to mand, such as:
talk to two terminals to those versions of MITS BASIC X= USR(1)
which do not have the console command. or, this may be an indirect (numbered) statement in a
The terminal change is accomplished by calling a BASIC program:
machine language (USR) program which has been loaded 110 X= USR(1)
into reserved high memory. The program may be loaded The following statement:
by use of the BASIC program given here, or in the case 10 X = USR(l):GOTO 10
of 4K BASIC which does not have the POKE statement, will cause control to alternate between the two terminals.
by use of the front panel switches. Typing a Control-C on either terminal will cause command
When the USR program is called, it interrogates to stop at that terminal.
each I/O handling location in BASIC. If Port Number 20 The program is written for 8K BASIC, Version 3.2,
or 21 is found, it is changed to Port Number 22 or 23, supplied on paper tape. “*” indicates data to be substituted
respectively. If the BASIC is already addressing the higher for the cassette version, and “**” indicates data for 4K
port, it is changed to the lower one. Thus, if one terminal BASIC.
This is an assembly listing of the USR program. Note cations called “USRLOC”. This is taken care of in line 10
that the data is different for the different versions of BASIC. of the BASIC loading program. For 4K BASIC, you must
Before this program can be called by the USR command in load this information in by the front panel switches: load
BASIC, its starting address must be loaded in BASIC in lo¬ 320 at location 103, and 037 at location 104.
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 PL/M, the first and most widely used high-level
In my article in the last issue [“A Bit of Wheat language for microprocessors, was originally only com¬
Amongst the Chaff’ I said that Processor Technology pilable on large machines. A compiler for it is now
should have advertised their “3P+S” clearly as a 2 available, however, that is resident on their 8080-based
parallel channel device, with serial port and a control Intellec floppy disc system. It requires 65K bytes.
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 COMPUTER STORE WORKING ON
P+S? BUSINESS SOFTWARE
Jef Raskin
A new computer store, Rainbow Enterprises, is
ERRATA FOR WRIGHT’S ALPHA-NUMERIC reported to be developing programs for very small busi¬
MUSIC ness systems. They are located at 10723 White Oak
Ave., Granada Hills, CA 91344, (213) 360-2171.
Dear P.C.C./Malcolm T. Wright:
Please be informed that your publication, Alpha¬ PDP-11 CROSS ASSEMBLER FOR 6502’s
numeric Music with Amplitude Control, contains a typo¬
graphical error in the program listing: For $900, you can get a PDP-11 based cross assembler
Page 13, Address 001,103 is 000 for MOS Technology 6502 microprocessors. The cross
should be 001 assembler is written in MACRO-11 and runs under DEC’s
This JUMP references STORE in Page 0, but the object
RT-11 operating system, using 5K words, minimum. The
listing references Page 0. Source is correct; object is wrong.
price includes one year of product support, as well as source
A. Paejh
code, distributed on a disc. Contact Mike Corder, Compu¬
P.S.—Sounds fine. Forced me to write a hex-octal key¬
ter Applications Corp., 413 Kellog, Ames, IA 50010, (515)
board read routine. 232-8181.
[Why not submit the keyboard read routine for publication
in DDP. -JCW]
Newsweek
UNCLE SAM CONSIDERS ESTABLISHING A
NEWSWEEK NOTES HOME COMPUTING
“SCIENCE COURT”
The August 23rd issue of Newsweek carried almost a
The National Science Foundation and the Department of
full-page article titled, “Computers: Home Cooking.” It
Commerce are jointly studying a proposal to create a Science
Court. Such a court would be especially organized to handle
was the usual story of a couple of example installations—
disputes involving highly technical matters, disputes that are cur¬ human interest stuff—with the usual inaccurate underesti¬
rently adjudicated by courts having judges of no particular tech- mates of number of stores and clubs, and the usual inter-
nical capability. view with Paul Terrell of Byte, Inc.
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¬
written for the MCS-80 that allows the user to modify a
sored by the United States Government. Neither the United States program via a teletypewriter keyboard. The program oc¬
nor the United States Energy Research & Development Administra¬ cupies 400 octal words and must be located in the lowest
tion, nor any of their employees, nor any of their contractors, sub¬ memory page of the MCS-80 system, since the program
contractors, or their employees, makes any warranty, express or
implied, or assumes any legal liability or responsibility for the ac¬
uses the RESTART instructions.
curacy, completeness or usefulness of any information, apparatus, ODT has been proved to be an effective aid to de¬
product or process disclosed, or represents that its use would not bugging on microprocessors. The first version/ for the
infringe privately-owned rights.” Intel 8008,* has been “front panel” for virtually hundreds
of microprocessor applications. The author submits this
Abstract ODT for the 8080 in hopes that the tradition of soft
front panels may be perpetuated.
ODT-80 is an octal debugging routine for use on the
Intel 8080 microprocessor. This routine provides the capa¬ System Requirements
bility to examine and modify all of the memory that is
available to the microcomputer and transfer program con¬ All addresses of memory locations and contents of
trol to the created program. ODT-80 makes use of simple memory locations are referred to in octal numbers. A
keyboard commands from any terminal—such as a tele¬ question mark (?) will be typed for any illegal input.
typewriter—that is attached to the system. The minimum system requirements for using ODT
are as follows:
Introduction • MCS-80 computer set
• ODT programmable read only memory (PROM) at
ODT-80 (Octal Debugging Technique) is a program memory page 000c
• 256 word (RAM) at page 010o
• Teletype interface with the following codes:
“RE. ARTICLES TELL HOW TO BUILD A OUT 2—SEND ASCII character
SYSTEM FOR UNDER $100”
IN 2 - Input word from TTY
Dear Bob, July 16, 1976
For some time now Eve felt that the hardware D_, Dn
oriented types (like me) who only want to spend
IN 3 - Read flags 11 111 111 (flag word)
$100 or so to get started have been completely neg¬
lected. I’ve also been approached by many hobby
Sending done —
groups who want to know more about the COSMAC
microprocessor. To satisfy both types of potential Word received
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 Example
Electronics, and should be of interest to many of
your readers who are still looking for a lower cost The following example illustrates a typical debugging
way of getting started. The basic microcomputer operation. It is assumed that a program has been assem¬
doesn’t need a terminal since input switches and bled and that the program is to be loaded by a loader in
an output display are provided. A novice user can PROM 2.
actually do more with this system initially than he A program listing and a detailed description of the
could with a $466 Altair 680 by itself (I have both command set follow the debugging description.
systems). Of course, the COSMAC ELF has no cabi¬ 1. Set the memory field with the S command, and
net or PC board and you must handwire 12 chips read the tape with the R command.
together. Other articles in the series will provide IQS* ; SET MEMORY FIELD TO 10
programs, applications, inexpensive interfaces, memory OR ; START READER ON TTY
expansion, and a simple operating system. A very ? ; WHEN TAPE IS READ IN ODT
low cost graphic video display is also planned for the RESTARTS (startup of ODT de¬
ELF microcomputer. I just want to make your less pends upon the reader program
affluent readers aware that plans for a low-cost, in PROM 2)
do-it-yourself, micro-computer are now available via 2. Start the program with the G command.
this series of articles. 10S ; START PROGRAM AT LOCAT-
Best wishes, ION 0
Joe Weisbecker 1220 Wayne Ave. 0G
Erlton, Cherry Hill, NJ 08002
TEST PWOGRAM
EDITOR’S NOTE. Joe is the architect/designer of
; TYPED BY PROGRAM WITH AN
RCA’s COSMAC.
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 H register to the memory page to be
ODT. accessed.
? (EX) 10S ; H=010g
(n8R) - The READ operator is used to start
10S
a loader program in memory page
30 / 327 222) ; CHANGE “W” TO AN “R”
No. 2, location 0. If this command
0G
is preceded by an “nS” command,
TEST PROGRAM ; CORRECTED OUTPUT the n value will be passed to the
loader program in the H register.
EXAMPLE PROGRAM LISTING
(n8G) - The GO routine is used to start a
program in memory. The octal
number typed before the “G”
operator will set the starting ad¬
8080 MACRO ASSEMBLER, VER 1.1 ERRORS = 0 PAGE 1 dress in memory. The “G” opera¬
tor should be preceded by an
;0DT TEST PROGRAM
;10-21-74 “nS” command to select the
000006 SEND EQU 6 desired page.
000370 CRLF EQU 370Q
(CTRL-C) -
;PROGRAM PROPER CONTROL-C Type out the top two locations in
stack. (See trap.) Leaves the stack
004000 ORG 4000Q
004000 041 022 010 LXI H TABLE
pointer at its initial position —2.
;SET UP ADDRESS
004003 176 LOOP: MOV A,M ;GET ENTRY (CR) - CARRIAGE
004004 376 000 CPI 0 RETURN Close the currently open address.
004006 312 016 010 JZ ND ;IF 0 END OF LIST
004011 367 RST SEND ;TYPE CHARACTER
004012 043 INX H Utility Routines
004013 303 003 010 JMP LOOP ;LOOP
October, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 Page 27
287
for INTERRUPT or RESTART operation. These locations,
shown in Fig. 2, contain jumps to the scratch RAM mem¬
REGISTERS
ory number 10, used by ODT. This allows interrupt ser¬
PAGE
NO. LOCATION A F B C D E H L vice to be handled even though memory number 0 is pre¬
XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX programmed to contain ODT.
t_ J _
'1 r
(SIGN)
Acknowledgements
One set for each CTRL-C typed.
There are five segments of memory reserved in ODT *°ne set of each ctrl-c typed.
MEM MEM
*0 #10
INTERRUPT
ODT
SERVICE
ENTRY ROUTINES
JMP
10
10 10
20
JMP bo
G
20
- 20
10
JMP
S
30 30 as
10 u
bo
O
40
in a
m r~
O s r~
40
00
I
Hr* ■O-Q.CLQ_CLQ.CLCLllCLtLCLCLQ-fLCLQ-CLa.0_
50 zrooooozooooozooooor
JMP :-)-ozzzzz->zzzzz-)zzzzz->
Q
50 O
50
10
60
SEND
ENTRY o r~ r~ o o o o
in t- t" — ru ro j-
MdJOO O O O
70 STACK — iDmroaoooofQoooooraooooom
100-00000000000000000000
POINTER oopomooooomooooopoooooom
TRAP
o ru id n oKunoMjiniDooMjiniDhoKijiniDoo
ENTRY 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
ro r- r- ro CD J- T ID o
o ID r- ID o ID J- J-
a — ro o o o o ro — O
2 o o o o o o o o o
LJ o o o o o o o o o
in o o □ o o o o o o
cr 2 c_> 2
p _j in CL
o cr CL cr 2 < <
cr in < 2 Ld h- cr o Ld Ld cr
O
ir
oJ
a:
o: CD O Ld o z Q- in in r—
cr Q a 3
f—
UJ
cr « *
in z
¥ cr ui
i— 1/1 U 2
i
O f— > in
ui o o
cr a z J- O ro r* — ID U) J-
ui < u o o uj < < o r~ o j- ID o o r- nj
o z o o z < o in z
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
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
_j a o Ld * 2 - Ld CD o Ld O _1 o CD in i—
r- id o: m cr ro cr <
o o in ui a i- ai cr
< ru o uj
•-Z-
o Q UI
(D Z
<
-
CJ O
UI <
< <>-0
UI >- * *— <
CD
'
Z
ID
XO_l
' O O < in < in
m o ru cl ru o m ui • ui < in < r ru in < uir-O-i ct h cd t- j < in i < <
— cr ~i->uuu>-cl cr <_>
u i—
> i—
u-
cr cr > clcl>_j>
—i Q- f— — Q- O Ld
• — N > Q. - u I
. im o_ z
O Z > _J . izoisiQino_i_i_iozz;z<z zggz<<ggzog<g Z > in > Z 2 _J *
l “5 o z z tr ( <ocr<crzcrcrcrz;<-)~cr-> ■ r
^^o — ^
cr cr z cr ' 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
r~f'0ioj-t'nr'~mo r~- j- ro cvj ro
o o ru ru ro cr
oiDininoincuo o — o
o ro o o o o
moruoaimroo
ro ID r- ID ro cr ru o j- P' ID ID ID
8
w ~£H!SDlS?l-KSP;E!iieEP?g2gEPSSSK'?2SR!aRSBRRK
ili iu iu - hid r r i uj i - o r- ID r- o cr o o o o. o o o J- o
i— — — r~ — r~oj-oooofor-iD
romforororofow — ro o o o — o ro jjrororo — ooo — i t ro ro o ro ro • ro o ro o ro Ld o o o o o — o ro o
o o o
Z o o o o o o
< o o o o o
id o ru mn cr
—mmmioioior-r-r-r^ooooo
foiDoroinoruinio uDr^r^r-r- o
— — —— — — —— roj-mioo — ajj-iniDo — cxjroj-iniporoiniD—r
ro ro ro ro ro
cunjojcucucururorororo o
cr
tr o
: rl SC ^ I..
SgSSSooooSo2222 2 n. w m ki m m m m r -------- — — — — — —
22222ogogo||oooooo|olooloolol O O O O O o »-
oooooooooooooooooooooooooooooooooo o o o o o Q_ o cr x 3 2 o >-
oooooooooooooooooooooo o o o o o cr uj in Ld z h-
o • tr in in h-
H
N
a
V
3
3
2
ui cr
o o
ui z
33 3
a. a.
z z
— o
in o ui
O UJ in
ui cr cr - o cr cr t'- d >-
ui cr o < o cl cr
cr < < a. T Z O
o a. x
o — z o
< — i o _J
o u u in < u
in id u d ui o cr in
ui ru 3 CD >- _i ui —
j in in >- o u.
£ < cr in c o u
o o o a in
cr >ozunjooo zoruo I u h cr o o o o cd ru in ru o r- <
K a. ?• < ui ai i cr < • -o • z ui — - - z O UJ u - UJ -ui - — — cr ru o in _j
ui cd in _i < <inm<jrzx<in_j< O < J" CD Z CD < (U i ru o ro o ai in
o z in _J _J X I I I
CL a Q. CL CL CL Q_ i i ui in in in • > : -Hcr>j>ju._j^- — > cl > —
OOOOOZO>CL(L_j^v-> ' ' ■- 3 Z3 D z> : o a. > > j - *- o. > —
jqzoo< >inzgg|^g-:v,- -inzo<o<z<og u3NOIOQ.Ni
z z z z z -J z o r r < o a. CL CL CL CL : I < O D 0. (
: a* ~>- <— —'-
z z i jzcr^zinTZZCE' — • z o z •- ^ ■"
zcn^z^zo-)!
O ID > X
UI Id < Id
CD CD in z
o o o
o o o
o o o
— — r- o i ru — m r' cu o Is id
r~ x o o j- > —id — o ru o in j
o t r~ r~ ru o — ro ru — o — ru r»i '-j - fu — ru ru ro o ru —
— ro ro ru ru
r-r-t^ruoro — iDtnior-roruionj — lor-jr-rinininrotnfuipru- lOiDtUiDtUlDlUlDrU
ooooorooinroroin — — ro in in in in id j ru in ru r- — ruairuroooinr-— r-ioor-ru— ior~iDinr' — r-— o — r-tu — i jn-n-—n- — r-— n- —
ooooooo — oo — ininjiuoiD-rr- j r~ ru — o Is «j "j r—. r-z\
irooro — — ooo — — mi n w ro -— ro ro ■— o ro 3D — ro — rororo* rorn i—forof^ror^rororo
oooooroo - • rororo — rorororororoo
^ v> m n
roj-iniDr-oroj-inoroiDr-o — ruroj-in
j-j-j-j-j-inminmtDiDfDiDr'r^r'r^r~r' r- o □ o o o ■ ----rururururururururutururururuturururu
oooooooooooooopooog __„000000000000< JOOOOOOOOOOOOOOOOOOOOOOOOOOOO
ooooooooooooooooooo oooooooooo JOOOOOOOOOOOOOOOOOOOOOOOOOOOO
r-.nr->c->r->f»«-jOOOOOOOOOOOO ooooooo OOOOOOOOOOOOOOOC IOOOOOOOOOOOOOOOOOOOOOO'-><-><-»<-i*-'<->
OOOOOOO OOOOOOOOOOOl
''-OOOOOOOOOOO o o O ~ “ ~
Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 Page 29
October, 1976
289
* ** ¥= OOPS!: A Line-Drawing Game
* ^ ^ for Your Video Terminal
-Martin R. Winzenread
A
X <C co X
0
X o o 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
E.g. can be drawn, but .j^-^^^can not. 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
An ‘V indicates that you have been there before. 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'
You may then restart the program by putting the
right four sense switches down.
X o
To change the speed of the cursor, change memory X o
I
CO
s I
I O
§
CO
I
-^ r
X 00 o <t X X vT
*
+ Of- CO CM * CO 2 CD X o X X •V X 1 X
CO
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 XXX CO
•» o * o f— <£ f- •» CO •» co o X n X 2 f- X CM o X X X •» o
vO <£ CO *—1 CO in ►-H 2 2 X —«
H
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*-
o 00 O <£ O X O lx, o o o o o o
o CO o co 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
O' o co o CM 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
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 -a
* •o
BASIC in 8080 00IFY-2M:
a
&sa o
■“ a
^ *a
.a o
*,
—Martin R. Winzenread a s
CO
X
O
O
K
Scrunch readable source code into a form that only a o•
CO
CO
computer could love. Run bigger programs with less memory. Z
P
Input original source code by paper tape, then dump your X
P
P ^ X 5>
•» •* ►“» O
CQ
S
o ! a vo
03
scrunched code to paper tape or cassette for later use. QMQo-SX<CK <2 P o, tno
o O
o o
Q w
O <2
UO-Q<JOt**CO'OoOO'QOn
fcOQl/)l/)OMMMQOMBOO
QU.O
P — CUOvOf~COO<C(noOCd
O. O ~ CVJCOvOf'COO — -*t--
O*O'<C<2<2<2<2<2<C<t<i<2<i:<C<2CQmC0
OOOOOOOOOOOOOOOOOO
oooooooooooooooooo
ft} §*'
■o o
o aft;
Sx
g“fr lx E-x s
O o hj
t-1 S s
I! I
CCJ
8
■S
s
Tati*
s ^*
©o j>i
S« sao
CQ ^ s Q
S8J .8 •
3 a X, s
■8^ »
«■ g £ £
,8) I" S' .£p e
§ § g Q 02 til
Ho **
cp <v,
§11
VJ CQ CQ
H H s 03 H 03 f-
vO X X CQ X CQ _ m X cn to o
+ X <2 <2 OJ H 03 a. 03 03 03 _ > o fc ? f—
X H H P CM CO H CQ » s CQ £ CQ <t « K CQ Ox P CM CQ fc CQ OQ CQ p CQ p o p
<2 to to P H >- X X * -s w . <£ U3 • X C£ X 03 • X fc fc • 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 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 fc xX r- ts3
O <2 p o J P o p P P P 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 »-x Qx »—• tsl P M M p M N X O Ox 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 z 5 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 8 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 •51 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, in 00 CQ p 0x CM <T vO CO <2
O 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 3 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
October, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 Page 31
291
TINY Nl
by Martin Buchanan
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
1+456
5 6 7
#5 73 -1
3
Both integer vectors and character vectors (strings)
are limited to 255 elements. El.se
co<fi.e_ B
Strings: EW5
A string is a sequence of characters, other than ",
enclosed in quotes:
"THIS IS A STRING"
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
Co
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
UNTIL p IWHiLE p
c_o XU. A 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:
Flow of control:
BEGIN MOD (A,B) TINY control is always based on an expression
/* which is true or false, called a predicate. TINY does not
RETURN THE REMAINDER OF A/B include logical variables or operators. All TINY predicates
7 are of the form:
MOD -e- A—B*(A/B) <exp > < relational > <exp>
IF MOD<0 The two expressions must agree in type. Vectors or
MOD -MOD strings must be of equal length to be equal. The first
END element of a string or vector is most significant when
END evaluating a predicate; the last element is least significant.
TINY has two basic control structures with a total of four
BEGIN GCD /* variants:
?X ?Y USE EUCLID'S ALGOR¬
IF X <Y ITHM TO FIND GREAT¬ Do one thing or another depending on a predicate;
T X EST COMMON FACTOR Repeat something until a predicate changes.
X <-Y OF X AND Y.
Y T 7 These structures are illustrated in the accompanying
T figures.
END IF
R -r- Y input-output:
WHILE R > 0 To output an expression, simply place it on a sep¬
R -r- .MOD (X,Y) arate line. If a string expression, the string is output.
X -r- Y Integers are converted to a 6 character string with leading
Y -r- R zeroes replaced by blanks and any minus sign to the im¬
END WHILE mediate left of the most significant digit. In output, con¬
"GCD=" Y catenation between integer and string expressions is allowed:
END GCD
"A+B=" (A+B)
The program GCD has several unusual features. To input a variable, anywhere, place a question mark
?X ?Y forces the evaluation of the expression ?X ?Y, before the variable. Input is free format. Input and out¬
which inputs X and Y, without making any assignment. put may be combined in one statement, like the INPUT
T deletes T, allowing the compiler to reuse the allo¬ statement of some BASICs:
cated space. As shown by END IF, END WHILE, and
END GCD, "noise" may be added to END statements; "A=" ?A
normally this is used to indicate the structure ended. /* A=37
begins the reservation of all columns to the right of, and
including /* for comments, until 7 is encountered. In Operating System (OS):
TINY it is easy to implement Gerard Weinberg's concept TINY is its own operating system. Users run on a
of placing comments on the right hand side of the page, dedicated machine (their own micro) or a virtual dedicated
to be covered during debugging. machine. Programs are automatically compiled when
The program as shown is unusual; except in intro¬ defined and recompiled whenever source code is changed.
ductory programming classes, main programs do not calcu¬ TINY will include access to a virtual machine level where
late greatest common factors; also the mnemonic name is relocatable and reentrant machine code may be written
inconsistent with the use of "greatest common factor," using an assembler. This level cannot be defined until
rather than "divisor." To rewrite the program as a func¬ subroutine linkages and data formats are defined in
tion, it should also be changed so that the values of the greater detail. TINY has a virtual memory; the user sees
parameters are not changed.*: a single large homogeneous memory space. Files, pro¬
grams, utilities, and system variables are all represented
*This change is now required for program correctness as global variables in this memory.
reasons. Conclusion:
I'd appreciate feedback about TINY design and im¬
BEGIN .GCF (XD.YD) r plementation. My address is at the end of this article.
X -f- XD USE EUCLID'S ALGOR¬
Y YD ITHM TO FIND GREAT¬
IF X <Y EST COMMON FACTOR OF Program correctness:
T X XD AND YD. It is straightforward to construct correctness proofs
X +- T for TINY programs. Relevant features include:
Y -t- T Restricted control structures;
T +- All programs have only a single entrance and exit;
END IF Programs return only a single structure;
R -t- Y Parameters may not be altered by programs;
WHILE R > 0 No floating point arithmetic (10.0*.l7t 1.0);
R +- ,MOD(X,Y) External variables share a common name table, and
X <- Y must be explicitly indicated with the . prefix;
Y ■*- R The deletion feature explicitly delimits the range of
END WHILE
END .GCF
Paae 34 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 October, 1976
temporary variables;
Global:
The simplicity of the language.
Data types: INTEGER, STRING
These features do not follow from the desire for a
Data structures: the vector
small language. GOTOs would be easy to add, and check¬
Maximum number of elements in a vector: 255
ing for assignment to parameters will actually cost core.
Formats: Integers convert to a six character string
I maintain that one should not add features to a language
indiscriminantly, considering only available core or CPU
TINY ERROR MESSAGES
time. Psychological factors can also make a language good
or bad. PL/1, APL, "SUPER FORTRAN", "BASIC PLUS"
compile: assignment to parameter
are all baroque languages, whose descriptions occupy size¬
able books and whose complete features are rarely mas¬ mixed mode
tered. value undefined
"I see a great future for very systematic and very global undefined
modest programming languages." — The Humble Program¬ unmatched parenthesis
mer by E. W. Dijkstra missing end statement
syntax error
TINY LANGUAGE SUMMARY
execution: overflow
division by zero
Vocabulary: BEGIN END IF ELSE WHILE UNTIL vector too long
Comments: /* */ string too long
Arithmetic infix operators: + — * / subscript out of range
Arithmetic prefix operators: -
Concatenation: 16 (blank) Direct letters about TINY HI to: Martin Buchanan
Length operator: # (number) 2040 Lord Fairfax Rd.
Relational operators: Vienna, VA 22180
Assignment:
Input: ?
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 JQ
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)
October, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 Page 35
295
Book Review TUTORIALS FROM THE IEEE COMPUTER
SOCIETY
COMPUTER POWER AND HUMAN REASON
Reviewed by Dave Caulkins, 437 Mundel Way, Los Altos, Minicomputers and Microprocessors: A Tutorial, Gaithers¬
CA 94022, (415) 948-5753 burg, Maryland, May 26, 1976—271 pp.
Review of recent developments in both minicomputer
Computer Power and Human Reason and microprocessor technology.
by Joseph Weizenbaum Each chapter begins with a short section which intro¬
W. H. Freeman & Co., 1976 duces the topics to be discussed and also highlights the
300 pp. $9.95 significant points found in the chapter. Topic headings
include technological advances, microprogramming, mini¬
Tins is a book that should be read by anyone seriously computer architectures, microprocessors, mini and micro
interested in or affected by computers, a recommendation computer system development, and interfacing and peri¬
that includes most of the population of the U.S. The broad pherals.—$12.00
interest of the book is indicated by its selection as a Book- Microprogramming: A Tutorial, Long Beach, California,
of-the-Month alternate. Professor Weizenbaum is a talented May 17, 1975-309 pp.
man who has been doing inpressive work in computer sci¬ Text includes an introduction by the instructors, J.
ence for a long time. In this book he performs the difficult Michael Galey of IBM and Richard L. Kleir of Browne and
feat of humanistic perspective. Weizenbaum’s central theme Ramamoorthy, Inc., and 19 papers on microprogramming
is that the range of human capabilities and concerns is both in six general categories: introductory papers, micropro¬
profoundly different from and immensely larger than any¬ grammed architecture and languages, production of micro¬
thing a computer can do. Too many people in the Arti¬ programs, emulation and direct execution, microprogram
ficial Intelligence community of computer science research applications other than instruction execution, conclusions,
believe that there is no human activity that cannot eventu¬ and perspectives.—$12.00; $15.00 Hardbound
ally be done by a computer. Weizenbaum is strongly criti¬ Minicomputer Realtime Executives, from COMPCON 74
cal of this view; he rightly sees it as the worst kind of blind Fall, September 9, 1974—208 pp.
hubris. Of central importance to the economic realization of
Some quotes from the book give the flavor of Weizen¬ minicomputer applications is the realtime executive. Appli¬
baum’s arguments: cations such as data acquisition, process control, and com¬
What could be more obvious than the fact that, what¬ munication, are briefly discussed to identify their needs in
ever intelligence a computer can muster, however it may a realtime executive. The main elements of these execu¬
be acquired, it must always and necessarily be absolutely tives discussed include memory management, scheduling,
alien to any and all authentic human concerns? The very data structuring, file handling, interprogram communica¬
asking of the question, “What does a judge (or a psychia¬ tion, and control structures.—$15.00
trist) know that we cannot tell a computer?” is a mon¬ Tutorial on Computer Peripherals, from COMPCON 74
strous obscenity. Spring, February 25, 1974-48 pp.
The theories—or, perhaps better said, the root metaphors— Digest presents broad perspective of peripherals industry.
that have hypnotized the artificial intelligentsia, and large Excellent preparation for students, generalists, and those
segments of the general public as well, have long ago deter¬ who have not been working directly in the field. Topics
mined that life is what is computable and only that. As include trends in computer hardware and remote terminal
Professor John McCarthy, head of Stanford University’s systems, magnetic recording technology, use of peripheral
Artificial Intelligence Laboratory said, “The only reason we devices in remote systems, and future projections in hard¬
Iwve not yet succeeded in simulating every aspect of the real ware and software. —Microfiche only, $9.00
world is that we have been lacking a sufficiently powerful Structured Programming, from COMPCON 75 Fall, Septem¬
ber 8, 1975-241 pp.
logical calculus. I am currently working on that problem. ”
Sometimes when my children were still little, my wife This tutorial includes an introduction to the major ideas
and I would stand over them as they lay sleeping in their of structured programming, and their theoretical and practi¬
beds. We spoke to each other in silence, rehearsing a scene cal foundations; a detailed presentation of a major applica¬
tion program system, and a presentation of program develop¬
as old as mankind itself. It is as Ionesco told his journal:
ment stressing the top-down evolutionary character of the
“Not everything is unsayable in words, only the living truth. ”
process.—$12.00; $15.50 Hardbound.
In support of this central theme Weizenbaum deals with
Computer Networks: A Tutorial, Gaithersburg, Maryland,
some necessary background material. He presents an explan¬
June 18, 1975—296 pp.
ation of the theoretical basis for the power of machine based
The tutorial convers the areas of network topology and
information processing, including a treatment of Turing
communications media, network technology and its effect
machines. These sections are not what I would call light
on network performance, resource sharing requirements and
reading, but attention to them offers even the lay reader
techniques, and new approaches to network performance
considerable insight into computer functioning. Weizenbaum
measurement, network access and network management.
also has a fascinating theory about the existence of hackers
The general approach enables presentation of terminology
(compulsive programmers). As one who enjoys periodic
and concepts followed by specific examples. The presenta¬
fixes of code-writing and debugging, I found this theory es¬
tion stresses breadth rather than depth, and in turn pro¬
pecially interesting.
vides network novices with a firm basis for becoming better
Professor Weizenbaum has written a book of substantial
educated on specific topics.—$12.00
importance. As man’s information processing machines
become ever more powerful and pervasive, it is vital that we Send Order To: IEEE Computer Society, 5855
use computers for human purposes, and not the other way Naples Plaza, Suite 301, Long Beach, CA 90803
around.
Page 36 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 October, 1976
296
PASCAL, SEXISM, VRAM, STRUCTURED “STM BABY & VIKING VISION”
PROGRAMS, VARIABLE SPACING & GAMES
Bob, July 29, 1976
Dear Sir: Aug. 23, 1976 . . . Speaking of neat things, the STM BABY! computer-
I just received issue no. 7 and back issues 1-6 in the in-an-attache-case [STM Systems, Mount Vernon, NH 03057]
mail Saturday and spent all afternoon reading them. is the neatest thing I have seen in a long time. Not just a
Specific comments: Vol. 1, no. 4, pg. 4; and no. 6, pg. computer but also an ASCII-plus-Greek keyboard, cassette
6 refer to PASCAL as being developed by Niklaus Wirth— interface, video display generator, ROM monitor, etc., with
the language was actually developed by Niklaus Wirth and a loudspeaker for audio output! Now, if they could only
Kathleen Jensen. [Hmph! He never mentioned that when cut the price to $500 instead of $850 for their 2K system.
I took his compiler course at Stanford!] If you insist on [Photos and write-up in August Byte, pp. 122-124],
dropping Kathleen’s name someone might accuse you of JPL reports that the on-board Viking computer is work¬
being sexist and . . . (by the way, it is just coincidence that ing OK. I hope it keeps on working-the nearest customer
everything published in DDJ so far has come from males, engineer is probably in Helium City. As astronomer Carl
isn’t it?). [No. It’s the frustrating fact that we have yet Sagan pointed out recently, animals on Mars may sleep
to receive any manuscripts from women.] during daylight hours because of the uncomfortably high
It was mentioned that you were planning on writing a temperatures (-20 F) and harmful ultraviolet rays. No one
Small PASCAL [Nope. Just thinking of writing some thought to mount a spotlight on Viking to allow pictures
design articles to encourage implementation of something of Martian nightlife. The Viking camera did spot what
better than BASIC.]; two documents that would be very looked like an inscription on a nearby rock, though; when
helpful are: The PASCAL ‘P’ Compiler: Implementation translated (where is John Carter now that we need him?)
Notes, by Nori, Ammann, Jensen, and Nageli; and PASCAL-S it will probably be found to read, “Vikings go home!”
PASCALS: A subset and its Implementation, by N. Wirth. Sincerely,
These are numbers 10 and 12 from: Jim Day 17042 Gunther Street
Institut fuer Informatik Granada Hills, CA 91344
Eidgenossische Technische Hochschule
Clausiusstrasse 55 be written using only these three control structures. I
CH-8006 Zuerich, Schweiz hardly consider three structures “a lot of control struc¬
tures.” Perhaps Mr. Dickey was confused by PL/1,
Institute for Information which he seems to consider as a simple structured
Federal Institute of Technology programming language. PL/1 is most definitely not a
Clausiusstrasse 55 structured programming language. Indeed, many ad¬
CH-8006 Zurich, Switzerland vocates of structured programming have strongly
criticized several aspects of PL/1.
PASCAL-S is the “semi-official” subset of PASCAL. It con¬ Vol. 1, no. 6, pg. 28—Jim Day’s article on variable
sists of one program subdivided into a compiler which gen¬ character spacing is very interesting and such a scheme
erates code for an abstract stack computer and an interpre¬ would be quite useful in producing good looking output.
ter which interprets this code for an actual machine. The However, this must be restricted to use on final, human
abstract computer is organized as a stack, 2 stack indexes, oritented output; it can not generally be used for program
a program counter, an instruction register, a program status listings, etc. Variable character width destroys the visual
register (and a DISPLAY array used to speed up the ad¬ character of program, and makes it nearly impossible to
dressing mechanism). determine in which column a specific word begins, which
You might also be interested in the PASCAL Users Group is a significant factor in most languages. [Not so. Most
and especially the PASCAL Newsletter, which contains a lot “good” languages are free field format.] There are many
of information about PASCAL implementations, program¬ examples in computer literature of much confusion
ming, features, etc. The PUG address is Univ. Comp. Ctr., caused by typesetters who reset program listings with
227 Exp. Engr., Univ. of Minnesota, Minneapolis, MN 55455. variable width character spacing.
If you do finish a PASCAL implementation, please write to I’ve noticed several comments on games in DDJ. While
the Editors of the Newsletter because they are trying to I’m more interested in systems tape software being pub¬
keep a complete listing of all PASCAL implementations lished, I’m somewhat upset at the large number of com¬
(as far as I know, the PDP series are the smallest machines puter people who seem to enjoy running down games. I
on which PASCAL has been implemented to date). think games are very important as logical exercises. The
From Vol. 1, no. 7, pg. 10—your comment on VRAM: importance of games in developing mental capabilities has
there’s another ringer besides the one you mentioned—unless been frequently pointed out by people ranging from Albert
this device meets the radiation limits of Part 15 of the FCC Einstein to R. Buckminster Fuller. As an example, the main
regulations, it’s an illegal television transmitting station. field of study of John Von Neumann, one of the developers
[Not applicable. Matrox VRAMs output video for a video of the digital computer at the Institute for Advanced Stud¬
monitor; not RF for television.] ies, was in Game Theory. Some every interesting commen¬
Vol. 1, no. 6, pg. 40-In F. J. Dickey’s letter, he seems tary to real world affairs is contained in the introduction to
to equate structured programming with ‘lots of control Computers, Chess, and Long Range Planning, by Mikhail
structures.’ This seems to me to be precisely the oppo¬ Botvonnik, a book that I highly recommend. [Agreed. But,
site of the truth; one of the basics of structured program¬ then again, why not just play games for the fun of playing
ming is the use of only a very few control structures. games? ]
Structured programming usually involves the use of only Thanks very much for your kind attention in wading
three basic control structures: sequence, if-then-else, and through this lengthy letter.
loops (usually repeat-until or while-do form). In fact, one Yours truly,
of the important events in the history of structured program¬ Tim Bonham D605/1630 S. 6th St.
ming was the publication of a proof that all programs could Minneapolis, MN 55454
October, 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 Page 37
297
Another Hobbyist Magazine (AS USUAL) ELECTRONICS HAS A PASSLE
OF GOOD HARDWARE ARTICLES
WAYNE GREEN TO START PUBLISHING The September 2nd issue of Electronics magazine
KILOBYTE carried the following articles (among many others):
“Conferees Close in on 16K Standards” (for 16K-bit RAM)
John Craig, Editor—KILOBYTE Magazine “Shortage of Field Technicians Looms” (training programs
RFD Box 100 D, Lompoc, CA 93436, (805) 735-1023 for minicomputer techs)
Editor's Note: John Craig, the new Editor of the about-to-be Kilo¬ “Fiber-Optic Data Transmission: A Practical, Low-Cost
byte magazine, submitted this article to Dr. Dobb’s Journal after a Technology” (Gigahertz bandwidth, noise-free)
conversation with us. We are publishing it because (1) it gives some
explicit information about what may be expected from the forth¬ “PROM Decoder Replaces Chip-Enabling Logic” (Design
coming magazine and (2) we wish to support active competition details)
among the vendors of products to the computer hobbyist commun¬
ity. We believe that such competition in this free marketplace can
“Check List for 4,096-bit RAMs Flags Potential Problems
do nothing but benefit the consumers. in Memory Design”
Readers should not take our publication of this article as an “Microprocessors Dominate Scene at Sold-Out Wescon”
implication of our endorsement or special support of Kilobyte over
any of the other excellent periodicals serving our community. We “Character Generator Fits on One Chip” (Bipolar LSI
enjoy BYTE and Interface and what we have seen of Microtrek. gives 64 alphamerics for CRTs and matrix printers)
We expect to be equally pleased with Kilobyte and Personal Com¬
Electronics is published by McGraw-Hill, Inc., Box
puting.
We would be happy to publish similar articles from the editors 514, Hightstown, NJ 08520. Subscriptions are $ 12/year
of Microtrek and Personal Computing. Our only requirement is or $30/3-years in the U.S.
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. JIM DAY NOTES . . .
Well, Wayne Green [the original publisher of BYTE] has Dear DDJ, September 8, 1976
finally got around to doing it! The hobby community has I see that Martin Gardner has already reviewed Con¬
been expecting him to start another magazine for quite some way’s book in the September issue of Scientific American.
time . . . and here it is . . . KILOBYTE. If the name of Note the ad on page 213 of the same issue, offering a
this magazine brings about a reaction, don’t worry about it, FREE (for $1) GIANT CATALOG (64 pages) of compu¬
because you’re not alone. The important thing is that it’s ter stuff from Newman Computer Exchange, 3960 Varsity
a name you won’t easily forget . . . and besides, what’s in a Drive, Dept. 23, Ann Arbor, MI 48104.
name? Your reaction when you read the first issue is what “Microprocessors Have Their Problems Too,” by
will really count. (And you certainly ought to plan on get¬ Jerry L. Ogdin, on p. 35 of the August issue of Instru¬
ting that first issue, because it will very likely become a col¬ ments & Control Systems, is an interesting user’s-eye-
lector’s item in the months to come. Look at what hap¬ view of the state of the art. But one should keep in
pened to the last magazine Wayne Green started.) Never mind that the criteria of the industrial user are not al¬
mind getting any of the following issues . . . just get that ways those of the hobbyist or educator.
first one! Another interesting item is “Things That Go Byte
Now, for the important question: “What will KILOBYTE in the Night,” on p. 38 of the August issue of Computer
have to offer that would make me want to shell out my Decisions. While amusing, this bit of whimsy would
hard-earned bucks for a subscription?” One of the most probably be of more interest to readers of Creative Comput¬
important areas we’re going to cover will be basic articles ing rather than a dignified, scholarly journal like PCC or
concerning both hardware and software. This doesn’t mean
DDJ- Jim Day 17042 Gunther St.
that KILOBYTE is going to be just a “beginner’s magazine.”
Granada Hills, CA 91344
Most of us are either hardware or software oriented and
could use some good fundamental material in the “lacking” grammer receiving a 15% royalty for his efforts. Hopefully,
area which will bring us up to speed. And, when I say this will provide an incentive to some of those who have
“good material”, I mean just that. We’re not going to be developed some good programs to share them (and make
publishing articles of a dry, tutorial nature. If there’s a some good cash in the process).
hardware or software concept, or “lesson”, to be passed on Standardization is something else KILOBYTE will be
through the pages of KILOBYTE, it will be done using tackling. There’s no reason why a person shouldn’t be able
practical examples. The approach will not be one of, “This to buy a microcomputer which has standard plugs on the
is how it is done . . .” but instead, “This is why it is done back for connecting his serial or parallel peripherals. The
a certain way.” Hardware articles will be related to various cassette situation is something which needs looking into,
applications and the software articles will be tied in with also. We’ve got the Kansas City standard for software ex¬
programming problems and situations. Needless to say, the change at a rather slow speed, but perhaps we need to come
person who is a beginner will benefit from KILOBYTE as up with a standard for high-speed cassette operation, too.
though it were directed at him exclusively. People sit around and talk about standardization all the
Another area which KILOBYTE will be covering is time . . . others write about how something should be done
applications. We will take a good look at small computer . . . and then there are those who give seminars on the
applications in both the home (entertainment, education, subject. The only way anything is ever going to be done
etc.) and especially in small businesses. about tills (and other situations) is for the industry to get
The KILOBYTE Software Library will be one of our together and discuss it! Wayne Green and KILOBYTE will
big efforts, and probably one of our big headaches. There’s be working on this. The address is KILOBYTE Magazine.
a tremendous need for a central distribution point for small Peterborough, NH 03458. Be sure to include the “KILO
systems software. Much has already been developed . . . . . .” Subscriptions will be $ 12/year or $25/3 years ($2 at
but it isn’t getting around! We’re going to be selling pro¬ the news stand). It will be in circulation around the end of
grams at a modest cost on cassettes with the author/pro¬ December.
Page 38 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box 310, Menlo Park, CA 94025 October, 1976
298
$1.50
dr. dobbs journal of
COMPUTER
C 60 alisthenics rthodontia
Running Light Without Overbyte
November/December, 1976 Box E, Menlo Park CA 94025 Volume 1, Number 10
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
299
CONSUMER ACTION
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.
r
*
.
BEWARE! THE DOLLAR GOBBLING INFLATION
* INFECTION IS ABOUT TO AFFLICT ONE OF YOUR
WILL THE MANUFACTURERS COOPERATE? * LOVED ONES - -
*
*
Both the public and the manufacturers have often noted that com- *
merical magazines rarely if ever publish articles that are really critical Subscription Rates for Dr. Dobb’s Journal
♦
of products available from companies that are advertising in that maga¬
zine. (One publisher, targeting for the computer hobbyist community,
X
X
Increase January 1st
is widely reputed to consistently publish excellent "evaluations” of X
X
products from advertisers, and highly critical "evaluations" of pro¬ X Almost all of our subscription rates are going up as
ducts from manufacturers who refuse to advertise in the publication). X of the start of 1977. This means that our basic sub¬
Thus, the public tends to take such evaluations in ad-carrying X
X scription rate will now be as much as Byte’s. And, as
periodicals with a well-deserved grain of salt. Alternatively, Dr. Dobb’s X
Journal — and PCC before it — has had a consistent reputation for X always, a year’s subscription is for 10 issues; we pub¬
readily publishing compliments and complaints, including complaints X lish single issues for June/July and Nov./Dec.
X
about our publications. We believe that carefully done, comprehensive X We had to either do this — and remain responsible
product evaluations, published in DDJ, will be accepted as being un¬ X
X only to our readers — or begin accepting paid adver¬
biased and accurate.
If we publish a favorable evaluation of a product, it should be of
X tising, along with its strong though perhaps subtle in¬
X
significant value to that manufacturer. In particular, we herewith X centive to “keep the advertisers happy.” Considering
grant explicit permission to any manufacturer to reprint such evalua¬ X that we have been purusing an active > consumer advo¬
-X
tions from Dr. Dobb’s Journal, either in their entirety or a paragraph -X cacy role, ever since we started, and considering that
at a time. Such reprinting may be done without further permission -X
from DDJ, and without any compensation whatsoever being paid to -X we are significantly expanding that activity [see edi¬
-X torial on product and software testing and evaluation
Dr. Dobb’s (other than possession of the products that were tested). -X
Publication of less than a paragraph at a time, minimum, will require -X plans], we felt that the subscription increase was the
explicit permission from DDJ. We explicitly prohibit reprinting out- -X
■X preferable alternative. We are still awaiting the results
of-context portions of such a (copyrighted) evaluation, when it fails -X
to accurately reflect the results of the evaluation. -X
of the question concerning whether or not we should
We also hope to — in the not too distant future — develop an ob¬ -X carry paid advertising (a question posed in the last
-X
jective rating procedure for home computing products. Once devel¬ -X several subscription forms and in the subscription re¬
oped, we will invent and trademark a DDJ evaluation logo that in¬ X
X newal notices).
cludes the ratings. Manufacturers may then mark their products as
X
"Grade A — Tested in Dr. Dobb's Kitchen", or some such thing. X ;-
We have already spoken with several manufacturers, outlining our
plans. Reception has varied from an active interest in immediately Prize
participating, to a total rejection of the proposal. We will report the
details, whenever it seems fair and appropriate to do so. DDJ SEEKS SUPER LOGO!
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 . . . Posted 76-10-25
Nov./Dec., 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 5
302
BYTE OFFERS AN EXCITING PROPOSAL COMPUTER CONTROL OF TAPES HAS MUCH
WIDER USE THAN MERELY FOR MUSIC SYSTEMS
Machine-Readable Programs
in Magazine Format Dear Jim, Sept. 20,1976
Praise by Jim Warren, Editor, DDJ I read your excellent article: “Computer Control of Music
Tapes for Your Home Stereo” in DDJ Number 8. I think it is
OK, folks ... are you ready to throw away those can¬ really a realizable fantastic fantasy. However, I have some objec¬
tankerous and expensive paper-tape readers? Are you ready tion to the title (and the emphasis) of the article.
to give up those cat-naps you take while waiting for pro¬ Had you titled it: “Computer Control of Bach’s Music Tape
grams to load from your kid’s audio cassette player (you for Your Home Stereo on the Second Floor,” I would have ob¬
do have a megabyte of memory, don’t you?)? Then look to jected even more. The hardware you described is a computer
Byte* for a better way! controlled tape deck that can handle both digital and analog re¬
The November issue of Byte magazine carries an article by cordings. The software you proposed is also a very general file
Walter Banks and Roger Sanderson of the University of Wa¬ system. As you have mentioned in your “bells and whistles,”
terloo, and Carl Helmers of Byte, proposing an idea that this system would be ideal for many types of computer-aided
should cause the hobbyist to gleefully reposition their prayer instruction. I would also use it to play computer games, and
rugs in the direction of 70 Main Street in Peterborough, many many more. Wouldn’t it be great to hear Dr. Spock talking
New Hampshire: a super-neat method for publishing machine- when you play Startrek? I would also use the same system to
readable information. Walter and Carl are proposing that save ah the programs and all my secret files. In this case the
the bar-code scanning techniques already in widespread use analog part may be of no great value, but my stereo on the
in automated grocery checkout systems are equally appli¬ second floor just might announce: “We are now loading a
cable to publication of machine-readable programs and data. version of TINYPASCAL dated April 1, 1977.” Anyway,my
The basic idea is that programs and data that are of wide¬ point is, don’t limit such a great system to “Music Tapes” or
spread interest can be encoded in a standard bar-code format, to “Home Stereo.”
printed in a book or magazine (presumably with the human Another nitty gritty: On Page 5, you seem to imply that
readable form on nearby pages), and loaded into an indivi¬ the $199 and the $299 packages from Triple I also include two
dual’s home computer by simply waving an optical scanning tape transports. From what I know, only the $ 189 package
wand over the machine-readable pages. Programs and data includes two transports. You get only one transport in the
could then be truly “published” — printing them instead of deluxe model packages.
using the far more expensive and less convenient punched Sincerely yours,
or recorded formats. The reading mechanism — the scanning Iinchen Wang
wand — has the advantage of no mechanical parts, depend¬ I debated phrasing the article in this more general applica¬
ing on the human hand for its motive power. It’s simple; tions context, but decided to keep the main article “narrow¬
it’s nonmechanical; it should be cheap. Data transfer rates minded” and merely point out the much more general applica¬
are obviously limited only by the speed of the hand and the bility of the system I outlined. I did so because I didn’t have
speed of the processor that is interpreting the input from the time or space to discuss the wider applications in the
the scanner. detail that I felt would be necessary to a more generalized
This is not a future fantasy. The technology is already article.
well-developed, both for printing of machine-readable infor¬ Yer right on how many transports are included in each
mation and for inexpensive optical scanners. Optical scan¬ package. The $189 package includes two fixed-speed transports,
ning of printed information has been in use for some years but the $199 and $299 packages include only one transport.
in the banking industry. There, total reliability is an abso¬ What’s worse, the prices have gone up ... but they’re still a
lute requirement, and the encoding format and scanner de¬ good deal (see Phi-Deck article elsewhere in this issue).
sign they use is considerably more complex than is necessary
with bar-codes and bar-code scanners. Bar-code techniques
WE HAVE SPEECH SYNTHESIS . . .
have proven sufficiently reliable that they are in wide-spread
use in grocery checkout facilities, where accuracy is a must SOON: SPEECH INPUT
(demanded by the paranoid consumer was well as by the We hear ... straight from the quadraped’s mouth ...
food retailers), and where sloppy usage must be assumed. that a speech recognition experimentation system will be
This is not an idle proposal or one-shot in the dark by placed on the market early next spring. In kit form, it
Byte. The November article is an explicit, detailed, nuts-and- will cost well over $500 and will plug into the S100 bus.
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 PUBLICATION DETAILS DESIGN OF A
bar-codes, and the specifics of the software that is necessary CONTROL PROCESSOR FOR A MICRO¬
for reading bar-coded information. Articles in the immediate COMPUTER NETWORK
future are sure to include complete details for the construc¬
The Computer Systems Synthesis Group out of UCLA’s
tion of bar-code scanning wands and their interfaces.
Computer Science Department has recently released a 231
We cannot praise this proposal too highly. If this tech¬
page tech report by R. Fenchel entitled, “A System Control
nique, in fact, proves feasible and reliable, it will provide a
Processor for a Microcomputer Network.” It discusses the
significant breakthrough for the problem of distribution of
design of a control processor for such a network, to be used
machine-readable software arid data. Note: The import of as an education tool in a computer science lab. You can
this for the forseeable future well may be in its facility for probably obtain a copy without cost (while they last) by
distribution of data, rather than programs — e.g., census writing the CS Department in the School of Engineering
data, voting records, mathematical and engineering tables, & Applied Science, UCLA, Los Angeles, CA 90024.
encyclopedias, want ads, library indices, case law citations,
you name it — all types of reference materials that it would *Are there any of our readers who don’t know about Byte magazine,
be desirable to be able to search and access via machine. 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?
ate project for any of the larger clubs (if “hams” can get to¬ People's Computer Company
lers are rated up to 300 baud and are explicitly designed to 10. EXTENT AND NATURE OF CIRCULATION
AVERAGE NO. COPIES EACH
ISSUE DURING PRECEDING
ACTUAL NO. COPIES OF SINGLE
ISSUE PUBLISHED NEAREST TO
12 MONTHS FILING DATE
function reliably over scuzzy, unconditioned, lowest-band- 5000
A. TOTAL NO. COPIES PRINTED (Net Press Run) 3125
width telephone lines. Modems are currently available that
1. SALES THROUGH DEALERS AND CARRIERS. STREET 810 1426
will run up to 9600 baud over conditioned phone lines. My VENOORS AND COUNTER SALES
1332 2670
analog friend hedged somewhat on whether or not such higher Z. MAIL SUBSCRIPTIONS
data-rates would present problems on audio tapes. Again, I C. TOTAL PAID CIRCULATION (Sum oflOBl and 10B2) 2142 4096
933 844
And now, the hidden gotchas: First of all, the garden vari¬
2. RETURNS FROM NEWS AGENTS 0 0
ety acoustic coupler is built with the electronic protocols for
G. TOTAL tSumofR. FI and 2-.hould eauol net pres, run shoum
its analog end to slave to a master computer over the telephone 3125 5000
SIGNATURE AND TITLE' OF EDtJOJe. PUBLISH ER..BUSIN ESS
handset, and its digital end to speak in full-duplex or half¬ ii. 1 certify that the statements made by me
304
ITALICS IN VIDEO DISPLAYS
64-CHAR MOD FOR TVT-II’S, NOW & SCROLLING,
One possible enhancement of character generation in
SOON
TV typewriters is the incorporation of an italic mode. The
same ROM could be used to produce the basic dot patterns Gentlemen:
for both italics and non-italics, only the character timing We would like to thank you and your readers for the interest in the
would change. Figures 1 and 2 show how text strings TVT-11 64 character modification article that you published in your
would look in both modes. In the italic mode, successive No. 6 issue. The response has been tremendous. After experiencing
some initial problems with typo errors and delayed shipments we are
lines of each character would be displayed with a different now meeting with your 3 week delivery schedule. On November 1 we
time delay. Assuming a 7 by 9 dot matrix, the first line found it necessary to increase the price of our boards to $6.50 for the
of each character (i.e., the top line) would be displaced by 64 character board and $13.50 for the 2K memory boards. Printing
4 dots to the right. Line 2 would be displaced by 3.5 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
dots (i.e., three and a half dot-clock cycles), and so on. instructions is now available].
Line 9 would have no displacement. A shift register IC We have received many requests for a scrolling modification for the
could be used to implement the displacement, and an 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
embedded control character (such as CTRL I) could be
five jumpers are required to install it. This was accomplished by hav¬
decoded to turn the mode on or off. The regular and ing the board plug into sockets which replace IC's 34 and 41 on the
italic modes could both be used in the same line of text mainframe. These IC's are relocated on the mod board. The board
with appropriate control of transitional timing, although gives bottom line scrolling with the new line coming up clean. Nor¬
this would complicate the logic required. , mal or scrolling modes are switch selectable with the scrolling not be¬
by Jim I 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
R r*5
*•* i i
*****
Figure 1.
ll
«• •
Regular Mode
*8•
*•
•♦♦ •••
•*»
•• •
and instructions although this is not yet firm.
Thank you,
David O. Valliere
Digital Designs
© *©' •» • .
In response to our conversation on the phone today, here are all the
#• /
• /*-©•) *#V
•• M • • M
f")
m m
* 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.
Figure 2. Italic Mode 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
SCROLLING MOD FOR TVT-2’s 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
Dear Sirs, Oct. 7,1976 not reached by 15 January 1977, all money will be returned. To quali¬
The TVT-2 is the most popular video terminal used by computer fy as an order, full payment must be made at time of order.
hobbyists today. Until now, the users have had to settle for the 'page Prices:
concept' with their terminals. Your readers might be interested in the VT4000BA Assembled Terminal regular retail 999.95
fact .that now they can add scrolling to their TVT-2. A fully assembled less 20% 199.95
scrolling modification board (model SM-2) is available from Lenwood
Computer Systems, P.O. Box 67, Hiawatha, IA 52233. A complete 800.00 + 6.5%
set of instructions is supplied. The cost of the SM-2 is $20.00 plus state tax + 2%
$1.50 for postage and handling. TOTAL 868.00
Thank you for your time.
Jay G. Francis P.O. Box 67 Bare bones lit separate parts regular retail 240.00
Lemwood Computer Hiawatha, IA 52233 less 10% 24.00
Systems
216.00+ 6.5%
state tax + 2%
handling fee
64 X 32 VIDEO DISPLAY KIT
TOTAL 234.36
The above prices include delivery in the Bay Area, outside the Bay
Gentlemen:
Area will be sent freight collect. If shipped outside Bay Area subtract
I thought that some of the DDJ readers interested in video % of the handling charge.
displays might want to look into a kit sold locally here in Dal¬ Make checks payable to: Video Terminal Technology. Mark on
las. It is a 2K x 8 bit parallel I/O (32 lines of 64 chars); it may lower left of check: Homebrew Computer Club Buy. Send orders to:
be optioned for RS232 also. Norman Walters
The main reason for going to this unit was because of the 3107 Laneview Dr.
several control codes that allow blink by code and blank. The San Jose, CA 95132
blank/unblank allowed me to not only not use up my own
rather limited core (RAM, actually), but to use the screen for NEW COSMAC COMPUTER
extra RAM, as the unit will operate at machine speed — I’m
using the INTEL 8080 prototyping kit. At last, someone has come out with a microcomputer based
Readers interested can write to the company at this ad¬ on the RCA 1802 (COSMAC) and suitable for many hobbyists.
dress: Produced by Infinite, Inc. (Box 906, 151 Center St., Cape Ca¬
IOR naveral, FL 32920), this machine has a 4-digit hex readout and
P.O. Box 28823 integral hex keyboard. Standard on-board memory comprises
Dallas, TX 75228 256 bytes of RAM, externally expandable to 64K. Additional
Sincerely, features include DMA as well as serial and parallel I/O. Assem¬
D. Moore bled and tested, the price is $395 with case and power supply,
Dallas, Texas $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
FRIDEN DOCUMENTATION FOR $10
MILITIA MAY AID HOBBYISTS
COMPATIBILITY PROBLEMS Dear Editor, Oct. 31,1976
Some months ago I purchased a Burroughs-Friden
Printer-Keyboard and the associated interface electronics on
Dear Jim, Sept. 7, 1976 the surplus market. The model number is 9530-2. The cost
You are probably aware of the VVESCON Session II paper
described in the attached extract from Electronic Design (below).
was in the vicinity of $300, and looked like a pretty good
Looks like the military may be giving us a hand with standard¬ deal for a hard copy unit. The major shortcoming is the
ization. lack of any documentation. For effective use of the unit
I enjoyed meeting you at Personal Computing '76.
with home computers some changes are necessary, but are
Best wishes,
Joe Gilbreth 1229 Vista Lane virtually impossible to accomplish without adequate docu¬
Birmingham, AL 35216 mentation. I spent nearly all of my spare time for the last
half year on the incredible task of deciphering the circuits
Recommendations for use of a common bus system on the interface boards. There are over 300 integrated cir¬
will be made in Session 11, but in another context—for cuits (obsolete types) on the boards. It was the hardest
the standardization of military microprocessor systems. puzzle that I ever worked on.
That will be proposed in a Session 11 paper, “Compati¬ It is likely that there are other computer freaks who have
bility Among Families of yPs”, by Hank Malloy, military bought similar units and are in need of documentation. For
program manager, Intel Corp. Malloy is also chairman of $10,1 will send a copy of my documentation to anyone for
a newly organized task force on military microcomputer his or her personal use. The documentation includes com¬
LSI, which is sponsored by the Electronic Industries ments on almost all of the inter-board wires and logic diagrams
Associates and the National Electronic Manufacturers Asso¬ of the boards and typewriter switches. It does not include
ciation. explicit instructions for modification of the boards for home
To achieve any kind of standardization it is essential use, but perhaps I can generate that later.
that bus structure characteristics be specified, Molloy will Sincerely,
argue. Also, high-order languages will have to be used. Robert L. Smith 2300 St. Francis St.
An example of how such languages can contribute Palo Alto, CA 94303
to standardization, Molloy will point to PL/M. Two popu¬ Does anyone have original manufacturer’s documentation for
lar 8-bit |j Ps are the Intel 8080 and Motorola’s 6800. these units? — Editor
While PL/M was generated by Intel for the 8080, PL/M
compilers are available to translate the syntax into object $3000 FOR 2,400 LINE PER MINUTE PRINTER
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 Houston Instruments has 80-column and 132-column
for Motorola’s 6800 and the /420 for Intel’s 8080. printers that print up to 2,400 1pm and up to 1,400 1pm.
They say their interfacing is explicity designed for easy
MORE COMMENTS ON PROC.TOLOGY SOFT¬ connection to micros.
WARE, PLUS SOME NOTES ON CASSETTE Houston Instruments is located at 1 Houston Sq.,
TAPE QUALITY Austin, TX 78753.
Dear Jim,
DDJ has become the best newsletter for the computer 2. When a variable in a FOR/NEXT loop is decremented and
hobbyist. None of the commercial magazines can approach becomes zero it is not recognized as zero.
the wealth of information you provide. I enjoy every issue, Example - 10 FOR 1=2 TO -2 STEP -1
especially the letters. Keep up the good work. [Aww, 20 IF 1=0 THEN . . .
geee fellas . . .] The relation on line 20 never becomes true. The zero is
Some more comments on Processor Technology software. apparently a “negative zero” since
I think the PT people have done a great job providing rea¬ 20 IF ABS(I)=0 THEN . . .
sonably priced software. It seems that their programs are will work.
not thoroughly debugged. The source listings for FOCOL If any of the DDJ readers have a solution I’d like to hear
and BASIC do agree with the paper tapes. from them. A letter to PT regarding these problems has not
The problem with the PT BASIC INT function mentioned been answered.
in DDJ No. 8 can be corrected as follows: Realistic Supertape has been recommended in some hobby
AINT LDAX B magazines as suitable for digital data recording. The October
SUI 129 76 issue of Consumer Reports contains a test of audio cas¬
JP AINT1 settes. Recording music and digital data are not directly
XRA A related. However, it is interesting to note that Supertape
MVI D,5 was rated below average in two important factors - output
AINT2 STAX B uniformity and freedom from dropouts. From personal ex¬
DCX B perience I’d have to agree with the test findings.
DCR D The four top rated cassettes were BASF Studio Series,
JNZ AINT2 Maxell UD-XLC60, Scotch Master, and TDK Super Avilyn
STAX B SAC60. I’m not sure this can be printed in DDJ since it
RET is copyrighted info.
Thanks for Fred Greeb for this fix. Happy computing.
In addition, I’ve come across two more bugs: Adolph P. Stumpf 5639-A Ute
1. Formatted print will not work with fractional values. Glendale, AZ 85307
Example - %Z2% Variable = 1.097 Output =1.10 OK [My impression is that one may copyright text, not informa¬
Variable = .097 Output = .0010 OOPS! tion. — Jim]
Nov./Dec., 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 9
306
THINKING OF OPENING A COMPUTER STORE? Average Earnings For An Average Month
The Computer Shop (of Calgary) is a brand new store Advertising (2%) 400.00 600.00
serving the Canadian Rockies and western plains area. They Automotive 35.00 50.00
Dues & Subscriptions 7.50 7.50
carry a number of product lines, and hope to offer some of Entertainment 10.50 25.00
their own Canadian-made products in the near future. Equip. Rental 30.00 40.00
Austin L. Hook, The Computer Shop, 3515—18th St., SW Insurance 75.00 75.00
Calgary, Alta., T2T 4T9, Canada, (403) 243-0301. Interest 7.50 10.00
Office Supplies 10.00 20.00
Postage 17.50 25.00
“PERSONAL” COMPUTERS ARE SHOWING UP Printing 20.00 30.00
IN SCHOOLS Prof. Service (Ace/Lease) 75.00 75.00
Rent 450.00 600.00
Taxes 35.00 50.00
The San Jose Unified School District is busying 14 Western Telephone 100.00 150.00
Data Handlers, assembled. It already has ten IMSAI’s and a Travel Expense 50.00 75.00
Polymorphic. It has originally been considering expanding a Utilities 50.00 75.00
PDP-8 into a TSS-8 system, but decided to purchase these 25 Subtotal 71373.00/ /1907.50/
computers, instead — for the price of that TSS-8 expansion. Net Profit (11.7%) 2352.00 (13.8%) 3462.50
Furthermore, Bob Albrecht noted, “SMRT won’t hurt Monthly
San Jose.” (SMRT is the Single Message Rate Tariff that
Pacific Telephone is about to inflict on users of business tele¬
Yearly $28,224.00 $41,550.00
phones who make lengthy calls. See August, 1976, DDJ.j
\
Page 10 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 POSTSCRIPT TO ‘COPYRIGHT MANIA’
Dear Jim, Aug. 25, 1976
I am writing this letter as a postscript to the article 'Copyright
Dear Bob and Jim, Oct. 7,1976
Mania' in the May issue of Dr. Dobb’s. I became rather attracted
To follow up my conversation with Bob of a couple of to TRAC (trademark of Rockford Research, Inc., and don't you
weeks ago, this is to tell you about the LSI-11 stuff. forget it) and therefore wrote to Mooers asking for information
At last count there were about 15 people in the S. Calif, regarding the development of a TRAC processor. Two months
area who were using the LSI-11. I understand that there are about later, I received a copy of a 'License Agreement for permission to
use Rockford Research copyrighted writings on TRAC language in
an equal number in the Bay Area. Other than those two groups academic experimentation.' What it consisted of was an agreement
I know of no other “large” bodies of hobbyists using the machine, that Rockford Research would not sue me if I signed the agreement
although there are undoubtably Isolated people around the and sent them $10. That (the promise that they won't sue me) is
country who bought them from various distributors. Perhaps an all I get for my $10 (manuals are another $15). Also, once I
announcement in PCC or Dr. Dobb’s will help pull us together. finished the TRAC processor I could not: "publish, reproduce,
resell, lease, give, lend, circulate, or license the . . . [TRAC pro¬
The S. Calif, group bought their machines from a company cessor] . . . or any portion thereof in any manner or on any
called Applied Information Development, a subsidiary of SDC. medium, which shall include but not be limited to copies, tapes,
AID is apparently building something that incorporates the films, computer program library deposits . . ." (there was about a
LSI-11 and is selling the components partly as a way to get paragraph more). Anyway, that rules out sending to Dr. Dobb’s,
which was my idea for the processor from the start. The agree¬
their own unit costs down. We got a 25% discount of quantity
ment also wanted me to agree not to challenge the Rockford
one price with a $5K order, and some smaller orders have since copyright.
been filled at the same discount. Whether they would still do In short, I have no objection with a person or group copy¬
this for other groups I do not know, but probably they would. righting a program, but this seems a bit excessive.
Thanks for the time, and keep up the good work.
(Amateurs pay cash.) I have also seen other distributors adver¬
Yours,
tising “club discounts” on the LSI-11. By the way, we went this Chris Pettus PO Box 611
route after trying for almost a year to put together a group of 50 Malibu, CA 90265
people to buy directly from DEC and never succeeding.
There is a common belief that the LSI-11 is too expensive PRAISE FOR PALO ALTO TINY BASIC & TINY
for hobbyists. I don’t agree. For about $ IK, you can get a
TREK, AND A QUIBLET ABOUT THE VDM SOFT¬
processor, 8K bytes of memory and a serial I/O card, and a back¬
plane, fully assembled to industrial standards, that works when WARE
you plug it in. It took me 15 minutes to go from box to teletype. Dear Jim, Oct. 5, 1976
PALO ALTO TINY BASIC and TINY TREK have to be the best
The machine has a very nice monitor, and for an extra $100 or
$4.00 investment I ever made! I'd like to recommend it to all Dr. Dobb
so you get hardwired fixed and floating point instructions, for Dobb’s readers. (For further details, refer to Dr. Dobb’s, May 1976,
those who are into that. Plus, you get the very elegant and with an addition of software for a VDM display in June/July 1976.)
powerful instruction set of the PDP-11, all of the system software The tapes came back within 4 days from the Community Compu¬
ter Centre (which must be a record for 'Trudeau's Turtles'), and every¬
that has been developed for the 11 (at a price, of course), and
thing worked immediately. The abbreviating possibilities of P.A.T.B.
the DECUS library which is full of 11 software and is going to really make for conpact programming (P. instead of PRINT, for exam¬
get a lot fuller. All in all, I think it’s a pretty good deal. ple), in conjunction with multiple statements per line.
There are some disadvantages, of course. If the machine 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
breaks you probably have to ship it back to DEC for repair.
have everything in less than 2K, I guess. (Any chance of Li Chen Wang
(DEC claims a very long MTBF, but who knows?). I don’t know re-considering . . .?)
what a nominal repair charge would be. Until somebody builds a I haven't had too much use out of TINY TREK — mainly because
LSI-11 — to — Altair bus interface, we won’t be able to use all 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
the neat hobby peripheral cards. Memory is somewhat more
other versions I have played (STARTREK, and STARTREK 3D on an
expensive than for hobby machines, although it too comes fully AMDAHL 470). As a matter of fact, it is extremely difficult to win,
assembled and checked out from a variety of vendors. You have and that increased the enjoyment (with the frustration).
to supply your own power supply and box, although that isn’t Another problem in using the VDM software given in June/July
1976Z>. Dobb’s, is that when listing a long program the screen goes
a big deal. Also, some of the most desirable software like the
zzzip! and all you catch is the last few instructions that remain on the
BASIC interpreter is still pretty expensive. I think DEC should screen. A delay, or a hold feature would be nice.
consider releasing the papertape stuff to DECUS — probably they Still, for 6K of memory I have hours of fun — or at least my kids
have recovered the cost by now! In all, though, I think that the do. I'm reduced to playing after lights out for them. What the heck
LSI-11 has a lot to recommend it to the hobbyist, particularly to can I do with my other 10K?
Sincerely,
those who are more into programming than hardware. Basil R. Barnes, VE6BB Box 1226
So far no really creative applications for the machine have Bonnyville, Alberta
emerged from our group, since most of us are still working on CANADA, TOA 0L0
developing auxiliary hardware like terminals and stuff. Periphe¬ P.S. Can I obtain Mr. Wang's address? [Dr. Lichen Wang, 150
Tennyson Ave., Palo Alto, CA 94301, (415) 321-6983]
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 more users before that becomes reasonable.
device (that’s a story for another day). The peripheral that most See ya,
of us would like to get is, of course, a floppy disk, but so far we Jim McCord 3710 State St.
haven’t found anybody who makes an affordable controller for SysteMetrics, Inc. Santa Barbara, CA 93105
the LSI-11. That shouldn’t be too far off, though. P.S.
Anyone who has an LSI-11 or is interested in one is welcome Jim, thanks for the stuff on PerSci. They had an ad in Inter¬
to write to me. So far there is no organized newsletter for the face this month, offering drive and controller for just over a kilo-
machine but undoubtedly one will emerge when enough people buck. It’s a really fantastic intelligent controller, requiring prac¬
are interested. DEC will create a DECUS Special Interest Group tically no support software in the host machine. If I can’t find a
(SIG) for hobby users of the 11 or 8 or both, which would take compatible controller for my 11,1 may go this route, writing my
care of nuisances like printing and mailing, but we need a few 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 and we can’t seem to get it going over the phone or by mail,
ABOUT TARBELL TAPE UNITS 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
Dear Jim, Sept. 19,1976 lose when you buy one of my interfaces.
Thank you for giving me the opportunity to reply to the Sincerely,
notes about my cassette interface in your Volume 1, Number Donald E. Tarbell Tarbell Electronics
8 issue. (213) 832-0182 144 Miraleste Dr., No. 106
I believe that no product is ever perfect, so I continually Miraleste, CA 90732
revise both the documentation and the interface itself. Since
I started delivering these units over a year ago, I have gone CONFERENCE ON COMPUTERS IN HUMANITIES
through four revisions of the boards, and at least six revisions Papers and participation are being sought for the Third International
of the manual. These changes were largely the result of com¬ Conference on Computers in the Humanities to be held Aug. 2-5, 1977,
plaints, suggestions, and returned survey forms, which are at at the University of Waterloo, Waterloo, Ontario. Send papers or ab¬
stracts to Prof. Paul Bratley, Dept. DTnformatique, Universite de Mon¬
the end of each manual. The first ten kits especially, were
treal, Montreal, Quebec H3T 1J4 by January 15, 1977.
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 Tarbell praise, a fancy disassembler,
persons unfamiliar with the device.” & AN APL CHARACTER QUERY
Although I realize that the term is a relative one, I
don’t feel that the implementation of this device has been at Dear DDJ, Sept. 26, 1976
all “sloppy.” Of course, I’ve had my share of problems, like Just a quick note on the Tarbell interface about
any of the other manufacturers, but I’ve made every attempt which you say you have been receiving a lot of com-
to follow up what I consider good design practices, and to filaints: mine worked the first time I tried it, and refused
o drop so much as 1 bit when fed by a tape recorder
make the system as clean as possible.
Unfortunately, I did have a run of boards that had bad with a variable speed control. I could go 20% slow, and
plated-through holes, and got through my inspection about 10% fast, with no trouble. Only by intentionally
undetected. I have since discontinued my relationship with tfying, could I get it to drop a bit to see if my checksum
the manufacturer that produced these boards, and selected routine was working. In daily use for about 2 months,
another. My first revision D cassette interfaces were it has dropped a bit only once. It is a fantastic peripheral.
delivered September 3,1976 (beforeDr. Dobb’s Number I use it to back up floppy disks as it is the only device
8). The boards in these kits, one of which is enclosed, are that is 1) fast enough; 2) cheap enough; 3) reliable
far superior to the previous ones, and the plated-through enough. I had no ‘non-plated-thru hole’ problems. A
holes look beautiful. Revision D also includes all the latest friend says Tarbell left some TTL inputs floating, which
modifications, including several unused inputs connected to causes noise susceptibility, but I have not had this prob¬
pull-up resistors. The connector pin alignment has also been lem.
corrected slightly. Keep up the fantastic work on supplying the
Several months ago, I contracted with someone to com¬ hobbyist community with public domain software, and
pletely rewrite the manual. The rough draft is now being P.S. are you interested in a disassembler which I wrote
reviewed, so it will probably be ready to print in about a and commented? It is 8080 based, uses sense switches to
month. This manual provides new information, such as determine when to generate instructions, when to gener¬
siagrams for all the integrated circuits, step-by-step instruc¬ ate DB’s with ASCII, or DB’s with hex. It can be used
tions for the beginner, and a more thorough theory of as a one-pass process to just see object, or can be used
operation section. Although my present manual is not in a as 3 passes: 1) every address reference (JMP, LXI, CCLL,
professional format, I am proud of the fact that it is chock- etc.) is placed in a symbol table compatible with Processor
full of the kind of information a hobbyist needs to get his Tech Package No. 1; 2) a pass to edit the symbol table
interface up and running and useful. The new manual will and change default labels (Lxxxx) into meaningful ones if
be even better, and some of the pages have already been you have some knowledge of the source code—this pass
added to the present manual. is entirely optional; 3) do the actual disassembly, with
One page of the manual starts: “If you cannot make most labels put in, and all LXI’s, JMP’s etc. referencing
at least ten 8K-byte transfers with no errors, you have a labels. The output is a source listing, and optionally,
problem, and the items below may be of some help:” using a sense switch, writes the source in a format com¬
This is followed by several items to check. The last two patible with Processor Technology Package No. 1.
items on this page state: “If you still have problems, I would appreciate you publishing a note asking if
please return the unit, preferably with your cassette recorder, anyone knows a source for APL character generators which
and I will get it operating perfectly for you without charge. could be retro-fitted to a VDM.
If you are completely dissatisfied, you may return the Sincerely,
interface for a refund within 90 days after you accepted Ward Christensen 688 E. 154th St.
delivery.” Dolton, IL 60419
I don’t know if there’s another manufacturer that Yes, Yes, Yes! Send us your super disassembler—including,
stands behind his product like this, but I think it attests to of course, user documentation, at least nominal internal
my confidence in the Tarbell Cassette Interface. I have not documentation, and annotated source code.
charged one penny for repairs yet, and in all the units I’ve What sort of disc system are you using and how do
shipped, only one has asked for (and received) a refund. I you like it? (And, may we publish your reply?)
sincerely believe that most of the people with these units What sort of printer and printer software are you
are completely happy with them. using? [The original of this letter had an unusual type
I completely support your suggestion to write or phone face, and was left & right justified.]
me directly. Please—if you have problems with your interface, —Jim
Page 12 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Nov./Dec., 1976
309
TARBELL TOUTED A CLUB SURVEY: TOO SMALL FOR STATIS¬
About the Tarbell interface: I have two of them (since I have two TICAL SIGNIFICANCE, BUT WE LIKED IT
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 Dear Mr. Warren, October 3, 1976
Tarbell gets them right back (a couple of weeks) and they're great! Thought you might be interested in the enclosed results
In fact, most of this stuff doesn't work immediately. None of my of our first membership survey.
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
Sincerely,
have regretted it. When you buy, buy quality and mentally add 25% Robert R. Wier Texas A&M University Micro-
for repairs unless you know at lot about this stuff that I don't know. Survey Chairman computer Club, Box M-9
Say, what’s your experience with molex pins for 1C chips? I've Aggieland Station, TX 77844
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
These are the results of the first periodical Texas A&M Micro¬
computer Club Consumer Survey and Opinion Poll taken in Sept.,
TARBELL TRICKY 1976.
Dear Jim, Oct. 8,1976 HOW TO READ IT: Companies are listed in each division in de¬
A few weeks back you asked for user comments on the Tarbell scending order of rating. Entries are of the form NAME (rating/
Cassette Interface. Here are mine, based on a not-yet-up-and-running no. of respondees). The ratings are determined from a number of
board. ratings based on response speed, quality of product, pricing, com¬
When I first put the thing together, I had trouble getting the plaint satisfaction, and overall quality. Companies which received
sync light to come on at ail. So I sent the board back to Don Tarbell, less than 2 ratings are not listed. Note that it could be "safer" to
asking for help. He corrected a few errors, made some modifications to deal with a company which has a rating slightly lower than some
the circuit, and sent it back to me — no charge. I still had some trouble others if a large number of persons found it favorable.
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 In all categories, most favorable rating was 5, least favorable was 1.
scope showed that adjustment was even more critical than the instruc¬
tions would indicate. I was getting a good sync light reading over a COMPONENTS:
DIGI-KEY (4.58/4)
wide range of settings, but the waveform was stable for only a very
TRI-TEK (4.5/2)
small range. That problem corrected, I could read in data, but still
JAMES (4.42/10)
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 S. D. SALES (4.42/6)
solution. NEWARK (4.36/3)
My observations: ALTAJ (4.04/5)
— The interface is sensitive and error-prone. I assume this is the FORMULA INT'L (4.00/2)
price one pays for the high speed. GODBOUT (3.9/4)
— A scope is nearly essential to correct problems. This is true for MESHNA (3.82/6)
all computer applications, actually, but this was the first of six boards DELTA (3.54/4)
I've assembled that required more than a little initial prodding. BABYLON (3.36/3)
— Don is good to his customers. I have no qualms about calling SOLID STATE SALES (2.89/5)
him if I can't get the error problem corrected, but want to put in my POLYPAKS (2.62/8)
own best efforts before bothering him further. OLSON (2.35/5)
— An article in DDJ mentioned that the user has to figure out B-A (2.28/5)
that a start byte is essential. True. This can be a real problem if you RADIO SHACK (1.92/11)
don't use Don’s programs, because that's the only place mention is made
of it. PUBLICATIONS:
in short, I have mixed emotions. I appreciate the potential speed Dr. Dobb’s (4.38/4)
of the interface and Don's integrity in backing his product. But I would Byte (4.23/10)
have been much farther along in getting a system running with a slower, 73 (4.18/3)
but more fool-proof (literally) unit. Right now, I'm still using console Ham Radio (4.16/4)
switches, since I can't use the keyboard effectively without reloadable People’s Computer Company (4.10/4)
software. Computer Hobbyist (3.75/2)
Sincerely, Popular Electronics (3.65/10)
Jim Wilson San Diego, CA Interface (3.08/3)
Radio Electronics (2.92/9)
Creative Computing (2.88/3)
Dear Jim, Oct. 14,1976
A P.S. to a letter I wrote a few days ago about my experiences with KITS AND MAJOR COMPONENTS:
the Tarbell cassette interface unit: SWTPCO (4.16/8)
It is now up and running, apparently reliably. My solution finally HEATHKIT (4.16/9)
was to hook it up to my hi-fi tape deck through an old Lafayette stereo PROCESSOR TECH (3.90/2)
amplifier that was going unused. I then used an oscilloscope to remove IBM (3.75/2)
as much of the distortion as possible by adjusting the bass and treble MOS TECHNOLOGY (3.74/3)
controls. IMS (3.73/4)
This is obviously a pretty unwieldy solution. So when I finish some MITS (2.82/5)
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¬ "Should software be included in the price of the hardware?"
ent installation. YES: 82% NO: 18%
Sincerely,
Jim Wilson Computer Stores: "Good, but expensive" was the general response.
San Diego
Selected comments from "What do you think is the biggest problem
facing personal computing now?":
Nov./Dec., 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 13
310
IMSAI “INCOMPATIBILITY” NEC chips for truly compatible chips, or at least distribute the
NEC ‘confidential’ documentation.
Dear Jim, Oct. 14,1976 Sincerely,
I have just entered a real-life description of “compati¬ Glenn S. Tenney Compro
bility”. While trying to figure out why a simple three instruc¬ Sr. Designer 2111 Ensenada Way
tion program would not work as documented in the Intel (415) 574-3420 San Mateo, CA, 94403
8080A manual being executed on my IMSAI 8080,1 dis¬
covered that the flag bits (as stored in memory via PUSH PSW)
IMSAI RESPONDS
were not as Intel describes.
For openers, bit-5 and bit-3 are supposed to be ‘O’. On my
Dear Mr. Warren, Oct. 18, 1976
IMSAI 8080 bit-3 was always *1’, and bit-5 fluctuated with, Following is the letter promised per our telephone conversation of
as yet, no pattern sometimes being ‘0’ and other times being October 15, 1976. We will be sending this information to all past and
T. At this time I played around a bit and found that the future customers who may have the NEC chip. >
XRA A instruction did not work as documented. At this All of the features described in the following synopsis were desiqned
by NEC to improve the 8080A chip.
point, I contacted IMSAI. Thank you for your cooperation.
Very quickly, I was put in contact with Mr. Bruce Hollo¬ Very truly yours,
way of IMSAI. After Bruce confirmed that strange things IMS ASSOCIATES, INC. 14860 Wicks Blvd.
were happening with his IMSAI 8080, he researched the Marvin Walker San Leandro, CA 94577
General Manager (415) 483-2093
problem and reported the following: (my interpretation
follows) SUMMARY OF DIFFERENCES BETWEENI8080A AND uPD8080A
These IMSAI 8080’s use a NEC 8080A chip instead of an
Intel chip. NEC reported in a confidential letter to IMSAI 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
some “minor” differences between their chip and Intel’s. instruction, the INTA status signal remains active. The 18080A re¬
At all times, the chips were stated as being software compat¬ quires the use of an 8228 to generate INTA by decoding 02H (all
ible. The software differences are: (1) Flag bit-3 is always status inactive). Both I8080A and uPD8080A work correctly with
‘1’; (2) Flag bit-5 is set ‘1’ on subtract-type operations, and Intel and NEC 8228/38.
2. Interrupt during HALT state, with the UPD8080A INTE is reset at
is reset ‘0’ on add-type operations; (3) The CY (carry) and
T2.02 of the next clock period following the sampling of I NT, as
AC (auxiliary carry) flags are now properly set for both adds opposed to the I8080A where INTE is reset at Ml ,T1.02 of the
and subtract operations; (4) The DAA (decimal adjust) opera¬ interrupt instruction fetch.
tion now works properly following either an add or a subtract 3. Instruction Execution Times: All instruction execution times are
the same except the following, which require the listed number of
(using flag bit-5); (5) THE AC FLAG IS NO LONGER
T (clock) states assuming no wait cycles.
CLEARED BY LOGICAL OPERATIONS. Additionally,
Bruce mentioned that there are also some “minor” hardware I8080A UPD8080A
differences, having to do with data on the same bus not being MOV r,r 5 4
RET 10 11
present at the same states as with the Intel chip (I wonder
DAD 10 11
what problems this might cause?). XTHL 18 17
When I heard all of this, I informed Bruce that the fact that SPHL 5 4
the AC flag is not cleared means that software written for an
4. Data on Address Bus during Ml, T4 and T5 with uPD8080A is the
Intel chip would not work on the NEC chip. For example:
same as during T1-T3. With the I8080A, the Address Bus is unde-
MVI A,9 fined during T4 and T5.
ADD A this forces the AC to be set 5. Subtraction is performed as a direct binary operation in the
XRA A this is supposed to clear AC and CY uPD8080A and the carry. Auxiliary Carry and subtract flags are
properly set to indicate the subtract operation and borrows from
DAA this should result in ‘00’ but produced ‘06’
each four bit nibble for use with the DAA instruction.
with the NEC chip!! 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
At this point Bruce agreed with me since he has written subtractions.
With uPD8080A, three flags. Carry, Auxilliary Carry and SUB,
similar code that would not function properly with the NEC are used for DAA operation, both for addition and subtraction
chip. Bruce has informed me that this incompatibility was (see Section 8). Carry and Auxiliary Carry are properly set to
not known previously. indicate borrows/carries from each four bit nibble for use with
Well, in the span of the last three days, I have uncovered an the DAA instruction. SUB flag is used to determine whether
required DAA is for addition or subtraction. BCD arithmetic
8080A “compatible” chip that is, for all purposes, as incom¬ programs written to run on I8080A will also run on uPD8080A
patible to the Intel 8080A as is the Z-80: programs can be unless the operations ORA, XRA, ORI, XRJ, INR, DCR or DAA
written that will run properly on the Intel 8080A, but will are depended on to affect the AC flag. Also see Section 7. *
run properly on the MiC 8080A, and vice-versa. 7. Flag Registers for I8080A and uPD8080A are as follows:
I am now waiting for the Intel 8080A IMSAI will be ship¬ D0 Di d2 °3 d4 d5 °6 D?
I8080A c 1 P 0 AC 0 z s
ping shortly. What really disturbs me is not the imcompatibil-
ity itself, but not being informed. I don’t believe that NEC UPD8080A c 1 P 1 AC SUB z s
should claim their chip to be “compatible”, but I abhor the
Note that if the flag byte is pushed on the stack to be used as a byte
fact that their letter describing these differences was labeled in any operation such as a compare, that the value will be different
CONFIDENTIAL and not released to the end user of their for the I8080A and the uPD8080A.
chips. 8. All flags are set the same for I8080A and uPD8080A except as
I hope that this letter may save some people untold hours noted.
A. Number of Flags:
debugging a program that doesn’t work because of the NEC I8080A: Five flags
chip. Hopefully, IMSAI will refrain from using such incom¬ Zero, Carry, Sign, Parity and Auxiliary Carry
patible chips on MFU boards, and will exchange customers’ 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.
Dr. Dobb's Journal of Computer Calisthenics 8i Orthodontia, Box E, Menlo Park, CA 94025 Nov./Dec., 1976
311
SUB flag is:
of the state following T3.
set by . . . DCR, SUB, SBB, CMP, SUI, SBI
uPD8080A: Same timing as HOLD in Read mode, i.e., HLDA
and CPI
appears from T3-01 and Address/Data Bus goes
reset by. INR, ADD, ADC, ADI, ACI and
into floating state frqm T3-02.
DAD
affected by POP PSW
B. Affect on Flags:
Except as noted, the affect on the five common flags (Z, C, S,
NEC RESPONDS
P and AC) are all the same for I8080A and uPD8080A.
I8080A: AC is affected by I NR, DCR and DAA Dear Mr. Warren: Nov. 2,1976
AC is reset after logical operations ORA, XRA, We recently received a copy of a letter sent to you by a Mr.
ANI, ORI and XRI Tenney, and feel that it is appropriate for us to respond. We
AC is not always set correctly to indicate bor¬
row from bit 4 after subtraction. (Subtract
hope that this will eliminate any concerns your readers may
is performed by two's complement and have about the use of the NEC ]j PD8080A.
only Carry is complemented to indicate All the differences between the Intel I8080A and the NEC
correct borrow.)
yPD8080A are clearly stated in our y PD8080A Family data
UPD8080A: AC is not affected by INR, DCR and DAA
AC is not affected by logical operations sheet and y COM-8 Software Manual. These documents are
AC is always set correctly to indicate borrow available through any of our distributors, representatives or
from bit 4 after subtraction. NEC Microcomputers, Inc. These documents clearly enumer¬
9. Status information for I8080A and UPD8080A is the same except
ate the additional features which lead to the improved per¬
as follows: During HALT Acknowledge, D7 (MEMR) I8080A= 1,
UPD8080A = 0; during Interrupt Acknowledge while HALT, D3 formance of the yPD8080A, both in simplified code and
(HLTA) I8080A = 1, uPA8080A = 0; and during CALL instruction faster execution.
following interrupt, DO (INTA) during M2 and M+ for I8080A = However, a user need not utilize these features in his pro¬
0 and for uPD8080A = 1.
gram. If the application program is written for the Intel
10. Pull-Up Resistors on the Data Bus: The uPD8080A does not
utilize active pull-up resistors on the Data Bus. To make inter¬ 8080A, it will run on the NEC part except for a few very
facing easier on the DATA BUS V||\| min = 3.0 volts for the limited situations. For an example, all NEC PDA-80 and
uPD8080A vs. 3.3 volts for the I8080A. With uPD8080A, DATA Intel MDS-800 programs operate properly using either part, as
BUS input leakage current is the same as any other input.
do all system programs in the IMSAI 8080 and the Altair 8800
11 .The temperature range for the 18080A is 0—70 degrees C. and for to the best of our knowledge. It is obvious from the differ¬
the uPD8080A is -10 to +70 degrees C.
ences that one can create sequences of code that do operate
12. DC characteristics are the same except as noted:
differently in several of the 8080A’s on the market today,
but most of these do not represent useful sequences of appli¬
18080A uPD8080A cation programs.
V|H 3.3 Min. 3.0 Min. As far as the CEAIMS we make as referred to in Mr. Ten¬
vOH - 3.5 Min. @ Ioh= -1-0 ma ney’s letter, we do claim as explained above that the yPD-
'DD (AV) Typ = 40 Typ = 55 8080A is “compatible”, Upward Compatible! This is an im¬
'DD (AV) Max = 70 Max = 75 proved part and we do not believe that our or IMSAI’s cus¬
'CC (AV) Typ = 60 Typ = 50 tomers should be limited to the functionability of the 8080A
'CC (AV) Max = 80 Max = 70 when an improve part is available. We are concerned that
'dl -2.0 ma Max. ±10 ua Max. some people do not understand the advantages of the yPD-
'fl -100 ua Max. - 10 ua Max. (s> Vm = 8080A. Therefore, we encourage you to print this letter for
VSS + 0.45V
your readers.
13. AC characteristics are the same except as noted. See data sheet for
details: If there is anything else we can do to help you in this
matter, please contact me.
I8080A UPD8080A Very truly yours,
tool output delay from
David F. Millet NEC Microcomputers, Inc.
01 low (SYNC.DBIN) - 160ns Max.
Technical Staff 5 Militia Dr.
tDS2 data setup time to
02 during DBIN 150 ns Min. -
Microprocessors Lexington, MA 02173
Nov./Dec., 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia. Box E, Menlo Park, CA 94025 Page 15
312
Product Review: POLY-88 by Jef Raskin
In our last Gotcha” a few manufacturers were taken to screws than an X-rated movie, and then there are wires screwed
task, and fewer still were praised for the quality of their onto the board. Dumb.
products and documentation. This time we take a brief look For some reason Poly’s tiny little case requires eight screws!
at the familiar Altair and IMSAI chassis, and a long look at A bother. The kind of thinking that went into the electronic
the very interesting Poly 88. design was absent when the case was created. It is on such
I refuse to revive the old Altair vs. IMSAI debate. As small shoals that great ships are wrecked. There are more
everybody now knows, the old Altair power supply was bolts than slots. There are 5 slots. Is that enough? Let’s see,
feeble. My Altair worked fine after I had replaced its supply one for the CPU, one for the video board (it’s a dandy), one
with a custom 40 amp at 8 volt wonder. [In an external box for a ROM board to hold something comfy, like BASIC, and,
that should never land on your foot.] I actually liked the say, a 16K RAM board. With a Pixie Verter and a keyboard
Altair case better than IMSAI’s, and am glad to see MITS you’re ready to go into any American household with a TV,
has carried the design over to its new machine. Just two plug in and program away. And you’ve a lot left over —
screws and the top slides off. If the screws are omitted, the another 16K? Voila! (or ’Cello! for that matter) we have a
case is just as strong to top loading. On the IMSAI there 32K computer with serial port, cassette interface, video
are four load bearing screws which I could never get at interface, and software aplenty, power supply and on/off
because something was always sitting alongside the computer. switch tucked away in our viola case. I must mention that
If the screws are omitted, the top sits rather low. Not good. a two-port serial interface is built into the CPU, and the RS-
Since I get letters asking: Yes, the heavy duty supply on 232 and cassette interface cards are snug against the connec¬
the IMSAI is excellent. I haven’t tested the new MITS supply, tors in the back of the case. That is a lot of computer in an
but it looks good. I don’t think they’ll make the same mistake itty-bitty base.
twice. After all, if they’re smart enough to make a computer 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
I find a serious flaw in the IMSAI front panel. Those big we get new ideas in this business, maybe the idea of the
paddle switches that make the IMSAI look sort of like a PDP- month): At one side of the chassis the backplane terminates
11 have a small space between their tips. IMS should take in a male S-l00 bus connector. On the other side of the
note, as it prevents errors, and still makes it easy to hit two chassis is a female connector. Aha. You can buy another
at once on purpose. chassis, put it alongside the one you already have, sort of
The Poly 88’s almost S-l 00 bus (hobbyist bus, Altair bus, nudge them together and guess what. Nope, you don’t get a
I could care less) has the best switches of all: there aren’t any. litter of 4040’s. You push them together and you get...
Polymorphic Systems, in Goleta (rhymes with “Lolita”) a ten-slot chassis. Actually, eleven slots ’cause you can put
California makes this very unassuming little box that does a a card into the end and let it stick out instead of yet another
lot of things right, which the bigger names (with bigger boxes chassis. This is useful and saves need for an extender board.
and price tags) are doing wrong. Not that Poly is perfect. My The power supplies are separate and not bussed together. Like
corrections to their manuals were extensive and numerous. the IMSAI this machine has a substantial power supply. They
But they listen harder. For example, when I called up IMS rate it 6 amps at 5 volts. I loaded it down with 9 amps worth
with a long list of carefully annotated errors in their manuals, of boards and a length of nichrome wire and it was still putting
they put me off, promised to call back, never did, put me off out 8.2 volts. The point is, as you expand the chassis, you
when I called again, etc. In the end, my careful documenta¬ expand the power supply as well. Each expansion chassis
tion of their manuals did them no good at all, and frustrated costs $155. Takes two or three hours to build. Polymorphic
me. Polymorphic Systems listened, sent me extra manuals so Systems forgot (so typical of manuals) to tell you that R6
that I could send them mine with corrections and the like. should be omitted on slave chassis. So I tell you.
They’re not dumb; they’ve got a proof reader working for Before I find some drawbacks (I am not in the employ of
free. It is my opinion that manufacturers should hire a proof Poly) there was an advantage to the multiple chassis that I
reader before sending manuals out, but the way that is now hadn’t suspected when I ordered the miniature monsters.
used is cheaper and only has the drawbacks of having a few When working on a board, sometimes it’s handy to have a
hundred frustrated customers out there. And, they get hun¬ program sitting around, but it disappears when you turn off
dreds of phone calls of the form, “Where does R21 go?” the power to make a change on the board. But with the
(Maybe the phone company is behind the bad manuals.) separate chassis idea, you put the CPU and memory in one
The Poly-88 system — which has replaced my Altair 8800 and box, the board under test in another. Just turn off the one
my IMSAI 8080 — has but two controls on the box. An on- chassis to remove the board, make the changes, replace and
off switch with a power-on indicator light, and a reset button turn on the chassis. Program still there, testing continues.
with a halt light. That’s all you get; that’s all you need. It Not all is peaches and cream . . . The diodes supplied
surely doesn’t look impressive. Sort of like a toaster in size with three of the four I’ve built—you know, the little ones
and shape. The Poly is by far the easiest of the S-l 00 bus for the plus and minus 16 volt supphes—were small signal
computers to build. The backplane and power supply are all diodes instead of power rectifiers. The smoke 'test lived up
on one well-designed motherboard. The only wires leading to to its name. A quick trip to Radio Shack (it was Sunday)
it are from the transformer and the front panel button via got me a handful of diodes of the right rating. 20 for $1.98
two Molex connectors. It is all very neat with almost no or something like that. The first one I tested was bad. But
point-to-point wiring. Someone was thinking when they there were 21 in the bag! The other 20 were good, so no
designed this one. To take the backplane/motherboard out, complaint there. But, dear reader, always test.
just pull the two connectors and undo six easy screws (which
The assembly instructions were terrible. There were as many
go into captive nuts on the board, nothing to get lost inside).
Have you ever tried to take out an IMSAI backplane? More many errors as the other brands had [see DDJ, Vol. 1, No. 8].
Page 16 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Nov./Dec., 1976
313
Lots. They say they’re coming out with a new manual. If switches, often useful in man-machine interacting programs.
it’s any good, I’ll probably write it up. Volume II of the - Editor]
instructions, however, is on the side of the Angels. This is the There are a few devilish “gotchas” in the Poly system. The
clearest manual on the 8080 instruction set I have ever seen. first problem showed up in trying to run MITS BASIC (duly
I leave it on the living room floor for people to pick up and purchased from MITS). .Since the monitor likes to reside in
read. It’s that good. Someday I may even get a coffee table low memory, and so does BASIC, there was a conflict. The
for it. So if you want to learn the 8080, get that manual. solution: Poly provides a jumper to cut, and one to add to
Maybe some magazine will serialize it (in good serial style: allow you, under program control, to switch back and forth
“Last month our hero got saved from the evil Dr. Halt when between the processor-boardmemory (3K ROM, ViK RAM)
an interrupt arrived in the nick of time . . .”). and other memory having the same address. In my case the
What is life like without a front panel? Sheer joy, my program that copied BASIC from PROM resided at location
friends, sheer joy. You can deposit, examine, single step, E400, so I used the following program to get BASIC up:
everything. You can do it in style, from a keyboard. When 3E 20 D3 04 C3 00 E4
you single step you see not only the address and the con¬ The seven bytes say: put 20 (hex) into the accumulator, then
tents (and in hex, not in binary [less than joyful to those send it to port 4. Sending the 20 to port 4 turns the onboard
who prefer octal]) but you also see: the accumulator, the stuff off. The next three bytes of the program jump to E400
flags, the B-C register, the D-E register, H and L, the program to get the program started. Now, of course, that little program
counter and the stack pointer. is on the PROM.
And you also see the first eight bytes of the stack, the The next problem was with the old MITS serial board.
location the PC points to, the next seven bytes thereafter, I’ve always wondered why some serial boards have a crystal-
and the eight bytes pointed to by each of the B, D and H stabilized clock of their own since they could just count down
registers. It certainly beats lights; it also beats the hex displays from the CPU’s clock signal which is on the bus. That’s what
found on a few other machines. the old serial board did — it counted down. PROBLEM! The
I hate to say this, but the Polymorphic advertisements clock rate on the Poly system is a few percent slower than
understate the advantages of their machine. Too bad for the MITS and IMSAI clock. So the old MITS serial I/O
them. It should be clear that the conventional front panel counts down to the wrong baud rate. You have to (as I did)
is a holdover from an earlier era. It’s too bad that those rewire all the counter presets. You will have to calculate the
lights and mysterious switches appeal to so many of our proper values. Since my computer wasn’t up ’til this was
computer cult. Like those famous tailfins on cars, it im¬ fixed, I was glad to have my Model-T vintage HP-35 to do
presses the neighbors, but doesn’t make the machine run the necessary calculations. The newer MITS 88-2SI0 (a
better. Of course this goes for all the ROM replacements fine board in my book) does it right and has its own crystal
for front panels. Having both a front panel and a ROM (and works like a charm in my Poly, without modification).
monitor is fine; you just have to pay for it. And another, almost unforgivable error on the Poly: it
For just under $600 you get, with the Poly system, is not quite an S-100 system. Sure, everything I tried with
the bos, power supply, video board, the monitor in ROM, it worked except for that one board. But when a manufac¬
512 words of RAM, room for 3K more of ROM, and all the turer came by my place with a prototype of their new 16K
sockets you need for the ICs. Of the S-100 bus machines, it board and plopped it into the Poly it didn’t work. A few
is the only one where the minimal system has to do real “unimportant” outputs and inputs to the CPU were left off
programming. (O’ course, you have to add a keyboard and the bus. More importantly the WAIT signal is not on the
a TV monitor — but nobody includes them for the price.) bus. This let the memory know that the computer was in the
Enough free advertising for Poly. I am not so much interested HALT state, which the memory needs to know. This is not
in selling computers for them as I am in seeing my computer the place to go into that (gotta leave something for other
cousins not wasting their time flipping switches and misread¬ articles). This particular device did not need the other signals
ing lights. Any system (as I said) with HEX display is better but some new board might. The point is this: you are either
for a human being than the same system with a BINARY on a standard or not on a standard. There is no in-between.
display, and of the S-100 systems available this week, the Polymorphic Systems’ Poly 88 is not really an S-100 compu¬
Poly will get more done per your hour than any of the others — ter. You have to ask first: does the board you wish to use
that’s building hour, programming hour, and even earning with it require separate disables (address, status, data out)?
hour. Other manufacturers, if you’ve got a better system, Does it need HLDA, INTE, WAIT? If it does, then the Poly
tell me about it. Don’t bother, unless you use the S-100 bus won’t do. The disables are on the bus, in non-standard loca¬
(so we can go to others than just you for add-ons). But, do tions, but they can only be disabled as a group (as required
tell me if you’ve got something really different like 8K for by DMA’s). One of the output signals such as WAIT can be
$50. fed through a spare buffer on the board to the bus. (For your
A disadvantage of not having the conventional front information it’s IC 8, an 8T97. Because this is DDJ I’m sure
panel (after all this, I do know one disadvantage) is that the editor will permit the gory details.) Bus lines 22,18, 23,
the CROMEMCO Bytemover program won’t work. It 26,19,28 and 27 are not on the bus. To put WAIT on the
needs switches. You can get a parallel port and eight switches bus, jumper pin 24 on the 8080 to pin 2 of IC 8, and pin 3 of
and wire it up for port address FF, but that’s a bother. So I IC 8 to bus fine 27. I don’t know if I’ve missed something else
called up CROMEMCO (if their documentation had been that should have been on the bus. I called Polymorphic Sys¬
better this would not have been necessary) to find out how tems; they tell me that are putting out a fist of differences, and
to write a 2707 EPROM without their program. The method, plan to connect the WAIT as I suggest. It’s the least they can
they told me, consists of writing each PROM in its entirety, do.
from beginning to end, a number of times. Say a hundred to Another problem with the Poly is that when a number of
three hundred times. “How many times does the Bytemover chassis are plugged into one another, the cooling, adequate
write each PROM?” I asked. “Thirty-two,” I was told. Sol with a single system, becomes inadequate. Not only does the
wrote a little program that wrote the stuff into all the PROMS system look like a toaster,... My friend, Kent Strother, made
255 times (you can guess why). It worked. I sold my PROM a cardboard enclosure with a super quiet ROTRON fan (as per
containing the Bytemover program. [Another disadvantage the IMSAI). Now even the regulators run cool. The secret:
of no switch register is that it means the user has no sense put the fan on top, sucking up, thus forced air aids natural
Nov./Dec., 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 17
314
convection. There are slots around the periphery at the bottom SWTPC KEYBOARD IMPROVEMENTS
of the case, and all other openings are sealed, forcing the air to
pass the boards and transformer. Not enouth attention has Dear Jim,
been given to air flow in the IMSAI or the ALTAIR 8800 which Here’s a plug for the latest in keyboards from SWTPC.
both have a lot of stagnant air spots even with the fan going. For those of us whose only experience with SWTPC key¬
Kent also designed a cardboard case for the keyboard that used boards is with the original ones, the bad memories may make
to He around naked. Call us the Cardboard Computer Com¬ one a bit leery about giving them another chance. The new
pany. It’s cheap, in keeping with our homebrew budget, and KBD-5 has much better contacts than before, and it uses the
if done carefully looks surprisingly good. 2376 keyboard encoder which makes it a cinch to redefine
Second, a word for the Poly video board, but first, a word keys. At $50, plus another 10 for a UART+ to make it
for the Processor Technology video board. The PT VDM is a standard serial RS-232, this is the best possible buy I can
top-notch piece of equipment. Their check-out procedure as imagine.
you put in the chips is a classic of good manual writing. The
Bob Powell 22 Bunker Hill Run
VDM board I built worked perfectly. The Poly video board
suffers from drawing current at the hairy edge of what the E. Brunswick, NJ 09916
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 A [WELL DESERVED] RAVE REVIEW FOR
way. It is a good use of that eighth bit that the ASCII code THE APPLE COMPUTER SYSTEM & FACTORY
doesn’t require. Use of the Motorola MCM6571AL character RESPONSIVENESS
generator gives me upper and lower case Roman characters
as well as the Greek alphabet and a gaggle of other special Editor, Journal of Dentistry Oct. 11, 1976
Dear Jim,
characters, including the entire official ASCII set, the square
Last July I found out about the miracles the silicon engineers were
root symbol, etc. performing. I was immediately hooked on home computing. But
I don’t know enough to write articles like this without since I had very little experience with computers, I was worried about
some help from my friends so: thanks to Doug Wyatt, my all the delays that everyone seemed to complain about when they
returned equipment for serving or clearing up the inevitable bugs.
constant colleague on microcomputers, Kent Strother for After spending the summer carefully examining the systems avail¬
the cardboard craftsmanship, Steve Calebotta for finding able, I went to the PerCom convention in Atlantic City at the end
the problem with the missing WAIT, and out editor Jim of August. There I saw an Apple computer working. Well, it was
Warren for the phrase “Hidden Gotchas” that graces these 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
articles [who plagerized it from Dave Wyland at RatheonJ.
to send me two cables and two transformers and a keyboard that
If you find any hidden, or just plain hanging out gotchas, were needed to run it! When they finally arrived (after a prompting
send them to me. I’ll check them out and include them in phone call), my Apple developed a glitch almost immediately (the
a future article. You’ll get credit in the mag, and as much only Apple that the Computer Mart of NY has ever seen with a
problem!). Fearfully anticipating a two-month delay, I sent it to
moola as I get. Zilch. [Ahhh ... but such glory and fame
Steve Jobs at Apple Computer Co. He got it back into my hands in
you get!] two weeks working perfectly!! He even explained an elementary
error in a simple program I had tried! Since it took me over a
PRAJS^FO^RASKI^^UGGES?ION^™"^™" month to even get literature from Sphere (and I wrote them a
FOR DDJ personal latter) or the Digital Group, this must be a record for a
personal computer company.
Dear Jim, Sept. 25, 1976 My Apple is terrific. Last night I loaded your 6502 floating
I just read the very informative articles by Jef Raskin point routine and can now multiply, etc. Unfortunately all the
["A Bit of Wheat Amongst the Chaff"—a critique of problems answers are complemented. I've got an 8K system with a cassette
found in a number of kits] in the September issue and think it storage unit, keyboard, (used) TV monitor, and a 4K BASIC (that's
is the greatest aid to the hobbyist planning on purchasing his com¬ not quite finished yet but does run) for less than $1 K. Moreover
puter system. I certainly feel that both Dr. Dobb’s and Jef Ras¬ Apple promises (and I'm now a believer) to replace my current
kin have done a great service for the hobbyist. Please publish more memory chips with the new 4K dynamic chips sometime next spring
articles like this one. If Jef has inputs on software by all means for about $500. The Apple was designed to be pin compatible with
let's hear them. Jef's appraisal was, I believe, very objective. the new chips and so I'll have 32K on board.
In order to make more room for articles of value I would Any company that can produce equipment like this and then match
like to see you eliminate as much as possible the references to it with their service is really great. Companies like them and magazines
new clubs and new stores which I feel are more than adequately like yours make home computing an accessible field for everyone.
covered elsewhere, i.e.. Byte, Interface, On Line, etc. If you must Yours,
how about a one-liner like On Line. [These items are used only as Raymond T. Hoobler 789 West End Ave.
"filler" items.] New York, NY 10025
You might consider using smaller type for all articles in
order to make room for your backlog of articles to be published. [Apple Computing is at 770 Welch Rd., Palo Alto, CA 94304, (415)
[We're willin'. Are there any objections to dropping from 10-point 326-4248]
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¬
PRAISE FOR SUNSHINE COMPUTER CO.
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
Dear Editor, Nov. 24, 1976
soft spot in our hearts for the topic of energy problems and
A commendation is in order for Sunshine Computer Company of
people-oriented alternative energy sources. Our only excuse for Carson, California. I bought a Sanyo cassette recorder from them
its inclusion is that it is a technology-related subject closely
on Saturday, Nov. 20. They forgot to pack in the AC cord. When I
associated with consumer advocacy.]
discovered the omission Saturday night, I made a note to call them
Also, did you really need two pages for the PCC ad?
Monday about it. Sunday night they called and apologized, and
IPCC newspaper was Dr. Dobb’s mama. Would you have us
said they'd mail it Monday. Received it Tuesday, postmarked Mon¬
ignore our ma? Anyway, it's a "product" we think is well worth day, as promised. Total time to resolve my query: minus one day.
the attention of hobbyists, and as such, we published details Sincerely,
about it.]
Jim Raehl 943 Begonia
All in all, I think Dr. Dobb’s is great, but it can be better.
Escondido, CA 92027
[We agree.]
Very truly yours, 11 Linda Rd.
Page 18 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Nov./Dec., 1976
315
Bob Van Valzah
It’s a BASIC? 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:
It’s CASUAL!
• 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 NOTES ON MY ASSEMBLER
WRITE (PEEK and POKE), machine language
CALL. MY OPCODE INTEL STANDARD
• 16 bit everything — line numbers, expression values. LB H MOV B,H
• Arrays SP <> HL XTHL
• String I/O DE <> HL XCHG
• One tape works on any system — POKE’S itself for SP <HL SPHL
most popular I/O boards (like MITS BASIC). LXI HLLABL LXI H,LABL
• Deletion of unwanted features at initialization time. JFZ JNZ
Note: The source tape alone is 2% inches think (fan fold), JFS IP
somewhat greater than 75000 characters at this time. JTS JM
I am currently at version .164. Version .09 was JTZ JZ
distributed to local hobbyists three weeks ago. That version LCI 010 MVI C,10
was 200 bytes longer and had some small bugs. ND E ANA E
While I don’t have the time or the means for mass OR A ORA A
distribution of CASUAL, binary paper tapes and documenta¬ STHL SHLD
tion are available from: LDHL LHLD
1. CACHE Software Library, Lloyd Smith, 530 Pierce Ave., LAI ”G MVI A,’G’
Dyer, IN 46311 CAL CALL
2. Chicago Computer Store, Lou Van Eperen, 517 Talcott XR A XRA A
Rd., Park Ridge, IL 60068 SUE SUB E
3. Itty Bitty Machine Company, 1316 Chicago Ave., Evan¬ SB D sue D
ston IL 60201 DSD DW
4. American Microprocessor, Ed Cooper, at the Chicago DSS DB
Land Airport, 20 N. Milwaukee Ave., Prairie View, 177 177Q
IL 60069. 0100 100
Converting CASUAL to other CPU’s: LBUL=072 LBUL EQU '
If you’re using a machine without a hardware stack, I’d NDI 300 ANI 300Q
say start from ground zero. CASUAL makes extensive use of CP M CMP M
the stack and almost no use of memory direct instructions. * 200 ORG 200Q
By putting CASUAL’S stack on my VDM, I was able to count INA INR A
48 bytes on the stack while LIFE was running. Perhaps an
8008 with hardware stack mod wouldn’t be too bad, but it NUMBERS
would take a lot more than 2K. All numbers without leading zeros are taken as octal, all
Memory Info: If all features are retained at initializa¬ with leading zeroes are taken as decimal. preceding a
tion, 403 bytes are left in a 2K system. If all features are number causes it to be taken as hex.
deleted, 610 bytes are left (slightly over !4K). The code for
the interpreter, I/O drivers and all buffers except the REGISTER SYMBOLS
CASUAL Program buffer takes 1.61K. If all functions are Eight bit registers are referenced with the letters A, B, C,
deleted, it takes 1.40K. The first IK can be ROM or protected- D, H, and L. Register pairs are designated by PSW, BC, DE,
after initialization. HL, and SP.
The mnemonics for the assembler have been significantly
modified from the “Intel Standard” mnemonics. OPERATORS
Loading Time: It takes about 5 minutes to load and — Subtraction or unary minus
initialize itself at 10 CPS. Using a Tarbell Cassette Interface + Addition or unary plus
at maximum baud rate, it should take about 4 seconds.
Dr. Dobb’s is superb!!! Keep up the fine work! Swaps the first and second bytes of a 16 bit quantity
Bob Van Valzah (312) 852-0472 (Home) Evaluates to the ASCII equivalent of the character fol¬
1140 Hickory Trl. (312) 971-2010 Ext. 231 (Work) lowing it, with the eighth bit low
Downers Grove, IL 60519 . Evaluates to the address of the first byte of the instruc¬
P.S. I’m 18 years old and entering my second year working tion about to be assembled
for an EE degree.
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 THE FOLLOWING SECTION WILL COVER ALL THE STATEMENTS
WHICH ARE LEGAL IN CASUAL. AS EACH STATEMENT IS PRESENTED,
16 BIT LINE NUMBERS, 1 - 65534 EXAMPLES WILL BE GIVEN OF ITS USE. IF POSSIBLE, I RECOMMEND
LINE-NUMBERED "BASIC-LIKE" TENT EDITOR TRYING THESE EXAMPLES AS THEY ARE ENCOUNTERED.
CONTROL C (*C) ABORTS EXECUTION AND LISTING CASUAL HAS BASICALLY ONLY THREE (3) TYPES OF STATE¬
3 BYTE LINE OVERHEAD MENTS: PRINT, ASSIGNMENT, AND STRING INPUT. THIS IS ONE OF
IMMEDIATE EXECUTION MODE THE REASONS FOR ITS INHERENT SIMPLICITY. VARIATIONS OF THESE
MULTIPLE STATEMENTS PER LINE WITH COLON (":") THREE STATEMENT TYPES PROVIDE A WIDE RANGE OF FUNCTIONS.
PRINTS LITERAL STRINGS, EXPRESSIONS, OR CHRf FUNCTION
CRLF SUPPRESSION AVAILABLE THE PRINT STATEMENT
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 THE FUNCTION OF THE PRINT STATEMENT IS TO SEND DATA
SINGLE AND DOUBLE BYTE ARRAYS - SINGLE DIMENSIONAL TO THE USER'S TERMINAL. SINCE THE WORD "PRINT" IS MORE
SELECTABLE ARRAY BASE ADDRESSES FOR MULTIPLE ARRAYS DIFFICULT TO RECOGNIZE THAN A SINGLE CHARACTER, A
SIMPLE VARIABLES A - Z, 26 OF THEM QUESTION MARK <"?") IS USED TO SPECIFY THE PRINT FUNCTION.
USER DEFINABLE FUNCTION, LIKE DEF FNAOO TRY THIS:
RUB-OUT TAKES BACK LAST CHARACTER TYPED
CONTROL U i + U) ABORTS LINE BEING TYPED 710-4 CCR)
72-CHARACTER LINE INPUT BUFFER
FOUR (4) RELATIONAL OPERATORS, <, = , >, # (NOT EQUAL) CASUAL WILL IMMEDIATELY PRINT:
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 AS YOU CAN SEE, CASUAL RECOGNIZED THE "7" AS BEING
OPERATOR TO PROVIDE REMAINDER AFTER LAST DIVISION A PRINT STATEMENT, EVALUATED THE FORMULA FOLLOWING
OPERATOR TO PROVIDE RESULT OF LAST EXPRESSION IT, AND TYPED OUT ITS VALUE (IN THIS CASE 6).
MACHINE-LANGUAGE CALL FUNCTION OF COURSE, CASUAL CAN DO MORE THAN SUBTRACT.
SINGLE-CHARACTER KEYBOARD INPUT FUNCTION TRY THIS:
RUN, AND RUN LINE NUMBER COMMANDS
LIST, AND LIST LINE NUMBER COMMANDS 710+4;10+4;10/4 (" + " MEANS MULTIPLY, "/" MEANS DIVIDE)
NEW COMMAND CLEARS PROGRAM STORAGE AREA
NOTHING CLEARS VARIABLE VALUES, NOTHING !! CASUAL WILL TYPE:
JUMP TO OPERATING SYSTEM PROVIDED
INITIALIZATION DIALOGUE A LA MITS 14 40 2
COMPLETE WITH BOOTSTRAP AND BINARY LOADERS (AUTO TRANSFER)
GOOD ERROR MESSAGES
RUNS IN 2K COMPLETE, > 400 BYTES LEFT IN A 2K SYSTEM NOTE THAT A SEMICOLON <"; ") IS USED TO
CASUAL IS SLOW SEPARATE THE FORMULAS.
CASUAL DOCUMENTATION 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 <"-").
CASUAL IS AN INTERPRETER WRITTEN IN 8080 ASSEMBLER. LITERAL STRINGS MAY BE PRINTED BY ENCLOSING THEM
CASUAL IS ALSO THE NAME OF THE SYNTAX WHICH IS ACCEPTED BY IN SLASHES. TRY THIS:
THE INTERPRETER.
ONCE CASUAL HAS BEEN LOADED AND THE INITIALIZATION 7/THIS IS A CASUAL LITERAL STRING/
DIALOGUE COMPLETED, IT WILL TYPE OUT "CASUAL V .XX",
WHERE XX IS THE VERSION NUMBER. THEN CASUAL WILL ENTER THE CASUAL WILL TYPE:
COMMAND INPUT MODE. THIS IS INDICATED BY THE PRINTING OF A
PERIOD (".") AS A PROMPT CHARACTER. CASUAL IS NOW THIS IS A CASUAL LITERAL STRING
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 A COMMA IN A PRINT STATEMENT CAUSES A SINGLE
U C+U) KEY. WHEN THE USER IS DONE WITH A LINE, HE STRIKES BYTE TAB CHARACTER TO BE SENT (011 OCTAL). A COMMA OR
THE CARRIAGE RETURN KEY, TELLING CASUAL TO PROCESS THE LINE SEMICOLON ON THE END OF A STATEMENT WILL SUPPRESS THE CRLF
JUST TYPED. DURING LINE INPUT, ALL OTHER CONTROL AT THE END OF STATEMENT. SEE APPENDIX G FOR MORE INFORMATION.
CHARACTERS WILL BE IGNORED, EXCEPT CONTROL G C + G) (BELL). THE ASSIGNMENT STATEMENT
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 NOTE: THIS SECTION IS DIVIDED INTO TWO PARTS: THE
FOR THE FIRST NON-BLANK CHARACTER. IF THIS CHARACTER IS A MEANING OF CHARACTERS WHEN THEY APPEAR ON THE LEFT OF
NUMBER, CASUAL WILL SAVE THIS LINE IN THE CASUAL PROGRAM BUFFER AN ASSIGNMENT, AND THE MEANING ON THE RIGHT. THEY DON'T
IF IT IS NON-NUMERIC, CASUAL WILL ACCEPT THE LINE AS AN ALWAYS MEAN THE SAME THING.
IMMEDIATE-MODE COMMAND, AND ATTEMPT TO EXECUTE IT.
LEFT SIDE
EDITING
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 "CX] SAME AS 'LX] EXCEPT THIS IS THE DOUBLE BYTE ARRAY.
THE VALUE OF X IS PRINTED. "#=100" CAUSES CASUAL TO
BRANCH TO LINE 100 AND SAVE THE NEXT LINE NUMBER * TAKES ON THE VALUE OF THE LAST EXPRESSION EVALUATED.
TO BE EXECUTED <50). UHEN THE SUBROUTINE IS THIS INCLUDES EXPRESSIONS IN SUBSCRIPTS AND IN PAREN¬
FINISHED, IT RETURNS BY IN THIS CASE HAS THESIS. <2+3)*<- IS EQUAL TO 25.
A VALUE OF 50 SO LINE 50 IS EXECUTED. HERE, ANOTHER
VALUE IS PRINTED, AND "$=100" CAUSES CASUAL TO 0 THE USER FUNCTION. TAKES ON THE VALUE PASSED TO IT
SAVE THE NUMBER OF THE NEXT LINE (70). THIS TIME BY THE MACHINE-LANGUAGE SUBROUTINE IN DE REGISTER.
WHEN LINE 110 IS EXECUTED, "*" WILL BE EQUAL INITIALLY, IT IS SET UP TO RETURN THE NUMERIC VALUE
TO 70 AND CASUAL WILL CONTINUE EXECUTION AT LINE OF THE CHARACTER FOLLOWING THE "0".
70. NOTE THAT A ROUTINE CALLED IN THIS MANNER ALWAYS SEE APPENDIX F.
RETURNS TO THE LINE FOLLOWING THE LINE CONTAINING
THE CALL TO IT. \ SINGLE CHARACTER INPUT FROM THE KEYBOARD. EXECUTION
SETS THE MEMORY ADDRESS WHERE "PEEKING" AND "POKING" WILL STOP UNTIL A CHARACTER IS INPUT. NO PROMPT IS
IS TO BE DONE. THE ADDRESS WILL REMAIN SET UNTIL PRINTED. RETURNS A VALUE 0 TO 127. PARITY MASKED.
ANOTHER "!" IS FOUND ON THE LEFT SIDE OF AN
ASSIGNMENT STATEMENT. UHEN LOADED, CASUAL A - Z TAKES ON THE VALUE OF THE VARIABLE A THRU Z.
SETS "!=0", THEREFORE YOU MUST SET THIS ADDRESS
BEFORE POKING, OR YOU MAY POKE CASUAL TO DEATH. 0-9 DIGITS OF NUMBERS INTERPRETED TO BE DECIMAL.
SEE "&" AND "!" BELOW. EXPRESSIONS
LOADING PROCEDURE
HOLDS THE VALUE OF THE LINE CURRENTLY BEING
EXECUTED. IF IT APPEARS IN LINE 130, IT HAS THE
THE PURPOSE OF A BOOTSTRAP LOADER IS TO READ
VALUE 130. IF IT APPEARS IN A DIRECT STATEMENT,
A LARGER BINARY LOADER INTO MEMORY WHICH IN TURN LOADS
IT HAS THE VALUE -1.
CASUAL. THE BOOTSTRAP PROGRAM MAY
BE LOADED FROM THE FRONT PANEL SWITCHES OR BY USING THE
CAUSES PROGRAM EXECUTION TO STOP FOR USER INPUT.
SYSTEM MONITOR ROM. IT IS 21 BYTES LONG AND GOES
A QUESTION MARK AND SPACE ARE PRINTED ON THE
IN VERY QUICKLY. THE BOOTSTRAP LOADER IS SO NAMED
TERMINAL AS A PROMPT. THE USER INPUTS A LINE
BECAUSE IT IS FREQUENTLY USED TO BRING THE SYSTEM
WITH A SINGLE EXPRESSION ON IT. THE VALUE
UP AFTER A POWER-OFF CONDITION. THUS, IT IS PULLING THE
OF THIS EXPRESSION IS GIVEN TO THE LEFT SIDE OF
SYSTEM UP BY ITS BOOTSTRAP.
THE ASSIGNMENT. "X=?" CAUSES CASUAL TO STOP
THE BOOTSTRAP PRESENTED HERE IS IN A NO-CHECKSUM
AND ACCEPT INPUT, WHICH IS THEN ASSIGNED TO THE
FORMAT, BUT IT DOES ALLOW LEADER. IT SHOULD WORK EQUALLY
VARIABLE X. DO HOT TYPE A QUESTION MARK IN RESPONSE
WELL FOR PAPER TAPE OR CASETTE INPUT. THIS BOOTSTRAP
TO THE INPUT PROMPT!! IF THE USER TYPES A RETURN
WILL LOAD A BINARY LOADER AND THEN TRANSFER CONTROL TO
INSTEAD OF AN EXPRESSION, CASUAL RETURNS TO
THE BINARY LOADER AUTOMATICALLY. THE BINARY LOADER LOADS
COMMAND LEVEL.
A CHECKSUMMED-FORMAT TAPE AND ALSO TRANSFERS AUTOMATICALLY
WHEN DONE LOADING. THERE ARE TWO POSSIBLE ERRORS
SEE DISCUSSION FOR LEFT SIDE.
WITH THE BINARY LOADER: CHECKSUM ERROR AND MEMORY
ERROR. THE FIRST OCCURS WHEN THE CHECKSUM READ FROM THE
REMAINDER AFTER LAST DIVISION. IF 20/6 ■ THE LAST
TAPE DOES NOT MATCH THAT CALCULATED DURING LOADING
DIVISION PERFORMED, V. WOULD BE EQUAL TO _
BECAUSE A BYTE WAS READ FROM TAPE INCORRECTLY.
h MEMORY ERROR OCCURS WHEN DATA READ FROM TAPE IS
PEEK FUNCTION. TAKES ON THE VALUE OF THE CONTENTS
LOADED INTO MEMORY AND CAN'T BE READ BACK. THIS CAN
OF THE - MEMORY LOCATION ADDRESSED BY THE LAST ASSIGNMENT
BE CAUSED BY BAD MEMORY, PROTECTED MEMORY OR NON-EXISTENT
TO "!". SEE "!" FOR LEFT SIDE. RETURNS A VALUE
MEMORY. WHEN EITHER ERROR OCCURS, THE LOADER STOPS
0 TO 255.
READING TAPE AND ENTERS AN INFINITE LOOP. AN ASCII
CHARACTER IS PUT OUT OH PORTS 1, 10, 21, AND 23 (OCTAL):
INP FUNCTION. TAKES ON THE VALUE OF THE DATA AT THE
AN "M" FOR MEMORY ERROR, A "C" FOR CHECKSUM ERROR.
INPUT PORT WHOSE NUMBER WAS LAST SET WITH "0=". SEE
THIS CHARACTER IS ALSO STORED IN THE HIGHEST LOCATION
"0" FOR LEFT SIDE. RETURNS A VALUE 0 TO 255.
OF THE FACE WHERE THE BINARY LOADER RESIDES < 007 377).
AFTER A MEMORY ERROR, THE HL REGISTER WILL CONTAIN THE
RETURNS THE VALUE OF THE X'TH ELEMENT OF THE SINGLE
ADDRESS OF THE BAD MEMORY LOCATION.
BYTE ARRAY. X MAY BE AN EXPRESSION. THE BRACKETS
ARE OPTIONAL IF AND ONLY IF THEY ARE NOT NEEDED TO
TO READ IN A TAPE:
SEPARATE THE SUBSCRIPT FROM THE REST OF THE
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 THIS IS THE DIALOG WHICH WILL OCCUR:
LIGHTS WILL DISPLAY 007 277 WHILE NORMAL LOADING IS GOING
ON. IF AH ERROR OCCURS, 007 237 WILL BE DISPLAYED. IF THE WANT SAVE/TAPE? ANSWER "Y" TO RETAIN SAVE AND
TRANSFER ADDRESS WAS HOT READ PROPERLY, 007 257 WILL BE TAPE COMMANDS. IF YOU ANSWER
DISPALYED. IF EITHER OF THE LAST TWO CONDITIONS OCCUR, "N", ASKS NEXT QUESTION.
GO BACK TO STEP 1 AND RELOAD.
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
014 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
A. CONTROL LOGIC LOW SPEED READER IN BOTH CASES, "XXX" IS THE ERROR NUMBER. "LL?LL" IS
B. CONTROL LOGIC HIGH SPEED READER THE STATEMENT IN WHICH THE ERROR OCCURRED. A QUESTION
C. MITS SIOA, B, C BUT NOT REV. 0 MARK IS INSERTED AT THE POINT OF THE ERROR SOMETIMES. THE
D. MITS REV. 0 WITH UPDATE, USE C WITHOUT UPDATE "YYYYY" WILL BE THE LINE NUMBER WHERE THE ERROR OCCURRED
E. MITS ACR (AUDIO CASSETTE) FOR THE INDIRECT STATEMENT.
F. MITS 83-PIO VER. 3.2 AND LATER
G. MITS 2SI0 VER. 3.2 AND LATER THE FOLLOWING ARE THE KNOWN ERROR NUMBERS AND THEIR
H. MITS 4PI0 MEANINGS:
NOTE: THE BINARY LOADER POKES ITSELF TO USE THE SAME 98 SYNTAX ERROR. MISSING PARENTHESIS, ILLEGAL
DEVICE AS THE BOOTSTRAP; THEREFORE, YOU MUST USE A BOOT¬ CHARACTER IN A STATEMENT, OR UNRECOGNIZABLE
STRAP OF THIS FORM, OR REWRITE THE BINARY LOADER. STATEMENT TYPE.
TO MAKE YOUR OWN BOOTSTRAP-. PUT YOUR STATUS PORT
NUMBER INTO LOC. 007. PUT A MASK WHICH WILL LEAVE THE READER 291 ILLEGAL CHARACTER TERMINATING A STATEMENT. FOR
READY BIT INTO LOC. 011. IF READY IS ACTIVE HI: PUT 310 INTO EXAMPLE: X=3) GIVES ERROR 291.
LOG. 012. IF READY IS ACTIVE LO: PUT 300 INTO LOC. 012.
PUT THE INPUT DATA PORT NUMBER INTO LOC. 014. LEAVE ALL OTHER 346 MISSING CLOSING SLASH IN A LITERAL STRING.
LOCATIONS THE SAME AS LOADER A.
APPENDIX B 410 UNDEFINED STATEMENT. AN ATTEMPT WAS MADE TO BRANCH
TO A LINE NUMBER WHICH DOES NOT EXIST. THIS
INITIALIZATION DIALOGUE ERROR MAY OCCUR IN THE RUN XXXXX COMMAND, WHERE XXXXX
DOES NOT EXIST.
AFTER CASUAL HAS BEEN LOADED (PER INSTRUCTIONS IN
APPENDIX A) AND ANY I/O PATCHES HAVE BEEN MADE, IT WILL ASK: 516 OUT OF MEMORY. PROGRAM TOO LARGE OR TOO
COMPLICATED AN EXPRESSION OR A COMBINATION OF BOTH.
MEM SIZ? SEE APPENDIX D.
IF YOU TYPE A CARRIAGE RETURN, CASUAL WILL USE ALL THE 761 DIVISION BY ZERO.
CONTIGUOUS MEMORY UPWARDS FROM ZERO THAT IT CAN FIND.
CASUAL WILL STOP SEARCHING WHEN IT FINDS ONE BYTE OF ROM OR 801 MISSING EXPRESSION. A STATEMENT TERMINATOR WAS
NON-EXISTENT MEMORY, IE. MEMORY WHICH WILL HOT ACCEPT AND SUC¬ FOUND WHERE AH EXPRESSION WAS EXPECTED.
CESSFULLY READ BACK A TEST BYTE. THIS IS A NON-DESTRUCTIVE
TEST SO I/O PATCHES AND SUCH WON'T BE DESTROYED APPENDIX D
Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Nov./Dec., 1976
22
1) USE MULTIPLE STATEMENTS PER LINE. THERE IS 10 *xC/100*64-KC-C/100*100)/10*8+C-C/10*10
A SMALL AMOUNT OF OVERHEAD <3 BYTES) ASSOCIATED WITH 20 C = 377: ?* PRINTS 255
EACH LINE IN THE CASUAL PROGRAM. TWO OF THE BYTES CONTAIN
THE LINE NUMBER IN BINARY. THIS MEANS THAT NO MATTER DECIMAL TO OCTAL: THIS FUNCTION ACCEPTS A DECIMAL NUMBER
HOW MANY DIGITS YOU HAVE IN YOUR LINE NUMBER, IT TAKES THE <0 - 255) IN THE VARIABLE D, AND RETURNS AN OCTAL REPRES¬
SAME AMOUNT OF SPACE. PUTTING AS MANY STATEMENTS AS POS¬ ENTATION OF IT AS A DECIMAL NUMBER 0 - 377.
SIBLE ON A LINE UILL REDUCE THE NUMBER OF BYTES USED BY 30 + = D/64+100 + (D-D/64*64)/'8*10 + D-D/8 + 8
YOUR PROGRAM.
40 D=255: ?+ GIVES 377
OCTAL TO DECIMAL. THIS FUNCTION ACCEPTS A THREE NOTE: SOME TERMINALS PRINT CODE 95 AS A BACK AND
SOME PRINT AN UNDERLINE.
DIGIT OCTAL NUMBER IN DECIMAL PRINT FORMAT IN THE VARIABLE C.
Nov./Dec., 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia. Box E, Menlo Park, CA 94025 Page
CONTROL FUNCTIONS
Dear Jim, Oct. 16, 1976
I am still attempting to locate more information on a Chicago
LINE FEED = 10 TAB = 11 FORM FEED = 12 computer-fest.
CARRIAGE RETURN = 13 BELL = 7
Scott Meaden (a local CASUAL user) has just written a neat
THESE CODES ARE USED WITH THE ">" FUNCTION OF THE "?"
game in CASUAL. It's called "Zapp the Moonman". It runs with
STATEMENT. ">" FOLLOWED BY AN EXPRESSION RETURNS A ONE a VDM by "poking" the screen, a moving target (a moonman) moves
CHARACTER STRING WHICH CONTAINS THE ASCII EQUIVALENT back and forth across the top of the screen. You shoot lightning
OF THE EXPRESSION. bolts at him from your gun at the bottom. I am now twisting his
APPENDIX Z
arm to finalize it and send you a copy.
Sincerely,
THANKS TO: Bob Van Valzah 1140 Hickory Trl
(312) 852-0472 Downers Grove, IL 60515
THE FOLLOWING PEOPLE FOR DEBUGGING EARLY VERSIONS:
(312) 971-2010 x231
BILL SAINDOH, AL BAKER, MR. ZIEGLER, AND SEVERAL OTHER
CACHE MEMBERS.
Page 24 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia. Box E, Menlo Park, CA 94025 Nov./Dec., 1976
/'ABBREVIATIONS USED IN COMMENTS: 025 303 100 000 JMP NXTD /CONTINUED AT NXTD
/
/-> INTO /RESTART 3 IS THE EXPRESSION EVALUATOR. THE VALUE IS
/ABS( ) ABSOLUTE VALUE OF ( > /RETURNED IN THE DE REG. SEE CONTINUATION FOR MORE INFO.
/'ADR ADDRESS
/ARG ARGUMENT 030 000 *30
/BUF BUFFER 030 313 107 002 CAL EXPA /GET THE VALUE OF EXPR ->
/BOTX BEGINNING OF TEXT 033 353 DEOHL /RESULT -> HL, TXA -> DE
/CR CARRIAGE RETURN 034 303 073 000 JMP EXP1 /CONTINUED AT EXP1
/CRLF CARRIAGE RETURN, LINE FEED
/CHR CHARACTER /RESTART 4 IS THE DEVO (DEVICE OUTPUT) ROUTINE. THE CHR
/'CMPR COMPARE /IN THE A REG IS SENT TO THE OUTPUT DEVICE. DOESN'T
/DECR DECREMENT /MUNCH ANY REGS OR FLAGS. STACK USAGE, 4 BYTES.
•''EOF END OF PROGRAM
/EXPR EXPRESSION 040 000 *40
/-EOS END OF STATEMENT, OR END OF STRING 040 363 PSHX PSU /SAVE A AND FLAGS
/EOTX END OF TEXT 041 333 001 DEVQ, INP 1 /GET READY STATUS -> A
/ EOB END OF BUFFER 043 346 002 TORM, NDI 2 /MASK TO THE BIT WE WANT
/EOL END OF LINE 045 303 306 005 JMP DEVP /CONTINUED AT DEVP
/FC FALSE CARRY
/FUN FUNCTION /'RESTART 5 IS THE MESSAGE PRINTER. IT SENDS CHRS
/FZ FALSE ZERO /FROM MEMORY IMMEDIATLY FOLLOWING THE CALL TO IT UNTIL ONE
/1NIT INITIALIZE /WITH BIT 7 HI COMES ALONG. THE RETURN ADDRESS IS
/INFO INFORMATION /MODIFIED. STACK USAGE, 6 BYTES.
/I NCR INCREMENT
/INST INSTRUCTION 050 800 *50
/INP INPUT 000 050 343 MSG, SPOHL /PRINT ADR -> HL
/LANG LANGUAGE 000 051 176 MSG1, LA M /FETCH A CHR
/LF LINE FEED 000 052 347 DEVO /SEND IT
/LINE # LINE NUMBER 000 053 043 INX HL /BUMP TXh AND RETURN ADDRESS
/LL LINE LENGTH 000 054 267 OR A /BIT 7 HI YET ?
/NEOTX NEW END OF TEXT 000 055 303 132 I JMP MSG2 /CONTINUED AT MSG2
/OEOTX OLD END OF TEXT
/OP OPERATOR /'RESTART 6 IS A 16 BIT UNSIGNED COMPARE (CMPR). FLAGS ARE
/OS OPERATING SYSTEM /'SET LIKE HL - DE. STACK USAGE: 2 BYTES.
/PS PARTIAL SUM
/PGM PROGRAM 060 080
/QUO QUOTIENT 000 060 174
/RETADR RETURN ADDRESS 000 061 222
/RELOP RELATIONAL OPPERATOR <<,>,=,#) 000 062 300
/REG REGISTER 000 063 175
/ROT ROUTINE 000 064 223
/STK STACK 000 P65 311
/STMT STATEMENT 000 066 377 004 DSD SPRS /ADR OF ADR OF ADR OF STACK RESET
/SONL START OF NEXT LINE
/SO >L START OF GREATER THAN LINE /RESTART 7 IS OPEN FOR INTERRUPT USE.
/SO<L START OF LESS THAN LINE /A RETURN IS PUT THERE SO INTERRUPTS WILL BE IGNORED TILL
/SOL START OF LINE /IT IS PATCHED OUT. THREE BYTES ARE LEFT FOR A JUMP
/SUB SUBTRACT /'TO AN INTERRUPT SERVICE ROUTINE.
/SOS START OF STATEMENT
/SR SUBROUTINE *70
/SIG DIG SIGNIFICANT DIGIT 000 070 311 RET
/TXA TEXT ADDRESS POINTER
/TST TEST
/TZ TRUE ZERO
/VAL VALUE 000 073 042 001 STHL LRES /SAVE RESULT
/VAR VARIABLE 000 076 353 DEOHL /RESTORE TXA
/VARNAM VARIABLE NAME 000 077 311 RET
/
000 100 376 040 CPI " /IGNORE BLANKS
000 102 312 020 1 JTZ NXTC
000 105 376 060 CPI “0 /<0?
000 107 077 CMC
000 110 074 INA /SET FLAG WTIHOUT AFFECTING CARRY
/ CHICAGO AREA SMALL USERS ALGORITHMIC LANGUAGE 000 111 075 DCA
/ 000 112 311 RET
/ WRITTEN BY-. ROBERT A. VAN VALZAH 000 113 302 124 i JFZ NGOT /NO MATCH
/ 1140 HICKORY TRAIL 000 116 043 INX HL /MATCH - IGONRE IFNOT ADR
/ DOWNERS GROVE, IL. 000 117 043 INX HL
* 60515 000 120 343 SPOHL /RESTORE TXA
000 121 303 020 i JMP NXTC /FOUND IT, INCR TXA AND SET FLAGS
H (312) 852-0472 000 124 176 LA M /LOW ORDER IFNOT ADR -> A
W (312) 971-2910 X 227 000 125 043 INX HL
000 126 146 LH M /IFNOT ADR ON STK, RESTORE TXA
303 154 006 JMP INIT /WILL BE POKED TO JMP ENTR 000 127 157 LL A
007 005 DSD USRL /ADR OF ADR OF ADR OF USERS ML ROT 000 130 343 SPOHL
272 005 DSD SUBS /ADR OF ROT USED TO GET USR FUN ARG 000 131 311 RET
/RESTART SUBROUTINES. 0 IS SYSTEM RE-ENTRY. 7 IS OPEN. 132 362 051 000 MSG2, JFS MSG1 /BIT 7 WAS LOU, PRINT MORE
/1-6 ARE USED. 135 343 SPOHL /WAS HIGH, TIME TO RETURN
136 311 RET
/THE EQUIVALENCES BELOW SUBVERT MY ASSEMBLER INTO ASSEMBLING
/SINGLE BYTE CALL INSTRUCTIONS (RESTARTS) WHENEVER THEY
/APPEAR ON A LINE.
/ /ERRO IS THE ERROR MESSAGE PRINTER. IT MUST ALLWAYS BE
TST=@3172 /CALLED, THE RETURN ADDRESS IS USED AS THE ERROR NUMBER.
FETCH=RST @200
000 030 IFNOT=02 137 315 000 SNER, CAL ERRO /SYNTAX ERROR TO BE JUMPED TO
367 CMPR=RST @600 142 357 ERRO, MSGP /PRINT "ERROR"
EXPR=RST @300 143 015 DSS 15, 12, "E, R, “R, "0, "R+200
DEVO=RST @400 144 012
MSGP=RST @500 145 105
/ 146 122
/RESTART 1 IS THE TST FUNCTION. IN SOURCE CODE IT MUST 147 122
/BE FOLLOWED BY AN IFNOT PSEUDO - OP. IT APPEARS LIKE THIS: 150 117
/ 151 322
/ TST “+ 152 343 SPOHL /PRINT ERROR ADDRESS
/ IFNOT TRY- /CHR AT HL IS NOT "+H, JUMP TO TRY- 153 315 064 004 CAL HLPT
/ /FALLS THROUGH TO HERE IF CHR AT HL IS " + “ 156 315 052 004 CAL INPT /FRINT LINE HUMBER OF ERROR
161 052 011 005 LDHL SSTM /START OF LAST STATEMENT ->
/'THE CHR FOLLOWING THE RESTART INSTRUCTION IS FETCHED AND 164 053 DCX HL
/COMPARED TO THE CHR POINTED TO BY HL. IF THE 165 321 POPX DE /ERROR TXA -> DE
/TEST IS TRUE, THE IFNOT ADDRESS IS IGNORED AND TST RETURNS. 166 367 CMPR /AT BAD SPOT YET?
/ALSO HL IS BUMPED AND IT FALLS THROUGH TO NXTC TO SET FLAGS 000 167 302 174 JFZ ERRQ /NOPE - PRINT A CHR
/'IF THE TEST IS FALSE, THE RETURN ADDRESS ON THE STACK 000 172 357 MSGP /YUP - INSERT A "?"
/IS IGNORED AND THE IFNOT ADDRESS IS RETURNED TO, 000 277 DSS "?+200
/WITHOUT BUMPING HL. 174 327 FETCH /END OF STMT?
/STACK USAGE, 2 BYTES. MUNCHES A «, FLAGS. 175 312 204 JTZ ENTR /YUP - BACK TO COMMAND MODE
200 DEVO /NOPE - PRINT ONE CHR AND
010 000 *10 201 J03 166 000 JMP ERRP /KEEP TRYING
000 010 176 /FETCH TEST CHR
00© 011 343 /TXA ON STK, REFERENCE ADR /MAIN INTERPRETER ENTRY AND RE-ENTRY POINT. ENTR SENDS CRLF
000 012 276 /COMPARE WITH REFERENCE /AND ENTERS LINE INPUT MODE. NOCR DOES SAME, WITHOUT CRLF.
080 013 043 INX HL /'MOVE RETADR /NUMBERED LINES ARE EDITED INTO TEXT BUFFER.
000 014 303 113 JMP TST1 /CONTINUES AT TST1 /UN-NUMBERED LINES ARE PASSED TO STMT FOR EXECUTION.
/RESTART 2 IS THE FETCH THE NEXT CHR ROUTINE. HL IS BUMPED 000 204 315 154 005 ENTR, CAL CRLF
/BEFORE THE FETCH. SPACES ARE IGNORED. ON RETURN, FC 000 207 315 024 004 NOCR, CAL RSSP /RESET 8080 STACK
/'MEANS NON-NUMERIC (NOT 0 - 9), TZ IF A STATEMENT TERMINATOR 000 212 357 MSGP /PRINT FROMPT PERIOD
/(COLON OR END OF LINE NULL). STACK USAGE: 2 BYTES. 000 213 256 DSS ".+200
000 214 041 377 377 LXI HL '377 377 /SET IMMEDIATE MODE FLAG
020 000 000 217 042 262 004 STHL CURL
003 020 043 /BUMF TXA TO NEXT CHR 000 222 315 016 0Q2 CAL GETL /FETCH AN INPUT LINE
003 021 176 /FETCH IT 000 225 327 FETCH /BLANK LINE?
000 022 376 072 CPI /IS IT 0 - 3 060 226 312 207 000 JTZ NOCR /YUP - IGNORE
000 024 320 RFC />9 CARRY FALSE 060 231 322 055 081 JFC STMU /NOT NUMERIC - EXECUTE IT
Nov./Dec., 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 25
322
/STMT IS THE STATEMENT EXECUTOR ENTER IT WITH THE TXA
/START OF LINE TEXT EDITOP /OF THE STRING TO BE EXECUTED -1 IN HL KEEPS GOING TILL:
/IT FINDS LINE # 0, CONTROL C <+0 ABORT, OR GOTO
/TEXT BUFFER FORMAT: /-I <MINUS ONE). IT PUSHES THE ADDRESS OF RTRN
/ /BEFORE LEAVING, SO UHEN THE STMT HANDLER RETURNS, IT SHOUS
/ 000 /UP AT RTRN. AT RTRN, TXA SHOULD POINT TO COLON <=> OR
/BOTX, LINE 1 /END OF LINE NULL.
/ LINE 2
/ LINE 3 001 026 313 160 005 RTRN, CAL ABRT /TEST FOR CONTROL C OC)
/ 000 001 031 176 LA M /MORE ON THIS LINE?
/EOTX. 000 001 032 376 072 COLN, CPI ",
/ 001 034 312 054 001 JTZ STMT /YUP - EXECUTE IT
/LINE STORAGE FORMAT: 001 037 267 OR A /END OF LINE?
001 040 304 142 000 CFZ ERRO /NOFE - ILLEGAL TERMINATION CHR
/ LINE NUMBER LOU 8 BITS 001 043 043 INX HL /MOVE TO SONL
/ LINE NUMBER HIGH 8 BITS 001 044 315 100 002 CAL FELN /LINE # -> DE, RE-ENTER IF EOB
/ CHRS UHICH APPEAR ON LINE 001 047 353 DE<>HL /MAKE IT CURRENT LINE
001 050 042 262 004 STHL CURL
001 0-53 353 DEC >HL
234 313 203 004 CAL DEINT /GET LINE # -> DE 001 054 327 STMT, FETCH
237 345 PSHX HL /FIRST CHR ADR SAVE 001 055 042 011 005 STMU, STHL SSTM /SAVE THE START OF THIS STATEMENT
240 323 PSHX DE /SAVE LINE 4 001 06O 021 026 081 LXI DE RTRN /PUSH DESIRED RETURN ADR
000 241 363 PSHX PSU /ZERO TRUE IF BLANK LINE 001 063 325 PSHX DE
000 242 001 002 000 LXI BC 2 /LINE LENGTH 3 BYTE OVERHEAD 001 064 310 RTZ
243 176 LA M /COUNT UP LINE LENGTH -> BC 001 065 317 077 TST "? /A PRINT STMT?
246 267 OR A 001 067 363 005 SIPK, IFNOT NFRT /MIGHT BE POKED TO NPRU
247 043 I N£ HL 001 071 312 154 005 PRT1, JTZ CRLF
250 003 I NX BC 001 074 310 CR?, RTZ /RETURN WITH NO CR IF TERMINATOR
251 302 245 000 JFZ EDT /KEEP COUNTING 001 075 317 073 TST "i
254 361 POPX PSU /RESTORE FLAGS 001 077 304 081 IFNOT PCOM
255 305 PSHX BC /SAVE LINE LENTH 001 101 303 074 001 JMF CR? /IGNORE SEMICOLONS - NO CR IF EOS
236 365 PSHX PSU /SAVE FLAGS 001 104 317 054 PCOM, TST ", /A COMMA ?
237 315 370 000 CAL LFND /INSERT ADR -> BC, SONL -> HL 001 106 116 001 IFNOT QUOT
262 305 PSHX BC /SAVE INSERT ADR 001 110 076 01 1 LAI 1 1 /YUP - SEND A TAB
263 322 310 000 JFC EDT2 /COULDN'T FIND, SO INSERT ONLY 001 112 347 DEVO
266 353 DEOHL /SONL -> DE 001 113 303 074 001 JMP CR? /NO CR IF EOS
267 052 260 004 LDHL EOTX 001 116 176 6U0T, LA M /LEADING SLASH FOR LITERAL ?
272 032 LDAX DE /DELETE OLD LINE 001 117 376 057 CPI "/
273 002 STAX BC 0O1 121 302 144 001 JFZ PXCL /NOPE - TRY CHR*
274 003 I NX BC 0O1 124 043 INX HL /YUP - MOVE OVER SLASH
273 023 INX DE 0O1 125 176 QUOS, LA M /FETCH A CHR
276 CMPR /DONE YET? 001 126 267 OR A /END OF LINE ?
277 JFC EDT1 /NOFE 001 127 314 142 000 CTZ ERRO /YUP - NO CLOSING SLASH ERROR
LH B /SAVE NEU EOTX 001 132 043 INX HL
303 131 LL C O01 133 376 057 CPI "/ /FINAL SLASH?
304 033 DCX HL 001 135 312 165 001 JTZ PEXQ /YUP
305 042 260 004 STHL EOTX 001 140 347 DEVO /NOPE - SEND IT
310 321 POPX DE /INSERT ADR -> DE 001 141 303 125 001 JMP QUOS /DO MORE
31 1 361 POPX PSU /ANYTHING TO INSERT? 001 144 317 076 PXCL, TST " > /A CHR* FUNCTION ?
312 312 207 000 JTZ NOCR /NOPE - EXIT EDITOR 001 146 340 085 PXPK, IFNOT PRI) /TRY STRING PRINT, MIGHT BE POKED
313 052 260 004 LDHL EOTX 001 150 337 EXPP
320 343 SPOHL /EOTX -> BC, LL -> HL 001 151 173 LA E /TRUNCATED EXPR -> h
301 POPX BC 001 152 347 DEVO /SEND IT
011 DADX BC /NEU EOTX -> HL 001 153 303 165 001 JMP PEXQ
PSHX HL /SAVE IT 001 156 337 PEXP, EXPR /MUST BE AH EXPRESSION
000 324 313 : CAL EOM? /ROOM FOR THIS LINE? 001 157 345 PSHX HL /SAVE HL DURING PRINT
000 327 305 PSHX BC 001 160 353 DEOHL /NUMBER TO PRINT -> HL
000 330 343 SPOHL /OEOTX -> HL. NEOTX -> BC 001 161 315 17G 004 CAL SHLF /PRINT THE SIGNED NUMBER
000 331 301 POPX BC 001 164 341 POPX HL /RESTORE TXA
000 332 367 CMPR /MOVE UP FOR NEU LINE 001 165 053 PEXQ, DCX HL /SET Z FLAG IF EOS
000 333 176 LA M /FROM OEOTX -> NEOTX 0H1 166 327 FETCH
STAX BC 001 167 303 071 001 JMF PRT1
DCX BC 001 172 345 HFRU, PSHX HL /SAVE SOL TXA ON STK
033 DCX HL 001 173 043 INX HL
302 332 JFZ ED21 /NOT DONE YET 001 174 317 075 TST " = /SECOND CHR "=" ?
POPX HL /RESTORE NEOTX 001 176 313 003 IFNOT CMD? /NOPE - MUST BE A COMMAND OR ARRAY
343 042 260 004 STHL EOTX 001 200 337 EXPR /YIJP - EVALUATE RIGHT SIDE
DEOHL /INSERT ADR -> HL 001 201 343 SPOHL /SOL -> HL, EOL ON STK
347 POPX DE /LINE # -> DE 001 202 317 056 TST ", /A GOTO STMT ?
350 LM E /PUT IN NEU LINE # 001 204 232 081 IFNOT LEF*
000 043 INX HL 001 206 341 GOT. POPX HL /EOS -> HL
000 162 LM D 001 207 172 GOTA, LA D /GOTO LINE ZERO?
000 043 INX HL 001 210 263 OR E
000 POPX DE /ADR OF TEXT OH LINE 001 211 310 RTZ /YUP - FALL THRU TO NEXT STMT
000 LDAX DE /PUT IT IN BUFFER 001 212 172 LA D /GOTO LINE 65535 ? C-l)
LM A 001 213 243 ND E
INX HL 001 214 074 IMA
INX DE 001 215 312 284 000 JTZ ENTR /YUP - THIS IS A STOP
OR A 001 220 315 370 000 GOTB, CAL LFND /FIND HIS LINE
302 355 000 JFZ EDT3 /NOT DONE INSERTING 001 223 140 LH B /NEW LINE TXA -> HL
303 207 000 JMP NOCR /GET ANOTHER LINE 001 224 151 LL C
001 225 DCX HL /MOVE TO PRECEDING LINES HULL
001 226 330 PTC /FOUND THE LINE - EXECUTE IT
001 227 315 142 000 CAL ERRO /NO FIND ERROR
/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 OR GO 001 232 317 044 LEF*. TST "* /A GOSUB ?
/ONE LINE PAST BUT NOT HIT EOB RETURN CONDITIONS FOLLOU: 001 234 253 081 IFNOT MEMA
001 236 315 355 001 CAL FSNL /FIND START OF NEXT LINE
/ IF 001 241 176 LA M /SAVE ITS LINE HUMBER
001 242 043 INX HL
GOT IT NEXT > 001 243 146 LH M
001 244 157 LL A
EOB SONL 001 245 042 003 005 STHL DLAD
EOB SOL SO<L 001 250 303 206 001 JMP GOT /DO A GOTO
FALSE TRUE FALSE 001 253 317 041 MEMA, TST " ! /SET A MEMORY ADDRESS ?
ZERO TRUE TRUE FALSE 001 255 265 081 IFNOT POK?
001 257 353 DE<>HL /STORE NEU MEMORY ADDRESS
CLTOTK IIRAGF CL BVTFS
/USES ALL REGS AND FLAGS EXCEPT DE. 001 260 042 016 005 STHL MADR
001 263 341 POPX HL /RESTORE EOS TXA
000 370 052 256 004 LFND, LDHL BOTX /START AT BEGINNING OF TEXT 001 264 311 RET
000 373 104 LFNE, LB H /SAVE START OF LINE -> BC 001 265 317 046 POK?, TST "& /A POKE ?
000 374 115 001 267 277 0O1 IFNOT OUT?
000 375 176 /EOB? 001 271 852 016 005 LDHL MADR /GET THE SET MEMORY ADDRESS
000 376 043 001 274 163 LM E /POKE IT WITH LOU ORDER EXPR
000 377 266 001 275 341 POFX HL /RESTORE EOS TXA
001 000 053 DCX HL 001 276 311 RET
RTZ /YUP - ZERO TRUE, CARRY FALSE 001 277 317 137 OUT?, TST "<• /AN OUT INST ?
001 002 176 /RELOAD LOU ORDER A 001 301 315 001 IFNOT PAD? /NOFE
001 003 043 INX HL 001 303 076 323 LAI 323 /OUT INST BINARY -> MEMORY CRAM)
001 004 343 PSHX HL /SAVE SOL TXA+1 001 305 062 013 005 STA RAM10
005 146 LH M /LINE # -> HL 001 310 173 LA E /DATA TO OUTPUT -> A
006 157 LL A 001 311 341 POPX HL /RESTORE EOS TXA
007 367 CMPR /LINE # UE UANT ? 001 312 303 ei3 005 JMF RAM 10 /DO THE OUT, AND RETURN
010 341 POPX HL /SOL+1 -> HL 001 315 317 100 PAD?, TST "0 /SET PORT NUMBER ?
011 363 PSHX PSU /SAVE RESULT OF COMPARE 001 317 327 001 IFNOT DEF?
012 043 INX HL /START OF NEXT LINE -> HL 001 321 173 LA E /TRUNCATED EXPRESSION -> A
013 313 355 001 CAL FSNL 001 322 062 014 005 STA RAM 10+1 /SET NEU PORT NUMBER INTO RAM
016 361 POPX PSU /RESTORE RESULT OF COMPARE 001 325 341 POPX HL /RESTORE EOS TXA
017 077 CMC /FOUND IT? 001 326 311 RET
020 310 RTZ /YUP - CARRY, ZERO TRUE 001 327 317 136 DEF?, TST "* /DEFINE A FUNCTION ?
021 077 CMC /PAST IT? 001 331 310 005 DFPK, IFNOT BSES /MIGHT BE POKED TO LETS
022 320 RFC /YUP - CARRY. ZERO FALSE 001 333 043 INX HL /MOVE TXA TO EXPRESSION
023 303 373 000 JMP LFNE /NOPE - KEEP LOOKING 001 334 042 005 005 STHL DEFF /SAVE FUNCTIONS TXA
001 337 341 POPX HL /RESTORE EOS TXA
/THIS IS THE INTERPRETER CONTROL SECTION. 001 340 311 RET
Nov./Dec., 1976
Page 26 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025
323
202 005 LETS, /GET THE INDES OF THE VAR 002 141 151 0O2 IFNOT TRYN
/STORE THE VAL IN MEMORY 002 143 315 163 002 CAL RSUM /GET RIGHT SUM
001 02 252 001 JFZ LETT /DON'T WRITE HI BYTE IF SINGLE 002 146 3O0 RFZ /NOT EQUAL IS FALSE
001 I NX HL 0O2 147 137 LE A
LM D 002 150 RET I, RET
001 332 LETT, POPX HL /IGNORE TXA FROM LOKU 002 151 TRYN, TST "# /NOT EQUAL TO ?
001 353 POPX HL /RESTORE EOS TXA O02 153 IFNOT RET I /NO RELOPS - RETURN
001 354 311 RET 002 155 315 163 002 CAL RSUM /GET RIGHT SUM
/FSNL FINDS THE START OF THE NEXT LINE IN MEMORY. 002 !60 RTZ
/HL IS BUMPED TO POINT TO THE LO ORDER LINE NUMBER OF THAT 002 161 LE A
/LINE. A & PSU GET MUNCHED. STACK USAGE: 2 BYTES. 032 162 RET
301 355 176 FSNL, LA M /RSUM GETS THE RIGHT SUM AFTER A RELOP HAS BEEN FOUND.
061 356 043 I NX HL /ENTER WITH LEFT SUM IN DE. AFTER FETCHING THE RIGHT SUM,
001 357 26? OR A /ENDING NULL YET? /RIGHT AND LEFT ARE COMPARED WITH A 16 BIT SIGNED COMFARE.
001 360 302 355 001 JFZ FSNL /ON EXIT: FLAGS ARE SET LIKE LEFT - RIGHT,
001 363 311 RET /DE =0, A = 1, TXA POINTS TO END OF EXPRESSION.
/EOM AND EOM? CHECK TO MAKE SURE THAT THERE IS AT LEAST 24 002 163 325 RSUM, PSHX DE /LEFT ON STK
/BYTES OF STK SPACE LEFT FOR NORMAL OPERATIONS. EOM? LOOKS 002 164 315 206 002 CAL SUM /GET RIGHT SUM -> DE
/FOR 24 BETWEEN HL AND CURRENT SP. EOM LOOKS FOR 24 BETWEEN 002 167 343 SPOHL /LEFT -> HL, TXA ON STK
/CURRENT EOTX AND SP. BOTH MUNCH PSU & A. 002 170 174 LA H /COMPARE SIGN OF LEFT AND RIGHT
002 171 252 XR D
001 364 052 004 EOM, LDHL EOTX /CURRENT EOTX 002 172 362 176 082 JFS SAMS /SAME SIGN - DON'T SWAP
001 367 325 EOM?, PSHX DE /SAVE DE 002 175 353 DEOHL
801 378 353 DEOHL /SAVE HIS HL 002 176 367 SAMS, CMPR /DO THE COMPARE
081 371 041 LXI HL -024 /LOOKING FOR 24 BYTES 002 177 341 POPX HL /RESTORE TXA
001 374 071 DADX SP /ADD IN CURRENT SF 002 280 021 080 000 LXI DE 0 /SETUP RESULT OF RELOP
081 375 367 CMPR /SUBTRACT PASSED HL 002 203 076 001 LAI 1 /DO A LE A IF TRUE
001 376 253 DEOHL /RESTORE HIS HL 002 205 31 1 RET
001 377 321 POPX DE /RESOTRE DE
802 000 320 RFC /PLENTY OF ROOM LEFT - RETURN /SUM EVALUATOR.
002 801 315 080 CAL ERRO /OUT OF MEMORY ERROR /<SUM> =:= <TERM> I <SUM> + <TERM> I <SUM> - <TERM>
/THIS ROUTINE INPUTS A LINE OF TEXT AND PLACES IT 002 206 315 246 002 SUM, CAL TERM /GET LEFT TERM
/AT LIMB WHEN ENTERED AT GETL. RUBOUT 002 211 31? 053 SUMA, TST “ + /FOLLOWED BY A "+" ?
.-DELETES THE PREVIOUS CHR. CONTROL U C+U) DELETES THE 002 213 230 002 IFNOT SUN
/ENTIRE LINE BEING TYPED AND STARTS OVER. A MAXIMUM 002 215 325 PSHX DE /SAVE LEFT HALF
•OF LBUL CHRS WILL BE ACCEPTED AFTER WHICH THE 002 216 315 246 002 CAL TERM /GET RIGHT HALF
/BELL WILL RING INSTEAD OF ECHOING CHRS AS NORMAL. 002 221 343 SUM 1, SP< >HL /LEFT -) HL, TXA ON STACK
/CONTROL CHRS OTHER THAN CONTROL U, CONTROL G (BELL), 002 222 031 DADX DE /RIGHT + LEFT -> HL
/AND CARRIAGE RETURN WILL NOT BE ECHOED BUT IGNORED. 082 223 353 DE<>HL /RESULT -> DE
/ROUTINE RETURNS ON ENTRY OF A CARRIAGE RETURN BY 002 224 341 POPX HL /RESTORE TXA
/ECHOING A CRLF AND PLACING 3 NULLS AT THE END OF BUFFER. 002 225 303 211 002 JMP SUMA /CHECK FOR MORE SUMS
/ON EXIT, HL POINT LINB-1. STACK USAGE: 10 BYTES. 002 230 317 055 SUN, TST /FOLLOWED BY ?
002 232 150 002 IFNOT RET I /NOPE - DONE WITH ALL SUMS
002 004 053 GET J, DCX HL /DECR CHR POINTER 002 234 325 PSHX DE /SAVE LEFT TERM
002 0O5 357 MSGP /SEND A BACK SLASH 002 235 315 246 002 CAL TERM /GET RIGHT HALF
006 334 DSS “\+200 002 240 315 246 004 CAL COMD /DE = -RIGHT
002 007 085 DCB /DECR CHR COUNTER 002 243 303 221 002 JMP SUM 1 /RESULT = -LEFT + RIGHT
010 302. 023 002 JFZ GETM /DELETED TOO MANY? - NOPE
002 013 315 154 085 GETK, CAL CRLF
002 016 041 264 004 GETL, LXI HL LINE /CHRS WILL GO HERE / EP 11
002 021 086 001 LBI 1 /INITIALIZE CHR COUNT /TERM EVALUATOR.
002 023 315 117 085 GETM, CAL TTY I /GET CHR -> A /<TERM> ::= <FACT) I (TERM) * (FACT) I (TERM) / (FACT)
002 026 376 097 CPI 7 /A BELL?
002 030 312 057 002 JTZ GETN /YUP - PUT IN BUFFER 002 246 315 025 003 TERM, CAL FACT /GET LEFT FACT
002 033 376 015 CPI 15 /A CR? 002 251 31? 032 TERA, TST "* /FOLLOWED BY AN ?
002 035 312 143 005 JTZ CRLE /YUP - EXIT THRU CRLF 253 340 002 IFNOT TERN /NOPE - TRY DIVISION
002 040 376 025 CPI 25 /CONTROL U? 255 325 PSHX DE /SAVE LEFT FACT
042 312 013 002 JTZ GETK /YUP - START OVER 082 256 315 025 CAL FACT /GET RIGNT FACT
002 045 376 040 CPI " /< SPACE, CONTROL CHR ? 002 261 343 SPOHL /LEFT -> HL, TXA ON STACK
002 04? 332 023 002 JTC GETM /YUP - IGNORE 002 262 345 PSHX HL
052 376 177 CPI 177 /RUBOUT? 002 263 041 013 LXI HL RAM 10 /NUMBER OF BITS
002 854 312 084 002 JTZ GET J /YUP - IGNOR LAST CHR 002 266 066 021 LMI #11
002 057 1 17 GETH, LC A /SAVE CHR 002 270 001 000 000 LXI BC 0 /CLEAR PARTIAL PRODUCT
082 060 170 LA B /GET LINE LENGTH -> A 002 273 172 LOOP, LA D /16 BIT DE ROTATE RIGHT
0O2 861 376 111 CPI LBUL+1 /COMPARE WITH MAXIMUM 002 274 037 RAR
002 063 076 007 LAI 7 /GET READY TO RING BELL IF TOO LONG 002 275 127 LD A
0O2 865 322 074 002 JFC GETO /RING IT 002 276 173 LA E
002 070 171 LA C /RESTORE CHR 002 277 037 RAR
002 071 161 LM C /PUT IT IN BUFFER 002 388 137 LE A
002 072 043 I NX HL /INCR BUFFER POINTER 002 381 065 DCM /ONE BIT DONE
002 073 084 INB /INCR CHR COUNTER 002 302 312 331 JTZ MULS /ALL BITS DONE
002 074 347 GETO, DEVO /ECHO CHR 002 305 343 SP(>HL
002 075 383 023 002 JI1P GETM /DO SOME MORE 0O2 386 322 316 JFC SKIP /BIT NOT ONE - SKIP ADD
002 311 345 PSHX HL
/THIS ROUTINE FETCHES A LINE NUMBER FROM MEMORY -> DE. 002 312 011 DADX BC
/IF IT IS LINE 0 (ZERO), THIS MEANS EOB AND IT GOES TO ENTR. 002 313 104 LB H
/IF NOT 0, JUST RETURN. MUNCHES DE & A & FLAGS, BUMPS HL. 002 314 115 LC L
/HL POINTS TO LOU ORDER ON ENTRY, HI ORDER ON EXIT. 002 315 341 POPX HL
/STACK USAGE: 2 BYTES. 002 316 267 SKIP, OR A /CLEAR CARRY
002 317 175 LA L /16 BIT HL ROTATE LEFT
002 /LO ORDER -> E 002 320 027 RAL
0O2 002 321 157 LL A
802 /HI ORDER -> D 002 322 174 LA H
002 103 172 /IS DE = 0 ? 002 323 027 RAL
O02 104 263 002 324 147 LH A
002 105 380 /NOPE - RETURN 002 325 343 SPOHL
0O2 106 307 /YUP - BACK TO COMMAND MODE 002 326 333 273 082 JMP LOOP
002 331 321 MULS, POPX DE /CLEAN JUNK OFF STACK
002 332 120 LD B /RESULT -> DE
002 333 131 LE C
/EXPRESSION EVALUATOR. USES ALL REGISTERS. RESULT IS LEFT 002 334 311 POPX HL /RESTORE TXA
/IN THE DE REGISTER. WILL PROBABLY RECURSE AT LEAST ONCE 002 335 303 251 002 JMP TERA /LOOK FOR ADDITIONAL OPERATORS
002 340 317 057 TERN, TST "/ /FOLLOWED BY “/M ?
/ HIERARCHY 002 342 150 002 IFNOT RET I /NOPE - DONE WITH ALL FACTORS
002 344 325 PSHX DE /SAVE LEFT FACT
/EVALUATED FIRST ( ) 002 345 315 025 003 CAL FACT /GET RIGHT FACT
002 350 315 235 004 CAL CHSG /CHANGE SIGN IF HEEDED
002 353 343 SPOHL /TXA ON STK, LEFT -) HL
/EVALUATED LAST <, >, =, # 002 354 353 DEOHL /LEFT -> DE, ABS(RIGHT) -> HL
355 3 : *: 237 004 CAL CHS? /ABSCLEFT) -> DE
/OPERATORS ON THE SAME LEVEL ARE EVALUATED LEFT TO RIGHT. 360 3G5 PSHX BC /SAVE SIGH OF RESULT
361 104 LB H
/ < EXPR > ::= < SUM > I <SUMX<3UM> I <SUM>XSUM> 062 362 115 LC L /ABS(RIGHT) -> BC
/ < SUM >=< SUM > I (SUM)#<SUM> 002 363 353 DE(>HL /ABSCLEFT) -> HL
082 364 170 DV02, LA B /DIVISION BY ZERO?
/STACK USAGE: >= 10 BYTES. CALLS EOM BEFORE RECURSING. 002 365 261 OR C
002 366 314 142 000 CTZ ERRO /YUP - ERROR
002 187 315 206 002 EXPA, CAL SUM /GET LEFT SUM 002 371 021 000 LXI DE 0 /CLEAR QUOTIENT
002 112 317 074 EXPS, TST “< /FOLLOWED BY "<" ? 002 374 175 DIV1, LA L /LEFT = LEFT -RIGHT
002 114 124 002 IFNOT TRY) 0O2 375 221 SU C
002 116 315 163 002 CAL RSUM /GET RIGHT SUM AND COMPARE 002 376 157 LL A
002 121 320 RFC /FALSE - DE = 0 002 377 174 LA H
002 122 137 LE A /TRUE - MAKE DE = 1 000 230
0O2 123 311 RET 001 14? LH A
0O2 124 31? 076 TRY), TST "> /GREATER THAN ? 003 002 023 I NX DE /QUO=QUO + 1
002 126 13? 002 IFNOT TRYE 003 322 374 JFC DIV1 /STILL POSITIVE - SUB AGAIN
0O2 130 315 163 002 CAL RSUM /GET RIGHT SUM 006 033 DCX DE /TOO FAR - QUO = QUO -1
002 133‘330 RTC /FALSE 003 007 011 DADX BC /GET REMAINDER -> HL
002 134 310 RTZ /EQUAL IS FALSE 003 O10 042 020 STHL RMDR /SAVE IT
002 135 13? LE A /TRUE 003 013 301 POPX BC /GET THE SIGN OF RESULT
002 136 311 RET 003 014 170 LA B
002 137 31? 075 TRYE,_ TST H = /EQUAL TO ? 003 015 26? OR A
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 CTS COMD /COMPLIMENT RESULT MAYBE
003 0£1 341 POPX HL /RESTORE TXA
003 022 303 231 002 JMP TERA /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 lDF 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 LEf1DING 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 144 000 305 157 311 RET
004 164 012 000 /
004 166 001 000 /ABRT CHECKS THE CONSOLE DEVICE FOR A CHR AND IF THERE,
004 176 DEOHL /NUMBER -> DE /CHECK IF IT'S A CONTROL C. IF NOT, RETURN WITH A MUNCHED.
604 171 235 004 CAL CHSG /ABS(NUMBER) -> DE /IF YES, FALL THROUGH TO STOP ROUTINE.
004 174 DEOHL /ABS(NUMBER) -> HL /STACK USAGE, 6 BYTES.
004 175 064 004 JFS HLPT /UAS POSITIVE, PRINT SPACE
0O4 20O MSGP /PRINT THE MINUS SIGN ("-"> 005 160 315 134 005 ABRT. CAL TRDY /IS DATA READY FLAG UP ?
004 201 DSS "-+200 005 163 310 TIB, RTZ /NOPE - RETURN
004 202 303 066 004 JMP NOSP /PRINT THE NUMBER 005 164 315 117 005 CAL TTYI /YUP - FETCH THE CHR
005 167 376 003 CPI 3 /A CONTROL C C+C) ?
005 171 300 RFZ /NOPE - RETURN
005 172 307 RST /BACK TO ENTRY POINT
/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. 005 173 317 117 OS?, TST "0 /JMP TO OS ?
005 175 002 006 OSPK, IFNOT SAV? /MIGHT BE POKED TO SNER
004 205 053 DEINT, DCX HL /DECR FOR FETCH 005 177 303 000 374 JMP OS'
206 021 000 000 LXI DE 0 /CLEAR PARTIAL SUM
004 DEIM, FETCH /FETCH CHR 0-9?
004 212 320 RFC /NOFE - DONE /LOKU GETS THE INDES OF THE VARIBLE POINTED TO BY HL AND
004 213 345 PSHX HL /SAVE CHR ADR /RETUNS THEM IN HL. THE TXA IS BUMPED OVER THE VARNAM,
004 214 142 LH D /PARTIAL SUM -> HL /AND PUSHED BEFORE RETURNING. YOU MUST POP AFTER CALLING
004 215 153 LL E /LOKU. USES ALL REGS EXCEPT DE. STACK USAGE: 4 BYTES IF
004 216 031 DADX DE /HL = DE * 10 /VAR IS A - Z, >= 16 IF SUBSCRIPTED. ZERO FLAG IS TRUE
004 217 051 DADX HL /PS = PS * 10 /IF IT IS DOUBLE BYTE VAR (SIMPLE OR DOUBLE ARRAY). ZERO
004 220 031 DADX DE /IS FALSE IF SINGLE BYTE VARIABLE (SINGLE BYTE ARRAY).
004 221 051 DADX HL
004 222 326 060 SUI "0 /REMOVE ASCII BIAS 005 202 176 LOKU, LA M /VARNAM -> A
004 224 137 LE A /SETUP 16 BIT DIGIT -> DE 005 203 326 101 SUI "A /IS IT A - Z ?
004 225 026 000 LDI 0 005 205 332 232 005 LKP1, JTC DARY /NOPE
004 227 031 DADX DE /ADD IN NEU DIGIT 005 210 376 033 CPI 027 /26 LETTERS + 1
004 230 353 DEOHL /PARTIAL SUM -> DE 005 212 322 232 005 LKP2, JFC DARY /NOPE - TRY ARRAYS IF NOT POKED
231 341 POPX HL /RESOTRE TXA /SAVE NEU TXA ON STACK BEFORE RETURNING
004 232 303 211 004 JMP DEIM 005 215 043 I NX HL /MOVE TXA OVER VARNAM
005 216 343 SPOHL /PUT TXA ON STK
/CHS? CHECKS THE SIGN OF DE REG. IF POSITIVE, RETURN A 005 217 345 PSHX HL /PUT RETURN ADDRESS BACK
/MUNCHED, SIGN BIT FALSE. IF NEGATIVE, COMPLIMENT DE, 005 220 041 022 005 LXI HL VART /BASE ADDRESS -> HL
/A MUNCHED, SIGN BIT SAME AS THAT OF B REG. CHSG 005 223 007 RLC /MULTIPLY INDEX BY 2
/CLEARS THE SIGN BIT OF B REG FIRST. COMD UNCONDITIONALLY 005 224 117 LC A /TWO BYTE INDEX -> BC
/COMPLIMENTS DE REG. STACK USAGE: 2 BYTES. 005 225 006 000 LBI 0
005 227 011 DADX BC /ADD IN INDEX TO BASE
004 235 CHSG, LBI 0 /CLEAR RESULT SIGN 005 230 237 /SET ZERO FLAG. THIS IS DOUBLE BYTE
004 CHS?, LA D /IS DE POSITIVE ? 005 231 311
004 240 OR A
004 241 RFS /YUP - RETURN 232 005 E0P1=. /THIS WILL BE BOTX-1 IF ARRAYS.
004 242 LA B /NOFE - FLIP SIGN OF B /STRING, AND TAPE / SAVE ARE DELETED
004 243 XRI 200
004 LB A /AND FALL THRU TO COMPLIMENT DE 005 232 317 042 DARY, TST »" /DOUBLE BYTE ARRAY ?
004 246 COMD, LA D 005 234 23? 005 IFNOT SARY
247 CMA 005 236 313 272 003 CAL SUBS /GET THE SUBSCRIPT -> BC
004 250 LD A 005 241 343 SPOHL /INDES -> HL, TXA ON STK
004 l (i LA E 005 242 343 PSHX HL
004 057 CMA 003 243 052 336 LDHL DBSE
253 137 LE A 005 246 011 DADX BC
254 023 I NX DE 005 247 011 DADX BC
004 255 311 RET 005 250 257 XR A /SET ZERO FLAG. THIS IS DOUBLE BYTE
005 251 311 RET
005 252 317 047 SARY, TST /SINGLE BYTE ARRAY ?
005 254 137 000 IFNOT SNER
/RAM DEFINITIONS 005 256 315 272 005 SSUB, CAL SUBS /SUBSCRIPT -> BC
005 261 343 SPOHL /TXA ON STK, INDES -> HL
004 256 154 006 BOTX, DSD EOP /ADR OF FIRST CHR IN BUFFER 005 262 345 PSHX HL
004 260 156 006 EOTX, DSD EOP+2 /ADR OF LAST CHR IN BUFFER 005 263 052 334 005 LDHL SBSE
004 262 377 377 CURL, DSD '377 377 /CURRENT LINE NUMBER 005 266 011 DADX BC
110 000 LBUL=0?2 /INPUT LINE BUFFER LENGTH 005 267 366 001 OR I 1 /RESET ZERO FLAG, TO SAY SINGLE BYTE
000 374 OS='374 /ADDRESS OF OPERATING SYSTEM 005 271 311 RET
004 264 000 LIN6, DSS 0 /LEAVE SPACE FOR INPUT LINE BUF
377 004 *. +LBUL+2 /SUBS GETS THE SUBSCRIPT FOR A STRING OR ARRAY -> BC.
004 377 000 010 SPRS, DSD '10 /ADDRESS OF STACK POINTER RESET /MUNCHES ALL REGS EXCEPT DE. STACK USAGE: >= 14 BYTES.
005 001 000 000 LRES, DSD 0 /HOLDS RESULT OF LAST EXPR EVAL
005 003 000 060 DLAD, DSD 0 /HOLDS RETURN LINE NUMBER FOR 005 272 325 SUBS, PSHX DE /SAVE DE
005 005 033 001 DEFF, DSD COLN+1 /INITIALIZE TXA OF USER DEFINED FUN 005 273 317 133 TST "C /IGNORE "["
0G5 067 213 003 USRL, DSD USR /ADR OF USERS MACHINE LANG CALL 005 275 277 005 IFNOT SUB0
005 011 154 836 SSTM, DSD EOP /INITIALIZE START OF LAST STMT 005 277 337 SUB0, EXPR /GET THE SUBSCRIPT -> DE
005 013 323 810 RAM 10, OUT 10 /RAM AREA FOR INP AND OUT 003 300 102 LB D /SUBSCRIPT -> BC
005 015 311 RET 005 301 113 LC E
005 016 000 000 MADR, DSD 0 /SAVE AREA FOR PEEK / POKE ADDRESSES 005 302 321 POPX DE /RESTORE DE
605 020 000 000 RMDR, DSD 0 /SAVE AREA FOR DIVISION REMAINDER 005 303 317 133 TST " ] /IGNORE “I"
005 022 000 VART, DSS 0 /LEAVE ROOM FOR PROGRAM VARIABLES 005 305 307 005 IFNOT SUB1
106 005 *.+051 005 307 311 SUB-1, RET
005 310 317 047 BSES, TST "' /SET SINGLE BYTE ARRAY BASE ?
005 312 322 005 IFNOT BSED
/DEVO STARTS AT RESTART 4. 005 314 353 DEOHL /NEU BASE -> HL
/DEVO, PSHX PSU 005 315 042 334 005 STHL SBSE /SAVE NEU BASE
/ INP 1 005 320 341 POPX HL /RESTORE EOS TXA
/ NDI 2 005 321 311 RET
P05 106 312 041 000 DEVP, JTZ DEVQ /NOT READY 005 322 31? 042 BSED, TST "" /SET DOUBLE BYTE ARRAY BASE ?
005 1 11 361 POPX PSW 005 324 341 001 IFNOT LETS /MUST BE A LET
005 1 12 010 TODP, OUT 10 005 326 353 DEOHL /NEU BASE -> HL
005 114 311 RET 005 327 042 336 005 STHL DBSE /SAVE NEU BASE
005 115 000 000 DSD 0 /PATCH ROOM 005 332 341 POPX HL /RESTORE EOS TXA
005 333 311 RET
/TTYI GETS A CHR FROM THE INPUT DEVICE. CAN MUNCH A AND
/FLAGS. STACK USAGE: 4 BYTES. 005 334 010 370 SBSE, DSD '370 10 /ADR OF SINGLE BYTE ARRAY BASE ADR
005 336 010 370 DBSE, DSD '370 10 /ADR OF DOUBLE BYTE ARRAY BASE ADR
005 117 134 005 TTYI, CAL TRDY /IS INFUT READY ?
005 122 117 005 TIA, JTZ TTYI /NOPE - KEEP TRYING 340 005 E0P2=. /THIS UILL BE BOTX-1 IF STRINGS AND
005 125 000 TIDP, INP 0 /TAPE / SAVE ARE DELETED.
005 127 346 NDI 177
005 131 311 RET 005 340 31? 051 PRI), TST "> /PRINT STRING ARRAY ?
005 132 000 000 DSD 0 /LEAVE ROOM FOR PATCHES 005 342 156 001 IFNOT PEXP
005 344 315 256 005 CAL SSUB /GET STRING TXA -> HL, TXA ON STK
/TEST TERMINAL INPUT READY BIT STATUS. MUNCHES A & FLAGS. 005 34? 353 DEOHL /STRING TXA -> DE
/STACK USAGE: 2 BYTES. 005 350 341 POPX HL /TXA BACK -> HL
005 351 032 STRA, LDAX DE /GET A STRING CHR
005 134 333 00! TRDY, INP 1 /GET INPUT STATUS 005 352 26? OR A /EOS YET ?
005 136 346 001 TIRM, NDI 1 /MASK TO INPUT READY BIT 005 353 312 165 001 JTZ PEXQ /YUP - DO MORE OF ? STMT
005 140 311 RET /FZ MEANS READY, TZ MEANS NOT READY 005 356 347 DEVO /NOPE - PRINT IT
005 141 000 000 DSD 0 /ROOM FOR PATCHES 005 35? 023 I NX DE /BUMP STRING TXA
005 360 383 351 005 JMP STRA /PRINT SOME MORE
003 143 257 CRLE, XR A /A CONTINUATION OF GETL
805 144 167 LM A /PUTS EOB/EOL MARK IN LINE 005 363 317 051 NPRT, TST ") /STRING INPUT ?
005 145 043 I NX HL 005 365 172 001 IFNOT NPRU
005 146 167 LM A 005 367 315 256 005 CAL SSUB /GET STRING DESTINATION TXA -> HL
005 147 043 I NX HL 005 372 357 MSGP /PRINT PROMPT “- ■
005 150 167 LM A 005 373 055 DSS " +200
005 151 841 263 0O4 LXI HL LINB-1
0O5 375 315 021 002 CAL GETL+3 /USE GETL TO INPUT STRING
/CRLF SEND A CARRIAGE RETURN AND LINE FEED TO TERMINAL. 006 000 341 POPX HL /GET TXA BACK, (PUSHED BY SSUB)
/MUNCHES A £ FLAGS. STACK USAGE: S BYTES. 006 001 311 RET
065 154 35? CRLF, MSGP 002 006 E0P3=. /THIS UILL BOTX-1 IF SAVE / TAPE
805 155 015 DSS 15, 212 /IS DELETED
005 156 212
Nov./Dec., 1976 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 006 221 313 203 004 NUM, CAL DEINT /GET NUMERIC ARGUMENT
/BUFFER. RETURNS TO COMMAND MODE WHEN DONE. 006 224 353 DE<>HL /REQUESTED ADDRESS -> HL
/COMMAND IS FOLLOWED BY A SINGLE CHR PROGRAM NAME SO 006 223 021 247 006 LXI DE MMEM /MINIMUM POSSIBLE ADR -> DE
/MORE THAN ONE PGM CAN BE PUT ON A TAPE. IF CR IS 006 230 367 CMPR /REQUEST < MINIMUM ?
/GIVEN FOR NAME, PUNCH NAME AS A NULL. 006 231 332 134 006 JTC INIT /YUP - GIVE THE CHUMP ANOTHER CHANCE
006 234 053 DCX HL /FIRST LOC FOR STACK
/TAPE FORMAT: 006 235 176 LA M /GET CONTENTS
/ 006 236 057 CMA
/ 232 START CHR 006 237 167 LM A /WRITE IT BACK COMPLIMENTED
/ XXX NAME OF PROGRAM, 000 IF NULL NAME 006 240 276 CP M /DID IT GO ?
/ NNN DATA BYTES BETWEEN BOTX AND EOTX 006 241 057 CMA
006 242 167 LM A /RESTORE CONTENTS
/ 000 006 243 043 I NX HL
/ 000 EOT IS MARKED BY THREE NULLS 006 244 302 154 006 JFZ INIT /NOPE - NO RAM WHERE HE SAYS
006 002 317 123 SAV?, TST "S /SAVE COMMAND ? 247 006 MMEM=. /LOWEST LOC FOR STACK RESET
006 004 040 006 IFNOT TAP?
006 006 076 232 LAI 232 /START OF TAPE CHR 006 247 042 377 004 INIU. STHL SPRS /YUP - MAKE IT THE STACK RESET ADR
006 010 313 126 006 CAL PNOU /SEND IT 006 252 041 154 006 LXI HL EOP /BOTX IF HE SAYS "YES"
006 013 176 LA M /PROGRAM NAME CHR -> A 006 255 315 066 007 CAL WANT /ASK "WANT SAVE / TAPE?"
006 014 313 126 006 CAL PNOU /SEND IT 006 266 123 DSS "S, "A, "V, "E, "/, "T, "A, "P, "E, "?+2O0
006 017 032 260 004 LDHL EOTX /STOP ADDRESS -> DE 006 261 101
006 022 333 DEOHL 006 262 126
006 023 032 236 004 LDHL BOTX /START OF TEXT ADR -> HL 006 263 105
006 026 176 SAVA, LA M /CHR OF PROGRAM -> A 006 264 057
006 027 313 126 006 CAL PNOU /SEND IT 006 263 124
006 032 367 CMPR /DONE YET ? 006 266 101
006 033 043 I NX HL /BUMP TXA 006 267 120
006 034 302 026 006 JFZ SAVA /NOPE - KEEP SAVING 006 270 105
006 037 307 RST /ALL DONE, RE-ENTER 006 271 277
006 272 315 054 007 CAL YSNO /GET HIS ANSWER
/TAP? READS A TAPE FROM THE READER INTO THE TEXT 006 275 041 137 000 LXI HL SNER /HE SAID NO - POKE OUT TEST
/BUFFER. RETURNS TO COMMAND MODE WHEN DONE. COMMAND IS 006 300 042 175 005 STHL OSPK /FOR SAVE / TAPE
/FOLLOWED BY A SINGLE CHR PROGRAM NAME, LIKE SAVE. 006 303 041 002 006 LXI HL E0P3 /BOTX IF HE SAYS YES -> HL
/IT WILL SEARCH THE TAPE FOR A START CHR FOLLOWED BY THE 006 306 315 066 007 CAL WANT /ASK "WANT STRING 1/0“
/NAME GIVEN. IF CR IS GIVEN FOR A NAME, TAKE FIRST ONE 006 311 123 DSS "S, "T, "R, " , “ I, "/, “0, "?+200
/FOUND. IF THE NAMED PROGRAM CAN'T BE FOUND, THE TEXT 006 312 124
/BUFFER IS LEFT ALONE. WHEN READING STARTS, THE NAME 006 313 122
/BYTE FROM TAPE IS ECHOED SO YOU'LL KNOW IT IS LOADING. 006 314 040
006 313 111
006 040 317 124 TAP?, TST "T /READ A TAPE COMMAND ? 006 316 057
006 042 137 000 IFNOT SNER 006 317 117
006 044 313 142 006 TAPA, CAL CHIN /GET A CHR 006 320 277
006 047 376 232 CPI 232 /START CHR ? 006 321 315 054 007 CAL YSNO /GET HIS ANSWER
006 031 302 044 006 JFZ TAPA /NOPE - KEEP LOOKING 006 324 041 156 001 LXI HL PEXP /HE SAID NO, POKE GUT STRING PRINT
006 034 313 142 006 CAL CHIN /YUP - GET NAME CHR 006 327 042 146 001 STHL PXPK
006 037 276 CP M /THE ONE WE WANT ? 006 332 041 172 001 LXI HL NPRU /POKE OUT STRING INPUT TEST
006 060 312 072 006 JTZ TAPF /YUP - START READING O06 335 042 067 001 STHL SIPK
006 063 107 LB A /SAVE NAME IN B 006 340 041 340 005 LXI HL E0P2 /BOTX IF HE SAYS YES -> HL
006 064 176 LA M /DID HE GIVE DON'T CARE NAME ? 006 343 315 066 007 CAL WANT /ASK "WANT ARRAYS? "
006 063 267 OR A 006 346 101 DSS "A, "R, "R "A, "Y, "S, "?+200
006 066 170 LA B /NAME FROM TAPE -> A 006 347 122
006 067 302 044 006 JFZ TAPA /NOPE - DON'T READ THIS ONE IN 006 350 122
006 072 347 TAPF, DEVO /SEND NAME OF PGM BEING READ 006 351 101
006 073 032 236 004 LDHL BOTX /WHERE IT WILL GO 006 352 131
006 076 016 003 TAPB, LCI 3 /INITIALIZE EOT NULL COUNTER 006 353 123
006 100 313 142 006 TAPC, CAL CHIN /GET A CHR 006 354 277
006 103 167 LM A /PUT IN RAM 006 355 315 054 007 CAL YSNO /GET HIS ANSWER
006 104 313 367 001 CAL EOM? /PGM TOO BIG ? 006 360 041 137 000 LXI HL SNER /HE SAID NO. POKE OUT ARRAY LOOKUP
006 107 176 LA M /GET CHR BACK 006 363 042 206 005 STHL LKP1+1 /MAKE IT A SYNTAX ERROR
006 110 043 I NX HL /BUMP 006 366 042 213 005 STHL LKP2+1
006 111 267 OR A /A NULL ? 006 371 303 003 007 JMP ICON /CONTNUED AT ICON
006 112 302 076 006 JFZ TAPB /NOPE - KEEP READING
006 113 013 DCC /DECR EOT NULL COUNT 000 007 * PGE /PUT IN JUMP TO BINL FOR BOOT
006 116 302 100 006 JFZ TAPC /NOT THIRD ONE - KEEP READING 007 000 303 101 007 JMP BINL
006 121 033 DCX HL /STORE NEW EOTX
006 122 042 260 004 STHL EOTX 007 003 041 341 001 ICON, LXI HL LETS /MAKE ARRAY ASSIGNMENT ILLEGAL
006 123 307 RST /BACK TO COMMAND MODE 007 006 042 331 001 STHL DFPK
007 011 041 232 005 LXI HL EOP1 /THIS IS BOTX -> HL
007 014 257 INIV, XR A /DO A "NEW" COMMAND
/PNOU IS THE PUNCH DRIVER USED BY SAVE. ENTER WITH CHR TO 007 015 167 LM A /BOTX WILL BE IN HL
/SEND IN A REG. STACK USAGE-. 2 BYTES. 007 016 043 I NX HL /NOW
007 017 042 256 004 STHL BOTX /SAVE IT
006 126 363 PNOU, PSHX PSW /SAVE CHR TO SEND 007 022 167 LM A /DO A NEW
006 127 333 003 PNOV, INP 3 /GET PUNCH STATUS 007 023 I NX HL
006 131 346 002 CORN, NDI 2 /READY YET ? 007 024 167 LM A
006 133 312 127 006 COA, JTZ PNOV 007 025 043 INX HL
006 136 361 POPX PSW /IT'S READY, SEND THE CHR 007 026 167 LM A
006 137 323 016 CODP, OUT 16 007 027 042 260 004 STHL EOTX
006 141 311 RET 007 032 041 204 000 LXI HL ENTR /POKE OUT JMP TO INIT
007 035 042 001 000 STHL 1 /MAKE IT A JUMP TO ENTR
/CHIN IS THE READER INPUT ROUTINE CALLED BY THE SAVE 007 040 357 MSGP /PRINT SIGN ON MESSAGE
/COMMAND. IT MUNCHES A & FLAGS. STACK USAGE. 2 BYTES. 007 041 013 DSS 15, 12, "C, "A. "S, "U, “A, "L+200
007 042 012
006 142 333 003 CHIN, INP 5 /GET READER STATUS 007 043 103
006 144 346 001 CIRM, NDI 1 /READY YET ? 007 044 101
006 146 312 142 006 CIA, JTZ CHIN /NOPE - WAIT FOR IT 007 045 123
006 131 333 004 CIDP, INP 4 /GOT A READY, GET THE INPUT 007 046 123
006 133 311 RET 007 047 101
/ 007 050 314
000 007 PGE='7 /PAGE FOR BINARY LOADER 007 051 303 302 007 JMP ICN2 /CONTINUED AT ICN2
134 006 EOP=. /THIS IS BOTX-1 IF TAPE / SAVE ARE KEPT
/ROUTINE TO GET "Y” OR "N" ANSWER FROM TERMINAL.
/TZ MEANS "Y", FZ MEANS "N".
/INIT IS THE INITIALIZATION ROUTINE. IT IS LOCATED IN THE
/MIDDLE OF THE CASUAL PROGRAM STORAGE AREA. IT IS ENTERED 007 054 315 117 005 YSNO, CAL TTYI /GET HIS CHR
/WHEN CASUAL IS EXECUTED AFTER LOADING. IT POKES OUT 007 057 347 DEVO /ECHO IT
/THE JUMP TO IT. RESPOND TO "MEM SIZ ?" WITH THE 007 060 376 131 CPI "Y /YES ?
/DECIMAL NUMBER OF THE HIGHEST ADDRESS TO BE USED BY CASUAL 007 062 312 014 007 JTZ INIV
/OR HIT CARRIAGE RETURN TO USE ALL RAM AVAILABLE. 007 065 311 RET
007 066 357 WANT, MSGP /SR TO PRINT "WANT"
006 134 061 000 010 INIT, LXI SP PGE +'l /SETUP TEMPORARY STACK POINTER 007 067 015 DSS 15, 12, "W, “A, "N, "T, " +200
006 137 357 MSGP /SEND "MEM SIZ? " MESSAGE 007 070 012
006 160 013 DSS 15, 12, "M, "E, "M, n , “S, "I, "Z, "? + 200 007 071 127
006 161 012 007 072 101
006 162 113 007 073 116
006 163 103 007 074 124
006 164 113 007 075 240
006 165 040 ,007 076 303 050 000 JMP MSG
006 166 123
006 167 111
006 170 132 101 007 PGE 101 /START ADR OF BINARY LOADER
006 171 277
006 172 313 016 002 CAL GETL /GET HIS RESPONSE /THIS SECTION POKES THE BINARY LOADER TO THE SAME I/O
006 173 327 FETCH /FETCH FIRST CHR, A RETURN ? /CONFIGURATION USED BY THE BOOTSTRAP LOADER AT ZERO.
006 176 302 221 006 JFZ NUM /NOPE - GET A NUMBER /THIS IS EXECUTED ONLY ONCE, UPON ENTRY FROM THE
006 201 041 247 006 LXI HL MMEM /START OF RAM SEARCH /BOOTSTRAP. AFTER THE FIRST TIME EXECUTED, THE JUMP
006 204 176 INIS, LA M /GET A CHR FROM MEMORY /AT WORD 0 OF THE BINARY LOADER PAGE IS POKED TO JUMP
006 203 037 CMA /AROUND THE I/O POKE.
006 206 167 LM A /WRITE IT BACK COMPLIMENTED /
006 207 276 CP M /DID IT GO ? 007 101 072 007 000 BINL, LDA 7 /INPUT STATUS PORT 4 -> A
006 210 037 CMA /RESTORE MEMORY 007 104 062 271 007 STA RDIN+1 /POKE INPUT ROUTINE
006 211 167 LM A 007 107 052 011 000 LDHL 11 /STATUS MASK ->L, RFZ OR RTZ -> HL
006 212 302 247 006 JFZ INIU /NOPE - THIS IS END OF RAM 007 112 174 LA H /CHANGE RTZ OR RFZ INTO JFZ OR JTZ
006 213 043 I NX HL /YUP - KEEP TRYING 007 113 306 002 ADI 2
006 216 303 204 006 JMP INIS 007 115 147 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 STHL P0K1+1 /POKE THE INPUT ROUTINE
007 121 072 014 000 LDA 14 •/INPUT DATA PORT # -> A /A15 MITS ACR FOR SAVE/TAPE COMMANDS
007 124 062 300 007 STA P0K2+1 /POKE THE INPUT ROUTINE /A14 MITS SIOA, B, C REV 0 FOR TERMINAL
007 127 041 135 007 LXI HL REAC /POKE OUT THE JUMP TO BINL /A13 MITS 88-PIO FOR TERMINAL
007 132 042 001 007 STHL PGE 1 /MAKE IT A JUMP TO READ-3 /A12 RESERVED FOR MITS 4PI0 (NOT FUNCTIONAL NOU)
007 135 061 000 010 REAC, LXI SP PGE+0256 /All RESERVED FOR MITS 2SI0 (NOT FUNCTIONAL NOU)
007 140 016 000 READ, LCI 0 /CLEAR CHECKSUM /A 10 RESERVED FOR MITS 2SI0 (NOT FUNCTIONAL NOU)
007 142 315 270 007 CAL RDIN /GET A CHR FROM TAPE /A9 CONTROL LOGIC STANDARD I/O
007 145 376 277 CPI 277 /IS IT AN EOT CHR ? /A8 USE CUSTOM I/O FROM LOCATION 50
007 147 312 254 007 JTZ GOTO /YUP - LOOK FOR START ADDRESS /NONE MITS SIOA, B, C NOT REV 0 FOR TERMINAL
007 152 376 377 CPI 377 /NOPE - IS IT A START OF BLOCK ? /
007 154 302 140 007 JFZ READ /NOPE - MUST BE LEADER, KEEP LOOKING /THIS LOADS AT LOCATION 100, AND UHEN IT IS DONE POKING
007 157 315 243 007 CAL ADIN /GET THE LOAD ADDRESS -> HL /IT GOES BACK TO THE BINARY LOADER UHICH UILL THEN READ
007 162 315 270 007 CAL RDIN /BLOCK LENGTH -> A /CASUAL IN ON TOP OF THIS.
007 165 267 OR A /BLOCK LENGTH = 0 ?
007 166 312 211 007 JTZ CKSM /YUP - NO DATA, VERIFY CHECKSUM 100 000 *100
007 171 137 LE A /MOVE BLOCK LENGTH -> E 000 100 041 000 007 IOPA, LXI HL PGE /PUSH ADR OF BINARY LOADER
007 172 315 270 007 DATA, CAL RDIN /GET A DATA BYTE FROM TAPE 000 103 345 PSHX HL
007 175 167 LM A /PUT IT INTO MEMORY 000 104 333 377 INP 377
007 176 276 CP M /DID IT URITE PROPERLY ? 000 106 346 002 NDI 2 /TEST A9
007 177 302 223 007 JFZ MERR /NOPE - GIVE A CAN'T URITE ERROR 000 110 300 RFZ /HE UANTS CONTROL LOGIC - ALL DONE
007 202 201 AD C /UPDATE CHECKSUM -> A 000 111 333 377 INP 377
007 203 117 LC A . /UPDATED CHECKSUM -> C 000 113 267 OR A /TEST A15
007 204 043 INX HL /BUMP THE LOAD ADDRESS 000 114 362 160 000 JFS IOPB /DOESN'T HAVE AN ACR
007 205 035 DCE /DONE UITH THIS BLOCK YET ? 000 117 076 006 LAI 6
007 206 302 172 007 JFZ DATA /NOPE - GET MORE DATA BYTES 000 121 062 143 006 STA CHIN+1
007 211 315 270 007 CKSM, CAL RDIN /DONE UITH BLOCK, GET CHECKSUM -> A 000 124 062 130 006 STA PNOV+1
007 214 271 CP C /DOES IT MATCH CALCULATED VALUE ? 000 127 074 INA
007 215 312 140 007 JTZ READ /YUP - LOOK FOR ANOTHER BLOCK 000 130 062 152 006 STA CIDP+1
007 220 076 103 LAI "C /NOPE - GIVE CHECKSUM ERROR 000 133 062 140 006 STA CODP+1
007 222 001 DSS 1 /SETUP A BOGUS LXI BC INSTRUCTION 000 136 076 302 LAI 302
007 223 076 115 MERR, LAI "M 000 140 062 146 006 STA CIA
007 225 323 001 ERR, OUT 1 000 143 062 133 006 STA COA
007 227 323 010 OUT 10 000 146 076 001 LAI 1
007 231 323 021 OUT 21 000 150 062 145 006 STA CIRM+1
007 233 323 023 OUT 23 000 153 076 200 LAI 200
007 235 062 377 007 STA PGE 377 000 155 062 132 006 STA CORM+1
007 240 303 225 007 JMP ERR /LOOP FOREVER 000 160 333 377 IOPB, INP 377
000 162 346 100 NDI 100 /TEST A14
/THIS SUBROUTINE GETS TUO BYTES FROM TAPE INTO HL. 000 164 312 235 000 JTZ IOPC /DOESN'T HAVE SIOA, B, OR C
000 167 257 XR A
007 243 315 270 007 ADIN, CAL RDIN /GET FIRST BYTE 000 170 062 135 005 STA TRDY+1
007 246 157 LL A /MOVE IT INTO -> L 000 173 062 042 000 STA DEVQ+1
007 247 315 270 007 CAL RDIN /GET SECOND BYTE 000 176 074 INA
007 252 147 LH A /MOVE IT INTO -> H 000 177 062 126 005 STA TIDP+1
007 253 311 RET 000 202 076 040 LAI 40
000 204 062 137 005 STA TIRM+1
/COMES HERE UHEN EOT CHR IS FOUND. IF A 100 BYTE FOLLOUS 000 207 062 113 005 STA TODP+1
/THE EOT, THE NEXT TUO BYTES ARE TAKEN TO BE A START ADDRESS 000 212 076 002 LAI 2
/CONTROL IS TRANSFERRED TO THIS ADDRESS. IF NO 100 BYTE IS 000 214 062 044 000 STA TORM+1
/FOUND, UE ENTER AN INFINITE LOOP. 000 217 076 312 LAI 312
000 221 062 122 005 STA TIA
007 254 315 270 007 GOTO, CAL RDIN /GET A CHR FROM TAPE 000 224 062 106 005 STA DEVP
007 257 376 100 CPI 100 /IS IT A 100 (OCTAL) 000 227 076 310 LAI 310
007 261 302 261 007 FORE, JFZ FORE /NOPE - JUMP HERE FOREVER 000 231 062 163 005 STA TIB
007 264 315 243 007 CAL ADIN /START ADDRESS -> HL 000 234 311 RET
007 267 351 PC< HL /INDIRECT JUMP TO START ADDRESS 000 235 333 377 IOPC, INP 377
000 237 346 040 NDI 40 /TEST A13
/THIS SUBROUTINE FETCHES A CHR FROM THE INPUT DEVICE. 000 241 312 307 000 JTZ IOPD /DOESN'T HAVE AN 88-PIO
/THE CHR IS RETURNED IN THE A REG. MUNCHES A & PSU. 000 244 257 XR A
000 245 062 135 005 STA TRDY+1
007 270 333 005 RDIN, INP 5 /INPU' ' READY STATUS -> A 000 250 062 042 000 STA DEVQ+1
007 272 346 001 POK1, NDI 1 /MASK OFF UNNECESSARY BITS 000 253 074 INA
007 274 312 270 007 JTZ RDIN /JUMP IF NOT READY, KEEP TRYING 000 254 062 126 005 STA TIDP+1
007 277 333 004 P0K2, INP 4 /IT'S READY - GET THE DATA -> A 000 257 062 044 000 STA TORM+1
007 301 311 RET 000 262 062 113 005 SfA TODP+1
302 007 LLOC=. /SAVE ADDRESS OF LAST BYTE USED 000 265 074 INA
000 266 062 137 005 STA TIRM+1
007 302 357 ICN2, MSGP /CONTINUE SIGN ON MESSAGE 000 271 076 312 LAI 312
007 303 040 DSS “ , "V, " , , "1, "6, 15, 212 000 273 062 122 005 STA TIA
007 304 126 000 276 062 106 005 STA DEVP
007 303 040 000 301 076 310 LAI 310
007 306 056 000 303 062 163 005 STA TIB
007 307 061 000 306 311 RET
007 310 066 000 307 333 377 IOPD, INP 377
007 311 015 000 311 346 177 NDI 177 /ALL LOU ? (A15 DON'T CARE)
007 312 212 000 313 302 362 000 JFZ IOPE /DOESN'T HAVE SIOA, B, OR C NOT
007 313 052 377 004 LDHL SPRS 000 316 257 XR A
007 316 353 DEOHL /LAST LOC -> DE 000 317 062 135 005 STA TRDY+1
007 317 052 256 004 LDHL BOTX /FIRST -> HL 000 322 062 042 000 STA DEVQ+1
007 322 173 LA E /DIFFERENCE -> HL 000 325 074 INA
007 323 225 SU L 000 326 062 137 005 STA TIRM+1
007 324 157 LL A 000 331 062 126 005 STA TIDP+1
007 325 172 LA D 000 334 062 113 005 STA TODP+1
007 326 234 SB H 000 337 076 200 LAI 200
007 327 147 LH A 000 341 062 044 000 STA TORM+1
007 330 315 066 004 CAL NOSP /PRINT DIFFERENCE 000 344 076 300 LAI 300
007 333 357 MSGP /PRINT "BYTES FREE" 000 346 062 163 005 STA TIB
007 334 102 DSS “B, "Y, "E, "S, ” , "F, "R, "E, "E+200 000 351 076 302 LAI 302
007 335 131 000 353 062 122 005 STA TIA
007 336 124 000 356 062 106 005 STA DEVP
007 337 105 000 361 311 RET
007 340 123 000 362 333 377 IOPE, INP 377
007 341 040 000 364 346 001 NDI 1 /TEST AS
007 342 106 000 366 310 RTZ /DOESN'T UANT CUSTOM
007 343 122 000 367 041 050 000 LXI HL CUST /START OF CUSTOM SAVE AREA
007 344 105 000 372 176 LA M
007 345 305 000 373 062 135 005 STA TRDY+1
007 346 307 RST /RESET STACK AND ENTER 000 376 043 INX HL
000 377 176 LA M
/THIS IS THE ROUTINE USED TO PUNCH MEMORY IN BOOTSTRAP FMT. 001 000 062 137 005 STA TIRM+1
001 003 043 INX HL
000 011 ♦PGE+0512 001 004 176 LA M
011 061 000 012 LXI SP .+0256 001 005 062 122 005 STA TIA
011 003 006 377 LBI 377 /SEND 255 LEADER CHRS 001 010 075 DCA
011 005 076 302 LAI LLOC /LEADER CHR -> A 001 011 075 DCA
011 007 315 126 006 CAL PNOU /SEND A CHR OF LEADER 001 012 062 163 005 STA TIB
01 1 812 005 DCB /DONE UITH LEADER YET ? 001 015 043 INX HL
011 013 302 005 011 JFZ MAKS /NOPE - SEND SOME MORE 001 016 176 LA M
011 016 041 301 007 LXI HL LLOC-1 /HIGHEST ADR TO SENT -> HL 001 017 062 126 005 STA TIDP+1
011 021 176 LA M /GET A CHR TO PUNCH -> A 001 022 043 INX HL
011 022 315 126 006 CAL PNOU /PUNCH IT 001 023 176 LA M
011 025 055 DCL /PUNCHED IT ALL YET ? 001 024 062 042 000 STA DEVQ+1
011 026 302 021 011 JFZ MAKT /NOPE - KEEP SENDING 001 027 043 INX HL
011 031 176 LA M /SEND LAST CHR 001 030 176 LA M
011 032 315 126 006 CAL PNOU 001 031 062 044 000 STA TORM+1
011 303 000 374 JMF '374 /ALL DONE , BACK TO MONITOR 001 034 043 INX HL
% 001 035 176 LA M
001 036 062 106 005 STA DEVP
001 041 043 INX HL
001 042 176 LA M
/THIS SECTION OF CODE IS THE I/O POKE SECTION. 001 043 062 113 005 STA TODP+1
/IT IS READ IN BY THE BINARY LOADER AFTER THE I/O 001 046 043 INX HL
/SECTION OF CASUAL. THIS ROUTINE READS THE FRONT PANEL 001 047 176 LA M
/SENSE SUITHCES AND POKES THE I/O FOR SOME MITS I/O 001 050 062 143 006 STA CHIN+1
/BOARDS. THE SUITCHES MEAN THIS UHEN THEY ARE UP: 001 053 043 INX HL
Nov./Dec., 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 31
328
001 054 176 LA M
001 055 062 145 006 STA CIRM+1
001 060 043 I NX HL
001 061 176 LA M ACTIVE LOW by Mark Space
001 062 062 146 006 STA CIA
001 065 043 I NX HL
001 066 176 LA II
001 06? 062 152 006 STA CIDF+1
001 072 043 I NX HL Some signals on a microcomputer’s bus are normally low and
001 073 176 LA M
001 074 062 130 006 STA PNOV+1 go high when they are meaningful. These are called “active high”.
001 077 043 I NX HL
001 100 176 LA M
Some lines are just the opposite and they are called “active low”.
001
001
101
104
062
043
132 006 STA CORM+1
I NX HL
The commonly accepted notation for an active low line is to
001 105 176 LA II put a bar “ over the line’s name, for example: STB. Now,
001 106 062 133 006 STA COA
001 111 043 I NX HL when this is read you say “not strobe” or sometimes “bar strobe.”
001 112 176 LA tl
001 113 062 140 006 STA CODP+1 With this in mind then we thought that the following active
001 116 052 070 000 LDHL OSLO
001 121 042 200 005 STHL OSPK+3
low signals might be useful additions to a microcomputer’s bus
001 124 311 RET structure.
/FUN¬ CONTROL SIOA SIOA -PIO 4PI0 MNEU- This signal is present during the hours of 2:00 and
CTION LOGIC REVO MONIC 9:00 a.m.
,'TIRP TRDY + This line goes low when you leave the house—useful
/TIRM TIRM+ ._ in intelligent security systems.
/TIA TIA
-2 Tl
NOW Present when interrupts are disabled.
/TI DP TIDP+1 IN This line goes low when the system is out for lunch.
/TORP DEVQ+1
/TOA BE VP
NOT This form of interrupt is acknowledged by the
/TODP TODP+1 __ "Who's There?" line.
/CIRP CHIN+1
/Cl RM CIRM+1
HOL This signal is present when a ram board goes out in
/CIA CIA the middle of your memory map.
/CIDP CIDP+1
PNO1
FT Signifies that your jump went the wrong way.
/CORP
/CORM 200 CORM+1 MINE In a polled interrupt system all devices not request-
/COA 302 _ ing service must pull this line low.
/CODP
T This line goes low when certain combinations of
/FUNCTION KEY:
ASCII data appear, usually in groups of four. Also
/FIRST LETTER: used in some systems in response to certain types of
/T= TERMINAL __ graphic images. _
/C= CASSETTE
NCE Interchanged in some systems with T.
/SECOND LETTER: KDNG Data is valid now.
/I= INPUT
/0= OUTPUT TNITE This signal is issued when the system has a headache.
ENF This line goes low if the second byte of the op code
/LAST TWO LETTERS:
/RP= READY PORT is missing or in some systems this may signify that
/RM= READY MASK _ all available memory has been used.
/A= ACITVE, HIGH OR LOU
/DP= DATA PORT
BZI Issued to DMA devices to let them know they can
_____ have the bus.
TRYN_ This signal is only present during NOP's.
/IF YOU ARE USING AN I/O BOARD NOT SUPPORTED BY CASUAL,
/IT IS BEST TO USE THE CUSTOM I/O PROCEDURE. AFTER LOADINC 2B or 2B There is much debate over whether or not this line
/THE BOOTSTRAP, LOAD THE CUSTOM I/O TABLE <SEE BELQU>. __ should be 2B or 2B, but that is the question.
/SET SUITCH AS UP, THE REST DOUN, AND EXECUTE THE BOOT
/AS USUAL. ALWD Issued in response to an illegal op code or in some
systems it is ALOUD meaning "turn the TTY off;
/LOCATION CONTENTS
/050 TIRF
_video display only".
/051 TIRM NTRSTD Issued by Selectrics usually in conjunction with the
/052 TIA
/053 TIDP
MYTYPE signal.
/054 TORP ON The switch is off.
/055 TORM
MEAD Processor's response to the programmer who jumps
/056 TOA
/057 TODP to the second byte of the op code.
/06O CIRP LIT Signal goes low when all the LED's on the front pan
/061 CIRM
/062 CIA panel are out.
/063 CIDP ME In a multi-processing environment the control pro¬
/064 CORP
/065 CORM cessor polls the slave processors asking who put that
/066 COA data into the common memory and all processors
/067 CODF
/070 OS ADDRESS LOU that didn’t will issue this signal.
/071 OS ADDRESS HIGH UP This line goes low when the system is crashed.
/
000 007 PGE='7
HERE In Z-80 systems this line goes low during each cycle
050 000 CUST=50 of a block search when the data is not found. (In
175 005 OSPK= 175
070 000 OSLO=70
_ some systems this is the FND line).
134 005 TRDY=' 134 BYNIT Invalid or spurious data.
136 005 TIRM=' 136 BAD During each cycle of a ram test this line will.nor-
122 005 TIA='5 122
163 005 TIB='5 163 _ mally be low unless a location is faulty.
125 005 TIDP='5 125
041 000 DEVQ='0 41
GLTY Response to the "How do you plead" line. Also
043 000 TORM='0 43 low on computers owned by hobbyists who dis¬
106 005 DEVP='5 106
agree with BUI Gates.
112 005 TODP='5 112
142 006 CHIN='6 142 THERE Signifies that the TTY connector has come undone.
144 006 CIRM='6 144 BIT This signal is present when a hobbyist doesn't have
146 006 CIA='6 146
151 006 CIDP='6 151 _ his own computer yet.
12? 006 PNOV='6 127 FNI Issued in response to most of the foregoing lines.
131 006 CORM='6 131
133 006 COA='6 133
137 006 CODP='6 137
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:
USED.
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.
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
Nov./Dec., 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 33
330
NIBL -- Tiny Basic
for National’s SC/MP Kit
complete documentation & annotated source code
by Mark Alexander, National Semiconductor Corp. gram. Another 2K bytes of memory may be added to fill up this 4K
Nov. 29,1976 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
Introduction storing programs. NIBL programs in the seven pages are edited sepa¬
NIBL (National Industrial Basic Language) is a machine- rately, but may be linked together during program execution by special
NIBL statements described below. The first page, mentioned above,
oriented programming language for the SC/MP. It is a lan¬ must be RAM since the interpreter uses part of it as temporary storage;
guage similar to Tiny BASIC, but it also has some unique the part used to store programs starts at location 111 E (base 16).
features. Many of these features, such as a genuinely useful 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
control structure (the PASCAL-influenced DO/UNTIL) and special page: it can contain a NIBL program to be executed immediate¬
the indirect operator (“@”) have been added to the language ly upon powering up the NIBL system.
to allow NIBL to be nearly as flexible as machine language The memory organization of NIBL is shown in Figure 1.
Throughout this article, the assumption is made that the user has a
in such applications as medium-speed process control.
teletype with paper tape reader and punch, as with the SC/MP Low
By using NIBL, one trades the high execution speed and Cost Development System. In fact, NIBL was designed to use the
low memory consumption of machine language for some very LCDS teletype interface, but to be completely independent of the LCDS
tangible advantages: Program readability, modifiability, and 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
reliability, which are truly difficult to achieve in machine lan¬
being operated directly by the SC/MP. At present, paper tape is the
guage programs. only medium for saving NIBL programs, but as soon as the hardware
NIBL programs are interpreted by a large (4K byte) SC/MP and software for a SC/MP cassette interface become availalbe, NIBL
program that resides in ROM. The interpreter is broken into will be able to link to routines for saving and loading programs with
ease.
two blocks: a program written in an Intermediate (or Interpre¬
Since the teletype interface is not based on a UART, the terminal
tive) Language — I. L. for short — which does the actual inter¬ baud rate can only be changed by modifying the timed delays in NIBL's
pretation; and a collection of SC/MP machine language sub¬ I/O routines. NIBL has been run successfully at 1200 baud with a
routines invoked by the I. L. program. The I.L. approach is CRT terminal; the listing of the program in the Appendix is for a 110
baud system.
well-documented in Vol. 1, No. 1 of Dr. Dobb’s Journal of
Communicating with NIBL
Computer Calisthenics & Orthodontia, and readers should
When the NIBL system is ready to accept input, it prompts at the
refer to that issue for a more detailed description of the inter¬ teletype with a ">" sign. (NlBL is now in "edit mode".) The user
pretation process. then enters a line terminated by a carriage return. There are several
In Table 1, the formal grammar for NIBL is given. This is special characters that are used to edit lines as they are typed:
the ultimate authority (other than the interpreter itself) on Shift/0 (back arrow) cuases the last character typed to be deleted.
Control/U (echoes as " U") causes the entire line to be deleted;
how legal NIBL statements are formed. The following descrip¬ NIBL reprompts for a new line.
tions of the NIBL statements will refer to portions of the gram¬ Entering a line to NIBL without a leading line number causes the
mar. Table 2 contains a list of the error message produced by line to be executed directly by NIBL. Most NIBL statements, as well
the NIBL system. Finally, a listing of the interpreter is given as the four program control commands, may be executed in this
manner.
in the Appendix. 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
History of NIBL the value of the pseudo-variable PAGE is valid, so that the line isn't lost
NIBL came into this world as an interpreter for Tiny BASIC, into non-existent memory.) The NIBL editor sorts the program lines
as originally described in the first issue of Dr. Dobb’s Journal. as they are entered into ascending order by line number.
Typing a line number followed by a carriage return deletes that line
That program was written by Steve Leininger, who subsequent¬
from the program. Typing a line with the same number as an existing
ly left before the program was ever assembled or executed. line's causes the new line to replace the old one in the program.
The current version of NIBL is an almost complete re-write of Each of the seven memory pages may contain a different program,
the original interpreter, with changes and additions being made separate from the rest. Editing the program in one page will not
affect the other pages. To switch editing from one page to another,
to improve the modularity of the program, to greatly increase
simply type PAGE = n, where n is the number of the new page.
execution speed, and to extend the capabilities of the language
itself. Variables
There are twenty-six variable names in NIBL: the letters A
The program was developed on the PACE Disk Operating
through Z. They are all 1 6-bit binary variables, so they can be used
System, and was assembled by a PACE-resident cross-assembler to hold addresses as well as signed numeric data. The variables are
for the SC/MP. already pre-declared for the user, and space is allocated for them
in RAM when NIBL powers up.
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 Constants
well in RAM). The interpreter requires at least 2K bytes of RAM NIBL allows either decimal or hexadecimal (base 16) constants to
starting at address 1000 (base 1 6), of which the interpreter uses nearly appear in expressions. Decimal constants must lie in the range 0
300 bytes for stacks, variables, etc., leaving the rest for the user's pro¬
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 makes more sense).
values. The value —32768 is a valid Nl BL integer, but it is not legal as
Logical Operators
it stands. To represent it, use —32767—1 or #8000 instead.
In NIBL, there are three logical operations that may be performed
Hexadecimal constants are denoted by a pound sign ("#”) followed
on values: AND, OR, and NOT. The first two are binary operators, and
by a string of hexadecimal digits (0-9, A-F). Nl BL does not check for
the latter is unary. All three perform bitwise logical operations on
overrun in hex constants; consequently, only the 4 least significant
16-bit arguments, producing 16-bit results. AN D, OR, and NOT are
digits of the nex digit string are kept.
sufficient to simulate any other logical operation, through various
combinations of the operators.
Functions
NIBL provides three built-in functions that may appear in any ex¬
pression. These are described as follows: The Indirect Operator
RND (X, Y) returns a pseudo-random integer in the range X through The indirect operator realizes the functions of PEEK and POKE
T, inclusive, where X and Y are arbitrary expressions. operations in other BASICS, but with somewhat more elegance. The
T, inclusive, where X and Y are arbitrary expressions. In order for the sign followed by an address (whcih can be a constant, variable, or
function to work properly, the value of Y — X should be positive and expression in parentheses) denotes the contents of that address in
no greater than 32767. memory. Thus, if memory location 245 (decimal) contains 60, the
MOD (X, Y) returns the absolute value of the remainder from X statement X = @245 would result in the value 60 being assigned to X.
divided by Y (where X and Y are expressions). The indirect operator may also appear on the left side of an assignment
TOP (with no arguments) returns the address of the first free statement. For example, @X=@(Y+10) would result in the memory
byte in the memory page currently being edited or executed. In other location pointed to by X being assigned the value of the memory loca¬
words, it is the address of the top of the NIBL program in the current tion pointed to by the value Y+10.
page, plus one. Despite this, it is still safest to use plenty of parentheses in expres¬
sions to make the intent clear.
Pseudo-variables Use of the indirect operator is not limited to reading from or
NIBL has two pseudo-variables in addition to the standard varia¬ writing to memory: it also provides a simple way to communicate
bles. These are STAT and PAGE. Both of these varialbes may appear with peripheral devices that are interfaced to the SC/MP through
on either side of an assignment statement. memory addresses. Note that the "@" operator can only access
STAT represents the SC/MP status register. The current value of memory one byte at a time, and that when an assignment is made
the status register can be referred to by using STAT in an expression; to a memory location, only the low order byte of the value is
or an assignment may be made to the status register by executing a moved to the location; the high order byte is ignored.
statement such as STAT = 4 or STAT = STAT OR #20. When NIBL The indirect operator can also be used to simulate arrays in
makes an assignment to the status register in this manner, it clears the NIBL. For example, if we wish to define an M x N matrix of one-
interrupt-enable bit of the value before it is actually assigned. Note byte positive integers, we can access the (I ,J)th element of the
also that only the lower byte of the value is assigned; the high byte matrix (assuming that (0,0) is a legal element in the matrix) with
is ignored. the expression @(A+I*N+J). An assignment could be made to that
The carry and overflow bits in STAT are meaningless since the same element by placing the expression on the left side of an assign¬
Nl BL system is continually modifying them. The utility of STAT ment statement.
lies in the fact that 5 of its bits are connected to I/O sense lines on Expressions
the SC/MP chip. Expressions in NIBL are made up of the components described
The pseudo-variable PAGE contains the number of the memory above: variables, constants, function references, pseudo-variables,
page currently being executed or edited. As indicated in Figure 1, and operators binding them all together. NIBL expressions are all
there are seven pages in which NIBL programs may be stored; therefore, 16-bit integers. Evaluation of expressions takes place left-to-right,
PAGE may lie only in the range 1 through 7. If an assignment of a and the order in which operations take place is determined by
value outside this range is made to PAGE, only the 3 least significant operator precedence and the presence of parentheses. The order of
bits of the value are used — and zero is automatically changed to one. evaluation can be deduced from the grammar in Table 1; here is a
If PAGE is modified while Nl BL is in edit mode, all subsequent table of operator precedence:
editing will take place in the new page.
If PAGE is modified by a NIBL program during execution, con¬ Lowest precedence (applied last): <, >, <=, >=, =,
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 = +,-, OR
6 or PAGE = PAGE + 1. Thus, several NIBL programs residing in *, /, AND
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 Highest precedence (applied first): @, NOT
in NIBL, a Herculean and indeed foolish task.
Control may also be transferred from one page to another by Program Control Commands
three other statements: RETURN, NEXT, and UNTIL. Thus, the LIST causes the entire program in the current page to be listed.
first part of a subroutine or loop may be in one page, and the second Listing can be halted by hitting any key on the teletype: the BREAK
part may be in another (with control being transferred between the key works best.
two parts by an assignment to PAGE). In these three special cases, LIST <number >causes listing to begin at the given line number (or
NIBL automatically updates the value of PAGE as the statements are the nearest one greater than the number), rather than at the first line.
executed. 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
Relational Operators and hit carriage return. After the program is dumped, type a Shift/0
NIBL provides the standard BASIC relational operators, for com¬ with teletype on LOCAL so that the last character (a " >") will be de¬
paring the values of integer expressions. The operators are as follows: leted when the tape is entered to NIBL at a later time. Nl BL will ac¬
= equal to cept a tape made in this fashion at any time during edit mode. The
<= less than or equal to tape reader is enabled at all times by Nl BL, and it does not distinguish
>= greater than or equal to between the reader and the keyboard when accepting input. Super¬
<> not equal to fluous line-feed and null characters on the tape are echoed but ignored.
< less than RUN causes three actions: first, all variables are zeroed; secondly,
> greater than all stakes (the FOR, DO, and GOSUB stacks) are cleared; and finally
the program in the current page is executed, starting with the first
All of these operators produce 1 as a result if the relation is true, and line in sequence.
0 if the relation is false. Note that the relational operators may appear RUN is not the only way to start program execution: GOTO and
anywhere that an expression is called for in the NIBL grammar, not GOSUB can slo be used to jump into a program from edit mode. For
only in IF statements. example, if there is a subroutine at line 1000 that is being tested,
Arithmetic Operators typing GOSUB 1000 will cause that routine to be executed, with
NIBL provides the four standard arithmetic functions: addition (+), Nl BL returning to edit mode upon encourntering a RETURN state¬
subtraction or unary minus (—), multiplication (*), and division (/). ment. When GOTO and GOSUB are used to run a program, the varia¬
Since only integers are allowed in NIBL, all quotients are truncated (the bles and stacks are not cleared.
MOD function can be used to obtain remainders from division). Any Hitting any key while a program is being run will cause Nl BL to
overflow or underflow (other than division by zero) is ignored by NIBL; break execution, printing a message and the line number where the
the reasoning behind this is that it may often be necessary to treat break was detected. The BREAK key on the teletype works best for
NIBL expressions as unsigned values, such as when performing calcula¬ this.
tions using memory addresses as the operands. Thus the value of CLEAR causes all variables to be zeroed and the three stacks men¬
32767 + 1 is —32768 (or in hexadecimal, #7FFF + 1 = #8000, which 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 mally out of a DO loop and transfer to some appropriate line, it could
GOSUBS are nested more than eight levels deep). be done in the following manner:
NEW clears the programs in Page 1, and changes the value of PAGE UNTIL 1: GOTO X
to 1. This is the form of the command most likely to be used by Nl BL where X is the line number.
novices who do not wish to be confused by the page selection features Neither the DO nor the UNTI L statement may be executed in edit
of NIBL. NEW should be the first thing one types in to NIBL when mode.
first powering up.
NEW <number >sets the value of PAGE to the <number>, and FOR AND NEXT STATEMENTS
clears the program in that page. The NIBL FOR statement is virtually identical to that in standard
BASICs; consequently, it is not explained in great detail here.
Assignment Statements As in most BASICs, both positive and negative STEPs are allowed in
Already, two different types of assignment statements have been the FOR statement, and a STEP of +1 is assumed if the STEP portion of
mentioned: assignments to the pseudo-variables STAT and PAGE, and the statement is omitted. A FOR loop is terminated by a NEXT Vari¬
assignments to memory locations with the indirect operator. Another able > statement, and the Variable > must be the same as that referred
form of the assignment statement is the conventional assignment to a to in the FOR statement at the beginning of the loop.
variable (A - Z), e.g. A=A + ! or A = 32 <((4 * I). There are also EOR loops may be nested four levels deep; NIBL reports an error if
statements which look like string assignments, but there are not this limit is exceeded, or if a NEXT statement occurs without a previous
standard BASIC, and are described later in the section on string han¬ FOR statement. As with the DO and UNTI L statements, FOR and NEXT
may not be executed in edit mode.
dling. The word "LET" is optional in front of any assignment state¬
ment (leaving it out increases execution speed, unlike most Tiny Perhaps the only differences between the NIBL FOR statement and
BASIC systems). 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
If/then Statement
variable before the test is made to determine if the loop should be
The I F statements allows conditional execution of one or more repeated (rather than after the test).
statements (as many as can fit on one line). The syntax for the I F
statement is: INPUT STATEMENT
'I F' Rel-exp 'THEN'? Statement
There are two types of INPUT statements in NIBL: numeric input
which indicates that the word THEN is optional, and that any
statement (including another IF statement) may follow the and string input. The form of the first type is 'INPUT' followed by a
conditional expression. If the IF condition is true (i.e. is non¬ list of one or more variables. When this statement is executed, NIBL
zero), the statement following it (and any others on the line) will prompts at the teletype with a question mark ("?"). The user responds
be executed; otherwise, control immediately transfers to the next with a list of expressions separated by commas, and terminated by a
program line. The condition does not need to contain relational carriage return. For example, a legal response to the statement INPUT
operators: a statement such as I F MOD (A,5) THEN.... is per¬ A,B,C would be #3FA,26,4*27. These three expressions would then be
fectly legal. In this example, the statement following the THEN
assigned to the variables A, B, and C, respectively. An illegal response
would be executed if A were not divisible by 5.
(too few arguments or improper expressions) will result in a syntax
error. Any extra arguments in the response are ignored.
GOTO, GOSUB, AND RETURN STATEMENTS The second type of INPUT statement allows strings to be input.
The syntax for the GOTO statement is 'GOTO' followed by an The form of the statement is 'INPUT' '$' <address>, where
expression. The effect of the GOTO statement is to transfer control to <address> is a Factor, syntactically (usually a variable, constant, or
the line whose number is indicated by the expression. An error occurs expression in parentheses). When this statement is executed, NIBL
if the specified line does not exist in the current page. Unlike standard prompts the user as before, at which point the user enters a line termin¬
BASICS, any arbitrary expression can be used to specify the line number, ated by the usual carriage return. NIBL then stores the line in memory
as well as the usual decimal constant. This allows computed branches to in consecutive locations, beginning at the address specified. Thus,
be performed with the same effect as the ON . . . GOTO statement in INPUT$ #6000 would cause the input line to be stored starting at
standard BASIC. location 6000 (base 16); the carriage return would also be stored at
The GOSUB statement is identical to the GOTO statement in form. the end of the line.
It too causes a branch to a new line, but it also saves the address of the Strings input in this manner can be tested and manipulated by
following statement on a stack. When a RETURN statement is executed, using the "(s?" operator or the string handling statements described
the saved address is popped from the stack, and control returns to that below. They can also be displayed by a PRINT statement.
point in the program. Since an actual address, not a line number, is Neither of the two INPUT statements may be executed in edit
saved on the GOSUB stack, GOSUB statements may appear anywhere mode.
on a multiple-statement line.
GOSUBs may be nested up to eight levels deep; an error will occur PRINT STATEMENT
if an attempt is made to exceed this limit. The error condition does not The form of the PRINT statement is 'PRINT' or 'PR' followed by a
destroy the previous contents of the stack, so a RETURN statement list of print items separated by commas, and optionally terminated by
can be executed (even in edit mode) without an error occurring. How¬ a semicolon, which suppresses an otherwise automatic carriage return
ever, any modification of the NIBL program will clear the GOSUB after all items in the list are printed.
stack, so that a subsequent RETURN without a GOSUB will cause an A print item consists of one of the following:
error. 1. A quoted string, which is printed exactly as it appears (with the
quotes removed)
DO AND UNTI L STATEMENTS 2. An expression, which is evaluated and printed in decimal format,
The DO and UNTI L statements are useful in writing program loops with either a leading space or a minus sign ("-"), and one
efficiently, without using misleading GOTO statements. Enclosing a trailing space
group of zero or more statements between a DO statement and an 3. A reference to a string in memory, denoted by '$' < address> ,
UNTIL <condition> statement (where <condition> is an arbitrary where <address> is a Factor as usual. Successive memory loca¬
expression) will cause the statement group to be repeated one or more tions, starting at the specified address, are printed as ASCII char¬
times until the < condition > becomes true (i.e., non-zero). As an acters, until a carriage return (which is not printed) is encountered.
example of the use of the DO and UNTI L statements, we present a
There is no zone spacing in the PRINT statement, nor does NIBL
program that prints the prime numbers:
perform an automatic carriage return/line feed after printing 72 char¬
10PRINT 1: PRINT 2
acters. NIBL is not an output-oriented language; fancy formatting has
20 1=3
been sacrificed for more useful control structures and data manipula¬
30 DO
tion features. (A subroutine to print a number and skip to the next print
40 J=l/2: N=2
zone is trivial to write in NIBL — it takes about two lines of code, with
50 DO
the DO/UNTI L and FOR/NEXT.)
60 N=N+2
70 UNTIL (MOD(I,N=0) OR (N>J)
STRING HANDLING STATEMENTS
80 IF N > J PRI NT I
String handling in NIBL is very minimal and low-level. The string
90 1=1+2
handling features of the INPUT and PRINT statements have already
100 UNTIL 0
been mentioned; NIBL provides two more statements for manipulating
DO loops may be nested up to eight levels deep, and NIBL acts in strings.
the same manner if an overflow occurs as it does with a GOSUB over¬ A statement such as $<address> = "THIS IS A STRING" would
flow. NIBL also reports an error if an UNTIL statements occurs without cause the quoted string to be stored in memory starting at the specified
a previous DO. A single DO loop may have more than one UNTI L address (which again is a Factor), with a carriage return being appended
statement as a terminator. For example, if one wished to exit abnor¬ 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 BIOGRAPHICAL NOTE
memory once they have been created. The form of this statement is Mark Alexander, a graduate of the University of California, Santa
'$' <destination> '=' '$' <source>, where both <destination> and Cruz, is getting bored with assembly language programming, and wishes
<source> are Factors, and are the addresses of strings in memory. This someone would save him by making a microprocessor copy of the
statement causes all the characters in the string pointed to by <source> Burroughs B5500 computer.
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 TABLE 1: NIBL Grammar
wiping out the entire contents of the current page. Consequently, a
string move can be aborted by hitting the BREAK key on the teletype On reading the grammar:
(but it must be done quickly!). All items in single quotes are actual symbols in NIBL; all other
identities are symbols in the grammar. The equals sign "=", means
Note that all strings referred to in these statements, and in the IN¬
"is defined as"; parentheses are used to group several items together
PUT and PRINT statements, are assumed to lie within a 4K page, and
as one item; the exclamation point, "I", means an exclusive-or choice
wraparound is a possibility which must be anticipated by the program¬
between the items on either side of it; the asterisk, means zero
mer. (Long-time SC/MP programmers will be familiar with this minor
problem.) or more occurrences of the item to its left; the plus sign, means
one or more repetitions; the question mark, "?", means zero or one
Using these statements, it should be very easy to develop a set of
Nl BL subroutines for performing concatenation, comparison, and sub¬ occurrences; and the semicolon, marks the end of a definition.
string operations on strings.
NIBL-Line = Immediate-Statement
1 Program-Line
END STATEMENT
The END statement may appear anywhere in a Nl BL program and
Immediate-Statement (Command 1 Statement) Carriage-Return;
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 Program-Line = (Decimal-Number Statement-List Carriage-Return);
statement is useful when debugging programs, since it acts as a break¬
Command * 'NEW'
point in the program that can be removed easily. ! 'CLEAR'
l 'LIST' Decimal-Number ?
LINK STATEMENT I 'RUN'
The LINK statement allows NIBL programs to call SC/MP machine
language routines at any address. A statement of the form 'LINK' Statement-List = Statement (':' STATEMENT) *;
<address>, where <address> is an arbitrary expression, will cause
the NIBL system to call the routine at that address by executing an Statement = 'LET' ? Left-part '=' Rel-Exp
l 'LET' ? '$' Factor '=' (String I Factor)
appropriate XPPC P3 instruction. The user's routine should make sure 1 'GO' ('TO' 1 'SUB') Rel-Exp
that it returns by executing another XPPC P3, and that the value of P3 ! 'RETURN'
upon entry to the routine is restored before returning. The routine may ! ('PR' ! 'PRINT') Print-List
! •IF' Rel-Expr 'THEN' ? Statement
make use of the fact that P2 is set by NIBL to point to the beginning of ! 'DO'
the RAM block used to store the variables A through Z, with each 'UNTIL' Rel-Exp
variable being stored low byte first, high byte second. Thus, parameters 1 'FOR' Variable '*' Rel-Exp 'TO' Rel-Exp ('STEP* Rel-Exp) ?
I 'NEXT' variable
may be passed between NIBL programs and machine language routines 1 'INPUT' (Variable + l '$' Factor)
through the variables. Both PI and P2 may be modified by the user's 1 •LINK’ Rel-Exp
I 'REM' Any-Character-Except-Carriage-Return +
routines; they are automatically restored by the NIBL system upon
1 'END'
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 Left-Part - (Variable I '@' Factor 1 'STAT' 1 'PAGE') ;
interpreter. Rel-Exp = Expression Relop Expression
1 Expression
>
REMARK STATEMENT
A comment can be inserted into a NIBL program by preceding it Relop - '<' 1 '<• '-' 1 '<• •>' I '>' 1 '>• 1 ;
with the word REM. REM causes the rest of the line to be ignored by
Expression *= Expression Adding-Operator term
Nl BL during execution. Remarks are useful in debugging programs or 1 ('+' 1 '-') ? Term
helping other people to understand them, but of course, they take up
valuable memory. (Then again, memory is getting cheaper all the time.) Adding-Operator - '+' 1 '-' 1 'OR' ;
When executing programs, NIBL periodically checks for keyboard Print-Item « (String I Rel-exp l Factor) ;
interrupt, returning to edit mode if it detects it. Therefore, if a NIBL
String * ' Almost-Any-Character '"' ;
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 NOTE: Spaces are not usually significant in NIBL programs, with
interrupt while running. This would allow a Nl BL system to act as a the following exceptions: spaces cannot appear within key words
process controller which starts executing immediately upon powering (such as 'THEN' or 'UNTIL') or within constants. Also, a variable
up. (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
Page 38 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Nov./Dec., 1976
TITLE NIBL, NOV. 27' 0055 01 XAE
0001 . LIST 1 0056 C400 CLEAR1: LDI 0 ;SET ALL VARIABLES
0058 CA80 ST EREG < P2) ; TO ZERO
;***************************************************** 005A AAEA ILD TEMP(P2)
; * * 005C 01 XAE
;* WE ARE TIED DOWN TO A LANGUAGE WHICH * 005D C434 LDI
;* MAKES UP IN OBSCURITY WHAT IT LACKS * 005F 60 XRE
;* IN STYLE. * 0060 9CF4 JNZ CLEAR1
;* — TOM STOPPARD * 0062 C450 LDI L(AESTK) ;INITIALIZE SOME STACKS:
0064 CAFD ST LSTK < P2) ; ARITHMETIC STACK,
0066 C47A LDI L(DOSTAK)
0068 CAFF ST DOPTR(P2) ; DO/UNTIL STACK,
0020 TSTBIT = 020 il.L. INSTRUCTION FLAGS 006A C46A LDI L(SBRSTK)
0040 JMPBIT = 040 006C CAFC ST SBRPTR(P2) ; GOSUB STACK,
0080 CALBIT = 080 006E C4A6 LDI L < PCSTAK)
0001 PI = 1 ;SC/MP POINTER ASSIGNMENTS 0070 CAF9 ST PCSTK(P2) i I. L. CALL STACK,
0002 P2 = 2 0072 C48A LDI L(FORSTK)
0003 P3 = 3 0074 CAFE ST FORPTR < P2) ; FOR/NEXT STACK
FF80 EREG = -128 ;THE EXTENSION REGISTER
0000 08 NOP
0001 LDPI P2,VARS POINT P2 AT VARIABLES *************************************
0007 LDPI PI, PGM POINT PI AT PAGE ONE PROGRAM * I. L. 'TEST' INSTRUCTION *
OOOD C4FF LDI -1 STORE -1 AT START OF PROGRAM *************************************
OOOF C900 ST 0(P1)
0011 C901 ST 1(P1) .LOCAL
0013 C40D LDI OD ALSO STORE A DUMMY END-OF-LI 00C5 CAE7 TST: ST CHRNUM(P2> CLEAR NUMBER OF CHARS SCANNE
0015 C9FF ST -1(PI) 00C7 C501 ♦SCAN: LD @1(PI) SLEW OFF SPACES
0017 C402 LDI 2 POINT P2 AT PAGE 2, 00C9 E420 XRI -• *
0019 CAF6 ST PAGE(P2) INITIALLY SET PAGE TO 2 OOCB 98FA JZ ♦SCAN
00IB 31 XPAL PI OOCD C5FF LD @-l(PI) REPOSITION CURSOR
001C C420 LDI 020 OOCF C2FA LD PCHIGH(P2) POINT P3 AT IL TABLE
001E 35 XPAH PI 00D1 37 XPAH P3
00IF B902 DLD 2(PI) CHECK IF THERE IS REALLY 00D2 D40F AN I OF FAIL ADDRESS <- OLD P3
0021 01 XAE A PROGRAM IN PAGE 2: 00D4 CAEC ST FAILHI(P2)
0022 Cl80 LD EREG(PI) IF FIRST LINE LENGTH 00D6 C2FB LD PCLOW(P2)
0024 E40D XRI OD POINTS TO CARR. RETURN 00D8 33 XPAL P3
0026 9802 JZ *0 AT END OF LINE 00D9 CAED ST FAILLO(P2)
0028 BAF6 DLD PAGE < P2) IF NOT, PAGE = 1 OODB C701 ♦LOOP: LD @1(P3)
002A C420 *0: LDI 020 OODD 01 XAE SAVE CHAR FROM TABLE
002C 35 ♦LOOP: XPAH PI CODE BAE7 DLD CHRNUM(P2) DECREMENT CHAR COUNT
002D C4FF LDI -1 STORE -1 IN 2 CONSECUTIVE OOEO 40 LDE GET CHAR BACK
002F C900 ST (PI) LOCATIONS AT START OF PAGE 00E1 D47F AN I 07F SCRUB OFF FLAG (IF ANY)
0031 C901 ST 1(PI) 00E3 E501 XOR @1(PI) IS CHAR EQUAL TO TEXT CHAR?
0033 C40D LDI OD ALSO PUT A DUMMY END-OF-LINE 00E5 9C07 JNZ ♦NEQ NO - END TEST
0035 C9FF ST -1(PI) JUST BEFORE TEXT 00E7 40 LDE YES - BUT IS IT LAST CHAR?
0037 35 XPAH PI UPDATE PI TO POINT TO 00E8 94F1 JP ♦LOOP IF NOT, CONTINUE TO COMPARE
0038 02 CCL NEXT PAGE (UNTIL PAGE=8) OOEA 9090 JMP CHEAT IF SO, GET NEXT I. L.
0039 F410 ADI 010 REPEAT INITIALIZATION OOEC 9088 XO: JMP EXECIL INSTRUCTION
003B E480 XRI 080 FOR PAGES 2-7 OOEE C2E7 ♦NEQ: LD CHRNUM(P2) RESTORE PI TO
003D 9804 JZ *1 OOFO 01 XAE ORIGINAL VALUE
003F E480 XRI 080 OOF1 C580 LD SEREG(Pl)
0041 90E9 JMP *LOOP 00F3 C2ED LD FAILL0(P2) LOAD TEST-FAIL ADDRESS
0043 C400 *1: LDI 0 CLEAR SOME FLAGS OOFS 33 XPAL P3 INTO P3
0045 CAF4 ST RUNMOD(P2) OOF6 C2EC LD FAILHI(P2)
0047 CAF5 ST LISTNG(P2) OOFS 37 XPAH P3
0049 C454 LDI L(BEGIN) INITIALIZE IL PC SO THAT 00F9 90A0 JMP CHEAT1 GET NEXT IL INSTRUCTION
004B CAFB ST PCLOW(P2) NIBL PROGRAM
004D C40C LDI H(BEGIN) IS EXECUTED IMMEDIATELY
004F CAFA ST PCHIGH(P2) ;*************************************
0051 C400 CLEAR: LDI 0 ;* I. L. SUBROUTINE RETURN *
0053 CAEA ST TEMP(P2) i*************************************
Nov./Dec., 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 39
336
OOFB C410 RTN: LDI H(PCSTAK) ; POINT P3 AT I. L. PC STACK THIS ROUTINE IS BASED ON DENNIS ALLISON"S BINARY TO DECIMAL
OOFD 37 XPAH P3 CONVERSION ROUTINE IN VOL. 1, #1 OF "DR. DOBS'-S JOURNAL",
OOFE C2F9 LD PCSTK(P2) BUT IS MUCH MORE OBSCURE BECAUSE OF THE STACK MANIPULATION.
0100 33 XPAL P3
0101 C7FF LD @-l(P3) ;GET HIGH PART OF OLD PC . LOCAL
0103 01 XAE 0197 C410 PRN: LDI H(AESTK) ; POINT P3 AT A. E. STACK
0104 C7FF LD @-l(P3> ;GET LOW PART OF OLD PC 0199 37 XPAH P3
0106 33 XPAL P3 019A AAFD ILD LSTK < P2)
0107 CAF9 ST PCSTK(P2) ; UPDATE IL STACK POINTER 019C AAFD ILD LSTK(P2 >
0109 40 LDE 019E 33 XPAL P3
010A 37 XPAH P3 ;P3 NOW HAS OLD IL PC 019F C40A LDI 10 ;PUT 10 ON STACK <WE"LL BE
01OB 908E ■JMP CHEAT 1 01A1 CBFE ST -2 < P3) ; DIVIDING BY IT LATER)
01OB 904! EGA: JMP EO 01A3 C400 LDI 0
01A5 CBFF ST -1(P3)
01A7 C405 LDI 5 > SET CHRNUM TO POINT TO PLACE
; ************************************* 01A9 CAE7 ST CHRNUM(P2) ; IN STACK WHERE WE STORE
;* . SAVE GOSUB RETURN ADDRESS * 01AB C4FF LDI -1 ; THE CHARACTERS TO PRINT
;************************************* 01AD CB05 ST 5(P3) ;FIRST CHAR IS A FLAG <-l)
01AF C3FD LD -3<P3) ;CHECK IF NUMBER IS NEGATIVE
LD SBRPTR(P2) 01B1 9413 JP *1
0111 E47A XRI L < DOSTAK) ;CHECK FOR MORE 01B3 C42D LDI ;PUT ON STACK, AND NEGATE
0113 981C JZ SAV2 ; THAN 8 SAVES 01B5 CB04 ST 4(P3) ; THE NUMBER
0115 AAFC ILD SBRPTR<P2> 01B7 C400 LDI 0
0117 AAFC ILD SBRPTR<P2) 01B9 03 SCL
0119 33 XPAL P3 ; SET P3 TO 01BA FBFC CAD -4<P3)
011A C410 LDI H< SBRSTK) ; SUBROUTINE STACK TOP. 01BC CBFC ST -4(P3)
OUC 37 XPAH P3 01BE C400 LDI 0
01 ID C2F4 LD RUNMOD(P2) ;IF IMMEDIATE MODE, 01C0 FBFD CAD -3(P3)
01 IF 980A JZ SAV1 ; SAVE NEGATIVE ADDRESS. 01C2 CBFD ST —3(P3)
0121 35 XPAH PI ;SAVE HIGH PORTION 01C4 909F JMP XI GO DO DIVISION BY 10
0122 CBFF ST -1(P3) ; OF CURSOR 01C6 C420 *1: LDI - ' IF POSITIVE, PUT " " ON
0124 35 XPAH PI 01C8 CB04 ST 4(P3) STACK BEFORE DIVISION
0125 31 XPAL PI ;SAVE LOW PORTION 01CA 9099 X4: JMP XI
0126 CBFE ST -2(P3) i OF CURSOR 01CC 9057 E2: JMP ERR1
0128 31 XPAL PI
0129 90C1 JMP XO ;RETURN ; THE DIVISION IS PERFORMED, THEN CONTROL IS TRANSFERRED
012B C4FF SAV1: LDI -1 ;IMMEDIATE MODE ; TO PRN1, WHICH FOLLOWS.
012D CBFF ST —1< P3) ; RETURN ADDRESS IS
012F 90BB JMP XO ; NEGATIVE. 01CE AAFD PRN1: ILD LSTK < P2) ; POINT PI AT A. E. STACK
0131 C40A SAV2: LDI 10 ;ERROR. MORE THAN 01DO AAFD ILD LSTK(P2)
0133 90IB JMP EO ; 8 GOSUBS 01D2 31 XPAL PI
01D3 C410 LDI H(AESTK)
01D5 35 XPAH PI
************************************* 01D6 AAE7 ILD CHRNUM(P2) INCREMENT CHARACTER STACK
* CHECK STATEMENT FINISHED * 01D8 01 XAE POINTER, PUT IN EX. REG.
************************************* 01D9 C101 LD 1<P1> GET REMAINDER FROM DIVIDE,
01DB DC30 ORI "0"
0135 C501 DONE: LD @1(P1) ; SKIP SPACES 01DD C980 ST EREG(Pl) PUT IT ON THE STACK
0137 E420 XRI " " 01DF C1FD LD -3(P1) IS THE QUOTIENT ZERO YET?
0139 98FA JZ DONE 01E1 D9FC OR -4(P1)
013B E42D XRI " " ! OD ;IS IT CARRIAGE RETURN? 01E3 9S0A JZ *PRNT YES - GO PRINT THE NUMBER
013D 9804 JZ D0NE1 ; YES - RETURN 01E5 C40F LDI H(PRNUMl) NO - CHANGE THE I. L. PC
013F E437 XRI 037 i IS CHAR A ": " ? 01E7 CAFA ST PCHIGH < P2) SO THAT DIVIDE IS
0141 9C01 JNZ D0NE2 ; NO - ERROR 01E9 C42F LDI L(PRNUMl) PERFORMED AGAIN
0143 3F D0NE1: XPPC P3 » YES - RETURN 01EB CAFB ST PCLOW(P2)
0144 C404 D0NE2: LDI 4 01ED 90DB JMP X4 GO DO DIVISION BY 10 AGAIN
0146 9008 JMP EO 01EF 4PRNT: LDPI P3,PUTC-1 POINT P3 AT PUTC ROUTINE
01F5 C2F5 LD LISTNG(P2) IF LISTING, SKIP PRINTING
01F7 9C06 JNZ *2 LEADING SPACE
************************************* 01F9 Cl04 LD 4(PI) PRINT EITHER
* RETURN FROM GOSUB * 01FB 3F XPPC P3 OR LEADING SPACE
************************************* 01FC C2E7 LD CHRNUM(P2) GET EX. REG. VALUE BACK
01FE 01 XAE
0148 C2FC RSTR: LD SBRPTR < P2> 01FF C580 $2: LD @EREG(P1) POINT P3 AT FIRST CHAR
014A E46A XRI L(SBRSTK) ; CHECK FOR RETURN 0201 C100 LD (PI) TO BE PRINTED
014C 9C04 JNZ RSTR1 ; W/0 GOSUB. 0203 3F *LOOP: XPPC P3 PRINT THE CHARACTER
014E C409 LDI 9 0204 C5FF LD @-l(Pl) GET NEXT CHARACTER
0150 9043 EO: JMP El ; GOTO ERROR. 0206 94FB JP 4L00P REPEAT UNTIL = -1
0152 BAFC RSTR1: DLD SBRPTR(P2) 0208 C450 LDI L(AESTK)
0154 BAFC DLD SBRPTR<P2) ;POP GOSUB STACK, 020A CAFD ST LSTK< P2) CLEAR THE A. E. STACK
0156 33 XPAL P3 ; PUT PTR INTO P3. 020C C2F5 LD LISTNG(P2) PRINT A TRAILING SPACE
0157 C410 LDI H(SBRSTK) 020E 9CBA JNZ X4 IF NOT LISTING PROGRAM
0159 37 XPAH P3 0210 C420 LDI ' '
015A C301 LD 1 < P3) IF ADDRESS NEGATIVE, 0212 3F XPPC P3
015C 9409 JP RSTR2 SUBROUTINE WAS CALLED 0213 90B5 JMP X4
015E C402 JS P3, FIN IN IMMEDIATE MODE,
0165 9085 XI: JMP XO SO FINISH UP EXECUTING
0167 35 RSTR2: XPAH PI RESTORE CURSOR HIGH i*************************************
0168 C300 LD 0< P3) ;* CARRIAGE RETURN/LINE FEED *
016A 31 XPAL PI RESTORE CURSOR LOW ; *************************************
016B C401 LDI 1 SET RUN MODE
016D CAF4 ST RUNMOD < P2) 0215 NLINE: LDPI P3,PUTC-1 .POINT P3 AT PUTC ROUTINE
016F 90F4 JMP XI 02IB C40D LDI OD ; CARRIAGE RETURN
02ID 3F XPPC P3
02IE C40A LDI OA ;LINE FEED
;************************************* 0220 3F XPPC P3
0221 90A7 X5: JMP X4
;* TRANSFER TO NEW STATEMENT *
;*************************************
0171 C2F2 XFER: LD *************************************
LABLHI(P2) ;CHECK FOR NON-EXISTENT LINE
0173 9404 JP XFER1 * ERROR ROUTINE *
0175 C408 LDI 8
*************************************
0177 901C JMP El
0179 C401 XFER1: LDI 1 ;SET RUN MODE TO 1 . LOCAL
017B CAF4 ST RUNMOD(P2) 0223 C405 ERR: LDI 5 ;SYNTAX ERROR
017D 3F XPPC P3 0225 CAEB ERR1: ST NUM(P2) ;SAVE ERROR #
0227 C2EB ERR2: LD NUM(P2)
0229 CAEA ST TEMP(P2)
■, ************************************* 022B LDPI P3,PUTC-1 ;POINT P3 AT PUTC
;* PRINT STRING IN TEXT * 0231 C40D LDI OD iPRINT CR/LF
;************************************* 0233 3F XPPC P3
0234 C40A LDI OA
017E PRS: LDPI P3,PUTC-1 ; POINT P3 AT PUTC ROUTINE 0236 3F XPPC P3
0184 C501 LD @1<P1) ; LOAD NEXT CHAR 0237 LDPI Pl.MESGS PI -> ERROR MESSAGES
0186 E422 XRI ;IF ", END OF 023D BAEB *1: DLD NUM < P2) IS THIS THE RIGHT MESSAGE?
0188 98DB JZ XI ; STRING 023F 9806 JZ *MSG YES - GO PRINT IT
018A E42F XRI 02F ; IF CR, ERROR 0241 C501 ♦LOOP: LD ei(Pl) NO - SCAN THROUGH TO
018C 9805 JZ PRS1 0243 94FC JP SLOOP NEXT MESSAGE
018E E40D XRI OD ;RESTORE CHAR 0245 90F6 JMP SI
0190 3F XPPC P3 ;PRINT CHAR 0247 C501 LD ei(Pl) GET MESSAGE CHAR
0191 90EB JMP PRS ;GET NEXT CHAR 0249 3F XPPC P3 PRINT IT
0193 C407 PRS1: LDI 7 ;SYNTAX ERROR 024A C1FF LD -1(P1) IS MESSAGE DONE?
0195 9035 El: JMP E2 024C 94F9 JP SMSG NO - GET NEXT CHAR
024E C2EA LD TEMP(P2) WAS THIS A BREAK MESSAGE?
0250 E40E XRI 14
;************************************* 0252 980D JZ S3 YES - SKIP PRINTING "ERROR"
;* PRINT NUMBER ON STACK * 0254 LDPI Pl.MESGS NO - PRINT "ERROR"
;************************************* 025A C501 ♦2: LD ei(Pl) GET CHARACTER
025C 3F XPPC P3 PRINT IT
025D C1FF LD -1(P1) 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
036C FBFE CAD -2 < P3) iNEGATE TOP ITEM ON STACK
02B2 C400 FIN: LDI 0 *** FINISH EXECUTION ***
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 -1(P3)
CAD
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 iIF 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) iROTATE 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 iIF 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) iADD 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 03D8 CB03 ST 3(P3)
LINE FEED
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 RRL 04B2 C2EA LD TEMP(P2) ;CHECK THE QUOTIENT'S SIGN.
03DD CB02 ST 2<P3) 04B4 940D JP ♦END ; NEGATING IF NECESSARY
03DF C301 LD KPS) 04B6 C400 LDI 0
03E1 IF RRL 04B8 03 SCL
03E2 CB01 ST 1 <P3) 04B9 FBFC CAD -4(P3)
03E4 C300 LD 0(P3) 04BB CBFC ST -4<P3)
03E6 IF RRL 04BD C400 LDI 0
03E7 CBOO ST 0(P3) 04BF FBFD CAD -3(P3)
03E9 BAEB DLD NUM(P2) ;DECREMENT COUNTER 04C1 CBFD ST -3(P3)
03EB 9CC9 JNZ ♦LOOP ;LOOP IF NOT ZERO 04C3 BAFD ♦END: DLD LSTK(P2) ; DECREMENT THE STACK POINTER,
03ED 9002 JMP ♦4 04C5 BAFD DLD LSTK(P2)
03EF 9085 X9: JMP X8 04C7 90DB JMP X9B ; AND EXIT
03F1 C2EA $4: LD TEMP < P2) ;CHECK SIGN WORD
03F3 940D JP ♦EXIT ;IF BIT7 = 1, NEGATE PRODUCT
03F5 03 SOL *************************************
03F6 0400 LDI 0 * STORE VARIABLE *
03F8 FBOO CAD 0(P3) *************************************
03FA CBOO ST 0(P3)
03FC C400 LDI 0 04C9 C410 STORE: LDI H< AESTK) » SET P3 TO STACK
03FE FB01 CAD 1 <P3) 04CB 37 XPAH P3
0400 CB01 ST KPS) 04CC C2FD LD LSTK(P2)
0402 0300 ♦EXIT: LD 0(P3) ;PUT PRODUCT ON TOP 04CE 33 XPAL P3
0404 OBFC ST -4(P3) ; OF STACK 04CF C7FD LD ®-3<P3) GET VARIABLE INDEX
0406 0301 LD KP3) 04D1 01 XAE PUT IN E REG
0408 CBFB ST -3(P3) 04D2 C301 LD 1(P3)
040A BAFB DLD LSTK(P2) iSUBTRACT 2 FROM 04D4 CA80 ST EREG(P2) STORE LOWER 8 BITS
0400 BAFD DLD LSTK(P2) ; LSTK 04D6 02 CCL INTO VARIABLE
040E 90DF JMP X9 04D7 40 LDE INCREMENT INDEX
04D8 F401 ADI
04DA 01 XAE
;************************************* 04DB C302 LD 2<P3)
;* DIVIDE * 04DD CA80 ST EREG < P2) STORE UPPER 8 BITS
i ************************************* 04DF 33 XPAL P3 INTO VARIABLE
04EO CAFD ST LSTK(P2) UPDATE STACK POINTER
. LOCAL 04E2 C400 X10: JS P3,EXECIL
0410 0410 DIV: LDI H(AESTK)
0412 37 XPAH P3
0413 C2FD LD LSTK(P2) *************************************
0415 33 XPAL P3 * TEST FOR VARIABLE IN TEXT *
0416 C3FF LD -1<P3) ; CHECK FOR DIVISION BY 0 *************************************
0418 BBFE OR -2(P3)
041A 9004 JNZ ♦O 04E9 C501 TSTVAR: LD ei(Pi)
0410 C40D LDI 13 04EB E420 XRI ; SLEW OFF SPACES
04IE 90B2 JMP E6A 04ED 98FA JZ TSTVAR
0420 C3FD ♦0: LD -3(P3) 04EF C1FF LD —1(PI) ;GET CHARACTER IN QUESTION
0422 E3FF XOR -1(P3) 04F1 03 SCL
0424 CAEA ST TEMP < P2) SAVE SIGN OF QUOTIENT 04F2 FC5B CAI 'Z' + l ;SUBTRACT 'Z'+l
0426 C3FD LD -3<P3) IS DIVIDEND POSITIVE? 04F4 9405 JP ♦FAIL ; NOT VARIABLE IF POSITIVE
0428 9411 JP ♦POS YES - JUMP 04F6 03 SCL
042A 0400 LDI 0 04F7 FCE6 CAI 'A'-'Z1 ; SUBTRACT 'A'
0420 03 SOL 04F9 9412 JP ♦MAYBE iIF POS, MAY BE VARIABLE
042B FBFC CAD -4(P3) NO - NEGATE DIVIDEND, 04FB C5FF ♦FAIL: LD e-l(Pl) ;BACKSPACE CURSOR
042F CB03 ST 3<P3) STORE IN RIGHT HALF 04FD C2FB LD PCL0W(P2) i GET TEST-FAIL ADDRESS
0431 0400 LDI 0 OF 32-BIT ACCUMULATOR 04FF 33 XPAL P3 ; FROM I. L. TABLE, PUT IT
0433 FBFD CAD —3(P3) 0500 C2FA LD PCHIGH< P2) ; INTO I. L. PROGRAM COUNTER
0435 CB02 ST 2<P3) 0502 37 XPAH P3
0437 900A JMP $1 0503 C300 LD <P3>
0439 90B4 X9A: JMP X9 0505 CAFA ST PCHIGH(P2)
043B C3FD ♦POS: LD -3<P3) ;STORE NON-NEGATED DIVIDEND 0507 C301 LD KPS)
043D CB02 ST 2(P3) ; IN 32-BIT ACCUMULATOR 0509 CAFB ST PCLOW(P2)
043F C3FC LD -4<P3) 050B 90D5 JMP X10
0441 CB03 ST 3(P3) 050D 01 ♦MAYBE: XAE SAVE VALUE (0-25)
0443 C3FF ♦ 1: LD -1<P3) ;CHECK FOR NEGATIVE DIVISOR 050E Cl00 LD (PI) CHECK FOLLOWING CHAR
0445 940D JP *2 0510 03 SCL MUST NOT BE A LETTER
0447 0400 LDI 0 iNEGATE DIVISOR 0511 FC5B CAI 'Z' + l OTHERWISE WE'D BE LOOKING
0449 03 SOL 0513 9405 JP ♦OK AT A KEYWORD, NOT VARIABLE
044A FBFE CAD -2(P3) 0515 03 SCL
0440 CBFE ST -2<P3> 0516 FCE6 CAI 'A'-'Z'—1
044E 0400 LDI 0 0518 94E1 JP ♦FAIL
0450 FBFF CAD -KP3) 051A C410 ♦OK: LDI H<AESTK) i SET P3 TO CURRENT
0452 CBFF ST -1(P3) 051C 37 XPAH P3 i STACK LOCATION
0454 0400 ♦2: LDI 0 ;PUT ZERO IN: 05ID AAFD ILD LSTK(P2) ;INCR STACK POINTER
0456 CB01 ST 1(P3) ; LEFT HALF OF 32-BIT ACC, 05IF 33 XPAL P3
0458 CBOO ST 0(P3) 0520 02 CCL > DOUBLE VARIABLE INDEX
045A CAEB ST NUM(P2) ; THE COUNTER, AND 0521 40 LDE
0450 CBFD ST -3(P3) ; IN THE DIVIDEND, NOW USED 0522 70 ADE
045E CBFC ST -4<P3) ; STORE THE QUOTIENT 0523 CBFF ST —1(P3) PUT INDEX ON STACK
0460 02 ♦LOOP: CCL ;BEGIN MAIN DIVIDE LOOP: 0525 C402 LDI 2 INCREMENT I. L. PC, SKIPPING
0461 C3FC LD -4<P3) i SHIFT QUOTIENT LEFT, 0527 02 CCL OVER TEST-FAIL ADDRESS
0463 F3FC ADD -4(P3) 0528 F2FB ADD PCLOW<P2)
0465 CBFC ST -4(P3) 052A CAFB ST PCLOW<P2)
0467 C3FD LD -3 < P3) 052C C400 LDI 0
0469 F3FD ADD -3(P3) 052E F2FA ADD PCHIGH(P2)
046B CBFD ST -3 < P3) 0530 CAFA ST PCHIGH(P2)
046D 02 CCL SHIFT 32-BIT ACC LEFT, 0532 90AE JMP X10
046E 0303 LD 3(P3)
0470 F303 ADD 3<P3)
0472 CB03 ST 3(P3)
0474 0302 LD 2(P3) * IND — EVALUATE A VARIABLE *
0476 F302 ADD 2(P3) *************************************
0478 CB02 ST 2(P3)
047A 0301 LD KPS) 0534 C410 LDI H(AESTK) »SET P3 TO STACK
0470 F301 ADD 1(P3) 0536 37 XPAH P3
047E CB01 ST 1< P3) 0537 AAFD ILD LSTK(P2)
0480 0300 LD <P3) 0539 33 XPAL P3
0482 F300 ADD (P3) 053A C3FE LD -2(P3) ; GET INDEX OFF TOP
0484 CBOO ST (P3) 053C 01 XAE ;PUT INDEX IN E REG
0486 03 SCL 053D C280 LD EREG(P2) ;GET LOWER 8 BITS
0487 C301 LD 1<P3) SUBTRACT DIVISOR INTO 053F CBFE ST -2(P3) ,SAVE ON STACK
0489 FBFE CAD -2(P3) LEFT HALF OF ACC, 0541 02 CCL
048B CB01 ST 1<P3) 0542 40 LDE ;INCREMENT E REG
048D 0300 LD <P3) 0543 F401 ADI 1
048F FBFF CAD -1(P3) 0545 01 XAE
0491 CBOO ST (P3) 0546 C280 LD EREG(P2) GET UPPER 8 BITS
0493 9411 JP fENTl IF RESULT IS NEGATIVE, 0548 CBFF ST -1(P3) SAVE ON STACK
0495 02 CCL RESTORE ORIGINAL CONTENTS 054A 9096 JMP X10
0496 0301 LD 1(P3) OF ACC BY ADDING DIVISOR
0498 F3FE ADD -2(P3)
049A CB01 ST 1(P3) *************************************
0490 0300 LD (P3) * RELATIONAL OPERATORS *
049E F3FF ADD -KPS) *************************************
04A0 CBOO ST <P3)
04A2 9008 JMP ^3 054C C401 EQ: LDI ;EACH RELATIONAL OPERATOR
04A4 9093 X9B: JMP X9A 054E 9012 JMP CMP ; LOADS A NUMBER USED LATER
04A6 C3FC ♦ENT1: LD -4(P3) ELSE IF RESULT POSITIVE, 0550 C402 NEQ: LDI 2 ; AS A CASE SELECTOR, AFTER
04A8 DC01 OR I 1 RECORD A 1 IN QUOTIENT 0552 900E JMP CMP ; THE TWO OPERANDS ARE COM-
04AA CBFC ST -4(P3) W/0 RESTORING THE ACC 0554 C403 LSS: LDI 3 ; PARED. BASED ON THE COM-
04AC AAEB ♦3: ILD NUM < P2) INCREMENT THE COUNTER 0556 900A JMP CMP ; PARISON, FLAGS ARE SET THAT
04AE E410 XRI 16 ARE WE DONE? 0558 C404 LEQ: LDI 4 ; ARE EQUIVALENT TO THOSE SET
04B0 9CAE JNZ ♦LOOP LOOP IF NOT DONE 055A 9006 JMP CMP ; 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 068E CAEA ST TEMP(P2)
L0(P2) GET LOW & HI BYTES OF EXPR.
05DB DAEE OR 0690 CAEB ST NUM < P2) DIGIT COUNT IS NON-ZERO
HI(P2) TEST IF EXPRESSION IS ZERO
05DD 9802 JZ FAIL 0692 C3FE ♦SHIFT: LD -2<P3) SHIFT NUMBER LEFT BY 4
YES - IT IS
05DF 90B6 JMP X12 |0694 02 CCL
NO - IT ISN'T SO CONTINUE
05E1 C501 FAIL: LD @1(PI) 0695 F3FE ADD -2(P3)
SKIP TO NEXT LINE IN PROGRAM
05E3 E40D XRI OD 0697 CBFE ST -2<P3)
< I. E. TIL NEXT CR)
05E5 9CFA JNZ 0699 C3FF LD -1<P3)
FAIL
05E7 C402 JS P3»NXT 069B F3FF ADD -1(P3)
CALL NXT AND RETURN
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 06AE 9C87 JNZ X12B MORE THAN 0 CHARACTERS
*1 OWN CASE SELECTOR.
05F4 C402 OROP: LDI 06B0 C405 LDI 5 ERROR IF THERE WERE NONE
2
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 06C9 C2FA LD PCHIGH(P2)
@1<P3> ; 'NOT' OPERATION
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 LD <P3) ;PUT TEST-FAIL ADDRESS 07A2 C40E LDI 14 ;CAUSE A BREAK
06CE CAFA ST PCHIGH(P2) ; INTO I. . PC 07A4 90A9 JMP E9
06D0 C301 LD 1 (P3) 07A6 C45E ♦XU: LDI ;ECHO CONTROL/U AS -U
06D2 CAFB ST PCLOW < P2) 07A8 3F XPPC P3
06D4 90A4 JMP X12C 07A9 C455 LDI 'U'
06D6 C402 ♦RET: LDI 2 ;SKIP OVER ONE IL INSTRUCTION 07AB 3F XPPC P3
06D8 02 CCL ; IF NUMBER IS DONE 07AC C40D LDI OD ; PRINT CR/LF
06D9 F2FB ADD PCLOW<P2) 07AE 3F XPPC P3
06DB CAFB ST PCLOW(P2) 07AF C40A LDI OA
06DD C400 LDI 0 07B1 3F XPPC P3
06DF F2FA ADD PCHIGH(P2) 07B2 909F ♦2: JMP GETL iGO GET ANOTHER LINE
06E1 CAFA ST PCHIGH(P2) 07B4 909B X15: JMP X14
06E3 9095 X13: JMP X12C 07B6 40 ♦ENTER: LDE
06E5 90CB E8A: JMP E8B 07B7 CD01 ST ei<pn PUT CHAR IN LBUF
06E7 01 *1: XAE ; SAVE DIGIT IN EX REG 07B9 AAE7 ILD CHRNUM<P2) INCREMENT CHRNUM
06E8 C410 LDI H<AESTK) ;POINT P3 AT AE STACK 07BB E448 XRI 72 IF-72, LINE FULL
06EA 37 XPAH P3 07BD 9CB3 JNZ ♦1
06EB AAFD ILD LSTK < P2) 07BF C40D LDI OD
06ED AAFB ILD LSTK<P2) 07C1 01 XAE ;SAVE CARRIAGE RET
06EF 33 XPAL P3 07C2 40 LDE
06FO C400 LDI 0 07C3 3F XPPC P3 ;PRINT IT
06F2 CBFF ST -1(P3) 07C4 9012 JMP ♦CR ;STORE IT IN LBUF
06F4 40 LDE 07C6 9087 E10: JMP E9
06F5 CBFE ST —2<P3) 07C8 C420 ♦XH: LDI ; BLANK OUT THE CHARACTER
06F7 C501 ♦LOOP: LD ei(Pl) ;GET NEXT CHAR 07CA 3F XPPC P3
06F9 Cl00 LD (PI) 07CB C408 LDI 8 ;PRINT ANOTHER BACKSPACE
06FB 03 SCL iTEST IF IT IS DIGIT 07CD 3F XPPC P3
06FC FC3A CAI '9' + l 07CE C2E7 ♦RUB: LD CHRNUM(P2>
06FE 94D6 JP ♦RET ;RETURN IF IT ISN'T 07D0 98A0 JZ ♦1
0700 03 SCL 07D2 BAE7 DLD CHRNUM<P2) ;ONE LESS CHAR
0701 FCF6 CAI '0'-'9'-l 07D4 C5FF LD e-l(Pl) ; BACKSPACE CURSOR
0703 9402 JP ♦2 07D6 909A JMP ♦1
0705 90CF JMP ♦RET 07D8 40 ♦CR: LDE
0707 01 ♦2: XAE ;SAVE DIGIT 07D9 CD01 ST ei(Pi) i STORE CR IN LBUF
0708 C3FF LD -1(P3) ;PUT RESULT IN SCRATCH SPACE 07DB C40A LDI OA ; PRINT LINE FEED
070A CB01 ST 1 <P3) 07DD 3F XPPC P3
070C C3FE LD -2(P3) 07DE C410 LDI H(LBUF) ; SET PI TO BEGIN-
070E CBOO ST <P3) 07E0 35 XPAH PI ; NING OF LBUF
0710 C402 LDI 2 07E1 C4D6 LDI L< LBUF)
0712 CAEA ST TEMP < P2) ;MULTIPLY RESULT BY 10 07E3 31 XPAL PI
0714 02 ♦SHIFT: CCL ;FIRST MULTIPLY BY 4 07E4 90CE X16: JMP X15
0715 C3FE LD -2<P3)
0717 F3FE ADD —2 < P3)
0719 CBFE ST -2(P3) i*************************************
07IB C3FF LD -1< P3) ; * EVAL — GET MEMORY CONTENTS *
07ID F3FF ADD -1<P3) i *************************************
07IF CBFF ST -1(P3)
0721 BAEA DLD TEMP(P2) ; THIS ROUTINE IMPLEMENTS THE 't' OPERATOR IN EXPRESSIONS
0723 9CEF JNZ ♦SHIFT
0725 02 CCL ;THEN ADD OLD RESULT, 07E6 C410 EVAL: LDI H(AESTK)
0726 C3FE LD —2(P3) ; SO WE HAVE RESULT * 5 07E8 37 XPAH P3
0728 F300 ADD <P3) 07E9 C2FD LD LSTK(P2)
072A CBFE ST -2(P3) 07EB 33 XPAL P3 iP3 -> ARITH STACK
072C C3FF LD -1<P3) 07EC C3FF LD -MP3) ;GET ADDR OFF STACK,
072E F301 ADD 1 (P3> 07EE 35 XPAH PI i AND INTO PI,
0730 CBFF ST -1(P3) 07EF 01 XAE ; SAVING OLD PI IN EX fc LO
0732 02 CCL ;THEN MULTIPLY BY TWO 07F0 C3FE LD -2<P3)
0733 C3FE LD -2(P3) 07F2 31 XPAL PI
0735 F3FE ADD —2<P3) 07F3 CAEF ST L0(P2)
0737 CBFE ST —2(P3) 07F5 Cl00 LD 0<P1> » GET MEMORY CONTENTS,
0739 C3FF LD -1<P3) 07F7 CBFE ST —2(P3) ; SHOVE ONTO STACK
073B F3FF ADD -1<P3) 07F9 C400 LDI 0
073D CBFF ST -1(P3) 07FB CBFF ST -1(P3) iHIGH ORDER 8 BITS ZEROED
073F 02 CCL ;THEN ADD IN NEW DIGIT 07FD C2EF LD L0(P2)
0740 40 LDE 07FF 31 XPAL PI jRESTORE ORIGINAL PI
0741 F3FE ADD -2(P3) 0800 40 LDE
0743 CBFE ST -2(P3) 0801 35 XPAH PI
0745 C400 LDI 0 0802 90B0 JMP X15
0747 F3FF ADD -1(P3)
0749 CBFF ST -1(P3)
074B 94AA JP ♦LOOP ;REPEAT IF NO OVERFLOW
074D C406 LDI 6 ;* MOVE — STORE INTO MEMORY *
074F 9094 E9: JMP E8A ; ELSE REPORT ERROR i *************************************
0751 9090 X14: JMP X13
i THIS ROUTINE IMPLEMENTS THE STATEMENT:
j '«' FACTOR '»' REL-EXP
*************************************
* GET LINE FROM TELETYPE * 0804 C410 MOVE: LDI H<AESTK)
************************************* 0806 37 XPAH P3
0807 C2FD LD LSTK(P2)
. LOCAL 0809 33 XPAL P3 iP3 -> ARITH STACK
0753 GETL: LDPI PI, LBUF ;SET PI TO LBUF 080A C7FE LD #-2(P3) > GET BYTE TO BE MOVED
0759 C400 LDI 0 ; CLEAR NO. OF CHAR 080C 01 XAE
075B CAE7 ST CHRNUM(P2) 080D C7FF LD t-l(P3) ; NOW GET ADDRESS INTO P3
075D LDP I P3, PUTC-1 ;POINT P3 AT PUTC ROUTINE 080F CAEA ST TEMP(P2)
0763 C2F4 LD RUNM0D(P2) ;PRINT '? ' IF RUNNING 0811 C7FF LD «-l(P3)
0765 9808 JZ ♦0 i <1. E. DURING 'INPUT') 0813 33 XPAL P3
0767 C43F LDI 0814 CAFD ST LSTK(P2) i STACK PTR UPDATED NOW
0769 3F XPPC P3 0816 C2EA LD TEMP(P2)
076A C420 LDI 0818 37 XPAH P3
076C 3F XPPC P3 0819 40 LDE
076D 9003 JMP ♦1 081A CBOO ST 0<P3> i MOVE THE BYTE INTO MEMORY
076F C43E ♦O: LDI '>' ; OTHERWISE PRINT O' 081C 90C6 X17: JMP X16
0771 3F XPPC P3 081E 90A6 Ell: JMP E10
0772 C40F ♦ 1: JS P3,GECO ;GET CHARACTER
0779 C4BD LDI L(PUTC)—1 ;POINT P3 AT PUTC AGAIN *************************************
077B 33 XPAL P3 * TEXT EDITOR *
077C 40 LDE iGET TYPED CHAR *************************************
077D 98F3 JZ *1 ;IGNORE NULLS
077F E40A XRI OA ; IGNORE LINE FEED INPUTS TO THIS ROUTINE: POINTER TO LINE BUFFER IN P1L0W L
0781 98EF JZ ^1 P1HIGH. PI POINTS TO THE INSERTION POINT IN THE TEXT.
0783 40 LDE THE A. E. STACK HAS THE LINE NUMBER ON IT (STACK POINTER
0784 E40D XRI OD ;CHECK FOR CR IS ALREADY POPPED).
0786 9850 JZ ♦CR
0788 40 LDE EACH LINE IN THE NIBL TEXT IS STORED IN THE FOLLOWING
0789 E45F XRI 'O'+OIO ;CHECK FOR SHIFT/O FORMAT: TWO BYTES CONTAINING THE LINE NUMBER (IN BINARY.
078B 9841 JZ ♦RUB HIGH ORDER BYTE FIRST), THEN ONE BYTE CONTAINING THE
078D 40 LDE ;CHECK FOR CTRL/H LENGTH OF THE LINE, AND FINALLY THE LINE ITSELF FOLLOWED
078E E408 XRI 8 BY A CARRIAGE RETURN. THE LAST LINE IN THE TEXT IS
0790 9836 JZ ♦XH FOLLOWED BY TWO CONSECUTIVE BYTES OF X'FF.
0792 40 LDE
0793 E415 XRI 015 ;CHECK FOR CTRL/U . LOCAL
0795 980F JZ ♦XU 0820 C410 INSRT: LDI H(AESTK) ;POINT P3 AT AE STACK,
0797 40 LDE 0822 37 XPAH P3 ; WHICH HAS THE LINE •
0798 E403 XRI 3 ;CHECK FOR CTRL/C 0823 C2FD LD LSTK(P2) i ON IT
079A 9C1A JNZ ♦ENTER 0825 33 XPAL P3
079C C45E LDI ; ECHO CONTROL/C fVB ~C 0826 C301 LD 1(P3) ; SAVE NEW LINE'S NUMBER
079E 3F XPPC P3 0828 CAF7 ST HILINE(P2)
079F C443 LDI 'C' 082A C300 LD 0(P3)
07A1 3F XPPC P3
Page 44 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Nov./Dec., 1976
341
082C CAF8 ST L0LINE(P2) 0905 9CF8 JNZ ♦ADD1
0S2E C2F1 LD P1L0W(P2) ;PUT POINTER TO LBUF INTO P3 0907 90DC JMP X19A ;RETURN
0830 33 XPAL P3 0909 C400 X20: JS P3»EXECIL
0831 C2F0 LD P1HIGH(P2) 0910 90CF E13: JMP E12A
0833 37 XPAH P3
0834 C404 LDI 4 iINITIALLY LENGTH OF NEW LINE
0836 CAE7 ST CHRNUM(P2) J = 4. ADD 1 TO LENGTH FOR ************************************
0838 C701 *1: LD @1(P3) j EACH CHAR IN LINE UP TO, BU * POP ARITHMETIC STACK *
083A E40D XRI OD i NOT INCLUDING, CARR. RETURN ************************************
083C 9804 JZ ♦2
083E AAE7 ILD CHRNUM(P2) 0912 BAFD POPAE: DLD LSTK(P2> THIS ROUTINE POP THE A. E.
0840 90F6 JMP ♦1 0914 BAFD DLD LSTK(P2) STACK, AND PUTS THE RESULT
0842 C2E7 *2: LD CHRNUM(P2) ;IF LENGTH STILL 4, WE'LL DEL 0916 33 XPAL P3 INTO L0CP2) AND HI(P2)
0844 E404 XRI 4 ; A LINE, SO SET LENGTH = 0 0917 C410 LDI H(AESTK)
0846 9C02 JNZ ♦3 0919 37 XPAH P3
0848 CAE7 ST CHRNUM(P2) 091A C300 LD (P3)
084A C2E7 *3: LD CHRNUM(P2) ;PUT NEW LINE LENGTH IN EX 091C CAEF ST LO(P2)
084C 01 XAE 09IE C301 LD 1(P3)
084D C2F2 LD LABLHKP2) ;IS NEW LINE REPLACING OLD? 0920 CAEE ST HI(P2)
084F 9406 JP ♦4 ;YES - DO REPLACE 0922 90E5 JMP X20
0851 D47F AN I 07F ;NO - WE'LL INSERT LINE HERE,
0853 CAF2 ST LABLHKP2) i WHERE FNDLBL GOT US.
0855 9018 JMP ♦MOVE ;BUT FIRST MAKE ROOM *************************************
0857 C503 *4: LD @3<P1> ;SKIP LINE # AND LENGTH * UNTIL *
0859 40 LDE iEX, NOW HOLDING NEW LINE *************************************
085A 02 CCL ; LENGTH, WILL SOON HOLD
085B F4FC ADI -4 j DISPLACEMENT OF LINES . LOCAL
085D 01 XAE ; TO BE MOVED 0924 C2FF UNTIL: LD DOPTR(P2) ; CHECK FOR DO-STACK UNDERFLOW
085E C501 *5: LD ei(Pl) ;SUBTRACT 1 FROM DISPLACEMENT 0926 01 XAE
0860 E40D XRI OD i FOR EACH CHAR IN LINE BEING 0927 40 LDE
0862 980B JZ ♦MOVE ; REPLACED 0928 E47A XRI L(DOSTAK)
0864 40 LDE 092A 9C04 JNZ 41
0865 02 CCL 092C C40F LDI 15
0866 F4FF ADI 092E 90E0 JMP E13
0868 01 XAE 0930 C2EF LD L0(P2> ; CHECK FOR EXPRESSION - 0
0869 90F3 JMP ♦5 0932 DAEE OR HI(P2 >
086B 90AF X19: JMP X17 0934 9806 JZ ♦REDO ;IF ZERO, REPEAT DO-LOOP
086D 90AF E12: JMP Ell 0936 BAFF DLD DOPTR(P2) ;ELSE POP SAVE STACK
086F 40 ♦MOVE: LDE ;IF DISPLACEMENT AND LENGTH 0938 BAFF DLD DOPTR(P2)
0870 DAE7 OR CHRNUM(P2) ; OF NEW LINE ARE 0. RETURN 093A 90CD JMP X20 ;CONTINUE TO NEXT STMT
0872 98F7 JZ X19 093C 40 ♦REDO: LDE ;POINT P3 AT DO-STACK
0874 C47A LDI L(DOSTAK) ;CLEAR SOME STACKS 093D 33 XPAL P3
0876 CAFF ST D0PTR(P2) 093E C410 LDI H(DOSTAK)
0878 C46A LDI L(SBRSTK) 0940 37 XPAH P3
087A CAFC ST SBRPTR<P2) 0941 C3FF LD -1(P3) ;LOAD PI FROM DO STACK
087C C48A LDI L(FORSTK) 0943 35 XPAH PI
087E CAFE ST F0RPTR(P2) 0944 C3FE LD -2(P3)
0880 40 LDE 0946 31 XPAL PI .CURSOR NOW POINTS TO FIRST
0881 9860 JZ ♦ADD DON'T NEED TO MOVE LINES 0947 90C0 JMP X20 ; STATEMENT OF DO-LOOP
0883 9410 JP ♦UP SKIP IF DISPLACEMENT POSITIV
0885 C100 ♦DOWN: LD 0<P1) NEGATIVE DISPLACEMENT:
0887 C980 ST EREGtPl) DO; *************************************
0889 C501 LD ei(Pl) M(P1+DISP) = M(P1); * STORE INTO STATUS REGISTER *
088B 94F8 JP ♦DOWN PI = Pl+1; *************************************
088D Cl00 LD 0(P1) UNTIL MIP1X0 & MIP1-1X0;
088F 94F4 JP ♦DOWN THIS ROUTINE IMPLEMENTS THE STATEMENT:
0891 C980 ST EREG(P1) ;M(P1+DISP) = M(P1); 'STAT' '=' REL-EXP
0893 904E JMP ♦ADD
0895 C1FE ♦UP: LD —2<P1) POSITIVE DISPLACEMENT: 0949 C2EF MOVESR: LD L0(P2) ;LOW BYTE GOES TO STATUS
0897 CAEA ST TEMP<P2) FLAG BEGINNING OF MOVE WITH 094B D4F7 ANI 0F7 ; BUT WITH IEN BIT CLEARED
0899 C4FF LDI -1 A -1 FOLLOWED BY 80, WHICH 094D 07 CAS
089B C9FE ST -2< PI) CAN NEVER APPEAR IN A 094E 90B9 X21: JMP X20
089D C450 LDI 80 NIBL TEXT 0950 90BE El4: JMP E13
089F C9FF ST -1(PI)
08A1 C501 ♦UP1: LD ei<pi) ;ADVANCE PI TO END OF TEXT
08A3 94FC JP ♦UPl ;*************************************
08A5 Cl00 LD 0(P1) ;* STAT FUNCTION *
08A7 94F8 JP ♦UPl ;*************************************
08A9 35 XPAH pi ;SAVE PI IN LO, HI
08AA CAEE ST HI<P2) 0952 C410 STATUS: LDI H(AESTK)
08AC 35 XPAH PI 0954 37 XPAH P3 ; POINT P3 AT AE STACK
08AD 31 XPAL PI 0955 AAFD ILD LSTK(P2)
08AE CAEF ST L0<P2) 0957 AAFD ILD LSTK(P2)
08B0 31 XPAL PI 0959 33 XPAL P3
08B1 C2EF LD LO(P2) ADD DISPLACEMENT TO 095A 06 CSA
08B3 02 CCL VALUE OF PI, TO CHECK 095B CBFE ST -2(P3) ; STATUS REG IS LOW BYTE
08B4 70 ADE WHETHER WE'RE OUT OF 095D C400 LDI 0
08B5 C400 LDI 0 RAM FOR USER'S PROGRAM 095F CBFF ST -1(P3) ;ZERO IS HIGH BYTE
08B7 F2EE ADD HI<P2> 0961 90EB JMP X21
08B9 E2EE XOR HI<P2)
08BB D4F0 AN I OFO
08BD 9803 JZ ♦UP2 »*************************************
08BF C400 LDI 0 ;IF OUT OF RAM, CHANGE ;* MACHINE LANGUAGE SUBROUTINE *
08C1 01 XAE ; DISPLACEMENT TO ZERO ;*************************************
08C2 C4FF ♦UP2: LDI -1
08C4 C980 ♦UP3: ST EREG(Pl) ;MOVE TEXT UP UNTIL WE REACH i THIS ROUTINE IMPLEMENTS THE LINK' STATEMENT
08C6 C5FF LD e-l(Pl) ; THE FLAGS SET ABOVE
08C8 94FA JP ♦UP3 0963 C2EE CALLML: LD HI(P2) ; GET HIGH BYTE OF ADDRESS
08CA C101 LD 1 (PI) 0965 37 XPAH P3
08CC E450 XRI 80 0966 C2EF LD LO(P2) J GET LOW BYTE
08CE 9804 JZ ♦UP4 0968 33 XPAL P3 ;P3 -> USER'S ROUTINE
08D0 Cl00 LD 0(P1) 0969 C7FF LD @-l(P3> ; CORRECT P3
08D2 90F0 JMP ♦UP3 096B 3F XPPC P3 ;CALL ROUTINE (PRAY IT WORKS)
08D4 C2EA ♦UP4: LD TEMP(P2) ;RESTORE THE FLAGGED LOCATION 096C LDPI P2, VARS ;RESTORE RAM POINTER
08D6 C900 ST 0(P1> ; TO THEIR ORIGINAL VALUES 0972 90DA JMP X21 ;RETURN
08D8 C40D LDI OD
08DA C901 ST 1 (PI)
08DC 40 LDE ;IF DISPLACEMENT = 0, WE'RE *************************************
08DD 9C04 JNZ ♦ADD ; OUT OF RAM, SO REPORT ERROR * SAVE DO LOOP ADDRESS *
08DF C402 LDI 2 *************************************
08E1 908A E12A: JMP E12
08E3 C2E7 ♦ADD: LD CHRNUM(P2) INSERT NEW LINE THIS ROUTINE IMPLEMENTS THE 'DO' STATEMENT.
08E5 9884 X19A: JZ X19 UNLESS LENGTH IS ZERO
08E7 C2F1 LD P1L0W(P2) POINT PI AT LINE BUFFER . LOCAL
08E9 31 XPAL PI 0974 C2FF SAVEDO: LD DOPTR(P2> ;CHECK FOR STACK OVERFLOW
08EA C2F0 LD P1HIGH(P2) 0976 E48A XRI L(FORSTK)
08EC 35 XPAH PI 0978 9C04 JNZ ♦1
08ED C2F3 LD LABLL0(P2> ;POINT P3 AT INSERTION PLACE 097A C40A LDI 10
08EF 33 XPAL P3 097C 90D2 E15: JMP E14
08F0 C2F2 LD LABLHI< P2) 097E AAFF ♦1: ILD DOPTR(P2)
08F2 37 XPAH P3 0980 AAFF ILD DOPTR<P2)
08F3 C2F7 LD HILINE(P2) ;PUT LINE NUMBER INTO TEXT 0982 33 XPAL
08F5 CF01 ST @1<P3) 0983 C410 LDI H(DOSTAK)
08F7 C2F8 LD L0LINE(P2) 0985 37 XPAH P3 ; P3 -> TOP OF DO STACK
08F9 CF01 ST @1(P3) 0986 35 XPAH ; SAVE CURSOR ON THE STACK
08FB C2E7 LD CHRNUM(P2) ;STORE LINE LENGTH IN TEXT 0987 CBFF ST
08FD CF01 ST G1(P3> 0989 35 XPAH
08FF C501 ♦ADD1: LD SI(PI) ;PUT REST OF CHARS 098A 31 XPAL
0901 CF01 ST @1(P3) ; (INCLUDING CR) INTO TEXT 098B CBFE ST
0903 E40D XRI OD 098D 31 XPAL
Nov./Dec., 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 45
342
098E 90BE X21 ;*************************************
;* PUSH 1 ON ARITHMETIC STACK *
*************************************
i
************* ************************
* TOP OF RAM FUNCTION * 0A30 AAFD LIT1: ILD LSTK(P2)
************************************* 0A32 AAFD ILD LSTK(P2)
0A34 33 XPAL P3
. LOCAL 0A35 C410 LDI H(AESTK)
0990 C2E9 TOP: LD TEMP2 < P2) ;SET P3 TO POINT TO 0A37 37 XPAH P3
0992 37 XPAH P3 ; START OF NIBL TEXT 0A38 C400 LDI 0
0993 C2E8 LD TEMP3(P2) 0A3A CBFF ST -KP3)
0995 33 XPAL P3 0A3C C401 LDI 1
0996 C300 $0: LD (P3) HAVE WE HIT END OF TEXT? 0A3E CBFE ST -2(P3)
0998 9402 JP $1 NO - SKIP TO NEXT LINE 0A40 90EA JMP X24
099A 9007 JMP *2 YES - PUT CURSOR ON STACK
099C C302 LD 2(P3) GET LENGTH OF LINE
099E 01 XAE i*************************************
099F C780 LD @EREG(P3) SKIP TO NEXT LINE
;* FOR-LOOP INITIALIZATION *
09A1 90F3 JMP $0 GO CHECK FOR EOF i*************************************
09A3 C702 *2: LD @2(P3) P3 := P3 + 2
09A5 AAFD ILD LSTK<P2) SET P3 TO STACK. SAVING
. LOCAL
09A7 AAFD ILD LSTK<P2) OLD P3 (WHICH CONTAINS TOP) 0A42 C2FE SAVFOR: LD F0RPTR(P2) i CHECK FOR FOR STACK
09A9 33 XPAL P3 ON IT SOMEHOW 0A44 E4A6 XRI L(PCSTAK) ; OVERFLOW
09AA 01 XAE 0A46 9C04 JNZ ♦1
09AB C410 LDI H< AESTK) 0A48 C40A LDI 10
09AD 37 XPAH P3 0A4A 90E2 E17: JMP E16A
09AE CBFF ST -KPS) 0A4C E4A6 ♦1: XRI L(PCSTAK)
09B0 40 LDE 0A4E 31 XPAL PI i POINT PI AT FOR STACK
09B1 CBFE ST —2(P3) 0A4F CAF1 ST P1L0W(P2) i SAVING OLD PI
09B3 90D9 JMP X22 0A51 C410 LDI H(FORSTK)
0A53 35 XPAH PI
0A54 CAFO ST P1HIGH(P2)
*************************************
0A56 C2FD LD LSTK(P2) ;POINT P3 AT AE STACK
* SKIP TO NEXT NIBL LINE * 0A58 33 XPAL
************************************* 0A59 C410 LDI
P3
H<AESTK)
0A5B 37 XPAH P3
09B5 C501 IGNORE: LD @1(P1) iSCAN TIL WE'RE PAST 0A5C C3F9 LD -7(P3) ;GET VARIABLE INDEX
09B7 E40D XRI OD i CARRIAGE RETURN
0A5E CD01 ST @1(P1) »SAVE ON FOR-STACK
09B9 9CFA JNZ IGNORE
0A60 C3FC LD -4(P3) »GET L(LIMIT)
09BB 3F XPPC P3 ;YES - RETURN
0A62 CD01 ST ei<pi) , SAVE
0A64 C3FD LD -3<P3> ; GET H(LIMIT)*
0A66 CD01 ST ei(Pi) ; SAVE
*************************************
0A68 C3FE LD -2(P3) ;GET L(STEP)
* MODULO FUNCTION *
************************************* 0A6A
0A6C
CD01
C3FF
ST
LD
@1(P1) ; SAVE
;GET H(STEP)
-1<P3)
0A6E CD01 ST ei<pi) ; SAVE
09BC C2FD LD LSTK(P2) THIS ROUTINE MUST BE
0A70 C2F1 LD P1L0W(P2) .GET L(P1)
09BE 33 XPAL P3 IMMEDIATELY AFTER A
0A72 CD01 ST ei<pi) iSAVE
09BF C410 LDI H<AESTK) DIVIDE TO WORK CORRECTLY
0A74 C2F0 LD P1HIGH< P2) iGET H(P1)
09C1 37 XPAH P3 0A76 CD01 ST ei(Pl) iSAVE
09C2 C303 LD 3<P3) GET LOW BYTE OF REMAINDER 0A78 35 XPAH Pi iRESTORE OLD PI
09C4 CBFE ST -2< P3) PUT ON STACK 0A79 C2F1 LD P1L0W(P2)
09C6 C302 LD 2(P3) GET HIGH BYTE OF REMAINDER 0A7B 31 XPAL PI
09C8 CBFF ST -KPS) PUT ON STACK 0A7C CAFE ST FORPTR(P2) ; UPDATE FOR STACK PTR
09CA 90C2 X23: JMP X22 0A7E C7FC LD S-4(P3)
09CC 90AE E16: JMP E15 0A80 33 XPAL P3
0A81 CAFD ST LSTK(P2) iUPDATE AE STACK PTR
0A83 90A7 X25: JMP X24
*************************************
* RANDOM FUNCTION *
************************************* i*************************************
i* FIRST PART OF 'NEXT VAR' *
. LOCAL i*************************************
09CE C408 RANDOM: LDI 8 ;LOOP COUNTER FOR MULTIPLY
09D0 CAEB ST NUM(P2) . LOCAL
09D2 C2E5 LD RNDX < P2) 0A85 C2FE NEXTV: LD FORPTR<P2) ; POINT PI AT FOR STACK,
09D4 01 XAE 0A87 E48A XRI L(FORSTK) i CHECKING FOR UNDERFLOW
09D5 C2E4 LD RNDY(P2) 0A89 9C04 JNZ ^1
09D7 CAE9 ST TEMP2(P2) 0A8B C40B LDI 11 ;REPORT ERROR
09D9 C2E5 ♦LOOP: LD RNDX <P2) ;MULTIPLY THE SEEDS BY 9 0A8D 90BB JMP El7
09DB 02 CCL 0A8F E48A XRI L(FORSTK)
09DC 70 ADE 0A91 31 XPAL PI
09DD 01 XAE 0A92 CAF1 ST P1L0W(P2) iSAVE OLD PI
09DE C2E4 LD RNDY < P2) 0A94 C410 LDI H(FORSTK)
09E0 02 CCL 0A96 35 XPAH PI
09E1 F2E9 ADD TEMP2 < P2) 0A97 CAFO ST P1HIGH(P2)
09E3 CAE4 ST RNDY(P2) 0A99 C2FD LD LSTK(P2) iPOINT P3 AT AE STACK
09E5 BAEB DLD NUM(P2) 0A9B 33 XPAL P3
09E7 9CF0 JNZ ♦LOOP 0A9C C410 LDI H(AESTK)
09E9 40 LDE ;ADD 7 TO SEEDS 0A9E 37 XPAH P3
09EA 02 CCL 0A9F C7FF LD ft-1<P3) ;GET VARIABLE INDEX
09EB F407 ADI 7 0AA1 E1F9 XOR -7(P1) iCOMPARE WITH INDEX
09ED 01 XAE 0AA3 9804 JZ 610 i ON FOR STACK: ERROR
09EE C2E4 LD RNDY(P2) 0AA5 C40C LDI 12 i IF NOT EQUAL
09F0 02 CCL 0AA7 90A1 E18: JMP El 7
09F1 F407 ADI 0AA9 E1F9 ♦ 10: XOR -7(PI) ;RESTORE INDEX
09F3 IE RR OAAB 01 XAE iSAVE IN EREG
09F4 CAE4 ST RNDY < P2) OAAC C280 LD EREG(P2) iGET L(VARIABLE)
09F6 AAE6 ILD RNDF(P2) HAVE WE GONE THROUGH OAAE 02 CCL
09F8 9803 JZ ♦1 256 GENERATIONS? OAAF F1FC ADD -4(PI) iADD L < STEP)
09FA 40 LDE IF SO, SKIP GENERATING 0AB1 CA80 ST EREG(P2) iSTORE IN VARIABLE
09FB CAE5 ST RNDX(P2) THE NEW RNDX 0AB3 CBOO S" (P3) i AND ON STACK
09FD C2FD *1: LD LSTK(P2) START MESSING WITH THE STACK 0AB5 C601 LD «1(P2) iINCREMENT RAM PTR
09FF 33 XPAL P3 0AB7 C280 LD EREG(P2) iGET H(VARIABLE)
0A00 C410 LDI H<AESTK) 0AB9 F1FD ADD -3(PI) iADD H(STEP)
0A02 37 XPAH P3 OABB CA80 ST EREG(P2) iSTORE IN VARIABLE
0A03 C401 LDI 1 ;FIRST PUT 1 ON STACK OABD CB01 ST 1(P3) i AND ON STACK
0A05 CBOO ST (P3) OABF C6FF LD @-l(P2) i RESTORE RAM POINTER
0A07 C400 LDI 0 0AC1 ClFA LD —6(PI) iGET L(LIMIT)
0A09 CB01 ST 1 <P3> 0AC3 CB02 ST 2(P3) iPUT ON STACK
OAOB C3FE LD -2(P3) ;PUT EXPR2 ON STACK 0AC5 C1FB LD -5(P1) iGET H(LIMIT)
OAOD CB02 ST 2<P3) 0AC7 CB03 ST 3(P3) iPUT ON STACK
OAOF C3FF LD -1<P3) 0AC9 C1FD LD -3(P1) iGET H(STEP >
0A11 CB03 ST 3(P3) OACB 9410 JP %2 iIF NEGATIVE, INVERT
0A13 C3FC LD -4<P3) ;PUT EXPR1 ON STACK OACD C404 LDI 4 i ITEMS ON A. E. STACK
0A15 CB04 ST 4 < P3) OACF CAEB ST NUM(P2) i NUM - LOOP COUNTER
0A17 C3FD LD -3(P3) 0AD1 C701 ♦LOOP: LD ei(P3) iGET BYTE FROM STACK
0A19 CB05 ST 5<P3) 0AD3 E4FF XRI OFF iINVERT IT
0A1B C2E4 LD RNDY(P2) ;PUT RANDOM # ON STACK 0AD5 CBFF ST -1(P3) iPUT BACK ON STACK
0A1D CBFE ST -2(P3) 0AD7 BAEB DLD NUM(P2) iDO UNTIL NUM - 0
0A1F C2E5 LD RNDX(P2) 0AD9 9CF6 JNZ ♦LOOP
0A21 E4FF XRI OFF OADB 9002 JMP *3
0A23 D47F AN I 07F OADD C704 ♦2: LD @4(P3> iUPDATE AE STACK POINTER
0A25 CBFF ST -1(P3) OADF 33 ♦3: XPAL P3
0A27 C706 LD @6 < P3) ; ADD 6 TO STACK POINTER OAEO CAFD ST LSTK(P2)
0A29 33 XPAL P3 0AE2 C2F1 LD P1L0W(P2) iRESTORE OLD PI
0A2A CAFD ST LSTK(P2) 0AE4 31 XPAL PI
0A2C 909C X24: JMP X23 0AE5 C2F0 LD PIHIGH(P2)
0A2E 909C E16A: JMP E16 0AE7 35 XPAH PI
0AE8 9099 X26: JMP X25
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 NEXTV1: LD LO < P2) IS FOR-LOOP OVER WITH? i* PUT PAGE NUMBER ON STACK *
OAEC 9808 ♦REDO NO - REPEAT LOOP )************************************
OAEE C2FE F0RPTRCP2) YES - POP FOR-STACK
OAFO 02 CCL 0B77 AAFD PUTPGE: ILD LSTK(P2)
0AF1 F4F9 ADI 0B79 AAFD ILD LSTK(P2)
0AF3 CAFE ST F0RPTR<P2) 0B7B 33 XPAL P3
OAFS 3F XPPC P3 ; RETURN TO I. L. INTERPRETER 0B7C C410 LDI H(AESTK)
0AF6 C2FE LD FORPTR(P2) ;POINT P3 AT FOR STACK 0B7E 37 XPAH P3
0AF8 33 XPAL 0B7F C2F6 LD PAGE(P2)
0AF9 C410 LDI 0B81 CBFE ST -2<P3>
OAFB 37 XPAH 0B83 C400 LDI 0
OAFC C3FF LD ;GET OLD PI OFF STACK 0B85 CBFF ST -1(P3)
OAFE 35 XPAH 0B87 90A7 JMP X27
OAFF C3FE LD —2(P3)
0B01 31 XPAL PI
0B02 90E4 JMP X26 ************************************
0B04 90A1 JMP _E18 * ASSIGN NEW PAGE *
************************************ ************************************
* PRINT MEMORY AS STRING *
************************************ . LOCAL
0B89 C2EF NUPAGE: LD iGET PAGE • FROM STACK,
THIS ROUTINE IMPLEMENTS THE STATEMENT: 0B8B D407 AN I ; GET THE LOW 3 BITS
'PRINT' '♦' FACTOR 0B8D 9C02 JNZ j PAGE O BECOMES PAGE 1
0B8F C401 LDI
. LOCAL 0B91 CAF6 *0: ST
0B06 C2EE PSTRNG: LD HI(P2) iPOINT PI AT STRING TO PRINT 0B93 3F XPPC ;RETURN
0B08 35 XPAH PI
0B09 C2EF LD L0<P2)
OBOB 31 XPAL PI ;*************************************
OBOC LDP I P3,PUTC-1 POINT P3 AT PUTC ROUTINE ;* FIND START OF PAGE *
OB12 C501 *1: LD @1(PI) GET A CHARACTER ;*************************************
OB14 E40D XRI OD IS IT A CARRIAGE RETURN?
OB16 98D0 JZ X26 YES - WE'RE DONE THIS ROUTINE COMPUTES THE START OF THE CURRENT TEXT PAGE,
OB18 E40D XRI OD NO - PRINT THE CHARACTER STORING THE ADDRESS IN TEMP2(P2) CTHE HIGH BYTE], AND
OBIA 3F XPPC P3 TEMP3<P2) CTHE LOW BYTE!.
OBIB 06 CSA MAKE SURE NO ONE IS
OB1C D420 AN I 020 TYPING ON THE TTY 0B94 C2F6 FNDPGE: LD PAGE(P2)
OBIE 9CF2 JNZ *1 BEFORE REPEATING LOOP 0B96 E401 XRI 1 iSPECIAL CASE IS PAGE 1. BUT
0B20 90C6 JMP X26 0B98 9C09 JNZ ♦1 i OTHERS ARE CONVENTIONAL
0B9A C411 LDI H(PGM) iPAGE 1 STARTS AT 'PGM'
0B9C CAE9 ST TEMP2(P2)
************************************ 0B9E C420 LDI L(PGM)
* INPUT A STRING * OBAO CAE8 ST TEMP3(P2)
************************************ 0BA2 3F XPPC P3 ;RETURN
0BA3 E401 *1: XRI 1 iRESTORE PAGE #
; THIS ROUTINE IMPLEMENTS THE STATEMENT: 0BA5 01 XAE ; SAVE IT
i 'INPUT' '♦' FACTOR 0BA6 C404 LDI 4 iLOOP COUNTER » 4
0BA8 CAEB ST NUM(P2)
0B22 C2EE ISTRNG: LD HI<P2) ;GET ADDRESS TO STORE THE OBAA 40 ♦LOOP: LDE ;MULTIPLY PAGE# BY 16
0B24 37 XPAH P3 ; STRING, PUT IT INTO P3 OBAB 02 CCL
0B25 C2EF LD L0(P2) OBAC 70 ADE
0B27 33 XPAL P3 OBAD 01 XAE
0B28 C501 *2: LD 61(PI) GET A BYTE FROM LINE BUFFER OBAE BAEB DLD NUM(P2)
0B2A CF01 ST @1(P3) PUT IT IN SPECIFIED LOCATION OBBO 9CF8 JNZ ♦LOOP
0B2C E40D XRI OD DO UNTIL CHAR = CARR. RETURN 0BB2 40 LDE
0B2E 9CF8 JNZ *2 0BB3 CAE9 ST TEMP2<P2) ;TEMP2 HAS HIGH BYTE
0B30 90B6 X27: JMP X26 0BB5 C402 LDI 2 ; OF ADDRESS NOW
0BB7 CAE8 ST TEMP3(P2) >LOW BYTE IS ALWAYS 2
0BB9 3F XPPC P3
************************************ ;************************************
* STRING CONSTANT ASSIGNMENT * i* MOVE CURSOR TO NEW PAGE *
************************************ ;************************************
; THIS ROUTINE IMPLEMENTS THE STATEMENT: OBBA C2E9 CHPAGE: LD TEMP2(P2) ; PUT START OF PAGE
i '♦' FACTOR '=' STRING OBBC 35 XPAH PI i INTO PI. THIS ROUTINE
OBBD C2E8 LD TEMP3(P2) i MUST BE CALLED RIGHT
. LOCAL OBBF 31 XPAL i AFTER 'FNDPGE'
0B32 C2EF PUTSTR: LD L0(P2) ;GET ADDRESS TO STORE STRING, OBCO 3F XPPC i RETURN
0B34 33 XPAL P3 ; PUT IT INTO P3
0B35 C2EE LD HI(P2)
0B37 37 XPAH P3 ************************************
0B38 C501 ♦LOOP: LD @1(PI) ; GET A BYTE FROM STRING * DETERMINE CURRENT PAGE *
0B3A E422 XRI ; CHECK FOR END OF STRING ************************************
0B3C 980E JZ ♦END
0B3E E42F XRI '"' ! OD ;MAKE SURE THERE'S NO CR 0BC1 35 DETPGE: XPAH PI CURRENT PAGE IS HIGH
0B40 9C04 JNZ ♦1 0BC2 01 XAE PART OF CURSOR DIVIDED
0B42 C407 LDI 7 0BC3 40 LDE BY 16
0B44 90BE JMP E19 ERROR IF CARRIAGE RETURN 0BC4 35 XPAH PI
0B46 E40D ♦1: XRI OD RESTORE CHARACTER 0BC5 40 LDE
0B48 CF01 ST @1<P3) PUT IN SPECIFIED LOCATION 0BC6 1C SR
0B4A 90EC JMP ♦LOOP GET NEXT CHARACTER 0BC7 1C SR
0B4C C.40D ♦END: LDI OD APPEND CARRIAGE RETURN 0BC8 1C SR
0B4E CBOO ST (P3) TO STRING 0BC9 1C SR
0B50 90DE JMP X27 OBCA CAF6 ST PAGE(P2)
OBCC 3F XPPC P3 ;RETURN
;************************************
;* MOVE STRING * ************************************
************************************ * CLEAR CURRENT PAGE *
************************************
; THIS ROUTINE IMPLEMENTS THE STATEMENT:
, '♦' FACTOR '=' '♦' FACTOR OBCD C2E9 NEWPGM: LD TEMP2(P2) ;POINT PI AT CURRENT PAGE
OBCF 35 XPAH PI
. LOCAL OBDO C2E8 LD TEMP3(P2)
0B52 C2FD MOVSTR: LD LSTK(P2) ; POINT P3 AT A. E. STACK 0BD2 31 XPAL PI
0B54 33 XPAL P3 0BD3 C40D LDI OD iPUT DUMMY END-OF-LINE
0B55 C410 LDI H(AESTK) 0BD5 C9FF ST -1<P1) ; JUST BEFORE TEXT
0B57 37 XPAH P3 0BD7 C4FF LDI -1 »PUT -1 AT START OF TEXT
0B58 C7FF LD e-i<P3) ;GET ADDRESS OF SOURCE STRING 0BD9 C900 ST (PI)
0B5A 35 XPAH PI i INTO PI OBDB C901 ST 1 <P1)
0B5B C7FF LD 6-1<P3) OBDD 3F XPPC P3 iRETURN
0B5D 31 XPAL PI
0B5E C7FF LD e-i(P3) ;GET ADDRESS OF DESTINATION
0B60 01 XAE ; STRING INTO P3 i*************************************
0B61 C-7FF LD e-i(P3) ;* FIND LINE NUMBER IN TEXT *
0B63 33 XPAL P3 ;*************************************
0B64 CAFD ST LSTK(P2) ; UPDATE STACK POINTER
0B66 40 LDE ;INPUTS: THE START OF THE CURRENT PAGE IN TEMP2 AND TEMP3,
0B67 37 XPAH P3 ; THE LINE NUMBER TO LOOK FOR IN LO AND HI.
0B68 C501 ♦LOOP: LD @1<P1) ;GET A SOURCE CHARACTER ;OUPUTS: THE ADDRESS OF THE FIRST LINE IN THE NIBL TEXT
0B6A CF01 ST @1<P3> ;SEND IT TO DESTINATION i WHOSE LINE NUMBER IS GREATER THAN OR EQUAL TO THE
0B6C E40D XRI OD ;REPEAT UNTIL CARRIAGE RET. i NUMBER IN HI AND LO, RETURNED IN ADRLO AND ADRHI.
0B6E 98C0 JZ X27
OB70 06 CSA ; OR KEYBOARD INTERRUPT . LOCAL
0B71 D420 AN I 020 OBDE C2E9 FNDLBL: LD TEMP2(P2) ;POINT PI AT START OF TEXT
0B73 9CF3 JNZ ♦LOOP OBEO 35 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 iYES - 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 iSAVE 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
Page 48 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Nov./Dec., 1976
345
0F49 MESSAGE ' SNT','X' i 5
OEOE ML: TST REM, 'LIN', 'K'
0F4D MESSAGE ' VAL', 'U' i 6
0E14 CALL RELEXP
0F51 MESSAGE ' END', i '7
0E16 DO DONE-XCHGP1,POPAE.CALLML, XCHGP1, NXT
0F55 MESSAGE ' NOG','0' i 6
0F59 MESSAGE ' RTR', 'N' ; 9
0E22 REM: TST SYNTAX,'RE','M'
0F5D MESSAGE ' NES', 'T' ; 10
OE27 DO IGNORE, NXT
DO ERR 0F61 MESSAGE ' NEX','T' i 11
0E2B SYNTAX:
PRNUM 0F65 MESSAGE ' FO','R' j 12
0E2D ERRNUM: CALL
DO FIN 0F68 MESSAGE ' DIV','0' i 13
0E2F
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'
Nov./Dec., 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 49
346
FAILLO FFED FALSE 05C8 FIN 02B2 FNDLBL OBDE 6502 STRING OUTPUT, REVISITED
FNDPGE 0B94 FOR 0D26 FORI 0D46 F0R2 0D48
FORPTR FFFE FORSTK 108A GECO 0F73 GEQ 0560
GEQ1 05BE GETL 0753 G01 0CF2 GOSUB 0CE7
GOTO 0CD9 GTR 055C GTR1 05B3 GTROP 0E5B Dear Mr. Warren, Oct. 6, 1976
HEX 0654 HI FFEE HILINE FFF7 IF 0CA6
IF1 0CB2 IGNORE 09B5 ILC1 OOAA ILCALL OOAO In DDJ, Vol. 1, No. 8 (p. 33), Mr. Espinosa proposed the
INI ODDE IN2 0DF2 IN3 0E01 IND 0534
INPUT ODCD INSRT 0820 ISTRNG 0B22 JMPBIT 0040
exchange of “handy” subroutines to save bytes in space-
LABLHI FFF2
LEQ1 05AA
LABLLO
LET
FFF3
0C87
LBUF
LIST
10D6
0C31
LEQ
LIST1
0558
0C43
limited systems. He also presented an example, an ASCII
LIST2 0C45 LIST3 0C47 LISTNG FFF5 LIT1 0A30 string output subroutine for the 6502 microprocessor. I
LO FFEF LOLINE FFF8 LSS 0554 LSS1 05A2
LST 02E1 LST2 02FF LST3 030E LST4 0314 would like to submit a revised version of Mr. Espinosa’s sub¬
LST5 0324 LSTK FFFD MESGS 0F37 ML OEOE
MODULO 09BC MOVE 0804 MOVESR 0949 MOVSTR 0B52 routine. I have done extensive work on 6502’s with OSI’s
MUL 037A NEG 0363 NEQ 0550 NEQ1 0599
NEW 0C69 NEW1 0C76 NEWPGM OBCD NEXT ODOC Model 400 microcomputer. During this time I have learned
NEXTV 0A85 NEXTV1 OAEA NOJUMP 009D
NOTOP 05F8 NUM FFEB
NLINE
NUPAGE
0215
0B89 NXT 028C
several byte saving programming “tricks” which I would like
NXT1
PILOW
02A9
FFF1
DROP
P2
05F4
0002
PI
P3
0001
0003
PIHIGH
PAGE
FFFO
FFF6
to pass on by illustration. Through a few simple changes I
PCHIGH FFFA PCLOW FFFB PCSTAK 10A6 PCSTK FFF9 was able to reduce the length from 40 to 2B (hex) bytes.
PGE 0D63 PGM 1120 POPAE 0912 PR1 0DA3
PR2 ODAA PR3 0DB9 PR4 0DC2 PR5 0DC7 The result is a subroutine which works the same and saves
PR6 0DC9 PRINT 0D9A PRMPT1 0C21 PRN 0197
PRN1 01CE PRNUM 0F2B PRNUM1 0F2F PROMPT 0C1A a few more bytes. The program demonstrates a few simple
PRS 017E PRS1 0193 PSTRNG 0B06 PUTC OFBE
PUTC1 OFCB PUTC2 0FE3 PUTPGE 0B77 PUTSTR 0B32
“tricks”:
RANDOM 09CE
REL4 0E4F
REL1
REL5
0E3A
0E59
REL2
RELEXP
0E44
0E31
REL3
REM
0E4B
0E22
— Preservation of the Y index register on the stack (3
RETEXP 0E87
RNDY FFE4
RETURN
RSTR
OCFC
0148
RNDF FFE6 RNDX FFE5 bytes saved)
RSTR1 0152 RSTR2 0167
RTN OOFB RUN 0C4D RUNMOD FFF4 SAV 01OF — Replace JMP instruction (with ranges less than 128 bt
SAV1 012B SAV2 0131 SAVEDO 0974 SAVFOR 0A42
SBRPTR FFFC SBRSTK 106A SETZ 058D START 0C18 bytes) with forced relative branches. This permits
STAT 0D50 STATUS 0952 STMT 0C82 STORE 04C9
STRT 02C8 SUB 034C SYNTAX 0E2B T1 0E8B easier relocation of a generalized subroutine so it
T2 0E94 T3 0E9D TEMP FFEA
TEMP3 FFE8 TERM 0E89 TOP 0990
TEMP2
TST
FFE9
00C5
may be used elsewhere in memory.
TSTBIT 0020
UNTIL ' 0924
TSTNUM
VARS
06B4
101C
TSTVAR
XO
04E9
OOEC
UNT
XI
0CB8
0165
— Make use of TYA instruction rather than saving the Y
X10 04E2 X11 054A X12 0597 X12A 05EE index in a memory location and then adding it in later
X12B 0637 X12C 067A X13 06E3 X14 0751
X15 07B4 X16 07E4 X17 081C X19 086B (5 bytes saved).
X19A 03E5 X20 0909 X21 094E X22 098E
X23 09CA X24 0A2C X25 0A83 X26 0AE8 — Test the carry flag condition and increment the high
X27 0B30 X4 01CA
X6 02DD X6A 030A
X5
X7
0221
034A
X5A
X8
0286
0376
order byte if set rather than adding 00 (2 bytes saved).
X9
XFER
03EF
0171
X9A 0439 X9B 04A4 XCHGP1 0639 — Try to avoid dead space inside programs, and non-sero
XFER1 0179 ZZ0001 101C ZZ0002 1120
ZZ0003 OFBD ZZ0004 OFBD ZZ0005 OFBD ZZ0006 OFBD page data storage (i.e. locations 0433 to 043F) (12
ZZ0007 0F37 ZZ0008 0F37 ZZ0009 OFBD ZZOOOA 10D6
ZZOOOB OFBD ZZOOOC 101C ZZOOOD OFBD ZZOOOE 0002 bytes saved).
ZZOOOF 0002 ZZOO10 0006 ZZ0011 0002 ZZ0012 0003
ZZOO13 0002 ZZOO14 0002 ZZ0015 0002 ZZ0016 0002 Sincerely,
ZZOO17 0005 ZZ0018 0004 ZZOO19 0002 ZZ001A 0007
ZZ001B 0004 ZZOO1C 0004 ZZOOID 0003 ZZ001E 0002 Marcel Meier 8850 S. Spring Valley Dr.
ZZOOIF 0006 ZZ0020 0005 ZZ0021 0002 ZZ0022 0003
ZZ0023 0006 ZZ0024 0005 ZZ0025 0002 ZZ0026 0003
Chagrin Falls, OH 44022
ZZ0027 0005 ZZ0028 0002 ZZ0029 0002 ZZ002A 0005
; 8 I R J NOTH IT : RE V T SF P VFRS J ON
ZZ002B 0003 ZZ002C 0003 ZZ002D 0007 ZZ002E 0003
ZZ002F 0004 120030 0003 ZZ0031 0002 ZZ0032 0005
; UR7G.TNAI RY C. ESPINOSA
ZZ0033 0002 ZZ0034 0003 ZZ0035 0002 ZZ0036 0003 ; REVISIONS PY M MF.TFR
ZZ0037 0003 ZZ0038 0002 ZZ0039 0006 ZZ003A 0003
ZZ003B 0003 ZZ003C 0007 ZZ003D 0003 ZZ003E 0002
ZZ003F 0002 ZZ0040 0002 ZZ0041 0002 ZZ0042 0002 ORO *400
ZZ0043 0002 ZZ0044 0002 ZZ0045 0002 ZZ0046 0002 AKFPP f-QU *43A
ZZ0047 0002 ZZ0048 0002 ZZ0049 0002 ZZ004A 0002 OUT FQU *FFFP
ZZ004B 0002 ZZ004C 0002 ZZ004D 0002 ZZ004E 0003 I 0 FQU SEP
ZZ004F 0002 110050 0003 ZZ0051 0002 ZZ0052 0003 HI FQU *FF
ZZ0053 0003 ZZ0054 0003 ZZ0055 0004 ZZ0056 0004 I 0 PP7
ZZ0057 0008 ZZ0058 0003 ZZ0059 0002 ZZ005A 0003
HI PP7
ZZ005B 0005 ♦0 002A ♦0 0420 ♦0 076F
*0 0996 ♦0 0B91 ♦1 0043 ♦1 01C6
♦1 0400 SP 7A REGIN S I A AKFFP SAVE AO
*1 023D 0397 ♦1 0443 ♦1 05FA
0403 AS FI A OFT RETURN APPKESS
*1 06E7 ♦1 0772 ♦1 0838 ♦1 0930
*1 097E ♦1 099C ♦1 09FD ♦1 0A4C 0404 85 FF SI A I 0
♦1 0A8F ♦1 OB12 ♦1 0B46 ♦1 0BA3 0406 68 PI A
*1 0BE4 ♦1 0F7B ♦10 0AA9 ♦2 01FF 0407 85 FF ST A HT
*2 025A ♦2 03A8 ♦2 0454 ♦2 0707 0409 98 I YA PUT Y INPEX ON STACK
*2 07B2 * ♦2 0842 ♦2 09A3 ♦2 OADD 040A 48 PHA
*2 0B28 ♦2 OBFC ♦2 0F8F ♦3 0261 040E: AO 01 IPY #01 SFT UP INPFX POINTFR
*3 03D4 ♦3 04AC ♦3 084A ♦3 OADF 04 OP HI. FF NFXT I PA (I TO, Y OFT NFX1 OHARAOTFR
*3 0C11 ♦3 0F9C ♦4 03F1 ♦4 0857 040F FO 07 HEQ FXIT PONF IF NUI 1 OHARAOTFR
$4 OFAO ♦5 085E ♦ABOR 06C6 ♦ADD 08E3 0411 08 I NY
♦ ADD1 08FF ♦CALB 8000 ♦CR 07D8 ♦DOWN 0885
♦END
0412 90 FF FF USR OUT OUTPUT OHARAOTFR
04C3 ♦END 06AC ♦END 0B4C ♦ENT1 04A6
♦ENTE 068B ♦ENTE 07B6 ♦EXIT 0402 ♦FAIL 04FB
0415 18 01 O FOROFJi I OOP W J1H
♦JMPB 4000 ♦LETR 067C ♦LOOP 002C ♦LOOP OODB 0416 90 F5 ROO NFXT A RE I AT IVF PRANOH
♦LOOP 0203 ♦LOOP 0241 ♦LOOP 03B6 ♦LOOP 0460 0418 98 FXIT TYA OFT STRING I ENOTH
♦LOOP 066C ♦LOOP 06F7 ♦LOOP 09D9 ♦LOOP 0AD1 0419 38 SF.O
♦LOOP 0B38 ♦LOOP 0B68 ♦LOOP OBAA ♦MAYB 050D 041A 65 FF APO I O APP RFTURN APPRESS TO
♦MOVE 086F ♦MSG 0247 ♦NEQ OOEE ♦NOT 0628 0410 85 FF ST A I 0 OFFSFT
♦OK 051A ♦OK 0688 ♦OR 0616 ♦POS 043B
041F 90 02 POO NiTOAR IF CARRY, INOREMFNT HI
♦PRNT 01EF ♦REDO 093C ♦REDO 0AF6 ♦RET 06D6 0490 FA FF I NO HI
♦RUB 07CE ♦SCAN 00C7 ♦SHIF 0692 ♦SHIF 0714 (1432 68 NOOAR Pi A RESTORE Y FROM STACK
♦SKIP 0664 ♦TSTB 2000 ♦UP 0895 ♦UP1 08A1 0433 A8 TAY
♦UP2 08C2 ♦UP3 08C4 ♦UP4 08D4 ♦XH 07C8
0474 AO 2A I PA AKFFP RFS70RF AO
♦XU 07A6
0437 60 FF • IMP (I 0) RFTURN 00 .INSTRUCTJON AFTFR NUI I.
NO ERROR LINES
SOURCE CHECKSUM = 33FE
INPUT FILE 1:NIBL2. SRC
IN-GROUP HUMOR FOR DINOSAUR USERS TSC LIVES! THEY DO HAVE A PHONE
NUMBER
We recently heard of some new instructions proposed for
Technical Systems Consultants, Box 2574, West Lafayette,
some of the maxi computers of industry and business:
BRANCH & BOMB
IN 47906, peddles some interesting, low-cost micro software.
BRANCH & HANG Several people have asked us if TSC is OK to deal with, stat¬
PUNCH OPERATOR ing that they were unable to locate a phone number or street
BACKSPACE & EJECT DISC address. We wish to emphatically state that they are real;
BACKSPACE & PUNCH DISC
they are reputable; and they do have a phone: (317) 742-
Oh well; we said it was in-group humor. 7509.
Page 50 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Nov./Dec., 1976
347
built-in commands and transient commands, including operation of
UPGRADED CP/M FLOPPY DISC OPERATING
the editor, assembler, debugger, peripheral interchange program, and
SYSTEM NOW AVAILABLE batch processor.
CP/M Editor, CP/M Assembler and CP/M Debugger Manuals —
CP/M is a disk operating system designed for diskette-based these three manuals provide the operating details for CP/M's principal
computer systems which use the Intel 8080 microcomputer. subsystems for program composition (ED), assembly (ASM), and test¬
ing (DDT). Manuals can be purchased separately.
The CP/M software package is now being offered to the small CP/M Interface Guide — this manual gives the exact details for pro¬
computer user community. gramming in the CP/M environment. In particular, all system calls are
Previously available only to OEM’s, CP/M has been in exist¬ specified, along with details of CP/M file organization which is necessary
for programs which operate upon CP/M files.
ence for over two years in various manufacturers’ products,
CP/M System Alteration Guide — the alteration guide gives the step-
and thus has had extensive field testing. CP/M functions in¬ by-step process which you must follow in order to alter the CP/M sys¬
clude file management, with console interaction, batch pro¬ tem to run with non-standard hardware. I/O drivers for commonly
cessing, and program loading facilities. The overall operation available hardware systems are given.
of CP/M closely resembles the standard features of the DEC Individual manuals are $5. A package consisting of all six
System-10. In particular, CP/M components include: manuals is $25. An initialized, “loaded” floppy disc is $50.
BDOS — the CP/M Basic Disk Operating System supports a named
file system, with up to 64 distinct files on each diskette. Files storage
A disc and all documentation - “the works” - is $70. And,
is dynamically allocated and released as necessary, with algorithms for of course, Californians get to add 6% tax.
optimal read/write head movement. Any file can contain as few as Digital Research, Box 579, Pacific Grove, CA 93950, (408)
zero bytes, and up to 250K bytes, depending upon the requirements of 373-3403.
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:
PRAISE FOR DIGITAL SYSTEMS’ FLOPPY
Dl R selectively search the disk directory for files UNITS & DIGITAL RESEARCH’S CP/M
TYPE type the contents of a file at the console Dear Dr. Dobb, Nov. 1,1976
REN rename a specific file to a different name I have seen the articles on the CP/M floppy disc operating system
ERA erase a given file or set of files from the disk available from Digital Systems. I am writing because I am a satisfied
SAVE save memory on the disk for later reload or test
customer. I have had a system from Digital Systems running for
The CCP also supports automatic program load and execution of CP/M
nearly a year now and have had no trouble with it. The hardware is
system programs as well as user programs.
reliable and well designed. I do not know of anything presently on
PIP —the CP/M Peripheral Interchange Program allows transfer of
the market that compares favorably to it. The software is also fan¬
files between various devices and disk files, as well as concatenation of
tastic and reliable. It is easy to interface with the DOS to read and
files on the diskettes.
write files, and do I/O. The software developed by Digital Research
SUBMIT — the batch processing features of CP/M allow the operator
is well designed and is implemented much like the Monitor on the
to prepare command files with parametric substitution, which can be
DEC System 10. The assembler, editor and debugger supported by
subsequently automatically executed if typed by the operator.
the system are excellent. In addition to that the documentation that
ED — the CP/M editor allows preparation of programs and text
comes with the system is first class. I am enthusiastically pleased
using powerful context editing and display commands.
with the performance of the system.
ASM — the CP/M assembler is compatible with both the standard
I have dealt with Digital Systems and can unqualifiedly say that
Intel assembler and Processor Technology assembly language.
they are honest, decent and responsive. Dr. Torode was exceptionally
DDT — the CP/M Debugging Tool is a monitor which allows
helpful in getting the system up and supporting me afterwards. I have
symbolic program tracing, debugging, and testing.
not encountered a more honest and responsive vendor.
LOAD — the loader prepared a "memory image" file from an
The software written by Digital Research is excellent in design and
Intel format "hex" file, ready for direct execution under CP/M.
documentation and to me it would be worth five times the price.
DUMP — the dump utility prints the contents of a CP/M file
Altogether the combination of hardware and software which is
in hexadecimal at the user's console.
provided turns an 8080 system into a true software development
SYSGEN — the system generation utility prints the contents of a
system which is flexible, easy to use, easy to learn, and reliable.
CP/M system diskettes from existing diskettes for back-up purposes.
Sincerely,
The CP/M operating system is distributed for an Intel MDS Robert Swartz 195 |Vy Lane
microcomputer development system, but can be easily altered Highland Park, IL 60035
to operate with a wide variety of customized hardware envi¬
ronments. Basic requirements are: A SUPER, TURNKEY DUAL FLOPPY SYSTEM
a) Intel 8080 — based microcomputer mainframe
Dear Jim, Sept. 17, 1976
b) At least 16K of read/write main memory
You guys are usually way ahead on new products and
c) One or two IBM-compatible disk drives and controller
things but have you seem the DTC Micro File?
Given these facilities, the CP/M disk system is “patched” by
It’s a WOW!
the user to communicate with the specialized hardware. The
• 8080A Super System
exact steps to follow in programming and patching the CP/M
• Has an extremely high quality, compact, dual floppy
system are given in the manual CP/M System Alteration Guide.
• Has superb system software including fantastic text editor
In fact, several popular mainframe and controller manufactur¬
• Uses MITS BASIC (they bought it) plus numerous improve¬
ers currently support their own CP/M patch.
ments
The CP/M system is distributed on an IBM-compatible dis¬
kette in machine-code form only (source programs are avail¬ • Speeds to 9600 baud through two RS323 ports
able for internal use, or distribution with custom hardware at It might appear as a commercial system to you folks
additional cost), along with complete documentation required (it is!)—you should check it against IMSAI’s dual disk system.
for operating CP/M and programming in the CP/M environ¬ It runs rings around them on price and is far superior. Price -
ment. The software is licensed for use by the individual who $4295.
purchases CP/M, and is registered and serialized to prevent If you haven’t seen it you should take a look.
unauthorized copying and distribution. In particular, the Keep up the excellent work with DDJ.
licensing agreement specifically disallows copying CP/M for Sincerely,
use by any individual other than the registered owner. The A. C. Delmas ADVANCE SYSTEMS
registered owner of a CP/M system receives notices of updates P. O. Box 531
and becomes a member of the CP/M User’s Library. System Saratoga, CA 95070
documentation includes: [We heard identical remarks from another friend whose
judgment has been impeccable. DTC is located at 1190 Dell
CP/M Features and Facilities — this manual presents the organiza¬
tion of the CP/M system, along with the forms for file name references, Ave., Bldg. L, Campbell, CA 95008, (408) 378-1112.-Editor]
Nov./Dec., 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 51
348
<E
Z
* **
** +
Z
o
*
** XC0
** I-Z
* id! X
h- * Z CD Q
<E *g x
_1
CO
z
<L *00 XX 00
z *X t-i Z
* <1 CO Z: G
*Z i—!
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
O z z ro Z G CM
i . X Z CM z- Z CM
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 z CD
G G == ro 25 Z CD -> 25 Z z *- g CD
i—i X =? == Z G Z <L Z! CD O CO i—i
00 i—i == == ii CM X Z 25 Z i- -J 00
<L Z = O * j- 03 Z1 f- z T-i * 00
=
i NO z Lii
C
o
LD 25 *Z 25 X Z CD Z o
CM *d =25 On Lii =—i Z • CO
LD N AC CD -r-i z ^ X CO X
N ~
On AC * X * CD 25 X i-i <1 =— GO
■ LD ! X X X * ld
*i-i >- g
* : X CM
* CO Z _i d Li. §- in • Lii X 00
Lii LO 25 ■ X * d =25 CD Z o z Ci r- - CD
03 CM *25 G <E z d
f * CM ♦ -i =■= ,-N -i- X X X
<r ■;^ ** \ *—X X G G =N X
ro * 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 <EX X Z <T d O
* <E \ t X G O X h- ^
i- CM X C> t—i
CM <1 * <1 i—
<L CM i—= X u_ <1 * <1 ■'s. N- <L — X G 00 r— *r* Z G H-= Z O j—i 00 NS' =Z z CM^ CM
oo C- <E C- N C- =-= ?- X C- z i-- <L 0- <L ?- -n z: c- C-- <1 T-i N CM* X
G
z * * * •=• * <• » * * X r-i « o ii- =N
Z ui X
<1 Z == z = z == z == z == Z == Z == =r z 1 00 == ■■ 25 G o TTTz O G 00 z O
z z i-=_ == u_ =#= z == z == ii- == u_ === z =h z =#= z <1 00 =s= O <r o !— o h- <1X O O 1- =>• — O
Z f— X =#> X *= X ■== X X == X =¥ X. X 4= X N^ H X 4= X !— =:= o o 03 N_-
Z O G * h- in
Z 25 z =«■ Z z ==» z Z ===== z *= z ■?=> Z ==■ z — X z ==i= z 00 z T* LD Tj4 CM CM T—i 25 CM
G if n^ O
- ■=£■ Lii 25 O X 00 if
X: : <L 00 ID >■— CD -J CD
O G z Z 00 Z Z Z Z 00
IH x x z z Z 00 z z z if Z 03 Lii Z Z Z Lii GO Lii IsJ O ii Z O
L=JZ Z Z Z Ui Lii G Lii Lii G 00 Z G =—i =—i Z! G G Z Z Li-i =-i G
ZZ Z Z Z Z Z G Z Z X Z Z G
o o m o in o o o o o o o o
o o o o o in O O CM LD CD On o O O T-i T-i CM CM CO <r in nG N CO On t-s
CM W G LD LD -o X. r-N r-N r-N r-N co On 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
X 2
3 D
<1
CD
<1 Z
Z u !!
LlJ 3 CO
z z
X
3 3
g G G 3
g C-4 X X _J u_
wCi 3 G Li. Z
2: <E z <H Z 3
Z LiJ <E
Xi o
LlJ Z Z 3
z 3 3 3
=*
v-i
<1
-0 Z 00
s- s-
3
/
3
z x
O
Z x
z
z
z
z
U0 3
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-
00
?- 3
?- z z Z CO
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
3 LiJ
I Z S3 S u.
z z ii ii 3 Z Z Z
Z x O' => Z z z
f— Z 3 3 3 Z Z 3
02 f- Z SQ Z Z
2: CD •3 3 ■ Lu
0« z H- Z z i i-i h- <1 CD CO CD 3 G i-i CD Z Z
'■ / / Z / X Z <r Z Z Z Z X 0
z z w 'W — S-
M 0 O 3 0 O
-0
O
CS
O
CS
-z z z Z
*-
Z
\
O U0
S'
o
C-4 LiO 3 C-4 z -t- L C-4 c-4
LiO bO O O T—! O z U0 o
OH ro ro x s- s* s- S' 3 H —5
t ■rl t—i s Z 3
yr
<1 C-4
3 <•
-f- •+■ -t-
CD
4-
3
z
3 z
z z c z z z z CD CD z z
on !! Li Z L- z z z z z Z Z Z Z z f- LlS Lii
*» O CD
0 3 3 CO 3 3 3 3 O z O — O — O O 3 3
o
3
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 CO
== LS z -v- L •-./
co ■ rs in 3 in
t—i t-1 T-i Z V z
z >- V LL LL LL V 4- v z V 4- z
=L= '— Cl z
33 3 3 3
•—
?- z — 3 CS O'
L—
CS Ci L— 4- 3 4- 3 4-
CO
3
>-
4- Ci Z
3 3 3
3 3
Z h-
3 z
L— 3
3 3 3 z
Z 3
3
Z
h- Z
Z 3
Z 3 z *- z 3 L- Z !- 3 z 3 H 3 ?— Z Z
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
Z CO
Z z
3 3
•Lu
3
3
CO Z
h-
00
Z z
LiJ
3
Z
3 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 T-i C-4 ro S' uo S3
z v
3 Z 3 Ci
i-i z
* ♦ * * * *
O z LL /
on
3 -1
z T-i z /-\ % z z :V; z z z z
3 T-i 4- 3 —-i. 3 3 <L 3 j— >—
rn
»— *- >— !—
CO
i— Z Z ?- 9 Z 3 z Z> h- CO CO CO 3
z ». 9. z w _i z z LiJ z Z z z z z
z T-i t—i z z z Z Z z i—1 Z r-i i—i !—* i-i i-i r-i
/ ». 4- 9. / 9. / Z ' x
—i Z yr z
0 9. 3
z
uo 9. O I> ?- o X
C-4 -ts- t—i y<- O UO 3 z c-4 O O O O O O
O <1 /-S <1 -yj- uo <1 rs uo '—! o 3 ro 3 ro ro 3 O
S'
C-4 — T-i 3 C-4 — uo C-4 Z z ro ro ro C-4 C-4 3 S' 3
•Hr »■ -tfi- Z y C-4 3 z ro ro ro ro ci Z S' X <r
Z
z
3 V 3 CO
on z 3 Z
z
<01 z z
_J z z z z z z
i-i
CO
ro i—i ro
GO
z z z L- Z
0 0 0 0 0 0 <r 0
00
Z Li Z
3 CO v ' 3 CO z 0 0 9. z ::: z z Z =
0
O
0
O O
0
O O
0
GO 3 O 02 3
00 0
CO 3 3
>- >- S-. L- >. 3 i— t—i 0 — ~ ~
3 h- H f-
~ 3 3
5— h— L- uo <r
S
0
O S
uo <r
<r
uo s LD z
l—!
>— O i-i j-
UO Z
-yi- y?- uo s
T-i 3
= y-
<L <r == z t—i
y ?-
30
S2 Z
T-i C-4 C-4
uo
uo L— ro ro s ro ro s- ro <T S ro ro UO ' 0 UO ' 3
3
V
CD
— 3 == z •-./ w L V Z ^ LS Si -:o s ro C-4 3
3
CO CO LL == >— z 3 CO LL CD CD
3 L— Ci Z CO
L—
Ci
3
Q Ci c 3 C3 Ci Ci Ci
3
Ci r- X
3 Z T-i
-Cl
3
?— X
Z ri
Z 3 3 z 3 Z 3 Z Z z L- Z 3 3 z Q Ci 3 3 L- ?— 3 3 3 L—
z z z Z Z LL •—! !— z z i-i z z CO ?- Z Z 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
3 33
33
z LL
z z Z LL — yr Z z z z z ii z 3 z 3 z z z 3 z z z z z ZZ zz 3 3 z z 3 Z Z 3 3 z z 3 3 z z 3 Z 3 Z Z 3 Z 3 Z
z z '—1
LL
Z Z 3 zz z z z r-i Z t—i Z i-i 3 z z z 3 z z z
ii U
-—i i—i i-i i-i 1—i i-i z z 3 3 z z 3 3Z Z 3 3 z z 3 3- z z 3 Z Z Z Z 3 33 u_ Z Z
0 OO 0 0 0 0 OOO
0
0
0
0
0
0 o in O O 0 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 UO O UO O UO O O O O O O
O I-! T-i
OOO
C-4 ro S' UO S3 LS
O 0 0 O O O
O 0 t—i T-i C-4 C-4 ro S- UO LS 3 O' T-i O T-i -r-i c-4 ro s- uo S3 is 3 O' 0 t—i C-4 ro S' uo S3 rs 3 O' 0 T-i c-4 ro s uo S3 LS 3 O' 0 1—:
0 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
c-4 ro s UO S3 rs CD
ro ro ro ro ro ro ro
UO uo UO uo uo uo uo uo UO uo UO UO S3 O
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 ro ro ro ro ro ro
3
3
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 C-4 C-4 c-4
Nov./Dec., 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 53
350
COMPONENTS FOR SPECIFYING PROGRAM¬ making structure as clear as possible, else many unnecessary
MING LANGUAGES AND MODS TO THE TINY IFs and DOs would make programs more confusing.
Continuation lines: a plus sign (“+”) as the first nonblank
HI LANGUAGE DESIGN character indicates a continuation line. A line may be con¬
tinued indefinitely and even when comments intervene or
Dear DDJ, Nov. 17, 1976 there is a comment field. Continuation lines can be used to
Enclosed are about a dozen changes in TINY HI, an make output lists or complex predicates clearer by arranging
updated language summary, and a brief description of HI. them on several lines to show structure, and they also reduce
None of the changes significantly effect the scope of TINY, the use of temporary variables.
but I believe they make it an even nicer language. I am Control structures: The “UNTIL” structure is now:
shelving TINY LISP, TINY SNOBOL, and the extensible
language I mentioned; my system is up and I want to imple¬ DO
ment TINY. I renege on the promise to describe FORTH code
as Interface has had a good article on it. END IF p
I will act as a clearinghouse to standardize TINY HI
implementations. A complete language standard (as detailed The “WHILE” structure is now:
below) should be out by 15 January. Implementors please
send $3 to cover copying costs and first class postage. This DO IF p
will be the last revision in DDJ, but I believe I’ve finalized code
what the user sees. DDJ will get a free copy of those END
standards for existing; otherwise I would have to invent it
and couldn’t do nearly as well. I hope to be HI in 77. The compound structure is also allowed:
Laissez faire,
Martin Buchanan 2040 Lord Fairfax Rd. DO IF p
(703) 893-7978 Vienna, VA 22180 code
END IF q
351
TINY HI, cont.
Arithmetic: append **, exponentiation. HI has it, and I TINY HI SUGGESTIONS
want the differences between the two levels to be few and ma¬ Dear Mr. Buchanan:
jor. Exponentiation is also easy to implement in integer arith¬
metic. I prefer ** to the up arrow. Exponentiation derives I would like to offer some suggestions regarding your Tl N Y HI
from multiplication just as multiplication from addition, so 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
the symbol is logical in some sense, and also common. I
powerful in its simplicity.
want to reserve the up arrow for a (presently undefined) I like the one-statement-per line format; PL/I addicts look down
sorting or ordering operation. 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¬
REVISED TINY LANGUAGE SUMMARY ments; this is what often makes the comments of assembly-language
programs better than those of so-called higher level languages. "?"
Vocabulary: BEGIN END IF ELSE DO for input is great, and I admire the simplicity of the vector scheme.
Now for the comments: (this is more or less random order)
Comments: ;
1. Negation of —2^® will probably produce overflow; so perhaps
Continuation: + there is a case where negation can produce an error.
Infix arithmetic: +_*/** 2. Rather than bracketing loops with WHI LE END, how about
Prefix arithmetic: — using LOOP and REPEAT? UNTIL
Concatenation: blank a. WHILE and UNTIL do not imply iteration except to a program¬
Length operator: # “number” mer who's seen them before.
b. WHI LE cond terminates when cond goes false, and UNTIL
Relational ops: < <= > >= <> cond terminates when it goes true; but it's very hard to see
Logical ops: AND OR NOT why one of these implies a test at the front of the loop and
Assignment: «- the other at the back.
Input: ? This isn't original — see Knuth in Computing Surveys Vol. 4
No. 6 (Dec. 1974), pp. 278-280.
Global: .
Nesting: () LOOP IF cond LOOP
Subscripting: [ ]
Substring: . . . “ellipsis”
code code
Data types: INTEGER STRING
Data structure: the vector
REPEAT REPEAT IF cond
Nov./Dec., 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 55
352
GLITCH: TINY BASIC & MEK SYSTEMS
6800 MONITOR RELATIONS
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
Dear Editor, Nov. 10,1976
Motorola makes several monitor roms (Mikbug*, Minibug*, Minibug Tiny BASIC 6800 in Mot Eval kits.
II * and Exbug*) for their M6800 systems. Most systems in hobbyist It is true that I have had a number of calls from owners
hands are currently using Mikbug*. Minibug II* now seems to be avail¬ of MEK systems in which Tiny BASIC failed to run. It
able from Mini Micro-Mart and it has several additional and enhanced
seems that the Motorola kit comes with no memory (except
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 for the Mikbug private RAM), and very little else. When
punch, user control of "SWI" vector, upward and downward move¬ the user adds a 4K memory board care should be taken
ment during address changes and memory test commands. Documenta¬ that all of the address and data lines are properly buffered
tion on the commands is supplied, but no listing or hardward imple¬ in the expanded system, since buffers are not provided in
mentation guides. We are using Minibug 11 * in a SWTP 6800 and are
pleased with its operation. The following notes are supplied for those
the basic kit.
who might wish to try this rom. What happens is that Mikbug is able to load and display
Dennis Sutherland David Kyllingstad RonTonneson the memory with no problem, but the program will not run.
2835 - 25th Ave. 840 Hillview Dr. Fairfax, IA This is due to the excessive capacitance in the address lines
Marion, IA Marion, 1A
*Trademark of Motorola
(the 6800 is spec’ed at 130pf, which is good for about 8-10
MINIBUG II SOFTWARE EQUIVALENCE MOS devices; a 4K static RAM board alone has 32 MOS de¬
vices on some of the address lines). This causes the access
Minibug 11 is not to be confused with Minibug which is lines to be slowed considerably. Mikbug does all its memory
located in the upper half of Mikbug and is probably not access using the Indexed addressing mode, which leaves the
worth finding at this point in time. The following entry address stable for two full memory cycles (2 jjs min) before
points have been tested and appear to work in programs attempting a read or write, thus permitting an actual access
that reference them. time of over 2.5 y s; program permitting an actual access
MIKBUG MINIBUG II time of over 2.5 ys; program execution on the other hand is
ROUTINE ADDRESS ADDRESS not so forgiving, and the memory must respond in 575ns.
OUTCH E1D1 El 08 The unbuffered system can’t hack the speed. That this is
INCH El AC El 1F indeed the problem may be verified by stretching 02 to 2
OUTHL E067 E0FA or 3 jjs.
OUTHR E06B E0FE I have no record of Mr. Mikel’s having attempted to com¬
OUTS E0CC El 80 municate his problem to me, and I do know of over 100
PDATA1 E07E El 30 properly buffered MEK systems on which Tiny runs fine.
CONTRL E0E3 E040 Tom Pittman PO Box 23189
E0AA E070 Itty Bitty Computers San Jose, CA 95123
INHEX
E047 E0D9 cc: Roger Mikel
BADDR
E0C8 E17C Computer Hobbyist Group-NT
OUT4HS
OUT2HS E0CA E17E
A SPECIAL PURPOSE EDITOR FOR MANUSCRIPT
MINIBUG II HARDWARE CHANGES REQUIRED PREPARATION?
General Dear Jim, Nov. 6, 1976
Since Minibug II is a IK rom, A must be made active instead of About reinventing the wheel . . . am I going to have to write my own
being grounded. CS„ and CS. ar Active low instead of active high program for word processing — in the sense of manuscript preparation?
as was Mikbug. This requires inverting the logic pins 10 and 11. Text editors are fine for programmers but they aren't of much help for
SWTPc authors. What is available for an 8080 or Z-80 in the public domain?
Isolate IC2 pin 1 5 (A ) from the large ground buss by making a F.J. Greeb's "Classy 8080 Text Editor," DDJ No. 6, looks like a good
cut around the plated thrbugh that now connects pin 15 to ground. step in the right direction. Everything is done on the video screen ex¬
Do not drill out the through. Use a miniature circular saw, a minia¬ cept the final hardcopy output. But a manuscript processor needs to
ture fly cutter or an Exacto knife. Now connect the isolated pad be sentence and paragraph oriented, not line oriented, and needs to
(IC2-15) to the pad immediately to the right which comes from IC-13. have the capability of juggling stuff among tape units or floppy disk
If a semi permanent change is anticipated, cut the lines coming from files. (I always seem to be moving paragraphs from the end of the
IC2-10and11 just past the first bend. Connect a jumper from IC1 6-8 text to the beginning or some other spot several pages away.) Then
to IC2-10 (CSq). Connect a jumper from 1C13-4 to IC2-11 (CS^). there are nice things like automatic page numbering, single or double
If plug-in interchangeability is desired, don't make the last two cuts spacing from the same source file, and the ability to not mess up
but add two inverters. special formats such as tables or lists while at the same time properly
The inverters may be made and installed between a 24 pin 1C plug adjusting lines and paragraphs as words or sentences are added or
and a 24 pin socket (available from James Electronics). See schematic deleted. I would be pleased to hear from anyone with interests along
below. these lines.
Yours truly.
Mount the socket piggyback on the plug and solder all other pins one Dr. Charles F. Douds 381 Poplar St.
to one. (Pins 1-9 and 12-24 are straight through, pins 10 and 11 are Winnetka, IL 60093
now inverted).
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 Dear Jim, Sept. 22,1976
CACHE about “tiny languages.” I keep hearing, “I’d use it Subsequent to the publication of “Floating Point Rou¬
if it only had floating point.” Having written three languages tines for the 6502” (Vol. 1, No. 7) an error which I made in
myself, I can understand this. Nobody seems to realize that the LOG routine came to light which causes improper results
32 bits are a lot more than twice as hard to work with as 16. if the argument is less than 1. The following changes will
As a compromise I propose 16 bit floating point. The correct the error.
format I have worked out gives 3 significant digits with an 1. After: CONT JSR SWAP (1D07)
exponent of -15 to +15 (decimal). Proposed format: Add: hi 00 LDX=0 LOAD X FOR HIGH BYTE OF
15_ <t> EXPONENT
mm n 2. After: STA Ml+1 (1D12)
Delete: LDA = 0
STA Ml
Add: 10 01 BPL *+3 IS EXPONENT NEGATIVE
exponent mantissia CA DEX YES, SET X TO $FF
N\S = MANTISSIA SIGN 86 09 STX Ml SET UPPER BYTE OF
ESa EXPONENT SIGN EXPONENT
3. Changes 1 and 2 shift the code by 3 bytes so add 3 to the
I don’t have the time or ambition to write this now, addresses of the constants LN10 through MHT.F wherever
but I would be happy to swap ideas with anyone interested. they are referenced. For example the address of LN10 changes
Bob Van Valzah (312) 852-0472 (Home) from 1DCD to 1DD0. Note also that the entry point for
1140 Hickory Trl. (312) 971 -2010 Ext. 231 LOG 10 becomes 1DBF. The routine stays within the page
Downers Grove, IL 60519 (Work) and hence the following routines (EXP etc.) are not affected.
Yours truly,
Roy Rankin Dept, of Mech. Eng.
6800 MOTOROLA FOR SIMULTANEOUS
Stanford University
NUMBER CRUNCHING AND ANTENNA
POINTING
COMPLETE 8080A FLOATING POINT PKG FOR
Dear Sir, 17 Nov. 1976 $7.50 AND NEW CASSETTE DATA FORMAT
Two of us here in the Northern Virginia area are interested
in using a micro for some number crunching (with a peri¬
STANDARD TO BE PROPOSED
pheral calculator chip) and antenna pointing for satellite
Dear Editor: Sept. 21, 1976
work (simultaneously). The 6800 Motorola line of chips
looks like it will fill the bill due to the superior I/O con¬ In response to Paul Holbrook’s letter in the September
issue, regarding the need for a cassette data format stan¬
figuration possible. The 8080 kinda misses the boat. So I
am interested in all kinds of homebrew hardware for 6800 dard, I would like to inform you that a standard with
line compatible with SWTP line. software has been developed; the Mohler standard will be
Sincerely, published in an upcoming issue of Interface.
Ellis Marshall, W4JK Rt. 1, Box 158 The standard allows for various types of data formats
Front Royal, VA 22630 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
FREDDIE’S FOLLY to make the Mohler cassette format a standard in the
by Jim Day computer hobbyist industry.
I would also like to inform readers that I have devel¬
Frugal Freddie bought a video board kit from a local com¬ oped a single-precision floating point software package for
puter store a couple of months ago. He saved a few bucks by not the 8080A (6-7 digits of precision). The1 package includes
busying sockets for the ICs. “Who needs ’em?” he said. “I’U just add, subtract, multiply, divide, and utility programs to
solder everything.” The board worked fine for a few weeks, convert from ASCII BCD to binary and binary to packed
then developed a hardware glitch that Freddie hasn’t been able to BCD. It takes up about 1200 bytes and is relatively
track down. He took it back to the computer store and asked fast, e.g., 2.5 msec worst case time for multiply.
them what it would cost to fix. Also nearing completion is a scientific function package
“Well now,” said the repairman, “If this thing had sockets, which includes square root, sine, cosine, exponential,
I’d probably find the trouble in a few minutes by random sub¬ natural logarithm, log base ten, arc tangent, hyperbolic
stitution. But with everything soldered down to the board, sine, and hyperbolic cosine. This package is to be used
there’s no telling how long it might take. Why, it could end up with the floating point package and takes up less than
costing you more than the price of the kit!” IK bytes. It also has six digits of accuracy.
One can avoid duplicating Freddie’s folly by socketing The floating point package is now available for $7.50.
everything. frN • Included are manual, paper tape, and complete annotated
source listing. The scientific package will also be $7.50.
• ••/‘"^Socket it to ’em, Freddy!
Both packages may be ordered for a reduced price of
$10.00. To obtain one or both, send your name, address,
HAMATIC NOTE IN B YTE and the appropriate amount to:
Burt Hashizume
According to a letter in the (excellent) November issue of Byte,
P.O. 172
hams who are also interested in computer phreaquery should tune to
3.865 MHz (LSB) on Thursdays at 2300 GMT "for a good time." Placentia, CA 92670
Nov./Dec., 1976 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 57
354
CHASE: .0 Q
A One or Two Player Video Game
_Marvin R. Winzenread
§•
B
X <t 00
I
> o <t <t x <t CO X o o X X
iusing left four sense 2 2 2 o X
0055 IF RAR switches. 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
0056 00 NOP 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
For an interesting variation in the original program
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
change 0051 to 7B ; MOV A,E 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
X
o
o*
+ * CO » K H
n Q — *
Sioacrcs xx £ t- o z <s z + <t<s - mcotno x r> +
It, 2 O f—• O
<t j + 2>
sXfCJSOHO-H^T
+ <£ 2
0. 2 H X
X X 2 —3 X 2 <It/) li, 2 J k S
_I rn J o z xo O •—1 X i_i —~
<t > X (X S <t -
2<IQSMQOoOH<£<IQS^qooS f- 2 “ H220Z2Q22Q22
-•O^O “3 -12X2X00 JO~3X:2X^>in<C
<c in 2 z z
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 o o o o o o o o o o o o o X r- to to to to O' o —4 X X <r o o —• X X X X c~- CO O'
in 'O C" o o X X X
X X vO t- o —• X X o o o o o o —4 —4 —• —• o o o o o o o o o o o
(MOOOOOOOOOO o o o o o o o
o o o. o o o X X X X X X X X X X X X X X X X
—4 X X X X X X X X X X XXX
— — — — — —* —• "■* *
o o o o o o o o o o o o o o o o o O
X o o o o o o o x o 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 X o o o o
Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Nov./Dec., 1976
Page 58
WHIPPLE & ARNOLD DEVELOP A his choice of either the Kansas City or Suding/Digital Group
SUPER DUPER BASIC INTERPRETER ($25) recording technique.
Features of BASIC ETC are listed below:
Binary Systems Corp. has intrduced a new interpreter for * Immediate delivery
8080-based microcomputers. Called BASIC ETC, the new * Readily software adapted to user's system
interpreter was co-developed by John Arnold and Dick * Resides in only 8K of memory
* Supplied bn either cassette tape (Kansas City or Suding/Digital
Whipple of Tyler, TX, authors of the first implementation Group format), or on paper tape. *
of Tiny BASIC. It includes floating point (6 to 72 digits) * Thorough explanatory manual.
and variable-length integers. * Full string capability — up to 255 characters string variable
“Our goal was to develop a variant of BASIC designed * N-dimensional arrays
* Variable precision arithmetic
specificically for the hobbyist and small business user, keeping * Easily handles assembly language routines
in mind that the most important priorities — from the user’s * Direct memory and I/O addressing
standpoint — were ease of program development and straight¬ * 27 error codes
forward, one-step program execution.” * Both character and line erasure editing
* Subroutine nesting permitted
“We feel we’ve accomplished that goal, and with a memory
* 31 commands and statements
efficient program, too.” said Arnold. * 8 functions plus user defined functions
BASIC ETC uses the lower 8K of memory plus at least IK * Null control: 0 to 25 seconds
of RAM for scratchpad. Since BASIC ETC is for games and * Formatted output statements
Cj
ft.
6
o
•fc.
K
+0
O
e
s
s "Q
3 S
o
Q
L-l
X 2
o M
X ** co
X +
% 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 * yQ •» •» * H CM
CQ <t o X CQ o CO CO X 2D X CQ <t X
J 2 <C 2 <t 2 2 J < <c 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 o
o CQ CO Cd CQ 00 cd o 00 in
u. O o 00 oo o u. o Q
_ O' o 'O f- 'O O' Q VO vO Q u. O' in vO td r- t- r- td c- 0- Q a a Id t- u- o Cd r^ C'- o td r- t*- o td c^* 0- in CM O'
o o Cd yO o o o Cd u. 'O O yQ O Cd CM o c- o o o — — CM CM CM r- — r- CM r- — CM f- -• U- CM r- — o o td o
'O O' <c CQ a Cd o — yQ oo O' O a td u. CM in vO CO O' <t CQ o a td u. o CM co in 'O co O' <t CQ o Q td CM CO O' Q tx.
CQ CQ CQ CQ CQ CQ o o o O o o o O o o Q Q a a Q Q Q Q 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 o o O o o o o o O o o o o o o o o o o O O o o o O o o o O O o O o o o o O O o o o o O
o o o o o o o o o O o o o o o o o o o o O o 8 o o 8
o o o o o o O o8 888 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 KIM-1 OWNERS: PLEASE, THINK SMALL
LIFE ON AN 8080 WITH A VDM
Now that you have your KIM-1 attached to the power
The game of life seems to be a natural for the VDM. So supply and have successfully added 2 + 3 and gotten 5,
much has been written about it. would you like something else to do? Would you like to
Here is a short version that requires toggling only 116 use the KIM-1 as:
bytes. An earlier version (PCC, Vol. 4 No. 2) required 218 — a TIMER accurate to a millisecond
bytes. This program does however RAM equal to the VDM — a CLOCK displaying hours, minutes and seconds
memory to store the next generation. If you are really — an ADDING MACHINE with six digit add/subtract for
strapped for memory, use half of the VDM for each genera¬ the old checkbook
tion. — a DECIMAL-HEX/HEX-DECIMAL Converter
1) Before loading the program, first initialize the screen. — a DRUNK TEST
On Processor Technology’s VDM this is done by sending a — a simple GUESS-THE-NUMBER game for the kiddies
zero out to the VDM output port. — the MASTERMIND game for you
2) Load the program and run it. This should clear the — the SHOOTING STARS puzzle
screen of random characters within 10 seconds. — a series of REACTION TIME tests
3) Use the front panel to load your original population — a MOVING MESSAGES DISPLAY with Alphabetic
directly into memory (*=2A in hex). Characters
4) Run the program. Every 2Vi seconds a new genera¬ — plus other demos, tests and games??
tion will appear. Would you appreciate having all of these capabilities in an
— Marvin R. Winzenread 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.
_
«,
a
x
Oi
_ % o
3 X XX
«. o — — —
_ _ QQQ lQ<£70* xatcooifc^ainSM _ _
—j -3 J X J o x => x
Z> a. z x
• X — X _1 — ^ J X _3 — Oja_ix-JX.J — O a. j x X =» ~ « 1< ^ M SJ x £ « OEtfr-OM-d
=> o <x x 3 <£ « Z <t X J3<t0<10<t)0< JO« 2202M Z O X Z £ X NJ 2 t*3 Z > r-
ioe-ojOoxu «o_jo<iaoaoaozjaa.o — «£<ro OlMEUTDUODTWiflX-DEW
%° O XXX
oooooooooooinooooo oooo oxoo
oooooooooo
oc-iMoo-ai
o ooo
<r S) O
oooooo Gjooomoooooo
OO-SJtV7Ji-J>^'CM'E0'O--O-OO
^CCCCOC — — — O — ---OO'MMMMMai'nMMMWMCilCUrtnoOWn 00000-00000000000
no - m o 4 — oa
— oooooo — —
MCCDEOtDOO'O
—^ tft to 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 Tiny BASIC Game Contest
$5—$10
OPPORTUNITY TO WIN A MICROCOMPUTER
Southwest Technical Products Corporation has just released its 4K
and 8K BASIC software. Both feature fixed and floating point math with ASSOCIATES VIDEO TERMINAL, ETC.
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¬ 1st Prize: VT-200 terminal with resident TINY BASIC and
vided on most statements to create a calculator like mode of entry for
short programs. Provisions have been made in both packages for saving
JOLT assembler
and loading BASIC programs to and from either cassette or paper tape. 2nd Prize: VT-100 terminal
A USER function is even provided for jumping to machine language sub¬ 3rd Prize: JOLT 4K system kit
routines. 4th - 10th Prizes: JOLT CPU kits
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 CONTEST RULES:
of memory with 12K recommended. The 4K BASIC © tape and
manual sell for $4.95 on "Kansas City" cassette tape and $10.00 on 1. All entries must be postmarked by April 1, 1977.
paper tape. The 8K © tape and manual sell for $9.95 on "Kansas City" 2. All entries must be submitted as follows:
cassette tape and $20.00 for paper tape. All prices are postpaid in the a. JOLT TINY BASIC source program as paper tape with CR, LF
U.S: SWTPC, 219 W. Rhapsody, San Antonio, TX 78216, (512) 344-9778 and four (4) rubout characters terminating each source state¬
ment.
SWTPC Has copyrighted 4K and 8K BASIC. Version 1.0 program
b. Running instructions, game description and at least one exam¬
material and manual may be copied for personal use only. No dupli¬
ple of game play-all in typewritten form on 814" x 11" white
cation or modification for commercial use of any kind is authorized.
bond suitable for printing.
3. All entries must run on an MAI VT-200 equipped with 4,096
COMMANDS STATEMENTS
bytes of RAM storage, OR on a JOLT 4K system equipped with
LIST REM END
TINY BASIC.
RUN DIM GOTO* STOP
4. All entries must run correctly and be sufficiently well documented
NEW DATA ON . ..GOTO* GOSUB*
to enable a non-technical person to enter, run and play the game
SAVE READ ON . ..GOSUB* PATCH*
as directed by the running instructions. Entries which for any
LOAD RESTORE IF... THEN* RETURN
reason do not run or are not sufficiently well documented to
PATCH LET* INPUT tDES
enable easy entry and play will be DISQUALIFIED.
FOR PRINT* tPEEK
5. All decisions by MAI with respect to acceptance, disqualification,
FUNCTIONS NEXT tPOKE
and winners will be final.
ABS tVAL tSIN 6. MAI employees and their families are not eligible to enter.
INT tEXTS tcos 7. This contest void where prohibited by law.
RND tLENS tTAN *Direct Mode statements 8. All entries become the property of MAI and will not be returned.
SGN tLEFTS tEXP f 8K Version only 9. Contest winners will be notified by registered mail no later than
CHR TMIDS tLOG 60 days from contest closing date of April 1, 1977. Contest Win¬
USER tRIGHTS tSQR ners will also be published in the Microcomputer Digest and the
TAB
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.
MATH OPERATORS RELATIONAL OPERATORS 10. The JOLT TINY BASIC language summary is available at partici¬
- (unary) Negate = Equal pating computer stores. The language summary may also be ob¬
* Multiplication <> Not Equal tained by sending $1.00 cash, check, or money order for postage
/ Division < Less Than and handling to MAI TINY BASIC CONTEST, P.O. Box 1167,
+ Addition > Greater Than Cupertino, CA 95014, A paper tape form of JOLT TINY BASIC
— Subtraction <= Less Than or Equal complete with documentation is available by sending $5.00 cash,
t+ Exponent >= Greater Than or Equal check or money order to ITTY BITTY Computers, P.O. Box
23189, San Jose, CA 95123.
Hi-
Dear Dr. Dobb’s, Sept. 22, 1976 I have written a machine language version of “Wumpus”
Your readers who are interested in the article by Tom by Greg Yob. It’s a great game. The 8080 program is under
Pittman on the 6800 Resident Assembler and Editor might 3K and is self-contained. It requires no user PROM sub¬
like to know that true annotated assembly listings of the routines, etc. Anyway, if anyone wants a listing, just send
I/O routines are available in the 6800 users group library. your name, address and $5.00 to:
Program No. 10 is a listing of the I/O routines used Ron Santore 1957 Huasna Dr.
with EXBUG. While this listing does not describe the San Luis Obispo, CA 94301
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 MUMPS IS SPREADING
MIKBUG version of the I/O routines. When this is com¬
Oct. 18, 1976
bined with the listing of MIKBUG in Engineering Note 100 The MUMPS computer language is used for medical and business
on the MCM 6830L7 ROM one will have a listing of a applications. The number of institutions that use MUMPS is growing
complete I/O system. This can be used as a model to by about 80% per year. A concise pocket guide to MUMPS has been
written to facilitate use of this text-handling and data management
develop suitable I/O routines to interface the Assembler and
language. The guide includes descriptions of all the commands, opera¬
Editor with any system. tors, functions, and all other capabilities of Standard MUMPS, and
The price Motorola charges for the Assembler and gives many examples of their use. The Standard was developed from a
Editor is a little high for home use though. dozen MUMPS dialects, under the sponsorship of the National Bureau
Sincerely, of Standards and the Department of Health, Education and Welfare.
Single copies of the guide are available at no charge from Dr. Joan
John P. Byrns 1953 Governors Ln. Zimmerman, MUMPS Users' Group, 700 S. Euclid Ave., St. Louis,
Hoffman Estates, IL 60195 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
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
In Canada:
CITY/STATE_ZIP_
add S4/year for postage
□ THIS IS A RENEWAL □ PAYMENT ENCLOSED European & Japanese rates available
(PLEASE ENCLOSE LABEL) on request.
In Canada:
CITY/STATE_ZIP__
add $4/year for postage
□ THIS IS A RENEWAL □ PAYMENT ENCLOSED European & Japanese rates available
(PLEASE ENCLOSE LABEL) on request.
people's computers
Please start my one year subscription to People’s Computers □ ONE YEAR for $8
(published bi-monthly) and bill me.
□ TWO YEARS for $15
NAME_
ADDRESS_
□ PAYMENT ENCLOSED
FIRST CLASS
PERMIT NO. 756
MENLO PARK, CA
Dr. Dobb’s
Journal
of Computer Calisthenics
& Orthodontia
P. 0. Box E
Menlo Park, CA 94025
FIRST CLASS
PERMIT NO. 756
MENLO PARK, CA
Dr. Dobb’s
Journal
of Computer Calisthenics
& Orthodontia
P. 0. Box E
Menlo Park, CA 94025
FIRST CLASS
PERMIT NO. 756
MENLO PARK, CA
PC
P. 0. Box E
Menlo Park, CA 94025
FIRST CLASS
PERMIT NO. 756
MENLO PARK, CA
PCC'S
REFERENCE BOOK
P. 0. Box E
Menlo Park, CA 94025
ADDRESS________
CITY/STATE__ZIP-
FIRST CLASS
PERMIT NO. 756
MENLO PARK, CA
Computer Music
Journal
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 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.
ADDRESS
CITY/STATE_ZIP_
FIRST CLASS
PERMIT NO. 756
MENLO PARK, CA
PCC'S
REFERENCE BOOK
P. 0. Box E
Menlo Park, CA 94025
NAME___
ADDRESS---—
CITY/STATE ZIP
V
Computer Music
Journa 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
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.
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.